OBJECT-ORIENTED PROGRAMMING
- Academic year
- 2024/2025 Syllabus of previous years
- Official course title
- PROGRAMMAZIONE A OGGETTI
- Course code
- CT0114 (AF:469152 AR:256619)
- Modality
- On campus classes
- ECTS credits
- 9
- Degree level
- Bachelor's Degree Programme
- Educational sector code
- INF/01
- Period
- 1st Semester
- Course year
- 2
- Where
- VENEZIA
- Moodle
- Go to Moodle page
Contribution of the course to the overall degree programme goals
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.
Expected learning outcomes
- Know the object-oriented programming paradigm
- Know the main mechanisms underlying the development of modular object-oriented applications
- Know the fundamental elements of the Java standard library
Ability to apply knowledge and understanding
- Ability to develop classes with fields and methods of appropriate type and visibility in Java
- Ability to develop an appropriate class and type hierarchy in Java
- Ability to use the Java standard library appropriately
Pre-requirements
Contents
---------
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
Mod. 2
---------
1) Advanced programming in Java
2) Event-driven programming, callbacks, anonymous classes
3) Exceptions, error reporting, resource tracking
4) Parametric polymorphism: generics, constraints, first-class polymorphism
5) Pure/impure functional programming in object-oriented languages: lambda expressions, function objects, closures
6) Design patterns: factory, singleton, command, listener-observer, consumer-producer
7) Advanced programming techniques: type-driven programming with objects
Referral texts
---------
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
Mod. 2
---------
Suggested books and readings:
Joshua Bloch
"Effective Java Third Edition"
Addison-Wesley Professional, 2017
Kamalmeet Singh, Adrian Ianculescu, Lucian-Paul Torje
"Design Patterns and Best Practices in Java"
Packt Publishing Ltd, 2018
Scott Meyers
"Effective Modern C++"
O'Reilly Media Inc, 2015
Assessment methods
The evaluation will be based solely on the written test composed of a theoretical part that will evaluate the student's knowledge of the object-oriented programming paradigm with closed and open-ended questions, and a practical part that will evaluate the specific knowledge of the Java language through programming exercises in this language.
An oral test will be requested at the discretion of the teacher, evaluating case by case. It is intended to adjust the grade of the written test if it is below the passing threshold or if it is explicitly requested by the student.
Regarding the grading of the grade:
A. scores in the 18-22 range will be awarded in the presence of:
- sufficient knowledge of the object-oriented programming paradigm
- sufficient skills in the development of Java applications
B. scores in the 23-26 range will be awarded in the presence of:
- fair or good knowledge of the object-oriented programming paradigm
- fair or good skills in the development of Java applications
economic functioning of public services;
C. scores in the 27-30 range will be awarded in the presence of:
- excellent knowledge of the object-oriented programming paradigm
- excellent skills in the development of Java applications
Type of exam
Teaching methods
---------
Lectures on the blackboard.
Programming exercises, also performed in the classroom.
Mod. 2
---------
Frontal course with a computer screen shared on the big display.
All the code written during classes is regularly committed on a Github repository.