PROGRAMMAZIONE ORIENTATA AGLI OGGETTI A - L
Academic Year 2026/2027 - Teacher: ANTONELLA DI STEFANOExpected Learning Outcomes
Knowledge and Understanding
The course introduces object-oriented programming, presenting its main characteristics and using Java as the primary reference programming language.
The aim is for students to acquire the skills needed to program according to the object-oriented paradigm, applying consistently and effectively the tools provided by the language.
The objective of the course is to provide students with the basic concepts of class and object, as well as the fundamental principles of encapsulation, polymorphism, inheritance, and exception handling mechanisms, together with the fundamental elements of parametric programming and multithreading.
Applying Knowledge and Understanding
The by-example approach aims to develop students' ability to organize object-oriented software. The course provides students with the basic techniques and tools for developing application programs, using Java as the reference object-oriented programming language. By using some widely known packages for managing Collection and Map, and by analyzing and applying concepts of parametric programming (Generics) and multithreading, students will begin to learn best practices for structuring object-oriented code. The use of an IDE from the early stages of the course aims to encourage students to define and organize objects, their responsibilities, and their relationships.
Autonomy of Judgment (Ability of Making Judgements)
Students will be able to evaluate the behavior of a program written using an object-oriented programming language, identify possible problems, and understand canonical solutions.
Communication Skills
The course provides knowledge of object-oriented programming and the associated technical vocabulary.
Learning Skills
The course provides students with the ability to learn the concepts underlying the object-oriented programming paradigm, which are necessary for independently pursuing further study of different OOP languages and software design and development techniques.
Course Structure
The main teaching method is classroom-based instruction, complemented by practical exercises and laboratory activities, including the presentation and discussion of exercises and application examples in Java.
If the course is delivered in blended or distance-learning mode, the necessary adjustments may be introduced with respect to the above, in order to comply with the syllabus and the planned course program.
Required Prerequisites
Basic concepts of structured programming and the C language, including instructions and data types.
Knowledge of the main static and dynamic data structures, characteristics/features of files, lists, stacks, queues, hash tables, and trees, together with the classical algorithms for manipulating them.
Basic concepts of operating systems and system software (e.g., environment variables) and system commands; concepts of interrupts and exceptions, processes and threading, concurrency, semaphores, and monitors.
Attendance of Lessons
Attendance is not mandatory but is strongly encouraged in order to take the examination.
Attendance of at least 70% is required only for students who intend to take the in-course assessments.
Detailed Course Content
The course presents object-oriented programming, illustrating its main characteristics and using Java as the primary reference programming language.
The basic concepts of class and object and the fundamental principles of encapsulation, polymorphism, inheritance, and exception handling are covered. These aspects are applied to Java programming, providing an overview of the fundamental elements of the Java Virtual Machine (JVM), memory management, and the late binding mechanism.
The concepts of parametric programming (Generics) and multithreading are examined in greater depth.
Textbook Information
Course Planning
| Subjects | Text References | |
|---|---|---|
| 1 | (*)Concept of an object. Relationships between objects. Concept of a class and its public interface (methods). | |
| 2 | (*)Basic principles of object-oriented programming: encapsulation, inheritance, and polymorphism. | |
| 3 | Introduction to UML for software design | |
| 4 | (*)the reference object-oriented programming language: Java. | |
| 5 | Use of an IDE for Java programming. | |
| 6 | (*)Encapsulation, access modifiers, and packages. | ch. 4 |
| 7 | (*)Inheritance and polymorphism | ch.5,6 |
| 8 | (*)abtract class ed interface. | ch.5,6 |
| 9 | (*)Exception Handling. | ch.7 |
| 10 | I/O, File and streams | ch.3 |
| 11 | (*)Parametric programming (Generics) | ch.8 |
| 12 | wrapper classes, Autoboxing | ch.5 |
| 13 | (*)Collections, Collection e Map | ch.9 |
| 14 | Sorting: Comparable<> and Comparator<>. | ch.9 |
| 15 | (*)Multithreading and concurrency management using synchronized and wait()-notifyAll(). | ch.10 |
| 16 | Minimum essential knowledge required to pass the examination: knowledge of these topics is necessary but not sufficient. To pass the examination, students must demonstrate that they are able to use them appropriately. |
Learning Assessment
Learning Assessment Procedures
- A practical computer-based examination: a program written in Java.
- A subsequent oral examination, following successful completion of the previous assessment according to a minimum admission threshold.
During the course, students may take two in-itinere tests:
The first part covers the material up to and including exceptions (the first 9 items of the program) and takes place during the teaching break; the second part covers the remainder of the program and takes place at the end of the course.
Students may participate in each test only if they have attended at least 70% of the classes during the relevant period.
- Successful completion of both tests, which have equal weighting, may replace the final examination.
- The in-itinere tests are computer-based exercises designed to assess the ability to develop simple programs in Java.
- Successful completion of both tests may replace the final examination for students who have passed both in-itinere tests with an overall grade of at least 18/30.
- The assessment results will be provided at the end of the course.
NB: In practical computer-based tests (both in-itinere tests and regular examination tests), students must demonstrate their knowledge of Java programming by using only the concepts, constructs, and libraries introduced in the course, without relying on constructs, libraries, or mechanisms not covered in the program. Solutions must therefore be developed using the tools covered in the course in a conscious and appropriate manner.
Examples of frequently asked questions and / or exercises
Examples of oral questions:
discuss polymorphism, encapsulation, thread concurrency, parametric types, maps, and exception handling.
Examples of practical examinations are available on Studium.