C++ Programming Language (2017/2018)

Course code
Name of lecturer
Federico Busato
Federico Busato
Number of ECTS credits allocated
Other available courses
Academic sector
- - -
Language of instruction
II sem. dal Mar 1, 2018 al Jun 15, 2018.

Lesson timetable

Go to lesson schedule

Learning outcomes

The course provides the skills to design and develop programs in C++ language. Particular emphasis will be given to the most advanced constructs of the newest standard C++11/14. Furthermore, the course introduces techniques for code organization and maintaining.
At the end of the course, the students will obtain the necessary skills to develop and organize C++ programs in a profitable way.


Course organization:

  • Course and C++ Language Introduction.
  • Fundamental Concepts I. IOStream, Primitive Types, Statements and Control Flow
  • Fundamental Concepts II. Memory management, Pointers and References, C++ Keywords, Type Conversion, Preprocessing, Functions
  • Utilities. Math functions, Algorithm Library, String, Random Numbers, Time Measuring
  • Object Oriented Programming. C++ Classes, Class Hierarchy, Class Keywords, Polymorphism in C++, Operator Overloading, C++ Special Objects
  • C++ Templates and Meta-Programming I. Function Templates, Type Deduction, Compile-Time Utilities, Type Traits, Template Parameters
  • C++ Templates and Meta-Programming II. Class Templates, Template Meta-Programming, SFINAE, Variadic Templates
  • Containers and Iterators. Lambda Expressions, Std Containers, User-Defined Iterators
  • Code Organization.
  • C++ Tools and Error Handling. CMake, Gdb, Valgrind, Demangler, Version-Control, Linter, Code Statistics and Analyzer
  • Advanced Concepts. Move Semantic, C++ Idioms
  • Code Optimization.
  • Course material: Modern-CPP-Programming link

Reference books
Author Title Publisher Year ISBN Note
Marc Gregoire Professional C++ (Edizione 4) Wrox Pr Inc 2014 978-1-118-85805-9
Bjarne Stroustrup Programming Principles and Practice Using C++ (Edizione 2) Addison-Wesley 2014 978-0-321-99278-9