C++ 20
Course Syllabus
- My C++ Training Course is focused on the most essential concepts of Standard C++ 20.
- It will explore the core syntax, data types, programming paradigms, and the Standard Library (and its subset of the full library, STL for Standard Template Library).
- As a game developer working with Unreal Engine, my C++ knowledge is tailored to its ecosystem. Since Unreal Engine 5.6 currently supports C++ 20, I deliberately avoid C++ 23 features to maintain compatibility and stability within the engine’s toolchain.
★ Programming Languages Overview
This programming course is focused on the most essential concepts of programming languages.
Programming Languages
- 6,000 to 7,000 natural languages are spoken worldwide versus 700 to 10,000 programming languages
- In both cases, only a few languages are widely used: C, C++, C#, Java, Python, JavaScript, and PHP for programming.
- Usually, individuals can typically master only a limited number of languages in either category.
Rankings
Key Concepts
- Programming environment: IDE • Text Editors
Types of languages
- No-Code Software: Wix, SquareSpace, GameSalad, GDevelop…
- Textual Languages: C++, Python…
- Visual Languages: Blueprint, Geometry Nodes…
- ⚠️ Scratch is not a professional programming language but an educational language for kids!
Programming language specificities
- Languages standardizations (ANSI, etc.)
- Language Levels (Low Level Languages, Mid Level Languages, High Level Languages)
- Multiple languages for a single project
Translation of programming languages
- Assemblers for Assembly languages: MIPS ASM…
- Compilation: C, C++…
- Interpretation: Pure interpretation and hybrid interpretation (Java, Python)
- Transpilation
Software dev architecture
I firmly believe these concepts should be studied intensively, as they are crucial for building scalable and maintainable programs (games, websites, desktop software…).
These principles are EXTREMELY important.
Software development principles
- YAGNI (You Aren’t Gonna Need It)
- DRY (Don’t Repeat Yourself)
- KISS (Keep it Simple, Stupid)
- TDD (Test Driven Development)
- SoC (Separation of Concern)
- GRASP
- SOLID
Software dev anti-patterns
- Hard coding, magic numbers…
Architecture design patterns
- Web Development: Flux Architecture, MVC Architecture (Model View Controller), etc.
- Game Development: ECS (Entity Component System), Inheritance, CBA (Component Based Architecture)
Algorithms paradigms
- Linear Search
- Divide and conquer
- Recursion
- Brute-force search
Paradigms overview
- Definition: Having a good understanding of paradigms and the history since the 1940s
- Imperative Paradigms: Procedural, Object-Oriented
- Declarative Paradigms: Logic, Functional
Design patterns
- Creational Patterns: Abstract Factory, Builder…
- Structural Patterns: Adapter, Bridge…
- Behavioral Patterns: Iterator, Command…
Syllabus
Getting Started
- Development Environment: IDE • Text Editor
- Toolchain: Compiler • Linker • Debugger
- Key Elements: Source File (.cpp, .h) • Object File (.o, .obj) • Executable
- Standard Library
