Object-Oriented Programming

Course objectives

General goals: Learning object-oriented programming concepts through the Java programming language. Specific goals: Fundamentals of object oriented programming: classes and objects, encapsulation, inheritance, polymorphism, static and dynamic binding, design patterns. Functional programming. Tools and methodologies for software design through an object-oriented programming language. Java language. Knowledge and understanding: Knowledge of OOP constructs, with special reference to Java. Understanding a Java program. Ability to write a small- or medium-size Java programs. Applying knowledge and understanding: Ability to apply basic methodologies to face software system design of small and medium size. Ability to use the main development tools to implement such systems in Java. Critiquing and judgmental abilities: Ability to identify correct/effective and incorrect/ineffective instructions, constructs or patterns in Java. Communication skills: Ability to illustrate projects. Learning ability: Ability to learn and apply new programming techniques starting from those learned during the course.

Channel 1
MATTIA SAMORY Lecturers' profile

Program - Frequency - Exams

Course program
Syllabus: - Introduction to object oriented programming - Hello, World! The REPL in Java 9 - Types of fundamental data - Introduction to JRE, JDK and Eclipse - Type conversions - Fundamental concepts of object-oriented programming - Encapsulation and default initialisation - The String class - References to objects, heaps & stacks, static methods - Control structures; iterative constructs - Iteration; array - Constants and enumerations - Inheritance, classes and abstract methods. The keywords this and super in constructors - Overloading and overriding. Visibility: public, private, protected and default. - Inheritance vs. composition. - Polymorphism. Downcasting and upcasting. - The Object class - The final keyword. - Interfaces. Differences with abstract classes. Multiple inheritance. Notable interfaces. - Functional programming: functional interfaces and lambda expressions. References to methods. - Stream and lambda expressions. - Top-level classes, static and internal nested - Introduction to Java 9 modularization - Exceptions: try-catch-finally. Catch-or-declare policy. Throw and throws keywords. The Throwable, Exception and Error classes. Checked and unchecked exceptions. - Collections: hierarchy, fundamental classes and their methods. Three ways to iterate over a collection. Iterable and Iterator. Comparable interface. Sorting with Comparable and Comparator - Collections: sets and maps without sorting, with natural sorting and with insertion sorting. Methods. Arrays and Collections classes. The Stack stack class and the Queue queue interface. - Implementation through LinkedList - Input / Output - Recursion in Java. Use of overloading. - Equality in Java. - Generic types. - Design pattern: strategy, observer, factory, decorator, callback, MVC. - Reflection. The Class class.
Prerequisites
There are no formal prerequisites, however it is advisable to have passed or at least attended the "Fondamenti di Programmazione" course.
Books
The course page includes all the necessary teaching material: videos, slides and excercise books. However, it is advisable to refer to at least one of the recommended texts [1, 2, 3].[1] Claudio De Sio Cesari. Manuale di Java 9 - Programmazione orientata agli oggetti con Java standard edition 8 Hoepli, 2018.[2] Herbert Schildt. Java: The Complete Reference, eleventh edition. Mcgraw-Hill Osborne Media, 2018.[3] Cay S. Horstmann. Concetti di informatica e fondamenti di Java. Apogeo, 7a edizione, 2019.
Teaching mode
The course includes lectures and labs.
Frequency
Synchronous participation in the course activities is not mandatory.
Exam mode
The calendar of exam sessions is available at the following link: https://www.studiareinformatica.uniroma1.it/appelli-d-esame The exam consists of a written test and a project: Written test: to be carried out starting from the summer session. It consists of open-ended questions and exercises. The aim is to verify the preparation of the students and in particular the acquired knowledge. Project: the project specifications will be made available during the course. It consists in the development of software with the Java language. The project is carried out independently by the students or in groups of up to 2 people. The objective is to verify the programming skills with the Java language acquired during the course. The exam is considered successfully passed if the sufficiency (i.e. 18/30) is obtained both in the written test and in the project. The final mark is obtained by calculating the weighted average of the marks obtained: 60% written test and 40% project. The two tests can be passed independently (i.e. on different dates) and in any order. However, the validity of the marks obtained in the two tests ends with the last session of the academic year (i.e. by the January-February session of the following year or, in the case of working / off-school students, etc., in the March-April session). The delivery of the project is only possible until February (the March session is only for the written test). Booking on Infostud is necessary for taking the written test or for the final report (otherwise, the report will be postponed to the next appeal), but not for discussion of the project only.
Lesson mode
The course includes lectures and labs.
MATTIA SAMORY Lecturers' profile

