cod. 1000747

Academic year 2023/24
1° year of course - First semester
Academic discipline
Informatica (INF/01)
Formazione informatica
Type of training activity
56 hours
of face-to-face activities
6 credits
hub: PARMA
course unit

Learning objectives

The main aim of the course is to provide students with the fundamental techniques of imperative programming. The course also aims at providing students with the ability to apply analytical techniques to solve simple practical problems and to translate these solutions into executable programs. Finally, the course develops analytical and abstraction skills and it aims at improving the ability related to the decomposition of problems into sub-problems.

Taking Dublin Indicators into account:

Knowledge and understanding:

During the course, the main ideas related to imperative programming are introduced. Particular emphasis is dedicated to the comprehension of algorithmic techniques on which imperative languages rely. Most of the suggested literature is in italian, even though proper english words and english slides are used during classes, in order to help students in reading also international scientific papers and books. During the course, students are encouraged to learn fundamentals of programming. Students also acquire adequate knowledge of computers architecture and information representation. Moreover, students are able to comprehend applications of mathematics to computer science.

Applying knowledge and understanding:

Acquired theoretical knowledge is applied to solve specific problems, which are typically related to mathematics. During the course, some exercise sessions are dedicated to the solutions of problems. Many solving methods are applied to mathematical and numerical problems and they are presented from an algorithmic point of view. Students are able to use computational instruments as a support to mathematical processes and as a way to acquire new information.

Making judgments:
Exercises proposed during classes can be solved individually or in groups and they often can be solved in different ways. Students can compare their approach to the solutions proposed by other students and to the solutions shown during classes. Such comparisons enhance the development of specific skills which are useful to better understand the considered problems.

Communication skills:
Discussions during classes and exercise sessions allow students to improve their communications skills. Such discussions concern specific algorithmic techniques to solve the proposed problems and they focus on advantages and disadvantages of the proposed approaches. Students learn to work individually and in groups.

Learning skills:
The study of algorithmic techniques and their application to heterogeneous problems help students to improve in-depth comprehension of the topics. Acquired knowledge can be adapted to solve problems which may be different from those specifically seen during classes. Students acquire computational techniques useful to work in groups and autonomously.


Basic notions on functions, set theory, and logics.

Course unit content

The first part of the course presents concepts related to the hardware and software architecture of computers and the representation of information, with a main focus on the representation of integer and real numbers. Next, the fundamentals of programming are introduced. In particular, the notions of variable, data type, algorithm, expression, function and recursive function, focusing on the C++ programming language.

Full programme

- - -


Slides per tutte e quattro le parti saranno messe a disposizione dal docente, assieme alla seguente
dispensa (per parti 3 e 4):

• G. Rossi. Fondamenti di Programmazione (con linguaggio di riferimento C++).

Un altro riferimento (ricco di esercizi ed esempi) per parti 3 e 4 è il seguente:

• L.J. Aguilar. Fondamenti di programmazione in C++, Seconda Edizione, McGraw-Hill, 2021

Teaching methods

The majority of the course consists in frontal lessons.

Assessment methods and criteria

- - -

Other information