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
- Lecturers: dr.
Frank B. Brokken and
Jurjen Bokma
-
The next course starts in the first week of September 2023.
The first C++ lecture
is scheduled in the first week of September 2023.
Once the dates are available they are published here.
-
Note that Ocasys calls this course C++ fundamentals.
-
2022-2023's
schedule
You can already now register for the
To register for part I of the
2023-2024 edition of the C++ course
using the
www form.
If you're a staff-member, a non-RUG student, or an external
participant, then please contact the lecturers before registering.
Shortly before the
course starts all participants
receive an e-mail containing further details about the upcoming
course.
Usually no other information is sent to the participants
before that.
if you're a student, then please also register at progresswww. The
registration is available at BSc Computing Science, 3rd year,
semester 1a.
-
During the course we use two books: `De programmeertaal C' and `the
C++ Annotations'. Most students prefer to use their own printed copies
of these books. New copies of these books are printed every year, just before
the couse starts, by the central printing service of the University.
The book `De programmeertaal C' is in Dutch, which might be a
problem for non-Dutch speaking participants. Fortunately, almost every basic
book about the C programming language can be used instead. As English
alternative we advise the classic book by Kernighan and Ritchie: `The C
programming language'.
There's no alternative for the C++ Annotations. The
Annotations are in English, and the course is strongly tied to the
Annotations' current version. Participants must have access to their
own copies.
There is no obligation to order the books, although you seriously should
consider doing so. Do not assume spare copies remain available once the
course has started. Throughout the course the books are intensively
used, and from the course's very beginning we assume that you have access to
your own copies.
Currently, the exact prices of the books are not yet known, but the
prices will be close to EUR 20.-- for `De Programmeertaal C' and
EUR 35.-- for the `C++ Annotations'.
- Text for Study Guides
- Setup of the Course
-
Advised compiler and version: Gnu g++
, version
12.2.0
.
Usually a
slightly older version (e.g., the last minor-release of the
previous major release) is acceptable, at least for the first part
of the course.
- Windows users are strongly advised to install a Linux system on
their computers.
The wide availability of virtual machines (Virtualbox, Vmware) makes it relatively easy
to install Linux systems (e.g., Ubuntu) as a virtual system
inside your windows computer. Note, however, that the
C++ course is not a Unix/Linux course, and that we
assume that participants have an operational working environment,
with access to the g++ compiler,
which is freely available for all mentioned Unix (Linux) flavors.
-
The lecture slides of the preliminary lecture can be retrieved
here (Note: the movies were
recorded in the Academic Year 2020-2021. By now the compiler
version mentioned there has received several updates. The current
version is 12.2.0
. Also, the
Ubuntu version mentioned in the movies may by now have been
upgraded. Make sure you always use the latest versions. The
versions that are available once the C++ course begins can
be used throughout the course).
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
- Lecturers: dr.
Frank B. Brokken and
Jurjen Bokma
- Part II starts
November, 15th, 2022
-
Note that Ocasys calls this course Programming in C++.
-
Schedule
- If you're new to this course, then
please register using the
www form.
< !-- /var/www/ssl_icce.rug/register2/index.shtml -- >
- This course assumes that your knowledge of the C++ language is
up-to-date with respect to the topics we covered during part I. Part I
builds the foundation upon which this part and the third part of this
course are built.
Do not assume that the first course is not for you if you're a
proficient C programmer. There are many aspects and
approaches in C++ which are vastly different from what you
already might know from C. Do not underestimate these
differences. Again, if you have any doubts about what to do, contact
the lecturers.
< !--
- Some studies (e.g., computing science) do not offer ECTS points
for part I of this course. As a consequence you might want to skip
part I and to register just for parts II and III. Experience shows
that this strategy often causes a serious backlog, as you'll miss the
foundation covered during part I. If this is you, then we advise you
to consider registering for part I as attendee (simply
stating 'attendee' in the comment-section of the registration page
suffices). As attendee you don't have to complete exercises, but will
become aware of this course's requirements which you then can use
to your benefit once you start attending parts II and III as full
participant.
-->
- Text for Study Guides
- Setup of the Course
- Did you join this course at part II?
Make double sure that you
have a close look here to get you up-to-level for part II.
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: