AY 20/21 - Advanced Programming

This page is about the courses named (actually the same course):

  • Programmazione avanzata (302MI), for master program IN20, 6 CFUs
  • Programmazione avanzata (316MI), for master program IN20, 9 CFUs
  • Programmazione avanzata (558EC), for master program EC71, 9 CFUs

Program, goals, requirements #

Detailed program #

Available here, in Italian, or here, in English.

Goal of the course #

Knowledge and understanding #

  • Know what object-oriented programming is: how to store, process, and access data with objects.
  • Know the syntax and the features of the Java programming language and of the Java software platform.
  • Know the style conventions for Java language.
  • Know Java main frameworks and APIs.
  • Know the common structure of the basic development tools, including those for unit testing.
  • Understand how a Java program is executed by a computer.

Applying knowledge and understanding #

  • Design, develop, test, and debug complex software in Java.

Making judgements #

  • Decide if Java fits a given programming task.
  • Judge the quality of a software written in Java in terms of code style, software artifacts structure, testing, and documentation.

Communication skills #

  • Describe the motivations behind choices in the design and development of a software written in Java.
  • Comprehend, formulate, and describe the specifications for a software.

Learning skills #

  • Learn, through software documentation and examples, to use any software written in Java.
  • Learn the basics of other object-oriented programming languages.

Requirements #

Basics of programming and data structures: algorithm, data types, loops, recursion, parallel execution. Basics of computer networks: IP, TCP.

Method, language, material #

Language of teaching #

Italian

Teaching method #

Frontal lessons with blackboard and slide projection; exercises, under teacher’s supervision, consisting in solving simple tasks of software design and development in Java. Bring your own laptop!

Course material #

The course material (teacher’s slides) is served directly from here. The slides might be updated during the course.

The lectures are recorded and are available both on MS Teams and here. Also the lectures of the last academic year (with the exception of the first one, due to technical reasons) have been recorded: they are available here. Since last year the teaching has been entirely online, the recordings of the last year might be of better quality than the ones of this year.

Lectures timetable and course calendar #

The course will start on 1/3/2021.

The lectures will be:

  • on Monday, from 8.30 to 10, in room A, 2nd floor, building C2
  • on Wednesday, from 8.45 to 11, in room A, 2nd floor, building C2
  • on Thursday, from 8.45 to 11, in room B, ground floor, building C7

The lectures will be done in person and online, on the Microsoft Teams associated with the course (and reachable from the university list of online courses).

Timetable variations #

The lecture of 18/3/2021 will not be given since I will be involved in a PhD final defense.

The lectures of 7/4/2021 and 8/4/2021 will not be given since I will be “attending” a conference.

End-of-course test (exam) #

The exam works in one of the following ways:

  1. Three parts: Home assignments + Final project + Written test. Exam is passed only if the grade is >6/10 on each part. Overall grade is determined as 10%, 60%, 30%, respectively. The grades for the Home assignments are communicated during the course.
  2. Three parts: Final project + Written test + Oral exam. Exam is passed only if the grade is >6/10 on each part. Overall grade is determined as 40%, 30%, 30%, respectively.

The exam may be repeated an unlimited number of times. Overall grades corresponding to failed exams (with the exception of Project missed deadlines) will be registered as failed. The student may ask to repeat an exam also when passed: acceptance and specific parts to be repeated will be agreed with the teacher.

Student must register for the exam session of their interest using the online system esse3. Note that there are deadlines for registration (usually 1 week before the session date).

Final project #

At the end of the course, a project will be assigned that consists in the design and development of a software in Java, including testing and a simple documentation and following the provided specifications. The student will be required to submit the software within a deadline corresponding to the day of the written test she/he plans to apply. The evaluation will be as follows: 0/10 not submitted (missed deadline); 5/10 to 10/10 submitted, depending on quality of code, software structure, documentation, test coverage, degree of working.

The project assignment is here.

Written test #

Questions on the course program with short open answers and short programming exercise.

Oral exam #

Questions on the course program and short programming exercise.

Home assignments #

