C++ Level 1 – An Odyssey of C++: Core Language
Overview:
This three days beginner-friendly C++ course surveys the language's origins in C, including the fundamental type system, pointers, references, and memory management. Master unit testing to ensure code quality, design robust user-defined types for clean and modular code. Get a brief overview of templates, unlocking the basics of generic programming. Build a strong foundation in C++!
Goal/Benefits:
The major objective of this class is that you shall be able to use C++ in a “correct way”.
♦ Introduce “Modern C++” – what we also know as C++11, C++14, C++17, C++20, and C++23 - as an object-oriented language
♦ Comprehend the concepts and basic terms in object orientation, and to use UML – Unified Modeling Language – to describe an OO-model
♦ Design and implement robust C++ classes
♦ Understand the importance of sound memory management
♦ Transform an OO-model into C++
♦ Understand the concept parametrized types - aka templates
♦ A set of exercises practicing the concepts
♦ Applying a unit testing as a natural way of testing/evaluating/running most of the exercises
Audience/Participants:
This training is aimed for beginners.
Previous Knowledge:
Some programming experience
Practical Exercises:
During the training you will practice the presented concepts in a few exercises. We will use the open and free integrated development environment from Eclipse. Alternatively, a build system based on CMake is available
Course outline:
1. The Basics
♦ Programs
♦ Hello, World!
♦ Functions
♦ Types, Variables, and Arithmetic
• Fundamental Types
♦ Initialization
♦ Scope
♦ Constants
♦ Arrays, Pointers, and References
♦ Basic Input/Output
♦ Unit Testing
2. User-Defined Types – An Introduction
♦ Enumerations
♦ Structures
♦ Classes
♦ Unions
3. Modularity
♦ Separate Compilation
• C++20 Modules
♦ Namespaces
♦ Error Handling
• Exceptions
• assert
4. Object-Orientation
♦ The Goals with Object-oriented Programming
♦ OO Programming Concepts
♦ C++ Language Mapping
• UML – Unified Modeling Language
5. Classes
♦ Concrete Types
♦ Abstract Types
♦ Virtual Functions
♦ Class Hierarchies
♦ Copy Control
♦ Move Control
6. Templates
♦ Function Templates
• Specializations
♦ Class Templates
• Partial Specializations
♦ Inheritance vs. Templates
Harald Lüning
Course leader for "Test-Driven Development and Unit Testing" and C/C++ courses:
Harald Lüning is one of our top course leaders, and has extensive practical and theoretical experience in C/C++ programming, object-oriented system development, and test-driven development
