OBJECT-ORIENTED PROGRAMMING - 1

Academic year
2023/2024 Syllabus of previous years
Official course title
PROGRAMMAZIONE A OGGETTI - MOD.1
Course code
CT0372 (AF:401991 AR:250736)
Modality
On campus classes
ECTS credits
6 out of 12 of OBJECT-ORIENTED PROGRAMMING
Degree level
Bachelor's Degree Programme
Educational sector code
INF/01
Period
1st Semester
Course year
2
Where
VENEZIA
Moodle
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. Modules
f. Documenting code, Javadoc and jar files
g. Java Virtual Machine and Java bytecode
2) Polymorphism
a. Class extension, overriding and overloading
b. Abstract and final modifiers
c. Inheritance, 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
h. Generic types
3) Java in action
a. Java class hierarchy, Object class
b. Native types, autoboxing, strings
c. Exceptions
d. Annotations
e. Reflection
f. Library management, Gradle
g. The MVC (Model-View-Controller) pattern
h. Spring
Lecture notes provided by the teacher.

Additional material:
Ken Arnold, James Gosling, David Holmes: The Java Programming Language, 4th Edition
Timothy Budd, An Introduction to Object-Oriented Programming, 3rd edition
The exam part related to Module 1 consists of 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.
The grade will be based only on the written exam that will be composed of a theoretical part evaluating the knowledge of the most fundamental concepts of object-oriented programming languages (through open or multiple choice questions), and a practical part evaluating the knowledge of the Java language through some programming exercises.
Lectures on the blackboard.

Programming exercises, also performed in the classroom.
Italian
written
Definitive programme.
Last update of the programme: 20/07/2023