OBJECT-ORIENTED PROGRAMMING - 2

Academic year
2022/2023 Syllabus of previous years
Official course title
PROGRAMMAZIONE A OGGETTI - MOD.2
Course code
CT0372 (AF:361198 AR:190162)
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
Written exam at the end of the course.
Optional oral exam, only when required by the professor and aimed at adjusting the final vote.
Optional project.


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: 25/07/2022