During the course, some exercises will be assigned. Each exercise will consist in the design and development of a simple software in Java; the exercise will start in the classroom under the teacher’s supervision. The student will be required to submit the software within a deadline. The evaluation of each exercise will be as follows: 0/10 not submitted (missed deadline); 5/10 submitted, but not working; 8/10 submitted and almost fully working; 10/10 submitted and fully working. The overall Home assignments evaluation will be the average of the exercise evaluations.

Assignments have to be shared with the teacher using repl.it. Students have to send an email to the teacher, within the deadline, saying who they are and which is the url of the shared repl. Due dates are at 23.59, AoE time. Please do not change the code in repl after the due date.

  1. Anagrams, slide 149, assigned on 15/03/2021, due date 29/03/2021
  2. Equivalence, slide 225, assigned on 25/03/2021, due date 09/04/2021
  3. GZIP File Array, slide 336, assigned on 19/04/2021, due date 03/05/2021

Grades for the home assignments are visible here.

6 CFU version differences #

The exam of the 6 CFU version works in one of the following ways:

  1. Two parts: Home assignments + Oral exam. Exam is passed only if the grade is >6/10 on each part. Overall grade is determined as 10%, 90%, respectively. The grades for the Home assignments are communicated during the course.
  2. One part: Oral exam.

Detailed program #

These portions (given in slide numbers, endpoints included) of the slide pack are not included in the 6 CFU version:

  • 333-419
  • 480-509
  • 543-end

Home assignments #

Only assignements 1 and 2 are required for the 6 CFU version.

Results of assessment by students #

Students of IN20 (1st group, 6 answers)
Students of IN20 (1st group, 6 answers)
Students of IN20 (2nd group, 17 answers)
Students of IN20 (2nd group, 17 answers)

Questions #

(In Italian)

  1. Le conoscenze preliminari possedute sono risultate sufficienti per la comprensione degli argomenti previsti nel programma d’esame?
  2. Il carico di studio dell’insegnamento è proporzionato ai crediti assegnati?
  3. Il materiale didattico (indicato e disponibile) è adeguato per lo studio della materia?
  4. Le modalità di esame sono state definite in modo chiaro?
  5. Gli orari di svolgimento di lezioni, esercitazioni e altre eventuali attività didattiche sono rispettati?
  6. Il docente stimola/motiva l’interesse verso la disciplina?
  7. Il docente espone gli argomenti in modo chiaro?
  8. Le attività didattiche integrative (esercitazioni, tutorati,laboratori, etc…), se previste, sono utili all’apprendimento della materia?
  9. L’insegnamento è stato svolto in maniera coerente con quanto dichiarato sul sito web del corso di studio?
  10. Il docente è reperibile per chiarimenti e spiegazioni?
  11. È interessato/a agli argomenti trattati nell’insegnamento?
  12. È complessivamente soddisfatto di come è stato svolto questo insegnamento?
  13. Le apparecchiature (computer, tablet, smartphone) e la connessione internet a tua disposizione ti hanno permesso di fruire in modo soddisfacente (audio, video, interattività) delle attività dell’insegnamento erogate con la DAD?
  14. Ritieni che gli strumenti per la didattica a distanza utilizzati dal docente siano stati fruibili: TEAMS
  15. Ritieni che gli strumenti per la didattica a distanza utilizzati dal docente siano stati fruibili: Moodle
  16. Ritieni che gli strumenti per la didattica a distanza utilizzati dal docente siano stati fruibili: Altre piattaforme didattiche (Classroom, Impari, altre)
  17. Hai usufruito delle registrazioni delle lezioni? Se sì, ritieni fruibili le registrazioni delle lezioni di questo insegnamento, indipendentemente dalla piattaforma?
  18. La modalità didattica a distanza ti ha permesso di studiare in autonomia?
  19. La modalità DAD utilizzata per questo insegnamento ti ha permesso di mantenere la concentrazione per tutta la durata della lezione?
  20. Durante il periodo di svolgimento delle lezioni il docente ha garantito la possibilità di interazione con gli studenti?
  21. Il docente ha adeguato il materiale didattico alle specificità della didattica a distanza?
  22. Sei COMPLESSIVAMENTE soddisfatto di come si è svolta la DAD per questo insegnamento?