C++ Programming

Ects : 3

Enseignant responsable :

Volume horaire : 21

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
  • Temp late 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
Coefficient : 1.5

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: www.drdobbs.com