Aarhus University Seal

Learn Software Design Using C++ from the Inventor of C++

This course is fully booked (no waiting list)

Design cannot be understood in the abstract: To discuss design you need concrete examples – preferably examples of both good and bad design. Conversely, you cannot understand a programming language or library – or use it well – by just learning the rules for its individual features. You need to understand the general design ideas behind the language or library: Its philosophy.

The ISO C++ language and its standard library provide many concrete examples for the discussion of design. We will look at C++ from its earliest days through the current 2020 ISO standard (C++20). Key topics include type safety, expressiveness and extensibility, resource management, error handling, efficiency concerns, generic programming, and the evolution of ideas, techniques, language features.

Exam info and full course description

Exam info and full course description can be found in the course catalogue.

Admission Requirements

Course specific:

To apply for the course you must either be enrolled in a bachelor's degree, have a bachelor's degree or have passed a qualifying entry examination.
Experience with a software development project (in any language). Two years of University-level Computer Science education. A basic understanding of C++ would be an advantage.


Exchange students: nomination from your home university

Freemovers: documentation for English Language proficiency

You can read more about admission here.


Bjarne Stroustrup

Bjarne Stroustrup is a Danish computer scientist, most notable for the invention and development of the C++ programming language. As of July 2022, Stroustrup is a professor of Computer Science at Columbia University.

He attended Aarhus University 1969–1975 and graduated with a master's degree in mathematics and computer science. His interests focused on microprogramming and machine architecture. He learned the fundamentals of object-oriented programming from its inventor, Kristen Nygaard.

In 1979, he received a PhD in computer science from the University of Cambridge, where he was supervised by David Wheeler. His thesis concerned communication in distributed computer systems.