Providing methods and tools for developing OO applications, with emphasis on the quality of code. At the end of the course, students should be able to develop autonomously OO applications of medium complexity, and to participate in the development of large OO applications.
Curriculum
teacher profile teaching materials
The course is organized in seven parts, covered in this order during the semester; each part includes lectures and practice exercises on the computer.
Part 1: The Object-Oriented Paradigm
The Java programming language
Classes and objects
Constructors
Information hiding
Part 2: Code quality
Cohesion and coupling
Testing
Part 3: Polymorphism
Interfaces
Substitution principle, polymorphism
Inheritance
Part 4: Collections
Generics
Maps, sets, lists
Iterators
Part 5: Code reuse
Inheritance: further topics
Abstract classes
Enumerated types
Nested classes
Java records
Sealed types
Part 6: Streams, exceptions, reflection, annotations
Exception handling
Streams
Reflection
Annotations
Part 7: Introduction to concurrent programming
Java threads: definition, creation, termination
Interference
Speed-up and parallel decomposition problems
A multi-threaded model for graphical applications
Programme
SyllabusThe course is organized in seven parts, covered in this order during the semester; each part includes lectures and practice exercises on the computer.
Part 1: The Object-Oriented Paradigm
The Java programming language
Classes and objects
Constructors
Information hiding
Part 2: Code quality
Cohesion and coupling
Testing
Part 3: Polymorphism
Interfaces
Substitution principle, polymorphism
Inheritance
Part 4: Collections
Generics
Maps, sets, lists
Iterators
Part 5: Code reuse
Inheritance: further topics
Abstract classes
Enumerated types
Nested classes
Java records
Sealed types
Part 6: Streams, exceptions, reflection, annotations
Exception handling
Streams
Reflection
Annotations
Part 7: Introduction to concurrent programming
Java threads: definition, creation, termination
Interference
Speed-up and parallel decomposition problems
A multi-threaded model for graphical applications
Prerequisiti
Knowledge of the fundamentals of imperative programming in C (types, variables, control structures, functions, arrays, pointers), as acquired in the course Fundamentals of Computer Science.Core Documentation
Ken Arnold, James Gosling, David Holmes "Il linguaggio Java: Manuale Ufficiale" - Addison WesleyReference Bibliography
Lecture notes, practice exercises, case study and past exam papers, published on the course website (sites.google.com/view/rm3-poo). The material is the same for attending and non-attending students.Attendance
Attendance is not compulsory. Lectures are held in person, three times a week. The HQ path requires taking the in-course tests in the lab and submitting the homework on time.Type of evaluation
The exam consists of two individual tests, carried out on the computer in the teaching lab, without access to any material. Both tests must be passed; only students who pass the first test are admitted to the second. - First test (weight about 12/31, about one hour): closed-answer quizzes and programming exercises automatically graded with the course quiz system. The quizzes are based on the practice exercises published on the course website, where students can practise with the same system. - Second test (weight about 19/31, about one hour and a half): code refactoring, design and implementation of small applications, and writing test cases, using the Eclipse development environment. As an alternative to the first test, students can follow the HQ path (homework and quizzes) during the course: three in-course quiz tests, taken under the same conditions as the first test, and a few homework assignments in pairs to be submitted on time. Students who pass all in-course tests and submit all homework go directly to the second test; their first-test score is then 1 + (score obtained / maximum score) × 12. The final mark is the sum of the scores of the two tests. In the second test, the correctness and completeness of the solutions, code quality (readability, cohesion, coupling, appropriate use of the language) and the adequacy of the test cases are assessed. Past exam papers, since 2019, are available on the course website. teacher profile teaching materials
The course is organized in seven parts, covered in this order during the semester; each part includes lectures and practice exercises on the computer.
Part 1: The Object-Oriented Paradigm
The Java programming language
Classes and objects
Constructors
Information hiding
Part 2: Code quality
Cohesion and coupling
Testing
Part 3: Polymorphism
Interfaces
Substitution principle, polymorphism
Inheritance
Part 4: Collections
Generics
Maps, sets, lists
Iterators
Part 5: Code reuse
Inheritance: further topics
Abstract classes
Enumerated types
Nested classes
Java records
Sealed types
Part 6: Streams, exceptions, reflection, annotations
Exception handling
Streams
Reflection
Annotations
Part 7: Introduction to concurrent programming
Java threads: definition, creation, termination
Interference
Speed-up and parallel decomposition problems
A multi-threaded model for graphical applications
Mutuazione: 20810075 PROGRAMMAZIONE ORIENTATA AGLI OGGETTI in Ingegneria Informatica e dell'Intelligenza Artificiale L-8 R CRESCENZI VALTER
Programme
SyllabusThe course is organized in seven parts, covered in this order during the semester; each part includes lectures and practice exercises on the computer.
Part 1: The Object-Oriented Paradigm
The Java programming language
Classes and objects
Constructors
Information hiding
Part 2: Code quality
Cohesion and coupling
Testing
Part 3: Polymorphism
Interfaces
Substitution principle, polymorphism
Inheritance
Part 4: Collections
Generics
Maps, sets, lists
Iterators
Part 5: Code reuse
Inheritance: further topics
Abstract classes
Enumerated types
Nested classes
Java records
Sealed types
Part 6: Streams, exceptions, reflection, annotations
Exception handling
Streams
Reflection
Annotations
Part 7: Introduction to concurrent programming
Java threads: definition, creation, termination
Interference
Speed-up and parallel decomposition problems
A multi-threaded model for graphical applications
Prerequisiti
Knowledge of the fundamentals of imperative programming in C (types, variables, control structures, functions, arrays, pointers), as acquired in the course Fundamentals of Computer Science.Core Documentation
Ken Arnold, James Gosling, David Holmes "Il linguaggio Java: Manuale Ufficiale" - Addison WesleyReference Bibliography
Lecture notes, practice exercises, case study and past exam papers, published on the course website (sites.google.com/view/rm3-poo). The material is the same for attending and non-attending students.Attendance
Attendance is not compulsory. Lectures are held in person, three times a week. The HQ path requires taking the in-course tests in the lab and submitting the homework on time.Type of evaluation
The exam consists of two individual tests, carried out on the computer in the teaching lab, without access to any material. Both tests must be passed; only students who pass the first test are admitted to the second. - First test (weight about 12/31, about one hour): closed-answer quizzes and programming exercises automatically graded with the course quiz system. The quizzes are based on the practice exercises published on the course website, where students can practise with the same system. - Second test (weight about 19/31, about one hour and a half): code refactoring, design and implementation of small applications, and writing test cases, using the Eclipse development environment. As an alternative to the first test, students can follow the HQ path (homework and quizzes) during the course: three in-course quiz tests, taken under the same conditions as the first test, and a few homework assignments in pairs to be submitted on time. Students who pass all in-course tests and submit all homework go directly to the second test; their first-test score is then 1 + (score obtained / maximum score) × 12. The final mark is the sum of the scores of the two tests. In the second test, the correctness and completeness of the solutions, code quality (readability, cohesion, coupling, appropriate use of the language) and the adequacy of the test cases are assessed. Past exam papers, since 2019, are available on the course website. teacher profile teaching materials
The course is organized in seven parts, covered in this order during the semester; each part includes lectures and practice exercises on the computer.
Part 1: The Object-Oriented Paradigm
The Java programming language
Classes and objects
Constructors
Information hiding
Part 2: Code quality
Cohesion and coupling
Testing
Part 3: Polymorphism
Interfaces
Substitution principle, polymorphism
Inheritance
Part 4: Collections
Generics
Maps, sets, lists
Iterators
Part 5: Code reuse
Inheritance: further topics
Abstract classes
Enumerated types
Nested classes
Java records
Sealed types
Part 6: Streams, exceptions, reflection, annotations
Exception handling
Streams
Reflection
Annotations
Part 7: Introduction to concurrent programming
Java threads: definition, creation, termination
Interference
Speed-up and parallel decomposition problems
A multi-threaded model for graphical applications
Mutuazione: 20810075 PROGRAMMAZIONE ORIENTATA AGLI OGGETTI in Ingegneria Informatica e dell'Intelligenza Artificiale L-8 R CRESCENZI VALTER
Programme
SyllabusThe course is organized in seven parts, covered in this order during the semester; each part includes lectures and practice exercises on the computer.
Part 1: The Object-Oriented Paradigm
The Java programming language
Classes and objects
Constructors
Information hiding
Part 2: Code quality
Cohesion and coupling
Testing
Part 3: Polymorphism
Interfaces
Substitution principle, polymorphism
Inheritance
Part 4: Collections
Generics
Maps, sets, lists
Iterators
Part 5: Code reuse
Inheritance: further topics
Abstract classes
Enumerated types
Nested classes
Java records
Sealed types
Part 6: Streams, exceptions, reflection, annotations
Exception handling
Streams
Reflection
Annotations
Part 7: Introduction to concurrent programming
Java threads: definition, creation, termination
Interference
Speed-up and parallel decomposition problems
A multi-threaded model for graphical applications
Prerequisiti
Knowledge of the fundamentals of imperative programming in C (types, variables, control structures, functions, arrays, pointers), as acquired in the course Fundamentals of Computer Science.Core Documentation
Ken Arnold, James Gosling, David Holmes "Il linguaggio Java: Manuale Ufficiale" - Addison WesleyReference Bibliography
Lecture notes, practice exercises, case study and past exam papers, published on the course website (sites.google.com/view/rm3-poo). The material is the same for attending and non-attending students.Attendance
Attendance is not compulsory. Lectures are held in person, three times a week. The HQ path requires taking the in-course tests in the lab and submitting the homework on time.Type of evaluation
The exam consists of two individual tests, carried out on the computer in the teaching lab, without access to any material. Both tests must be passed; only students who pass the first test are admitted to the second. - First test (weight about 12/31, about one hour): closed-answer quizzes and programming exercises automatically graded with the course quiz system. The quizzes are based on the practice exercises published on the course website, where students can practise with the same system. - Second test (weight about 19/31, about one hour and a half): code refactoring, design and implementation of small applications, and writing test cases, using the Eclipse development environment. As an alternative to the first test, students can follow the HQ path (homework and quizzes) during the course: three in-course quiz tests, taken under the same conditions as the first test, and a few homework assignments in pairs to be submitted on time. Students who pass all in-course tests and submit all homework go directly to the second test; their first-test score is then 1 + (score obtained / maximum score) × 12. The final mark is the sum of the scores of the two tests. In the second test, the correctness and completeness of the solutions, code quality (readability, cohesion, coupling, appropriate use of the language) and the adequacy of the test cases are assessed. Past exam papers, since 2019, are available on the course website.