Introduction to Modern C++ (2016)
Université Paris I -- Panthéon-Sorbonne
Masters MAEF, QEM, MEEF
Lecturer: Rémi Géraud
This is an introduction-level course to modern C++ programming.
C++ is a programming language developped in the late 1970's to provide higher-level constructs on top of the well-known C programming language. For a long time, this C legacy has crippled the use and adoption of newer features specific to C++. Fast-forward forty years, C++ is no longer the tool of choice when it comes to quick prototyping, and has proliferated into a tentacular language. Yet, C++ is still present in most software and remains one of the most popular programming languages.
Unlike more recent programming languages, C++ leaves almost every reponsibility in the programmers' hands: correctness, type safety (to some extent), security, resource management, concurrency, etc. The price, it is often believed, to be able to squeeze more performance from the computer.
In truth however, security and performance are absolutely compatible. In this course, students are taught how to implement efficient and high-quality programs, and they gain some theoretical insight about some of the quirks and gotchas of C++. They learn about the latest features of C++ (introducted in C++11, C++14 or C++17) and the logic underneath, trying to avoid legacy and unsafe C-style coding. Many connections are made with theoretical computer science and students' backgrounds and interests --- including simulation of financial assets, optimisation, numerical simulation and integration, and more.
The first part of the course will provide essential tools to start working autonomously and efficiently with C++. The second part will focus on advanced topics including graphics, multithreading, functional programming, template metaprogramming and others. The complete course totalises 42 hrs (lectures + labs).
- Lecture 1 (28 Jan 2016):
- Lecture 2 (4 Feb 2016):
- Lecture 3 (11 Feb 2016):
- Lecture 4 (18 Feb 2016):
- Lecture 5 (25 Feb 2016):
- Holiday break
- Mid-term exam (10 Mar 2016) [pdf] [solution]
- Lecture 6 (10 Mar 2016)
- Lecture 7 (17 Mar 2016 24 Mar 2016)
- Lecture 8 (24 Mar 2016 31 Mar 2016)
- Lecture 9 (7 Apr 2016)
- Resit exam (27 Jun 2016) [pdf] [solution]
Bjarne Stroustrup, Programming --- Principles and Practice Using C++ (2013)
Grading will be a weighted average of the following:
- Presence at lectures and labs
- Mid-term exam
- Final project