https://studiegids.vu.nl/en/courses/2025-2026/XB_40011Knowledge and understanding:Students learn problem solving by implementing algorithms in computer programs.Students learn the basic concepts of programming languages.Applying knowledge and understanding: Students are trained in writing small computer programs, and applying the concepts learned.Making judgements: Students are trained in testing and judging the correctness of their own programs, and to correct programming mistakes.Lifelong learning skills: After completing the course, students will be able to grasp future programming languages and environments by applying the basic concepts learned here.In this course, students learn the basic concepts of (problem solving with) computer programming. We are using the C++ programming language. The course consists of six modules:The basics: data types, operators, type conversions, expressions, statements, if, switch, loopsVectors, user-defined functions with parameter passing, scopesError handling, exceptions, streams and input errors, file IO, command line parameters, assertions and unit testingRecursion: functions that call themselves, understanding how functions workClasses: DIY data types, interfaces and implementation, constructors and initialisationMemory management: pointers, dynamic memory allocation, memory leaks; Tree data structures as recursive data typesThe six modules build on top of each other. Students reach the course objectives by mastering the higher-level modules five and six.This course revolves around self-study with the interactive course e-book, in combination with class sessions for deepening understanding (2 times per week), and practical programming assignments (individual preparation and guided lab sessions 3 times per week).Throughout the course, the practical programming assignments assess the student's learning progress. Each week, students submit a short self-reflection about how they have solved their homework assignment (or why they failed solving it), and compare their own solution to the ones of up to three other students. The midterm exam assesses proficiency with modules one, two and three. The final exam assesses proficiency with all six modules. Both exams are computer-based and focus on programming assignments. There will be a resit exam, covering all six modules. The midterm exam and the final exam together result in the exam grade. Here, the midterm counts for 30% and the final exam for 70%. If taken, the resit exam replaces the combined exam grade from midterm and final. For passing the course, the exam grade must be at least 5.5. Students with an exam grade of 5.5 or better can raise their total grade by up to 2 grades by earning bonus points (up to 1 for reflection assignments, up to 0.5 for challenge assignments, and up to 0.5 for timely completion of the exercises in the interactive e-book). For details, see Canvas.Programming in C++, Frank Vahid and Roman Lysecki, interactive e-book, https://www.zybooks.com/catalog/programming-c-plus-plus The contents of this e-book have been tailored to our course.Bachelor Computer Science (year 1) Bachelor Mathematics (electives)Students must possess the ability to clear, analytical and abstract thinking, as indicated by the level of mathematics required for admission to the program.Strictly speaking, prior programming experience is not required for following this course. But it certainly helps. Prospective students who have never programmed before may want to spend some time during summer with self study with material available online.Canvas is the place where all communication takes place. Students must make sure they receive Canvas notifications in a timely manner.