Programming techniques

Course objectives

Obiettivi generali: Basic knowledge about the architecture and organization of a computer. Development of skills on the definition of algorithms to solve problems. Foundations of programming, using C as reference language. Familiarity with the definition and use of data structures, both elementary (such as arrays) and more complex (such as data tables, linked lists and binary trees). Capability to apply the above mentioned knowledge to solve problems of low and medium complexity, entailing the selection and definition of suitable algorithms and the implementation of small-medium size software systems. Obiettivi specifici: Knowledge and understanding: Knowledge about the structured programming methodology. Programming and problem solving skills, involving the definition and implementation of data structures/programs suitable to solve problems. Knowledge about notable algorithms, and skilled selection of the best suited algorithm for a problem. Technical skills in the management of program modules, data structures of progressive complexity (from static defined data structures to dynamically managed data structures). Visualization and comprehension of the principles on which a computer run programs. Applying knowledge and understanding: Use of programming environments to implement programs. Definition of algorithms and modularized programs to solve a problem. Skills related to the design and implementation of small/medium software systems. Skills related to the comprehension of the execution of a program, to be applied in program testing activity. Making judgements: Being able to assess the correctness and appropriateness of a function or a program built by modules. These skills are developed during the autonomous in-depth analysis fostered by the learning materials, and during the lab activities. These skills are deepened with the production, description, and discussion with the teacher, of homework. Communication: Being able to describe and share the lines of design and implementation of a program, explaining the decisions taken about the representation in the program of relevant data of the problem. The homework duties require to provide the teacher with a short description of the solution, so to put on trial the communication capabilities of the student. Learning skills: Structured programming is explained and described as a step toward further advanced programming methodologies, to foster awareness that there is more to see and one should not settle on what was learned so far. The activities fostered by the course, such as the autonomous in depth analysis, and the design and implementation of small and less small programs, as requested by the homework, allow to develop such comprehension and trains the student to do her/his own update, in this area, autonomously in the future.

Channel 1
MARCO TEMPERINI Lecturers' profile

Program - Frequency - Exams

Course program
Data Processing System — about 7 hours - -Computer architecture: the Von Neumann machine; - Representation of information in the computer: number systems, representation of integers, floating-point representation; - Basic software: the operating system and the file system. Compilation and execution of a program written in a high-level language. Introduction to Programming with C — about 23 hours (including exercises) - Concept of algorithm; - Concept of variable; - Simple data types associated with variables; - Operators, expressions, and their evaluation; - Function libraries for input/output; - Structured programming: statements and blocks of statements, control structures (selection and iteration); - Less elementary data structures: arrays; - Functions, scope, and lifetime of variables; - Handling of text files. More Advanced Programming Concepts with C — about 25 hours (including exercises) - Pointers; - Alphanumeric character strings; - Dynamic memory allocation: functions malloc and free; function realloc; - Static arrays and dynamic arrays (implemented with malloc); - Strings with “exact” allocation; - Structures (struct); - Recursion; - Handling of binary files. Program Development Methodologies and Testing Techniques — about 11 hours (including exercises) - Design and implementation of C programs. Implementation of significant algorithms: searching and sorting; - Program testing techniques. Data Structures with C — about 24 hours (including exercises) - Abstract Data Structures (ADT); - Data tables (arrays of structures); - Dynamic data structures: linked lists.
Prerequisites
This is about foundations of computer programming. Prerequisites are those cultural abilities coming from the fruitful attendance to high school. We use basic concepts in mathematics and set theory. It could be useful to have notions about the use of a computer to manage email, word processing, navigating the web.
Books
- A.Bellini, A.Guidi: Linguaggio C. McGraw Hill - D.Calvanese, P.Liberatore, F.Massacci, R.Rosati: Programmazione di strutture dati in C. Ed. Progetto Leonardo, Bologna - lecture notes: slides of the lessons, documents for exercising in laboratory, additional documents on the course website
Frequency
not mandatory, whereas it is very much recommended
Exam mode
Learner's evaluation is based on - homework; - a final exam, written part, consisting in the production of answers to three questions involving the discussion of concepts in the course, and the production of data structure definitions and software implementation of functions, in relation to a stated programming problem; - a final exam, oral part, where the written part is discussed and some more questions can be answered by the learner. For incoming Erasmus students, the exam is not differentiated but may be taken in English.
Lesson mode
Cycle of lectures. Cycle of guided practice sessions in the laboratory. Ah, no—the laboratory at the Latina campus has been missing for years: we practice in the classroom, with students bringing their own laptops, if they have one. The guided practice sessions are also shared via Google Meet. Students must submit (through Classroom) the required homework assignments (2, or three), in order to verify their preparation for taking the exam. These homework assignments are mandatory.
MARCO TEMPERINI Lecturers' profile

Program - Frequency - Exams

Course program
Data Processing System — about 7 hours - -Computer architecture: the Von Neumann machine; - Representation of information in the computer: number systems, representation of integers, floating-point representation; - Basic software: the operating system and the file system. Compilation and execution of a program written in a high-level language. Introduction to Programming with C — about 23 hours (including exercises) - Concept of algorithm; - Concept of variable; - Simple data types associated with variables; - Operators, expressions, and their evaluation; - Function libraries for input/output; - Structured programming: statements and blocks of statements, control structures (selection and iteration); - Less elementary data structures: arrays; - Functions, scope, and lifetime of variables; - Handling of text files. More Advanced Programming Concepts with C — about 25 hours (including exercises) - Pointers; - Alphanumeric character strings; - Dynamic memory allocation: functions malloc and free; function realloc; - Static arrays and dynamic arrays (implemented with malloc); - Strings with “exact” allocation; - Structures (struct); - Recursion; - Handling of binary files. Program Development Methodologies and Testing Techniques — about 11 hours (including exercises) - Design and implementation of C programs. Implementation of significant algorithms: searching and sorting; - Program testing techniques. Data Structures with C — about 24 hours (including exercises) - Abstract Data Structures (ADT); - Data tables (arrays of structures); - Dynamic data structures: linked lists.
Prerequisites
This is about foundations of computer programming. Prerequisites are those cultural abilities coming from the fruitful attendance to high school. We use basic concepts in mathematics and set theory. It could be useful to have notions about the use of a computer to manage email, word processing, navigating the web.
Books
- A.Bellini, A.Guidi: Linguaggio C. McGraw Hill - D.Calvanese, P.Liberatore, F.Massacci, R.Rosati: Programmazione di strutture dati in C. Ed. Progetto Leonardo, Bologna - lecture notes: slides of the lessons, documents for exercising in laboratory, additional documents on the course website
Frequency
not mandatory, whereas it is very much recommended
Exam mode
Learner's evaluation is based on - homework; - a final exam, written part, consisting in the production of answers to three questions involving the discussion of concepts in the course, and the production of data structure definitions and software implementation of functions, in relation to a stated programming problem; - a final exam, oral part, where the written part is discussed and some more questions can be answered by the learner. For incoming Erasmus students, the exam is not differentiated but may be taken in English.
Lesson mode
Cycle of lectures. Cycle of guided practice sessions in the laboratory. Ah, no—the laboratory at the Latina campus has been missing for years: we practice in the classroom, with students bringing their own laptops, if they have one. The guided practice sessions are also shared via Google Meet. Students must submit (through Classroom) the required homework assignments (2, or three), in order to verify their preparation for taking the exam. These homework assignments are mandatory.
  • Lesson code1035370
  • Academic year2025/2026
  • CourseInformation Engineering
  • CurriculumInformatica
  • Year1st year
  • Semester1st semester
  • SSDING-INF/05
  • CFU9