First cycle
degree courses
Second cycle
degree courses
Single cycle
degree courses
School of Science
Course unit
PROGRAMMING (Iniziali cognome M-Z)
SC02121720, A.A. 2016/17

Information concerning the students who enrolled in A.Y. 2016/17

Information on the course unit
Degree course First cycle degree in
SC1167, Degree course structure A.Y. 2011/12, A.Y. 2016/17
bring this page
with you
Number of ECTS credits allocated 10.0
Type of assessment Mark
Course unit English denomination PROGRAMMING
Website of the academic structure
Department of reference Department of Mathematics
Mandatory attendance No
Language of instruction Italian
Single Course unit The Course unit can be attended under the option Single Course unit attendance
Optional Course unit The Course unit can be chosen as Optional Course unit

Teacher in charge ROBERTO DI PIETRO
Other lecturers DAVIDE BRESOLIN INF/01

ECTS: details
Type Scientific-Disciplinary Sector Credits allocated
Basic courses INF/01 Computer Science 10.0

Course unit organization
Period Annual
Year 1st Year
Teaching method frontal

Type of hours Credits Teaching
Hours of
Individual study
Laboratory 3.0 24 51.0 No turn
Lecture 7.0 56 119.0 No turn

Start of activities 01/10/2016
End of activities 16/06/2017
Show course schedule 2019/20 Reg.2011 course timetable

Examination board
Board From To Members of the board
11 a.a 2019/2020 01/10/2019 28/02/2021 FILE' GILBERTO (Presidente)
BALDAN PAOLO (Supplente)
CRAFA SILVIA (Supplente)
10 a.a 2018/2019 01/10/2018 28/02/2020 FILE' GILBERTO (Presidente)
TOLOMEI GABRIELE (Membro Effettivo)
AIOLLI FABIO (Supplente)
CRAFA SILVIA (Supplente)
9 a.a. 2017/2018 - canale 1 01/10/2017 28/02/2019 FILE' GILBERTO (Presidente)
AIOLLI FABIO (Membro Effettivo)
BRESOLIN DAVIDE (Membro Effettivo)
CRAFA SILVIA (Membro Effettivo)
RANZATO FRANCESCO (Membro Effettivo)
TOLOMEI GABRIELE (Membro Effettivo)

Prerequisites: Some knowledge of computer architecture.
Target skills and knowledge: The ability to specify a problem through a pre- and a post-condition that must be obeyed by the program that we wanto to build in ordere to solve the problem. The ability to write a program in C++ and show that it actually computes what is specified in its pre- and post-condition. The ability to device also recursive solutions to problems and to show their correctness through an inductive proof. Some knowledge of the basic notions of imperative programming: simple commands, pointers, arrays, functions, passing parameters by value and by reference, user-defined types, exceptions.
Examination methods: The exam consists of a written proof with a theoretical and a programming part. In the programming part the students are asked to develop a iterative and a recursive program. For both programs some considerations about their correctness are requested. The exam takes place in the computer laboratory and students receive the assignment and turn in their solution via computer. An oral examination may be required in special cases.
Assessment criteria: The exam is constructed to challenge the ability of the student to think and to express his/her thoughts in a precise manner. In particular, one evaluates the ability of a student to specify the problem proposed and to build a program that solves the specified problem. One evaluates also the capacity to explain why the proposed solution solves the specified problem. Simplicity and clarity are important plus points.
Course unit contents: There are two interacting subjects of this course:
1) On the one hand notions about correctness à la Hoare are taught. The main concepts are that of pre- and post-condition and of invariant of a cycle. Each program is accompanied by a pre- and post-condition and its correctness with respect to them must be proven in a convincing way.
2) Simultaneously to part (1), students learn the basic notions of imperative programming with C++. In particular, predefined types, simple commands, pointers, array, pointer arithmetic, functions, recursive functions, dynamic memory, concatenated lists and binary trees.
Planned learning activities and teaching methods: We follow the approach that one learns to program well by programming a lot and receiving feedback about the solutions turned in. Therefore, each week, programming exercises are assigned that mus be solved. The exercises are made available via a web service based on the moodle application. This service is also used to turn in the solutionsand also to test them on some inputs. At each momnt of the course, each student can view his/her progress with respect to solving the exercises that have been assiged till then. Having turned in correct (wrt the tests) solutions to all exercises is required in order to be admitted to the exams. The exams take place in the computer laboratory and use the same web service that is used for the weekly exercises. The course consists of 80 hours of course work of which 24 are given in the laboratory. The course will be dividrd in 2 parts: the first one of 2 credits takes place during the first semester and the second one of 8 credits during the second semester.
The aim of the first part is twofold: on the one level students learn how to write and execute programs on a computer and on the other hand they are presented with the first notions of program correctness.
Additional notes about suggested reading: The course uses a moodle elearning site in which students can find all useful documents for the course: the slides of the classes, past exams with and without solutions, and weekly exercises with the obtained score.
Textbooks (and optional supplementary readings)
  • Gilberto Filè, Programmazione consapevole. Padova: Progetto, 2014. Cerca nel catalogo