1. A
    1. API
    2. ASAN
    3. Access specifiers
  2. C
    1. Constructor
    2. const
  3. G
    1. GDB
    2. g++
  4. M
    1. Make
    2. Memory Leak
  5. P
    1. Pointer
  6. R
    1. Recursion
  7. S
    1. std
  8. V
    1. Valgrind
Completed: / exercises

Coursework and Deadlines at a Glance

Team Work: Labs Labs Deadlines Solo Work: MPs MPs Deadline
Getting Started: Set Up Your Laptop
LAB_INTRO 2024-05-09 23:59 Makefile Tutorial 2024-05-09 23:59
LAB_DEBUG 2024-05-09 23:59 MP_INTRO 2024-05-09 23:59
LAB_MEMORY 2024-05-09 23:59
LAB_INHERITANCE 2024-05-09 23:59 MP_COLLAGE 2024-05-09 23:59
LAB_GDB 2024-05-09 23:59
LAB_DICT 2024-05-09 23:59 MP_LISTS 2024-05-09 23:59
LAB_HASH 2024-05-09 23:59

Lectures and Labs Schedule

Lecture Date Place Lecture Topics Lab Date Place
12.03.2024,10:15 M101 1. "Hello World", classes 12.03.2024 ,12:15 TS135
14.03.2024 ,14:15 IT113 2. Constructors, .cpp/.h, encapsulation, pointers 18.03.2024 ,14:15 TS135
19.03.2024 ,10:15 M101 3. Variables, memory, pointers; lab_intro review
21.03.2024 ,14:15 TA101 4. Stack and heap, arrays 25.03.2024 ,14:15 TS135
26.03.2024 ,10:15 M101 5. Parameter passing, return, lab_debug review
28.03.2024 ,14:15 L3 6. Copy constructor, destructor, operator overload
02.04.2024 ,10:15 M101 7. Inheritance, virtual functions, abstract classes
04.04.2024 ,14:15 IT112 8. Templates, generic programming 05.04.2024 ,12:15 TS135
09.04.2024 ,10:15 M101 9. Linked memory, recursion 08.04.2024 ,14:15 TS135
11.04.2024 ,14:15 IT112 10. Hash tables, dictionaries 15.04.2024 ,14:15 TS135
16.04.2024 ,10:15 M101 11. STL, iterators
18.04.2024 ,14:15 SÄ112 12. Invited lecture, by Ville Voutilainen from Qt 22.04.2024 ,14:15 TS135
23.04.2024 ,10:15 M101 13. Review
25.04.2024 ,14:15 TA101 14. Review
Vappu week
07.05.2024 ,12:00 Online Final Exam, Attempt 1
28.05.2024 ,12:00 Online Final Exam: Attempt 2
18.06.2024 .12:00 Online Final Exam: Attempt 3
API stands for Application Programming Interface. In the context of this course, you can consider the header files to be such interfaces, as they determine what class functions and properties are public and thus accessible from anywhere.
AddressSanitizer (ASAN) is a memory error detector for C/C++. In this course, the makefiles will typically compile an executable that uses ASAN, with "-asan" at the end of its name.
The two notable access specifiers are:
  • public: class members defined after the public keyword are accessible from outside the class.
  • private: class members are generally private by default and thus not accessible from the outside
Constructor is a special non-static member function of a class that is used to initialize objects of its class type. A constructor is called upon initialization of an object. A constructor without arguments is a default constructor, but constructors that take arguments can be defined.
GDB, the GNU Project debugger, allows you to see what is going on `inside' another program while it executes -- or what another program was doing at the moment it crashed.
GDB can do four main kinds of things (plus other things in support of these) to help you catch bugs in the act:
  • Start your program, specifying anything that might affect its behavior.
  • Make your program stop on specified conditions.
  • Examine what has happened, when your program has stopped.
  • Change things in your program, so you can experiment with correcting the effects of one bug and go on to learn about another.
GNU Make is a tool which controls the generation of executables and other non-source files of a program from the program's source files. Make gets its knowledge of how to build your program from a file called the makefile, which lists each of the non-source files and how to compute it from other files. When you write a program, you should write a makefile for it, so that it is possible to use Make to build and install the program.
Memory leak means that the program is not freeing up memory it reserves. The memory will be freed when the program terminates, but if a program keeps leaking more and more memory without terminating, it can become a huge issue!
A typical way for memory leaks to occur is reserving memory with new and not calling delete before the pointer goes out of scope.
Pointer variables store a memory address as their value. In other words, they point to some data. The data can be accessed by dereferencing the pointer. (Either like *p or p->...)
A recursive function calls itself from within it. The recursion call must be conditional or it would lead to an infinite loop.
Valgrind is another tool besides ASAN that you can use in this course. It can detect many memory-related errors that are common in C and C++ programs and that can lead to crashes and unpredictable behaviour.
const is a keyword meant to mark something as immutable
  • A const object cannot be modified: attempt to do so directly is a compile-time error, and attempt to do so indirectly (e.g., by modifying the const object through a reference or pointer to non-const type) results in undefined behavior.
  • const keyword on an object's member function prevents the object from being modified in the function
  • Pointer declarations can have 2 const keywords, one to make the data that's pointed at unable to be modified and one to make the pointer itself unable to be modified
Using const improves code readability and prevents accidental modification of objects.
g++ is a C++ compiler that we primarily use for this course. It is the C++ compiler for the GNU compiler collection. You may sometimes see gcc being used instead of g++, which was originally the GNU C compiler, but calling gcc generally also compiles .cpp files as C++. However, calling g++ is preferred.
In C++, std stands for Standard Library, which is a collection of commonly useful classes and functions. Typically, these are defined in the std namespace.