Academic year
2020/2021 Syllabus of previous years
Official course title
Course code
CT0372 (AF:320633 AR:172525)
On campus classes
ECTS credits
Degree level
Bachelor's Degree Programme
Educational sector code
1st Semester
Course year
Go to Moodle page
This course is one of the basic educational activities of the Bachelor course in Computer Science that enable the student to gain knowledge and understanding major programming paradigms and acquire the ability to design and implement software.
The aim of the course is to provide knowledge related to the object-oriented programming paradigm as well as specific knowledge of the Java language.
The course aims to develop in the student the necessary familiarity with the Object Programming paradigm using and consolidating the programming bases acquired during the first year.

It is essential that the training path combines methodological and theoretical elements with continuous experimental and practical stimuli, through the autonomous resolution of exercises and application problems.

The student who successfully attended the course will have acquired a thorough knowledge of the Java language and of the most fundamental concepts of object-oriented programming languages.
To face the course it is essential to have a consolidated and deep competence in imperative programming. In fact, object oriented programming extends imperative programming by enriching it with mechanisms that allow to obtain desirable properties in terms of structuring, integration and partitioning of the realized code. Consequently, it is needed that the student had already studied, understood, elaborated, and applied the fundaments of imperative programming before being able to take this course successfully.
1) Encapsulation and abstraction
a. Classes and objects, fields and methods
b. Static and final modifiers
c. Aliasing
d. Information hiding, visibility modifiers
e. Documenting code, Javadoc and jar files
2) Inheritance
a. Class extension, overriding and overloading
b. Abstract and final modifiers
c. Polymorphism, subtyping, subsumption/substitution principle
d. Static and dynamic types
e. Single and multiple inheritance
f. Abstract classes, interfaces, programming by contracts
g. Static and dynamic dispatching
3) Java in action
a. Java class hierarchy, Object class
b. Native types, autoboxing, strings
c. Exceptions
d. Annotations
e. Library management, Gradle
f. The MVC (Model-View-Controller) pattern
g. Spring
h. Version Control Systems and Git
Ken Arnold, James Gosling, David Holmes: The Java Programming Language, 4th Edition
The exam part related to Module 1 consists of some exercises during the course, and a written test to be carried out at the end of the course or in any of the subsequent appeals. For the registration of the vote it is necessary to overcome also the part concerning Module 2, for which reference is made to the relative Syllabus.
Lectures on the blackboard.

Programming exercises, also performed in the classroom.
Definitive programme.
Last update of the programme: 19/10/2020