20810075 - OBJECT ORIENTED- PROGRAMMING

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

Programme

Syllabus
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

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 Wesley


Reference 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

Mutuazione: 20810075 PROGRAMMAZIONE ORIENTATA AGLI OGGETTI in Ingegneria Informatica e dell'Intelligenza Artificiale L-8 R CRESCENZI VALTER

Programme

Syllabus
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

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 Wesley


Reference 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

Mutuazione: 20810075 PROGRAMMAZIONE ORIENTATA AGLI OGGETTI in Ingegneria Informatica e dell'Intelligenza Artificiale L-8 R CRESCENZI VALTER

Programme

Syllabus
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

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 Wesley


Reference 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.