OBJECT-ORIENTED PROGRAMMING - 2

Academic year
2023/2024 Syllabus of previous years
Official course title
PROGRAMMAZIONE A OGGETTI - MOD.2
Course code
CT0372 (AF:401992 AR:250738)
Modality
On campus classes
ECTS credits
6 out of 12 of OBJECT-ORIENTED PROGRAMMING
Degree level
Bachelor's Degree Programme
Educational sector code
INF/01
Period
2nd Semester
Course year
2
Where
VENEZIA
Moodle
Go to Moodle page
This course is one of the basic educational activities of the Bachelor course in Computer Science that enable the student to gain knowledge and understanding
major programming paradigms and acquire the ability to design and implement software.
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.

Since the 2021-2022 edition, the course offers an advanced insight on C++ and its object system, as well as its template system, comparing object oriented programming (OOP) and generic programming (GP).
The course aims to develop in the student the necessary familiarity with the Object Programming paradigm and at the same time consolidate the programming bases acquired during the first year.

As with any course in programming it is essential that the training path combines methodological elements with continuous experimental stimuli, through the invitation to autonomous resolution of exercises and application problems.

The student who has successfully attended the course will have acquired a thorough knowledge of the Java and C++ languages, and advanced programming techniques such as design patterns. At the same time, it will be able to count on a general competence regarding object designation and the rules that underlie the design and development of software according to this paradigm. Skills that can be easily transferred to different languages and contexts.
Basic object-oriented programming taught in the first part of the course: Java, classes, interfaces, polymorphism, subtyping.
Imperative algorithms on basic data structures: arrays, lists, collections, trees.
Basic knowledge of the Java and C++ programming languages.
. Advanced programming in Java and advanced insights of C++
. Event-driven programming, callbacks, anonymous classes
. Exceptions, error reporting, resource tracking
. Parametric polymorphism: generics, constraints, first-class polymorphism
. Pure/impure functional programming in object-oriented languages: lambda expressions, function objects, closures
. Design patterns: factory, singleton, command, listener-observer, consumer-producer
. Advanced programming techniques: type-driven programming with objects
. Comparisons between OOP e GP, between Java and C++
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
The course exclusively involves a written exam at the end of the course. It will be possible to take only the exam related to module 2 at the first available session (i.e., the first session in June, as the course corresponds to the second semester). For all other exam sessions throughout the year, it will be necessary to take the complete exam, which involves taking the two separate exams for the two modules one after the other.

An oral test may be required at the discretion of the instructor, assessed on a case-by-case basis. Its purpose is to adjust the grade of the written exam if it is below the passing threshold or if explicitly requested by the student.

It is also possible to submit a project to the instructor from those proposed on the Moodle page. This is entirely optional and primarily serves as a coding exercise to enhance the understanding of the course concepts. However, if the result proves to be of particular quality, the instructor will adjust the exam grade accordingly.

Frontal course with a computer screen shared on the big display.
All the code written during classes is regularly committed on a Github repository.
Italian
written
Definitive programme.
Last update of the programme: 02/02/2024