You are here

Advanced Programming

Alberto Sartori
Course Type: 
PhD Course
Master Course
Anno (LM): 
First Year
Academic Year: 
48 h
CFU (LM): 

Provide advanced knowledge of both theoretical and practical programming in C ++ and Python, with particular regard to the principles of object oriented programming and best practices of software development (advanced use of version control systems, continuous integration, unit testing).


  1. Scientific programming environment. You will learn the basic ingredients needed to efficiently develop scientific software in *nix environment.
  2. Introduction to C++. You will learn the logic and the basics of C++, the built-in data types and how to effectively use them. Best practices in programming will be addressed.
  3. Object orientation in C++. The principles of Object-Oriented programming will be presented with particular attention to their implementations in C++. Some of the most important Design Patterns will be discussed.
  4. Advanced features of C++11/14/17. Some of the new features of standard C++11/14/17 will be introduced and explained.
  5. Object-Oriented programming in Python. After a recap of the basics of Python, you will learn how to program in object-oriented fashion in the Python programming language.


  • Programming: Principles and Practice using C++ (Second Edition), Bjarne Stroustrup, Addison-Wesley 2014, ISBN 978-0-321-99278-9
  • The C++ Programming Language, Bjarne Stroustrup, Addison-Wesley 2013, ISBN 978-0321563842
  • Design Patterns: Elements of Reusable Object-Oriented Software, Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Pearson Education 1993.

The updated material for this course can be found here.

Familiarity with linux terminal and a text editor (e.g., emacs, vim)
A bit of knowledge of git is helpful

Sign in