Program - Frequency - Exams

Course program
Syllabus: - Introduction to object oriented programming - Hello, World! The REPL in Java 9 - Types of fundamental data - Introduction to JRE, JDK and Eclipse - Type conversions - Fundamental concepts of object-oriented programming - Encapsulation and default initialisation - The String class - References to objects, heaps & stacks, static methods - Control structures; iterative constructs - Iteration; array - Constants and enumerations - Inheritance, classes and abstract methods. The keywords this and super in constructors - Overloading and overriding. Visibility: public, private, protected and default. - Inheritance vs. composition. - Polymorphism. Downcasting and upcasting. - The Object class - The final keyword. - Interfaces. Differences with abstract classes. Multiple inheritance. Notable interfaces. - Functional programming: functional interfaces and lambda expressions. References to methods. - Stream and lambda expressions. - Top-level classes, static and internal nested - Introduction to Java 9 modularization - Exceptions: try-catch-finally. Catch-or-declare policy. Throw and throws keywords. The Throwable, Exception and Error classes. Checked and unchecked exceptions. - Collections: hierarchy, fundamental classes and their methods. Three ways to iterate over a collection. Iterable and Iterator. Comparable interface. Sorting with Comparable and Comparator - Collections: sets and maps without sorting, with natural sorting and with insertion sorting. Methods. Arrays and Collections classes. The Stack stack class and the Queue queue interface. - Implementation through LinkedList - Input / Output - Recursion in Java. Use of overloading. - Equality in Java. - Generic types. - Design pattern: strategy, observer, factory, decorator, callback, MVC. - Reflection. The Class class.
Prerequisites
Familiarity with basic programming concepts, such as those covered in a 1000-level programming course.
Books
The course page will make available all the necessary teaching material (recordings, slides, and excercise books). However, it is advisable to refer to at least one of the recommended texts [1, 2, 3].
Frequency
Synchronous participation in course activities is not mandatory but advisable.
Exam mode
The examination consists of a written test, an oral test and a project: Written test: to be conducted beginning in the summer session. Project: project specifications will be made available during the course. In case the project allows group performance, the project can be done individually or, if the project allows, by a group of at most 2 students. Passing the project requires, in addition to the delivery of what is required by the specifications, an individual discussion of the project. The project can be handed in 5 days before the date of the WRITTEN exam that is to be taken. The grade for the project depends on both the material handed in and the oral discussion. If there are significant indications that the handed-in project was copied in whole or in part, the project is considered void for all students involved, including those who allowed copying. Oral test: to be taken after passing both the written test and turning in the project. The objective of the oral test is both to test the knowledge acquired in the course and to discuss the submitted project with the lecturer. The exam is considered successfully passed if a passing grade (i.e. 18/30) is obtained in both the written test and the project. The final grade is obtained by calculating the weighted average of the grades obtained: 60% written test and 40% project. The two tests can be passed independently (i.e. on different dates) and in any order. However, the validity of the grades obtained in the two tests ends with the last session of the academic year (i.e. by the January-February session of the following year or, in the case of working/out-of-course students, etc., in the March-April session). Reservation on Infostud is required for taking the written test or the oral test (final verbalization); otherwise, verbalization will be postponed to the next session.
Bibliography
[1] Claudio De Sio Cesari. Manuale di Java 9 - Programmazione orientata agli oggetti con Java standard edition 8 Hoepli, 2018.[2] Herbert Schildt. Java: The Complete Reference, eleventh edition. Mcgraw-Hill Osborne Media, 2018.[3] Cay S. Horstmann. Concetti di informatica e fondamenti di Java. Apogeo, 7a edizione, 2019.
MASSIMO LA MORGIA Lecturers' profile

