Select Academic Year:     2017/2018 2018/2019 2019/2020 2020/2021 2021/2022 2022/2023
Second Semester 
Teaching style
Lingua Insegnamento

Informazioni aggiuntive

Course Curriculum CFU Length(h)
[60/61]  COMPUTER SCIENCE [61/00 - Ord. 2016]  PERCORSO COMUNE 9 84


Programmazione 2 has the goal of teaching the object oriented programming paradigm, and also introduces basics of other paradigms.
Java is used as programming language, but other languages are also mentioned (eg. Python) to show possible alternatives in the design of programming languages.

1. Knowledge and comprehension skills.
The student will know the basics and some advanced techniques of object oriented programming and Java.
She will be able to read and understand API docs and commented code written by other programmers.

2. Ability to apply knowledge and comprehension.
The student will be able to write and comment Java code, design new classes, reasoning about different implementations and autonomously solve compilation and run-time errors.

3. Making judgments.
The course provides students with the basic skills diligent to apply the programming methods described in items during the course of the solutions to technical problems related to their field of study.

4. Communication skills.
Lessons include a high degree of interaction with the students, who will learn to properly communicate the concepts learned, with mastery of the terminology used internationally.
The correction of the theory test takes into account the student's ability to understand the technical language, expressed in English, concerning the topics studied.
The communication skills are further evaluated in the practical test that includes understanding and writing comments in the technical language learned in class.

5. Learning skills.
The course provides students with diligent preparation to allow comprehension of advanced programming texts, including technical documentation as specific APIs, enabling them to expand their knowledge in the future independently.


Basics of Imperative Programming and knowledge of a language such as C (as those acquired by attending Programmazione 1).
Basics of algorithms and data structures (as those acquired by attending Algoritmi e Strutture Dati 1).


The following is the list of main topics taught.

01 - Course Introduction and architectures
02 - Classes e objects
03 - Inheritance
04 - In-depth Inheritance and other techniques
05 - Exceptions
06 - Interfaces
07 - Enum types and generics
08 - Object e Java Collections
09 - Functional Programming
10 - Java Streams
11 - Nested Classes
12 - Annotations

Updated information are available on moodle elearning platform: https://elearning.unica.it/course/view.php?id=121

Teaching Methods

Programming 2 (PR2) is a 9-credit course, corresponding to 84 hours.
Frontal lessons: 48 hours, typically 2 hours per lesson, 2 lessons per week, 12 weeks. They may be taught in lab or via flipped classroom.
Labs: 36 hours, 3 hours per week, 12 weeks.

According to Manifesto degli Studi, and requirements that may be associated to epidemic (if any), teaching will be due in person (attendance is mandatory), but including the use of online platforms (such as Moodle contents) for innovative and inclusive modalities and content access.

Verification of learning

The final exam is divided into two parts:
1) theoretical part, focused on evaluating Dublin descriptors 1 and 2.
2) practical part, evaluating the remaining descriptors, to be done during the same day.
The theoretical part must be passed before the practical one.

It is a set of written questions, typically a quiz with 15 questions with 2 possible answers: True/False (Correct answer: 2 points; Wrong answer: 0 points)
In order to pass this part, at least 18 points out of 30 must be obtained.

Development of Java classes, interfaces, etc.
There are a number of test classes (either JUnit or assert-based) made available and the student must develop the classes/methods to pass the software tests in the specified order.
Mark depends on the software tests the student solution passes, each of which has an associated mark/weight.

If marks of both parts are sufficient (at least 18 out of 30), the exam is passed with a final mark as a weighted sum (35% theoretical part, 65% practical part).

Students are asked to attend lessons and laboratory in order to be accepted for the final exam.


It is recommended the use of an book on object-oriented programming updated to (at least) Java 8.
For instance:
- Concetti di Informatica e Fondamenti di Java, by Cay S. Horstmann
- Thinking in Java, by Bruce Eckel

More Information

The Programming 2 course has been hosted by Moodle, an e-learning platform, currently accessible at the following url:


The site contains the teaching material, including:
- slides of each lesson
- slides with insight about lab exercises
- texts of lab exercises
- solutions of the lab exercises
- quizzes
- handnotes for each topic
- in-depth links
- examples of questions and exercises to prepare for the exam, with solutions.
- official Oracle tutorials

Questionnaire and social

Share on:
Impostazioni cookie