Advanced C++ Programming
Location: TBD, 德田館
Time: TBA
``xxx''
-- xxx
Instructor
Prerequisites
- C++ (familiar with the concepts of loops/arrays/pointers/functions/structs)
- The equivalents (e.g. Java and C#)
Development Environment
- We will follow C++ 14/17 and use GNU GCC compilers.
- Please follow this page.
Recording Classroom Lectures Policy
Recording of classroom lectures is prohibited unless advance written permission is obtained from the class instructor and any guest presenter(s).
Overview
Basics of C++
- Introduction to computer systems: CPU-memory model
- Data types (int, double, string, bool), variable declaration, and basic operators
- Flow controls (if-else, switch-case-break-default, while, do-while, for)
- Array, function, and pointer & reference
- Struct and union
Object-Oriented Programming (OOP)
- Object & class
- Encapsulation: public, private, protected, and friend members
- Inheritance
- Virtual functions and function/operator overriding
- Subtype polymorphism
- Generic programming: templates
- Annoymous function: lambda
Standard Template Library (STL)
- Iterators
- Containers
- vector, list, queue, stack, set
- map
- Algorithms
- sort
- search
- merge
- for_each
- transform
Design Patterns
- Creational patterns: singleton, factory method, abstract factory
- Structural patterns: adapter, bridge, proxy, decorator, sharing (interning, flyweight)
- Behavioral patterns: iterator, strategy, observer (publish/subscribe)
- Application: QunatLib
Multithreading Programming
- Basic concepts of operating systems (OS)
- Thread & Runnable
- Race condition, mutual exclusion & synchronized methods/blocks
- Producer-consumer problem (bounded-buffer problem) & semaphores
- Dining philosophers: deadlock, livelock, starvation
- High-level concurrency framework: thread pools, fork-join pools, asynchronous computation, concurrent data structures, atomic variables, synchronizers, monitor locks
MISC
References
C++
- Josh Lospinoso, C++ Crash Course: A Fast-Paced Introduction, 2019
Object-Oriented Programming
Design Patterns
Concurrent Programming
Applications
Linux Kernel Development
CUDA
QuantLib