Program - Frequency - Exams

Course program
Syllabus: - Introduction to object oriented programming - Hello, World! The REPL in Java 9 - Types of fundamental data - Introduction to JRE, JDK and Eclipse - Type conversions - Fundamental concepts of object-oriented programming - Encapsulation and default initialisation - The String class - References to objects, heaps & stacks, static methods - Control structures; iterative constructs - Iteration; array - Constants and enumerations - Inheritance, classes and abstract methods. The keywords this and super in constructors - Overloading and overriding. Visibility: public, private, protected and default. - Inheritance vs. composition. - Polymorphism. Downcasting and upcasting. - The Object class - The final keyword. - Interfaces. Differences with abstract classes. Multiple inheritance. Notable interfaces. - Functional programming: functional interfaces and lambda expressions. References to methods. - Stream and lambda expressions. - Top-level classes, static and internal nested - Introduction to Java 9 modularization - Exceptions: try-catch-finally. Catch-or-declare policy. Throw and throws keywords. The Throwable, Exception and Error classes. Checked and unchecked exceptions. - Collections: hierarchy, fundamental classes and their methods. Three ways to iterate over a collection. Iterable and Iterator. Comparable interface. Sorting with Comparable and Comparator - Collections: sets and maps without sorting, with natural sorting and with insertion sorting. Methods. Arrays and Collections classes. The Stack stack class and the Queue queue interface. - Implementation through LinkedList - Input / Output - Recursion in Java. Use of overloading. - Equality in Java. - Generic types. - Design pattern: strategy, observer, factory, decorator, callback, MVC. - Reflection. The Class class.
Prerequisites
There are no formal prerequisites, however it is advisable to have passed or at least attended the "Fondamenti di Programmazione" course.
Books
The course page includes all the necessary teaching material: videos, slides and excercise books. However, it is advisable to refer to at least one of the recommended texts [1, 2, 3].[1] Claudio De Sio Cesari. Manuale di Java 9 - Programmazione orientata agli oggetti con Java standard edition 8 Hoepli, 2018.[2] Herbert Schildt. Java: The Complete Reference, eleventh edition. Mcgraw-Hill Osborne Media, 2018.[3] Cay S. Horstmann. Concetti di informatica e fondamenti di Java. Apogeo, 7a edizione, 2019.
Teaching mode
The course includes lectures and labs.
Frequency
Synchronous participation in the course activities is not mandatory.
Exam mode
The calendar of exam sessions is available at the following link: https://www.studiareinformatica.uniroma1.it/appelli-d-esame The exam consists of a written test and a project: Written test: to be carried out starting from the summer session. It consists of open-ended questions and exercises. The aim is to verify the preparation of the students and in particular the acquired knowledge. Project: the project specifications will be made available during the course. It consists in the development of software with the Java language. The project is carried out independently by the students or in groups of up to 2 people. The objective is to verify the programming skills with the Java language acquired during the course. The exam is considered successfully passed if the sufficiency (i.e. 18/30) is obtained both in the written test and in the project. The final mark is obtained by calculating the weighted average of the marks obtained: 60% written test and 40% project. The two tests can be passed independently (i.e. on different dates) and in any order. However, the validity of the marks obtained in the two tests ends with the last session of the academic year (i.e. by the January-February session of the following year or, in the case of working / off-school students, etc., in the March-April session). The delivery of the project is only possible until February (the March session is only for the written test). Booking on Infostud is necessary for taking the written test or for the final report (otherwise, the report will be postponed to the next appeal), but not for discussion of the project only.
Lesson mode
The course includes lectures and labs.
MASSIMO LA MORGIA Lecturers' profile
Channel 2
STEFANO FARALLI Lecturers' profile

