Modern C++ Course: Lectures & Tutorials (2020)

This is the Modern C++ course taught in 2020 at our lab plus useful tutorial videos that should support learning C++. Enjoy!


Modern C++: Welcome to the Course (Lectures and Tutorials, 2020 Edition)


Modern C++: The Basics (Lecture 0, I. Vizzo, 2020)

Modern C++ Course, Lecture 00: The Basics

Slides, Tutorials, and more:

Slides: Link
Related tutorials for this lecture:
– Bash Introduction: Link
– Command Line Pipes and redirection: Link
Information about this course: Link


Modern C++ Course: Setting up C++ dev box in GNU/Linux (Tutorial 0 for Linux users, I. Vizzo, 2020)

Tutorial 0-for-linux: Setting up C++ dev box in GNU/Linux

In this video, we see what to install on a fresh GNU/Linux distribution to set up a development C++ box machine.

These are the bare minimum tools you will need in order to have a comfortable workflow while developing C++ projects.
—-
Wiki [internal]: Link
Wiki [external]: Link


Modern C++ Course: Setting up OpenCV 4/C++ dev box in Win 10 WSL (Tutorial 0 for Windows users)

Tutorial 0-for-windows: Setting up OpenCV 4/C++ dev box in Windows 10 (WSL)

In this video, we see how to set up a Windows 10 machine as a development OpenCV4/C++ box machine.

We don’t explain here what to install, but the previous steps required before following the ones that we mention in the previous video:Link

We don’t show how to install OpenCV4 given the fact that ANY GNU/Linux based tutorial will work for this particular setup.
—-
Link


Modern C++: Build and Tools (Lecture 1, I. Vizzo, 2020)

Modern C++ Course. Lecture 01: Build and Tools

Slides, Tutorials, and more:

Slides: Link
Homework: Link
Related tutorials for this lecture:
– Homework Submission System: Link
– Git: Link
Information about this course: Link


Modern C++ Course: Homework Submission (for internal students only; Tutorial 1, I. Vizzo, 2020)

Tutorial 1: Homework Submission (for internal students only; after Lecture 1)

In this video, we see how to submit your homework and check the results by the automated homework checker.

We also show how to add ssh keys to your Gitlab account to work with git without having to provide your username and password every time you interact with the Gitlab server.
—-
Link


Modern C++: Core C++ (Lecture 2, I. Vizzo, 2020)

Modern C++ Course, Lecture 02: Core C++

Slides, Tutorials, and more:

Slides: Link
Homework: Link
Related tutorials for this lecture:
– GDB: Link
Information about this course: Link


Modern C++: C++ Functions (Lecture 3, I. Vizzo, 2020)

Modern C++ Course, Lecture 03: C++ Functions

Slides, Tutorials, and more:

Slides: Link
Homework: Link
Related tutorials for this lecture:
– clang-tools: Link
– Gitlab Agile: Link
Information about this course: Link


Modern C++ Course: clang-tools (Tutorial 2, I. Vizzo, 2020)

Tutorial 2: clang-tools (after Lecture 3)

In this video, we see how to work with clang-tools in our C++ course.

—-
Link


Modern C++: The C++ STL Library (Lecture 4, I. Vizzo, 2020)

Modern C++ Course, Lecture 04: The C++ STL Library

Slides, Tutorials, and more:

Slides: Link
Homework: Link
Information about this course: Link


Modern C++: I/O Files, Intro to Classes (Lecture 5, I. Vizzo, 2020)

Modern C++ Course, Lecture 05: I/O Files, Intro to Classes.

Slides, Tutorials, and more:

Slides: Link
Homework: Link
Related tutorials for this lecture:
– Bag of Visual Words Introduction: Link
– OpenCV4 Tutorial: [ToDo] Information about this course: Link


Modern C++ Course: OpenCV 4 C++ in GNU/Linux (Tutorial 3, I. Vizzo, 2020)

Tutorial 3: OpenCV 4 C++ in GNU/Linux (after Lecture 5)

In this short video, we see how to use the OpenCV4 library in a GNU/Linux dev machine.

Slides: Link
Example Project: Link
Related Video: Link


Modern C++: Modern C++ Classes (Lecture 6, I. Vizzo, 2020)

Modern C++ Course, Lecture 06: Modern C++ Classes

Slides, Tutorials, and more:

Slides: Link
Homework: Link
Related tutorials for this lecture:
– C++ Classes: Link
– C++ Unit Testing: Link
Information about this course: Link


Modern C++: Object Oriented Design (Lecture 7, I. Vizzo, 2020)

Modern C++ Course, Lecture 07: Object Oriented Design

Slides, Tutorials, and more:

Slides: Link
Homework: Link
Related tutorials for this lecture:
– Object Oriented Pilars: Link
– Polymorphism: Link
– Raw Pointers: Link
Information about this course: Link


Modern C++: Memory Management (Lecture 8, I. Vizzo, 2020)

Modern C++ Course, Lecture 08: Memory Management

Slides, Tutorials, and more:

Slides: Link
Homework: Link
Related tutorials for this lecture:
– Smart Pointers: Link
– Smart Pointers Deeper: Link
Information about this course: Link


Modern C++ Course: Templates (Lecture 9, I. Vizzo, 2020)

Modern C++ Course, Lecture 09: Templates

Slides, Tutorials, and more:

Slides: Link
Homework: Link
Related tutorials for this lecture:
– Template Normal Programming : Link
Information about this course: Link


Bag of Visual Words – 5 Minutes with Cyrill

Bag of visual words explained in 5 minutes
Series: 5 Minutes with Cyrill
Cyrill Stachniss, 2020

Link to Jupyter Notebook:
Link
or
Link

There is also a 1h lecture on Bag of Visual Words available here:
Link

Credits:
Video by Cyrill Stachniss
Images by Olga Vysotska
Intro music by The Brothers Records


Bag of Visual Words & Project Instruction (Cyrill Stachniss, 2020)

Lecture on Bag of Visual Words for Finding Similar Images plus Project Instructions for the C++ Course
Cyrill Stachniss, spring 2020


Modern C++: You made it!