Skip to ContentSkip to Navigation
Corporate Academy
Corporate Academy

Advanced Programming in C++

Continuing after Programming in C++ participants are at the level where they are familiar with all standard and predefined elements of the C++ programming language and are able to design understandable and maintainable large-scale C++ programs. Advanced Programming in C++ continues from there, and strongly focuses on compiler performed code generation.

Remarks

  • This course is the follow-up to Programming in C++
  • Workload: Requires approximately 20 hours of work per week.
  • Please be aware that the workload is heavy, and it can be challenging to take this course alongside a full-time job, unless you are an experienced C++ programmer.

Contact

Do you have any questions or want more information about the C++ courses? Please contact the course coordinator Jurjen Bokma (j.bokma rug.nl).

Date, time and location

10 weeks

Thursday 09:00 - 11.00

  • Week 6: 14 - 6 February 2025
  • Week 7: 21 - 13 February 2025
  • Week 8: 20 February 2025
  • Week 9: 27 February 2025
  • Week 10: 6 March 2025
  • Week 11: 13 March 2025
  • Week 12: 20 March 2025
  • Week 13: 27 March 2025
  • Week 14: 2 April 2025
  • Week 15: 9 April 2025

Note: The schedule on rooster.rug.nl is authoritative. Always check it for the latest course timings and location details.

Prerequisites
  • Programming in C++
Learning outcomes
After successfully completing this part of the C++ course you are able to:
  1. Design and use function templates as well as class templates;
  2. Explain the template parameter deduction process;
  3. Explain why Substitution Failure Is Not An Error (SFINAE); and to explain how this principle affects template selections;
  4. Define (partial) specializations for class templates; and to explain why function templates do not support partial specializations;
  5. Design and implement variadic templates;
  6. Use tuples to return structured types from functions, and use them to define differently typed variables in the initialization sections of for-, if-, and switch statements;
  7. Define statically polymorphic classes, preventing the software from having to use dynamic or late binding;
  8. Use template meta programming to convert values to types, to define the organization of classes based on its template parameters, and to use compile-time selection and iteration without creating any run-time executed code;
  9. Use template concepts to specify the requirements of template type arguments;
  10. Use precompiled headers and/or modules to reduce compilation times and to avoid the use of include guards in header files;
  11. Use transactional memory to avoid having to protect statements executed in multiple threads by mutexes;
  12. Use code generators instead of designing lexical scanners and syntax parsers ‘by hand’.
Literature
  • Any good book on C, for example: The C Programming Language, 2nd edition, by Kernighan & Ritchie (ISBN-13: 978-0131103627) We use the C book mostly for reference, and for study by those unfamiliar with C (e.g. coming from Python).
  • The C++ Annotations (A printed version can be obtained via Canon)
Enrollment and course fee

Course fee

  • Student: € 100,00
  • PhD: € 600,00
  • Staff/alumni: € 1.200,00
  • Extern: € 2.000,00

Enrollment

You can enroll for this course by filling out the form below.

Late enrollment

Would you like to join the course after it has already started? You can still enroll and catch up. Please contact the course coordinator Jurjen Bokma (j.bokma rug.nl) for details.

Last modified:09 December 2024 3.49 p.m.