AY 23/24 - Advanced Programming

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

  • Programmazione avanzata (143IN), for master program IN05, 9 CFUs
  • Programmazione avanzata (558EC), for master program EC71, 9 CFUs

Program, goals, requirements #

Detailed program #

Available here.

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 #


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!

There will be extra excercise sessions led by the teaching assistant Giorgia Nadizar. The details about these sessions will be communicated.

Course material #

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

The lectures will be recorded and made available on Teams.

Lectures timetable and course calendar #

The course will start on 4/3/2024.

The lectures will be:

  • on Monday, from 9.15 to 10.45 (academic: 9.00-11.00)
  • on Wednesday, from 8.30 to 11.00 (academic: 8.00-11.00)
  • on Thursday, from 9.00 to 11.30 (academic: 9.00-12.00)

All the lectures will be in room A, ground floor, building C9.

The lectures will be done in person, recorded, and made available on Teams. Students enrolled in this course should already be able to access the team of the course.

Short announcements about lectures schedule #

  • There will be no lectures during the week after Easter (1/4 to 7/4) because I will be attending a conference.
  • The lecture of 8/4 will be held by Giorgia Nadizar, who will introduce git and github; the slides will be made available on MS Teams. This content of this lecture will not be part of the final exam; nor the lecture time will count towards the 72 hours of the course.
  • There will be no lectures from 22/4 to 26/4 because I will be attending a workshop.

End-of-course test (exam) #

The student can pass the exam in one of the following ways (student’s choice):

  1. Two parts: Final project + “Short” oral exam. Exam is passed only if the grade is >6/10 on each part. Overall grade is determined as 50%, 50%.
  2. One part: Oral exam.

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.

Oral exam #

Questions on the the main and minor concepts and short programming exercise.