E. Vicario, "Fondamenti di programmazione. Linguaggio C, strutture dati, algoritmi elementari, C++", Editrice Esculapio
D.S. Malik, "Programmazione in C++", Apogeo
L.J. Aguilar, "Fondamenti di programmazione in C++", McGraw-Hill
B. Eckel, "Thinking in C++", freely available (HTML version) from: http://www.mindview.net/Books/DownloadSites
Gamma, Helm, Johnson, Vlissides, "Design patterns", Pearson Education
Additional material (course slides and additional links) available on the course website (http://www.micc.unifi.it/bertini/)
Learn the basics of object oriented programming and design patterns.
Students will be able to program OO software in C++, and will have a basic knowledge of OOA and OOD. Representative Design Patterns will be presented.
Knowledge of C programming.
About 60% of lessons will be lectures in the classroom and 40% as programming exercises in labs.
Programming exercises will be assigned during the course, and corrections and evaluations will be delivered through a special web site.
All the course materials are provided through the e-learning site of the University of Florence.
The exam schedule is maintained on the web site (http://www.micc.unifi.it/bertini)
Type of Assessment
There are 2 types of examination, used to verify :
- the knowledge of basic C++ instructions
- the knowledge of basics of object oriented programming
- the capability to design classes and methods
- the capability to apply basic design patterns to design classes
1) Written and oral examination:
Written examination will consist of 3-4 questions about theoretical aspect of the course, and 2-4 short programming problems. Oral examination will consist of questions about the topics of the written exam and related arguments.
Successful evaluation of a mid-term exam regarding the C++ language allows to avoid the questions on the theoretical aspects in the final exam
2) development of a C++ program:
The goal of the program has to be decided in accordance with the instructor. Every 10-14 days the student will meet the instructor to show the progress, discuss development problems and will be given feedback about his work.
-Classes and objects
-Class Inheritance and Multiple Inheritance
-Virtual functions and abstract base classes
-Generic programming and templates
OOA, OOD and OOP
-inversion of responsibility
-implementation and interface inheritance
-fragile base class
-responsibility, cohesion, coupling
Introduction to design patterns and idioms
Fundamental Design Patterns:
-Factory and Singleton