Programming in C++

Faculteit Science and Engineering
Jaar 2020/21
Vakcode WBCS034-05
Vaknaam Programming in C++
Niveau(s) bachelor
Voertaal Engels
Periode semester I b

Uitgebreide vaknaam Programming in C++
Leerdoelen After successfully completing this part of the C++ course you are able to
1) write robust, understandable, and maintainable C++ programs;
2) overload all overloadable operators, including the spaceship-operator;
3) apply the commit-or-roll-back principle when overloading constructors and operators;
4) judge what safety guarantees to offer when using exceptions;
5) use friends without creating strong coupling between unrelated components of programs;
6) apply inheritance without falling in the missing facility trap, using it to implement-in-terms-of;
7) use and understand object oriented programming, strictly adhering to Liskow's substitution principle;
8) use the available abstract containers; to use them to create complex data structures;
9) apply available generic algorithms instead of implementing such algorithms yourself; and to explain why generic algorithms are preferred over self-designed algorithms
10) design multithreaded programs that carefully synchronize data between threads while remaining exception safe and avoiding overpopulation; to explain the differences between forking and threading;
11) design elaborate C++ programs, using and understanding all available components of the language, except for self-designed templates and those elements that were added to the language in the C++ 20 standard.
Omschrijving Continuing after C++ fundamentals, participants are at the level where they are familiar with the concepts of object based programming. Programming in C++ continues from there, covering the language's specific and characteristic core elements and underlying philosophy, formulating design principles resulting in reliable, maintainable, and understandable software. When used properly, overloading functions and operators enhance the readability of code. Exceptions are used for handling unintended situations with a minimum of error-handling code, while exception guarantees ensure that results obtained at the point where exceptions occur remain valid. In C++ the philosophy behind the use of inheritance and polymorphism strongly focuses on creating reusable software, and on avoiding strong coupling. Inheritance and polymorphism are never used automatically, nor are they used to add `lacking functionality' to existing classes. In addition containers and generic algorithms are extensively covered and used in this part of the C++ course, allowing software developers to create, correctly handle, and even extend complex data structures with very little effort. Facilities for designing multi-threaded programs are an integral part of the language, and after successfully completing Programming in C++ its participants are able to design and implement elaborate multi-threaded programs, but may also design programs in which forking is (still) used.
Uren per week
Onderwijsvorm Hoorcollege (LC), Opdracht (ASM), Practisch werk (PRC)
(Lectures: 2hr, homework exercises: approx. 15 hr.)
Toetsvorm Opdracht (AST), Practisch werk (PR), Presentatie (P)
Vaksoort bachelor
Coördinator J. Bokma
Docent(en) J. Bokma ,dr. F.B. Brokken
Entreevoorwaarden C++ fundamentals (WBCS033-05) or comparable.
N.B. 3rd year BSc CS students are exempted from this prerequisite requirement, for having the necessary background from programming courses in this degree programme.
Opmerkingen Enrollment via ProgRESS.WWW

Contrary to other CS bachelor courses, this course does NOT have limited enrollment for non-CS students.
Opgenomen in
Opleiding Jaar Periode Type
BSc Applied Mathematics 3 semester I b keuze
BSc Artificial Intelligence 3 semester I b keuze
BSc Computing Science  (Optional electives for CS students) 3 semester I b keuze
BSc Courses for Exchange Students: AI - Computing Science - Mathematics - semester I b
BSc Mathematics: General Mathematics  (Electives and Minor General Mathematics) 3 semester I b keuze
MSc Applied Mathematics: Computational Mathematics  (Computational Mathematics: Guided choice) - semester I b keuzegroep