Programming in C++

Faculteit Science and Engineering
Jaar 2022/23
Vakcode WBCS034-05
Vaknaam Programming in C++
Niveau(s) bachelor
Voertaal Engels
Periode semester I b
ECTS 5
Rooster rooster.rug.nl

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;
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 This external course is organized and taught by CIT. 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
Entreevoorwaarden students who took C++ fundamentals (WBCS033-05): assignments.
Mandatory for CS students: Advanced Object-Oriented Programming (WBCS001-05). Please contact the lecturer if you have questions.
Opmerkingen Frank Brokken is involved in this course as an external expert in the field.

Enrollment via ProgRESS.WWW
Students who want to register for this C++ programming course are strongly advised to study the information about this course on http://www.icce.rug.nl/edu. It is also highly appreciated if you register for this course via the registration page that you'll find at http://www.icce.rug.nl: it allows you to order the books that are (intensively) used during this course and it provides the lecturers with information about your study, as well as (optionally) some additional contact info.

--
Contrary to other CS bachelor courses, this course does NOT have limited enrollment for non-CS students.
Opgenomen in
Opleiding Jaar Periode Type
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 Econometrics and Operations Research/EOR  (keuzevakken BSc EOR) 3 semester I b keuze
BSc Kunstmatige Intelligentie 3 semester I b keuze
BSc Mathematics: General Mathematics  (Electives and Minor General Mathematics) 3 semester I b keuze
BSc Technische Wiskunde 3 semester I b keuze