The course can be viewed as a second step, for students in Computer Engineering, in the process of getting introduced to computer programming as a tool for solving real problems. In this context, on the one hand the introduction to computer science is consolidated, from both a "cultural" and technological point of view. On the other hand, the C language is introduced as a second programming language and as a tool for problem-solving, viewed both as a creative and a design activity. Besides the standard education to problem-solving, which is based on learning by experience and imitation, the course provides students with a characterization of the main types of simple problems that can be faced and solved through C language programs, as well as strategies for choosing adequate data structures and algorithmic constructs. Basic concepts of complexity analysis will also be introduced, to guide towards the development of computationally efficient solutions.
The course can be viewed as a second step, for students in Computer Engineering, in the process of getting introduced to computer programming as a tool for solving real problems. In this context, on the one hand the introduction to computer science is consolidated, from both a "cultural" and technological point of view. On the other hand, the C language is introduced as a second programming language and as a tool for problem-solving, viewed both as a creative and a design activity. Besides the standard education to problem-solving, which is based on learning by experience and imitation, the course provides students with a characterization of the main types of simple problems that can be faced and solved through C language programs, as well as strategies for choosing adequate data structures and algorithmic constructs. Basic concepts of complexity analysis will also be introduced, to guide towards the development of computationally efficient solutions.
Basic notions of architecture and logic
• Knowledge of the architecture and operating mode of a CPU and of the central memory, with special regard to the addressing of data in a RAM memory
• Boolean algebra and logical functions
Problem-solving
• Knowledge of elementary notions of complexity analysis and of iterative sorting algorithms
• Knowledge of elementary notions of problem-solving as a solution to project problems, based on characterization of problems from the point of view of the application context and / or of the algorithmic strategies adopted
• Knowledge of elementary algorithmic strategies, for example for the resolution of iterative verification problems based on the principle of universal and existential quantifiers, on the use of vectors as containers for data collections and / or for the creation of direct access tables
• Knowledge of iterative sorting algorithms
• Ability to move from the formulation of an algorithmic problem to its solution, based on steps of recognition of the type of problem and choice of adequate data structures and solution algorithms
• Ability to solve iterative problems, based on scalar data, or on the collection of data, either ordered and unordered.
C language
• Knowledge of the basic constructs of programming in C language, such as: scalar data types, elementary input / output on standard I/O and text files, iterative and conditional constructs, use of functions as sub-programs, structured data types, struct, arrays and matrices, manipulation of strings of characters
• Knowledge of the pointer data type as a reference to data and its use for the dynamic allocation of arrays and matrices, as well as a way to pass parameters to C functions by reference (or rather "by pointer")
• Ability to develop iterative algorithms, capable of manipulating both scalar and aggregated data in the form of struct types and / or arrays or matrices
• Ability to create modular programs, based on the decomposition of a problem into sub-problems solved by an effective use of functions
• Ability to use programming aid tools.
Basic notions of architecture and logic
• Knowledge of the architecture and operating mode of a CPU and of the central memory, with special regard to the addressing of data in a RAM memory
• Boolean algebra and logical functions
Problem-solving
• Knowledge of elementary notions of complexity analysis and of iterative sorting algorithms
• Knowledge of elementary notions of problem-solving as a solution to project problems, based on characterization of problems from the point of view of the application context and / or of the algorithmic strategies adopted
• Knowledge of elementary algorithmic strategies, for example for the resolution of iterative verification problems based on the principle of universal and existential quantifiers, on the use of vectors as containers for data collections and / or for the creation of direct access tables
• Knowledge of iterative sorting algorithms
• Ability to move from the formulation of an algorithmic problem to its solution, based on steps of recognition of the type of problem and choice of adequate data structures and solution algorithms
• Ability to solve iterative problems, based on scalar data, or on the collection of data, either ordered and unordered.
C language
• Knowledge of the basic constructs of programming in C language, such as: scalar data types, elementary input / output on standard I/O and text files, iterative and conditional constructs, use of functions as sub-programs, structured data types, struct, arrays and matrices, manipulation of strings of characters
• Knowledge of the pointer data type as a reference to data and its use for the dynamic allocation of arrays and matrices, as well as a way to pass parameters to C functions by reference (or rather "by pointer")
• Ability to develop iterative algorithms, capable of manipulating both scalar and aggregated data in the form of struct types and / or arrays or matrices
• Ability to create modular programs, based on the decomposition of a problem into sub-problems solved by an effective use of functions
• Ability to use programming aid tools.
The course is incremental to the one of "Computer Sciences", held in the first semester. There are strict prerequisites in terms of programming skills and knowledge of the main algorithmic strategies, based on conditional and iterative constructs, on the use of scalar and structured data. We then assume the ability to solve elementary (algorithmic) problems.
However, the introduction of C as a new language, downstream of the teaching of Python, means that, while assuming basic concepts as prerequisites, some of them are revisited and presented as new. More in detail, from the "computer sciences" course, following knowledge and skills acquired through the Python language are considered important: representation and manipulation of scalar data, strings and data collections such as lists and sets, elementary I/O, conditional and iterative constructs, functions and their use to create modular programs.
An elementary knowledge of the architecture of processing systems (Von Neumann's model) and of the representation of character and numbers is also assumed as a prerequirement from the teaching of "Computer Sciences".
The course is incremental to the one of "Computer Sciences", held in the first semester. There are strict prerequisites in terms of programming skills and knowledge of the main algorithmic strategies, based on conditional and iterative constructs, on the use of scalar and structured data. We then assume the ability to solve elementary (algorithmic) problems.
However, the introduction of C as a new language, downstream of the teaching of Python, means that, while assuming basic concepts as prerequisites, some of them are revisited and presented as new. More in detail, from the "computer sciences" course, following knowledge and skills acquired through the Python language are considered important: representation and manipulation of scalar data, strings and data collections such as lists and sets, elementary I/O, conditional and iterative constructs, functions and their use to create modular programs.
An elementary knowledge of the architecture of processing systems (Von Neumann's model) and of the representation of character and numbers is also assumed as a prerequirement from the course of "Computer Sciences".
Basic notions of architecture and logic (10 h)
• references to the architecture and functioning of the computer and of the central memory
• the concept of pointer / address
• compilation, link, execution, program organization in memory
• Boolean algebra and logical functions
C as a second programming language (20 h)
• Basic types and I/O:
o primitive data types (scalars), symbolic constants
o I/O operations (on stdin/stdout and text files)
• Conditional and iterative constructs
• Functions and parameters passing (by value/reference)
• Aggregated data types:
o arrays and static matrices (of interegs, float and characters)
o strings and arrays of strings
o struct (aggregated types)
Pointers and dynamic allocation in C (10 h)
• pointer as reference to data
• syntactic elements
• array/pointer duality and pointer arithmetic
• dynamic allocation, dynamic arrays and matrices
Elementary problem-solving (20 h)
• analysis of computational complexity
• problem solving:
o iterative sorting algorithms
o problems on numbers (mathematical problems and/or algaebric/geometric problems with matrices and arrays)
o problems of text processing (manipulation of texts, menu selection)
o problems of numbers/text encoding (es. criptography, compression etc.)
o problems of verification, selection, sorting.
Basic notions of architecture and logic (10 h)
• references to the architecture and functioning of the computer and of the central memory
• the concept of pointer / address
• compilation, link, execution, program organization in memory
• Boolean algebra and logical functions
C as a second programming language (20 h)
• Basic types and I/O:
o primitive data types (scalars), symbolic constants
o I/O operations (on stdin/stdout and text files)
• Conditional and iterative constructs
• Functions and parameters passing (by value/reference)
• Aggregated data types:
o arrays and static matrices (of interegs, float and characters)
o strings and arrays of strings
o struct (aggregated types)
Pointers and dynamic allocation in C (10 h)
• pointer as reference to data
• syntactic elements
• array/pointer duality and pointer arithmetic
• dynamic allocation, dynamic arrays and matrices
Elementary problem-solving (20 h)
• analysis of computational complexity
• problem solving:
o iterative sorting algorithms
o problems on numbers (mathematical problems and/or algaebric/geometric problems with matrices and arrays)
o problems of text processing (manipulation of texts, menu selection)
o problems of numbers/text encoding (es. criptography, compression etc.)
o problems of verification, selection, sorting.
Integrated lectures and exercises will take place in the classroom. In the laboratory, exercises will be proposed which will put the notions learned into practice. These exercises should be started at home and finished in laboratory.
Integrated lectures and exercises will take place in the classroom. In the laboratory, exercises will be proposed which will put the notions learned into practice. These exercises should be started at home and finished in laboratory.
• Deitel & Deitel, "C: how to program", Pearson Prentice Hall, 2010
• G. Cabodi, P. Camurati, P. Pasini, D. Patti, D. Vendraminetto, "Dal problema al programma: introduzione al problem-solving in linguaggio C", Apogeo, II edizione, 2016
- Deitel & Deitel, "C: how to program", Pearson Prentice Hall, 2010
- Slides, codes and additional material will be provided during the course through the portal
Slides; Esercizi; Esercizi risolti; Esercitazioni di laboratorio; Esercitazioni di laboratorio risolte; Video lezioni dell’anno corrente; Video lezioni tratte da anni precedenti;
Lecture slides; Exercises; Exercise with solutions ; Lab exercises; Lab exercises with solutions; Video lectures (current year); Video lectures (previous years);
Modalità di esame: Prova scritta (in aula); Prova scritta in aula tramite PC con l'utilizzo della piattaforma di ateneo;
Exam: Written test; Computer-based written test in class using POLITO platform;
...
Exam structure
The exam, lasting at most 1h30, consists of:
• open or multiple choice questions on subjects whose knowledge is assessed
• programming exercises where the student completes a program, corrects a program, simulates the execution of a program
• elementary problem-solving exercises in C: given the specifications, the data structures and the solution algorithm must be defined and then implemented in C language.
The overall score is 33.
Material available during the written exam:
Access to appropriate documentation will be provided as a reference for the C language.
It is forbidden to consult other texts, notes, handouts, etc.
It is forbidden to use any electronic media (cell phones, PDAs, laptops, etc.)
Exam mode
The exam will be open-ended via PC with the use of the integrated Exam platform. In case of any technical problems, it will be a written exam (on paper), with the very same structure and content of the one via PC.
The student must upload onto Portal within three days of the date of the written exam:
• a report (max 1 page) on the solution adopted (data structures, algorithm, etc.)
• a copy of the correct program, highlighting changes with respect to the original program.
If the student does not upload the material by the scheduled date, the written exam will not be evaluated.
Gli studenti e le studentesse con disabilità o con Disturbi Specifici di Apprendimento (DSA), oltre alla segnalazione tramite procedura informatizzata, sono invitati a comunicare anche direttamente al/la docente titolare dell'insegnamento, con un preavviso non inferiore ad una settimana dall'avvio della sessione d'esame, gli strumenti compensativi concordati con l'Unità Special Needs, al fine di permettere al/la docente la declinazione più idonea in riferimento alla specifica tipologia di esame.
Exam: Written test; Computer-based written test in class using POLITO platform;
Exam structure
The exam, lasting at most 1h30, consists of:
• open or multiple choice questions on subjects whose knowledge is assessed
• programming exercises where the student completes a program, corrects a program, simulates the execution of a program
• elementary problem-solving exercises in C: given the specifications, the data structures and the solution algorithm must be defined and then implemented in C language.
The overall score is 33.
Material available during the written exam:
Access to appropriate documentation will be provided as a reference for the C language.
It is forbidden to consult other texts, notes, handouts, etc.
It is forbidden to use any electronic media (cell phones, PDAs, laptops, etc.)
Exam mode
The exam will be open-ended via PC with the use of the integrated Exam platform. In case of any technical problems, it will be a written exam (on paper), with the very same structure and content of the one via PC.
The student must upload onto Portal within two days of the date of the written exam:
• a report (max 1 page) on the solution adopted (data structures, algorithm, etc.)
• a copy of the correct program, highlighting changes with respect to the original program.
If the student does not upload the material by the scheduled date, the written exam will not be evaluated.
In addition to the message sent by the online system, students with disabilities or Specific Learning Disorders (SLD) are invited to directly inform the professor in charge of the course about the special arrangements for the exam that have been agreed with the Special Needs Unit. The professor has to be informed at least one week before the beginning of the examination session in order to provide students with the most suitable arrangements for each specific type of exam.