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 can be found in the course catalogue.
Please notice that this course is passed by active participation, and you will not receive a specific grade. Only pass/fail will appear on your transcript.
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. Furthermore, experience with a software development project (in any language) and two years of University-level Computer Science education is required. A basic understanding of C++ would be an advantage.
General:
Exchange students: nomination from your home university
Freemovers: documentation for English Language proficiency
You can read more about admission here.
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.