Do you need any help?

Notice Board

Per partecipare al corso di Fondamenti di programmazione 2021-22 loggatevi e attivatelo nella vostra pagina dei corsi preferiti. A quel punto il corso appare nel menù personale cliccando sul proprio avatar. Per i materiali degli anni precedenti seguite lo stesso metodo.

To join the Programming/Lab 2021-22 course, log-on and select it on the my courses page. It will appear on the personal menu of your avatar. For earlier years use the same method.



Programming course (Unit 1-2) rules

The two Units are taught by different professors, but they share the same topics, have the same examination, and result in only one grade (in 30th).

  • To access the exam, you are required to hand in four (4) mandatory homework assignments (see below).
  • The exam happens in the lab: you have to prove your practical skills by writing four (4) programs, each solving a given problem on a topic of the courses.
  • Moreover, you will have to answer an additional theoretical quiz with reasoning questions.
  • You will receive a single grade that includes the cumulative grade of the homework assignments and the exam results (see below).


We will publish eight (8) homework assignments during the course, plus four (4) recovery ones. Homework assignments have to be carried out individually at home. Four (4) of them are optional, and four (4) are mandatory for admission to the exam, both of Programming and Programming Lab.

Each homework assignment consists of one exercise to be carried out. Usually, these exercises need a preliminary analysis and oblige you to think well about the problem, how to represent the intermediate data and how to solve the problem efficiently. The difficulty is calibrated to let you devise the possible solutions taking efficiency and effectiveness into account.

The four optional homework assignments are used to get acquainted with the homework mechanism and with the topics carried out during the course. The optional homework assignments do not yield points (even if they have their separate ranking) and are not subject to a deadline.

The four mandatory homework assignments are used to verify that you can deal with different exam topics. Each of those homework assignments has a deadline (usually two weeks) and is explained in the classroom right after the deadline. Those homework assignments can also receive some extra points (as explained next). Your code will be visible to everybody after the final deadline.

You can recover missed (or improve the score of) mandatory homework assignments by performing the corresponding recovery homework assignments, usually of the same difficulty as the former. Recovery homework assignments are subject to no deadline, and no explanation nor bonus will be given. The best score will be considered between the two achieved (mandatory and recovery assignments), in case.

Homework assignments are automatically tested on a sample data set via a test program that is delivered to you together with a description of the assignment. In addition to the provided tests, some additional hidden tests will be run to further check the provided solution and obtain the final score.

Every exercise is given a score in the range of 0–30 points, proportionally to the number of tests passed. On top of that, the score will receive a bonus to reward

  1. the quality of the implementation (see below)
  2. the involvement in the peer assessment (peer evaluation and suggestions for improvement) and the Q2A forum (see below).

Honour code

Students who deliver solutions that are too similar or try dirty tricks will have their homework canceled. A canceled homework assignment must be recovered. Beware that if the recovery homework is also canceled, its contribution to the overall grade will be 0 (you can not recover a recovery homework).


Mandatory homework solutions that pass all the tests (i.e., yield 30 points), can have up to 4 additional points if:

  1. they are in the top 1/2 of the ranking for highest efficiency (shortest total test time): +2 points
  2. they are in the top 1/2 of the ranking for least cyclomatic complexity of the codebase: +2 points.

Peer assessment

To encourage the exchange of ideas (NOT the code though) and the understanding of exercises, there will be a peer assessment activity during which you can voluntarily suggest to one another how to improve your homework solutions.

Each homework assignment will have two deadline dates, then: the first is mandatory for everyone, while the second (4 days later) is for the voluntary peer assessment. By the first deadline, all the students have to deliver the code of their solution and the description in English of the implemented algorithm. The description must be anonymous. After the first deadline, students who want to participate in the peer assessment have 4 more days to revise their solution, providing and getting advice to and from colleagues. In particular: during the first 2 days, the students have to evaluate the algorithms of 3 randomly chosen anonymous peers and give effective suggestions to improve the algorithm. At the same time, they will receive advice from 3 random anonymous peers. In the last 2 days, the participating students are required to give feedback about the received pieces of advice and can deliver a revised (possibly improved) solution of their algorithm, leveraging received ideas and feedback.

Taking part in the peer assessment also gives access to a bonus in the grade. At the end of the course, the clarity of algorithm descriptions, the usefulness, and the quality of provided advice collected with the feedback to the anonymous peers will determine a ranking: those who are in the top ⅓ of the ranking will receive a bonus up to +3 points that will be added to the final exam grade.

Note: the evaluations that you give/receive do not directly affect the score (apart from the bonus that you can get for helping others better) and will be used by us to investigate the social mechanisms underlying the peer assessment.

Q2A forum involvement

To encourage socialization, there are some incentives for the involvement in the official Q2A forum of the course. Any activity in the forum is worth some points: asking questions, giving answers, voting and receiving votes, receiving the “best answer” mark from the asking user or the teachers. At the end of the course, there will be a ranking of the forum users. Those in the top ⅓ of the ranking will receive a bonus up to +3 points to the final exam grade.

Dates and topics of homework assignments

The recovery homework assignments will be about the same topics as those of the corresponding mandatory ones. They will be out upon the expiry of the PA deadlines.

This is a tentative calendar with the HW dates:

      HW        Release date   First deadline    PA deadline                     Topic                    
 ------------- -------------- ----------------- -------------- ------------------------------------------
  1 optional    --             --                --             strings, sequences, sets and lists        
  2 mandatory   27/10/2021     6/11/2021         10/11/2021     same as (1)        
  3 optional    --             --                --             dictionaries and file access              
  4 mandatory   10/11/2021     20/11/2021        24/11/2021     same as (3)              
  5 optional    --             --                --             matrices, images and classes              
  6 mandatory   24/11/2021     4/12/2021         8/12/2021      same as (5)              
  7 optional    --             --                --             directory or tree or game tree recursion  
  8 mandatory   8/12/2021      18/12/2021        22/12/2021     same as (7)  

Final exam grade

To be admitted to the examination, a grade of 16 or more in each of the 4 mandatory homework assignments is required. The final grade to be recorded is the weighted average of the collected scores, computed as follows:

  • ⅓ for the average grade of the mandatory homework assignments, including bonus points for peer assessment and activity in the Q2A forum;
  • ⅔ for the examination (with a minimum grade of 18 and a maximum grade of 32).

For example, let us assume a student gets:

  • 20, 32, 20, 24 (giving an average 24/30) to the mandatory homework assignments, plus an overall bonus of 1.5;
  • 29 to the examination.

As a result, the final grade will be 28, namely (24 + 1.5) × 1/3 + 29 × 2/3 = 27.83

A final grade greater than 30 will be registered as 30 cum laude.