The C++ courses are offered in English

Students intending to attend this course should be prepared for lectures, meetings and exercises in English.

When submitting exercises English must be used.

Note that we don't use Brightspace. If you want to attend this course then do yourself a favor by registering for this course using the registration form of the part you want to attend (see below).

If you don't we can't reach you and you may miss important information about the upcoming course. See the specific details at the descriptions of the separate parts.
Of course, if your study requires that you register on Progress that's fine with us, but make sure that you (also) register using our registration page.

The C/C++ course is presented by Frank B. Brokken and Jurjen Bokma.

dr. Frank B. Brokken

Both domestic and foreign (guest) students and employees of the University of Groningen and other Dutch organizations of higher education (including university hospitals) can register for this course. There are no personal charges other than the (optional) books that are used during the C++ courses. Employees interested in attending are advised to seek consent from their department's chairs or comparable, prior to enrolling. If you're not a student or member of the abovementioned organizations but would like to attend this course then please contact the lecturers before registering.

Registration for the course(s) is NOW open.
If you have any questions about the courses or their organization then feel free to contact dr. Frank B. Brokken (phone +31 6 5353 2509), Jurjen Bokma (phone +31 50 363 9253, office building 5431 (Smitsborg), room 123), or one of our TAs of 2022-'23: Radu Cosma, Mattias van der Kolk, and Tomass Pankrats.

Jurjen, Frank and Mattias speak Dutch, but English is a language all of us understand.

Jurjen Bokma

Organized courses:

General Information about the C++ course

The full C/C++ course consists of three parts. Each part takes about 7 to 8 weeks, to which some extra (optional) lectures are sometimes added. It's always possible to enter the course at any of its three parts, but when you register for parts 2 or 3 we assume you thoroughly understand all the topics covered in earlier parts. Each successfully completed part is rewarded with 5 ECTS study points.

This is not a course about the C programming language

No, its not. But as C is an almost complete subset of C++ we do cover almost all aspects of C as well. However, our main focus is on C++, but its not just about churning out C++ code, but its very much also about understanding what and why you're doing, and also to design your software in such a way that --even after years-- you (or anybudy else) are still able to understand what you did a long time ago. If this appeals to you, feel welcome to register! Also note this:

Can ordinary mortals complete this course?

Well, it depends. We call it a C/C++ course, but in the end that's just the vehicle we use for teaching principles of good software design. But then, this is like saying:

yes, we're teaching you how to drive a car, but for that we use a Ferrari.

You have to be well-prepared for that! Also, C/C++ differ from many other programming languages in that there is an official ANSI/ISO standard, which turns C/C++ in a very well designed and thorough language, void of elements that can best be described as resulting from current fashion idiosyncrasies.

In the past we noticed that some participants were somewhat annoyed because Google couldn't provide them with the answers to the exercises. And yes, this course requires quite a bit of effort on your (and our) part, but then, when you've eventually completed our course you can truthfully state:

Yes, I've mastered C++!

We devote lots of attention to the c++20 standard, including template concepts, coroutines, and new additions to C++'s basic grammar.

On average, if you aim at completing the course at high final grades, be forewarned that in that case you should plan on investing about 20 hours each week for this course (that's including the weekly 2 hours lecture).

To rate the exercises we use a rating scheme for exercises, which was specifically designed for this course and which helps you reaching `sufficient' marks for the course: follow this link for a description of the rating procedure that we're using.

When joining the C++ course, you only have to register for the part where you want to join our course. Once you've registered for a particular part (e.g., part I) we assume that you also intend to attend subsequent parts (in that case: parts II and III). There is no obligation to attend subsequent parts, but the automatic continuation allows you to continue the course without any further administrative hassle.

In September you start with part I. In November you continue with part II, and finally, in January you enter part III. So, the full C++ course takes about half a year to complete. It is also possible to attend the individual parts, omitting one or two other parts. When joining during later courses, it is assumed that your entry level is at least equal to the exit level of the previous part. When in doubt, contact the lecturers.

C++ Courses organized by the Dept. of Computing Science:

Programming in C/C++, part I
The following information is available to students attending part I. The required UN/PW combination is made available during the 1st lecture.

Programming in C/C++, part II, Academic Year 2020-2021 The following information is available to students attending part II of this course once part II has started:

Programming in C/C++, part III
Once we've reached March 9 we've covered all the C++ topics of this year's course. However, that doesn't mean that by then we've reached the end of this course's topics: once complex input must be processed specialized tools are commonly used, in particular lexical scanner and parser generators. For a long time those tools didn't exist or were only rudimentary available. But a 100% C++ parser generator exists since 2005, and a 100% C++ lexical scanner generator exists since 2008. Wrt the latter tool: the original setup and implementation was initiated by Jean-Paul van Oosten, and he will, at the lecture of March 15, present some background info about why mere regular expressions are insufficient when we're looking for key elements in the input stream. Jean-Paul, a former student of the C++ course, now holds a PhD in Artificial Intelligence, and runs a company of his own.

Jean-Paul van Oosten

The following information is available to students attending part III of this course in the current academic year:

There will be many things that will remind those who'll join the C/C++ courses to the Unix Operating System. Linux, Debian and Ubuntu being well-known branches that grew from the Unix tree.
Considering this close relationship, it is at least funny, and arguably useful, to (re)familiarize you with The Unix Haters Handbook, brought to my attention by one of my colleagues, Mr. Adri Mathlener. Although aiming at Unix, it also has a chapter (10) about C++. So, as we wrote above: be prepared when joining the gang. Morbid....
Thanks, Adri!

But let's not get distracted by the The Unix Haters Handbook. After all, it's C/C++ you're after, right? Well, you came to the right spot! Even after all these years (Frank started the C course together with Karel Kubat back in 1987, adding C++ to the course in the early 90s) this course breathes nothing but enthusiasm, and we're fairly sure that you can have a great time when joining this course. Well, you can, but it'll require some effort, though....

To tease some friends, Frank wrote a small document full of C++ teasers. It's at his linked-in page, but you can also directly download it here.

Most teasers aren't difficult, but require some meta-thinking about the language. You know it all? Don't say `yes' too quickly. There's a deeper thought behind every single question. But if you do, great, and chapeau. Not so? Then maybe the C/C++ course is something for you. We will enthusiastically welcome you!

Frank B. Brokken (
14 November 2022