C++ Programming Language (2018/2019)

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/17. 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