Program - Frequency - Exams

Course program
Syllabus: - Introduction to object oriented programming - Hello, World! The REPL in Java 9 - Types of fundamental data - Introduction to JRE, JDK and Eclipse - Type conversions - Fundamental concepts of object-oriented programming - Encapsulation and default initialisation - The String class - References to objects, heaps & stacks, static methods - Control structures; iterative constructs - Iteration; array - Constants and enumerations - Inheritance, classes and abstract methods. The keywords this and super in constructors - Overloading and overriding. Visibility: public, private, protected and default. - Inheritance vs. composition. - Polymorphism. Downcasting and upcasting. - The Object class - The final keyword. - Interfaces. Differences with abstract classes. Multiple inheritance. Notable interfaces. - Functional programming: functional interfaces and lambda expressions. References to methods. - Stream and lambda expressions. - Top-level classes, static and internal nested - Introduction to Java 9 modularization - Exceptions: try-catch-finally. Catch-or-declare policy. Throw and throws keywords. The Throwable, Exception and Error classes. Checked and unchecked exceptions. - Collections: hierarchy, fundamental classes and their methods. Three ways to iterate over a collection. Iterable and Iterator. Comparable interface. Sorting with Comparable and Comparator - Collections: sets and maps without sorting, with natural sorting and with insertion sorting. Methods. Arrays and Collections classes. The Stack stack class and the Queue queue interface. - Implementation through LinkedList - Input / Output - Recursion in Java. Use of overloading. - Equality in Java. - Generic types. - Design pattern: strategy, observer, factory, decorator, callback, MVC. - Reflection. The Class class.
Prerequisites
There are no formal prerequisites, however it is advisable to have passed or at least attended the "Fondamenti di Programmazione" course.
Books
The course page includes all the necessary teaching material: videos, slides and excercise books. However, it is advisable to refer to at least one of the recommended texts [1, 2, 3].[1] Claudio De Sio Cesari. Manuale di Java 9 - Programmazione orientata agli oggetti con Java standard edition 8 Hoepli, 2018.[2] Herbert Schildt. Java: The Complete Reference, eleventh edition. Mcgraw-Hill Osborne Media, 2018.[3] Cay S. Horstmann. Concetti di informatica e fondamenti di Java. Apogeo, 7a edizione, 2019.
Teaching mode
The course includes lectures and labs.
Frequency
Synchronous participation in the course activities is not mandatory.
Exam mode
The calendar of exam sessions is available at the following link: https://www.studiareinformatica.uniroma1.it/appelli-d-esame The exam consists of a written test and a project: Written test: to be carried out starting from the summer session. It consists of open-ended questions and exercises. The aim is to verify the preparation of the students and in particular the acquired knowledge. Project: the project specifications will be made available during the course. It consists in the development of software with the Java language. The project is carried out independently by the students or in groups of up to 2 people. The objective is to verify the programming skills with the Java language acquired during the course. The exam is considered successfully passed if the sufficiency (i.e. 18/30) is obtained both in the written test and in the project. The final mark is obtained by calculating the weighted average of the marks obtained: 60% written test and 40% project. The two tests can be passed independently (i.e. on different dates) and in any order. However, the validity of the marks obtained in the two tests ends with the last session of the academic year (i.e. by the January-February session of the following year or, in the case of working / off-school students, etc., in the March-April session). The delivery of the project is only possible until February (the March session is only for the written test). Booking on Infostud is necessary for taking the written test or for the final report (otherwise, the report will be postponed to the next appeal), but not for discussion of the project only.
Lesson mode
The course includes lectures and labs.
STEFANO FARALLI Lecturers' profile

Program - Frequency - Exams

