Home page of Giuseppe Lipari


Scuola Superiore Sant'Anna
Via Moruzzi, 1
56127 Pisa, ITALY
tel: +39 050 882030
fax: +39 050 883003
email: g.lipari at sssup dot it


14 Febbraio 2013 OOSD course

All news

Object Oriented Software Design Graduate Program in Information Science and Technology Academic Year 2010-2011 Second semester

Course organization

The course is organized into two modules:
  1. Advanced Programming with C++, 12 lectures of 2 hours each, 3 credits
  2. Object Oriented Design methodologies, 12 lectures of 2 hours each, 3 credits

PhD students and Allievi Ordinari: both modules are open to PhD students and Allievi Ordinari of Scuola Superiore Sant'Anna. Frequency is not mandatory. At the end of each exam, an oral examination is required.

Graduate Program's student: students of the GPIST must followingboth modules. At the end the exam will consist of a project, plus an oral exam that will include arguments from the first semester (Java programming). The web-page for first semester is here.


The exam dates are: Here you can find a list of sample questions for the exam. Please be aware that these are only "typical" questions: during the exam I may ask different questions!

Reference Books

For the first module (Advanced programming with C++), the following books can be used as a reference: For the second module (OO Design methodologies), the following books can also be used to complement the lectures:


First module (Advanced Programming with C++):
  1. C++ summary: here we summarise the main feauters of the C++ programming language. Many of these features are just quickly described here, but will be used later in the course (printable version). Examples:
  2. Very Quick and Dirty Overview of UML class diagrams (printable version)
  3. OO design principles: why object oriented programming, the five SOLID principles, a general overview of design patterns (printable version). Examples:
  4. Creational patterns: how to create objects in a flexible, extendible, independent manner (printable version)
  5. Structural patterns: the internal architecture of our objects, and their relationship. Inheritance vs. composition (printable version)
  6. Behavioural patterns: how to dynamically compose objects to achieve the desired behaviour (printable version)
  7. An example: Discrete Event Simulation
Second module
  1. Template metaprogramming (printable version)
    • Example code (you have to install the loki library: in ubuntu, "apt-get install libloki"
  2. Class generation and functors (printable version)
  3. Generic Visitor and Generic Observer (no slides)
  4. Safety to exceptions (printable version)
  5. Concurrency (printable version)
  6. The boost library (printable version)
  7. Active Object (printable version)
  8. Test Driven Design (printable version)
The list is incomplete. Further slides will be made available soon.


Here is the calendar for the course: the course lectures are marked with C++(GL) for the first module, and as OOD(GL) for the second module.

Variations will be announced in the "News" section.