Computer Programming
A.Y. 2024/2025
Learning objectives
This is an introductory class on programming, its principles, and techniques. Its aim is to make the student, who might never have been exposed to programming, familiar with this discipline and to provide those insights and tools required to approach all further classes that assume some knowledge of programming.
Expected learning outcomes
At the end of the course the student will be able to devise and write solutions to average difficult problems using an imperative programming language. They will also be able to solve some simle problems using the object oriented paradigm.
Lesson period: First semester
Assessment methods: Esame
Assessment result: voto verbalizzato in trentesimi
Single course
This course can be attended as a single course.
Course syllabus and organization
Single session
Responsible
Lesson period
First semester
Course syllabus
BASIC CONCEPTS
· Algorithms.
· Phases of programming.
· Modeling tools.
· Documentation.
· A brief history of programming.
· Programming languages
STRUCTURED PROGRAMMING
· Principles of structured programming.
· C Language: expressions and assignments, control structures, predefined types, arrays, matrices, and strings, structured types, pointers, and memory management, functions and parameter passing, main and parameters to main, standard library, file management.
· Jumps elimination: the Böhm-Jacopini Theorem, Ashcroft and Manna's transformation.
· Code correctness: elements of validation and verification.
OBJECT ORIENTED PROGRAMMING
· Modularity, abstraction and abstract data type, encapsulation classes and objects, inheritance and polymorphism
· Design pattern, Aspect oriented programming
· Java programming
· Advanced software development practices
· Algorithms.
· Phases of programming.
· Modeling tools.
· Documentation.
· A brief history of programming.
· Programming languages
STRUCTURED PROGRAMMING
· Principles of structured programming.
· C Language: expressions and assignments, control structures, predefined types, arrays, matrices, and strings, structured types, pointers, and memory management, functions and parameter passing, main and parameters to main, standard library, file management.
· Jumps elimination: the Böhm-Jacopini Theorem, Ashcroft and Manna's transformation.
· Code correctness: elements of validation and verification.
OBJECT ORIENTED PROGRAMMING
· Modularity, abstraction and abstract data type, encapsulation classes and objects, inheritance and polymorphism
· Design pattern, Aspect oriented programming
· Java programming
· Advanced software development practices
Prerequisites for admission
This is an introductory class on programming, its principles, and techniques. The scope is to provide all the knowledge to model, solve and develop software solution to simple problems. Therefore, there are no specific pre-requisites to address the course.
Teaching methods
Lectures for the theoretical part in order to consolidate fundamental theoretical concepts and laboratory exercises mainly for practicing C and Java programming.
Teaching Resources
Slides and additional documents available on the course web site.
Assessment methods and Criteria
The exam is divided into two different parts. A written exam (two hours, no open book) for the theoretical part where competences in terms of computer programming concepts and algorithmic thinking are evaluated. A practical laboratory exam focused on C and Java programming based on exercises to be done in laboratory.
The vote of theoretical and practical parts of the exam is expressed in thirtieths. Votes will be directly notified to students as soon as they are available.
The two parts of the exam can be done even in separated distinct exam sessions. The final vote is computed as the average of the practical and theoretical parts
It is possible to improve the average with an optional project to be agreed with the teachers (2 additional points at the maximum).
For the written exam, in addition to the correctness of the answer, the competence in the use of an adequate technical language will be evaluated. For the practical exam, in addition to the correctness of the result, the technical quality of the programming will be evaluated. For the optional project, the complexity, the quality of the code and the exposure capacity will be evaluated.
The vote of theoretical and practical parts of the exam is expressed in thirtieths. Votes will be directly notified to students as soon as they are available.
The two parts of the exam can be done even in separated distinct exam sessions. The final vote is computed as the average of the practical and theoretical parts
It is possible to improve the average with an optional project to be agreed with the teachers (2 additional points at the maximum).
For the written exam, in addition to the correctness of the answer, the competence in the use of an adequate technical language will be evaluated. For the practical exam, in addition to the correctness of the result, the technical quality of the programming will be evaluated. For the optional project, the complexity, the quality of the code and the exposure capacity will be evaluated.
INF/01 - INFORMATICS - University credits: 12
Laboratories: 48 hours
Lessons: 72 hours
Lessons: 72 hours
Shifts:
Turno
Professor:
Anisetti MarcoTurno A
Professor:
Luperto MatteoTurno B
Professor:
Casiraghi ElenaEducational website(s)
Professor(s)