C++ Programming
ECTS : 3
Description du contenu de l'enseignement :
This practical oriented course focuses on learning C++ language as a practical tool. It aims to be both an introduction to C/C++ and a basic course for whoever want to get an expertise in programming. A special care to practice is taken through solving simple issues C++ as a tool ; no special programming background is expected. The 2 last courses are dedicated to advanced topics, not mandatory to learn the language, but important for people with programming background especially C programmers. A good grasp of the previous lessons will be required.
Course outline:
1. The basics
- Working with git
- C++ first program, compilation chaintools, input and output
- Variables and types, scopes, operators
- Working with numbers: maths VS computers
- Control structures
2. Express your algorithms using C++
- Functions (declaration, arguments, overloading)
- lvalue and rvalue references
- Namespace
- Precompiler and macros
- Program structure and build process
- Application: closed-formulae for pricing
3. Programming with the STL
- Sequential containers
- Associative containers
- Algorithms, iterators, functors
- Lambdas
- Streams
4. Defining your own types
- Structures and classes
- Value semantic
- Conversions
- Operator overloading
- Application: data models in pricing libraries
5. Managing memory and low-level data structures
- Pointers and arrays
- Pointer to method and functions
- Three kinds of memory
- Exceptions
6. Making your types abstract
- Inheritance and polymorphism
- Entity semantic and Liskov Substitution Principle
- Runtime Type Information
- Multiple inheritance
- Inheritance of implementation
- Application: reusable numerical tools
7. Generic programming: write less, do more
- Template classes and specializations
- Template functions, specialization vs overloading
- Type deduction and auto
- Universal references and perfect forwarding
- Curiously Recurring Template Pattern
- Traits
- Managing the overload resolution set
- Variadic templates and advanced metaprogramming
Compétence à acquérir :
Knowledge in C++ programming for finance
Bibliographie, lectures recommandées :
Beginners:
Stanley B.Lippman, Josee Lajoie, Barbara Moo, "C++ Primer ", Fifth Edition, 2012.
Koenig A. & B. E. Moo, "Accelerated C++", Addison-Wesley, 2000
Reference guides:
Bjarne Stroustrup, "The C++ Programming Language", Fourth Edition, 2013.
Nicolai M. Josuttis N. M., "The C++ standard library" 2nd edition, Addison-Wesley, 2012
Scott Meyers, “Effective STL”, Addison-Wesley, 2001
Online Gurus:
http://www.drdobbs.com/