The C++ Masterclass course can be divided into a group of relatively independent courses listed below. Pass the following test to get your personal proposal.
The course is designed to give the most fundamental and necessary knowledge from different mathematical theories to understand the origins of programming and get a good platform to build the rest of the knowledge on. The course contains the following topics:
Numeric systems : octal, hexadecimal and octal systems.
Arithmetic in octal and binary systems.
Integer, signed and floating point numbers in binary representation.
Boolean algebra and logical gates.
Logical circuits. Foundations of digital design. How to build a CPU.
Automatas and Turing machines.
The course is designed to give common knowledge about CPU structure and architecture (the interface). It covers (but is not limited to ) the following topics:
A complete 32-bit CPU design
CISC vs RISC vs VLIW architectures.
Intel x86 architecture and assembly language
ARM v8 architecture and assembly language.
Vectorization (Intel AVX and ARM Neon).
Heterogenous systems.
CPU Microarchitecture:
Branch predictor
Pre-fetcher
Pipelining
Out-of-order execution
Caches
The course is designed to give common knowledge about the process of compilation, the LLVM framework and the IR language.
Compilation overview ( on the example of clang and C++).
Parsing, syntax and semantics.
LLVM and the IR language.
Code generation and optimization.
The course is designed to give fundamental knowledge about operating systems, their importance and functions. The course covers the following topics:
OS definitions and main functions.
OS architectures.
Processes and threads.
Memory management.
File systems.
The course is designed to give fundamental knowledge on programming in POSIX environments (Linux, Unix, Mac OS, iOS). The course covers the following topics:
POSIX programming foundations.
Working with processes : creation and basic manipulation.
Working with threads : creation, data interchange.
Synchronization primitives.
Working with files.
Inter-process communication : pipes, FIFOs, signals, shared memory.
The course is designed to give fundamental knowledge on network, web and parallel programming in POSIX environments (Linux, Unix, Mac OS, iOS). The course covers the following topics:
Computer networks, Internet, routing, DNS.
Sockets and network programming.
Web programming foundations.
Distributed and parallel programming with MPI.
Parallel programming using OpenCL.
Parallelization and vectorization.