Course program
Syllabus: - Introduction to object oriented programming - Hello, World! The REPL in Java 9 - Types of fundamental data - Introduction to JRE, JDK and Eclipse - Type conversions - Fundamental concepts of object-oriented programming - Encapsulation and default initialisation - The String class - References to objects, heaps & stacks, static methods - Control structures; iterative constructs - Iteration; array - Constants and enumerations - Inheritance, classes and abstract methods. The keywords this and super in constructors - Overloading and overriding. Visibility: public, private, protected and default. - Inheritance vs. composition. - Polymorphism. Downcasting and upcasting. - The Object class - The final keyword. - Interfaces. Differences with abstract classes. Multiple inheritance. Notable interfaces. - Functional programming: functional interfaces and lambda expressions. References to methods. - Stream and lambda expressions. - Top-level classes, static and internal nested - Introduction to Java 9 modularization - Exceptions: try-catch-finally. Catch-or-declare policy. Throw and throws keywords. The Throwable, Exception and Error classes. Checked and unchecked exceptions. - Collections: hierarchy, fundamental classes and their methods. Three ways to iterate over a collection. Iterable and Iterator. Comparable interface. Sorting with Comparable and Comparator - Collections: sets and maps without sorting, with natural sorting and with insertion sorting. Methods. Arrays and Collections classes. The Stack stack class and the Queue queue interface. - Implementation through LinkedList - Input / Output - Recursion in Java. Use of overloading. - Equality in Java. - Generic types. - Design pattern: strategy, observer, factory, decorator, callback, MVC. - Reflection. The Class class.
Prerequisites
There are no formal prerequisites, however it is advisable to have passed or at least attended the "Fondamenti di Programmazione" course.
Books
The course page includes all the necessary teaching material: videos, slides and excercise books. However, it is advisable to refer to at least one of the recommended texts [1, 2, 3].[1] Claudio De Sio Cesari. Manuale di Java 9 - Programmazione orientata agli oggetti con Java standard edition 8 Hoepli, 2018.[2] Herbert Schildt. Java: The Complete Reference, eleventh edition. Mcgraw-Hill Osborne Media, 2018.[3] Cay S. Horstmann. Concetti di informatica e fondamenti di Java. Apogeo, 7a edizione, 2019.
Teaching mode
The course includes lectures and labs.
Frequency
Synchronous participation in the course activities is not mandatory.
Exam mode
The calendar of exam sessions is available at the following link: https://www.studiareinformatica.uniroma1.it/appelli-d-esame The exam consists of a written test and a project: Written test: to be carried out starting from the summer session. It consists of open-ended questions and exercises. The aim is to verify the preparation of the students and in particular the acquired knowledge. Project: the project specifications will be made available during the course. It consists in the development of software with the Java language. The project is carried out independently by the students or in groups of up to 2 people. The objective is to verify the programming skills with the Java language acquired during the course. The exam is considered successfully passed if the sufficiency (i.e. 18/30) is obtained both in the written test and in the project. The final mark is obtained by calculating the weighted average of the marks obtained: 60% written test and 40% project. The two tests can be passed independently (i.e. on different dates) and in any order. However, the validity of the marks obtained in the two tests ends with the last session of the academic year (i.e. by the January-February session of the following year or, in the case of working / off-school students, etc., in the March-April session). The delivery of the project is only possible until February (the March session is only for the written test). Booking on Infostud is necessary for taking the written test or for the final report (otherwise, the report will be postponed to the next appeal), but not for discussion of the project only.
Lesson mode
The course includes lectures and labs.
MASSIMO LA MORGIA Lecturers' profile
MASSIMO LA MORGIA Lecturers' profile
  • Lesson code1015884
  • Academic year2024/2025
  • CourseInformatics
  • CurriculumMetodologico
  • Year1st year
  • Semester2nd semester
  • SSDINF/01
  • CFU9
  • Subject areaDiscipline Informatiche