C++ Programming
Enseignant responsable :
Volume horaire : 21Description 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 speciali zations
- 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: www.drdobbs.com