FUNDAMENTALS OF PROGRAMMING A
Learning outcomes of the course unit
The main aim of the course is to provide students with the fundamental techniques of imperative programming through the use of the imperative subset of the C ++ programming language. The course also aims at providing students with the ability to apply analytical techniques to solve simple practical problems (such as, for instance, problems of calculus and sorting) 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 are used during classes, in order to help students in reading also international scientific papers and books.
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, using the C++ language. Many solving methods are applied to mathematical and numerical problems and they are presented from an algorithmic point of view.
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.
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.
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.
Basic notions on functions, set theory, and logics.
Course contents summary
Computer architecture and information representation are introduced in the first part of the course. Then, the fundamental of imperative programming are presented, using C++ as reference programming language. In particular, the concepts of variable, data type, algorithm, and expression are examined and functions and recursive functions are introduced.
- D. Mandrioli, S. Ceri, L. Sbattella, P. Cremonesi, G. Cugola. Informatica arte e mestiere, McGraw-Hill, 2014.
- Exercises on elly.unipr.it
- L.J. Aguilar. Fondamenti di programmazione in C++ , McGraw-Hill, 2008.
- R. Miller, D. Clark, B. White, e W. Knottenbel: An Introduction to the
Imperative Part of C++, 1999, disponibile su WEB all'indirizzo http:
- Notes at http://people.math.
The majority of the course consists in frontal lessons. Some exercise sessions will be scheduled, both in class and in the computer lab.
Assessment methods and criteria
The final exam consists in a written test and an oral test. Students are admitted to the oral test only if they passed the written one.