Architecture
- what is an architecture of a SW system
- 4+1 view model
- architecturally significant requirements
- UML Component Diagram, UML Package diagram, UML Deployment diagram


Requirements
- requirement types
- use case
- representation of use case (use case, scenario, user story)
- UML use case diagram (relationships between actors and use cases)
- UML activity diagram


Modeling domain, UML class diagrams
- system, model, view
- types of relationships between classes
- UML class diagrams
- analysis patterns (abstraction of types, abstraction of relationships)


Design principles
- design goals, principles
- SOLID principles of OO design
- Dependency injection
- UML Sequence Diagrams, UML Communications diagrams


GOF design patterns, Value types in C++20
- GOF design patterns
- value types in C++20
- move semantics
- UML Composite stucture diagrams


Containers, docker, continious integration
- containers
- docker basics (container, image, volumes, networking, docker-compose)
- docker registry
- docker - good practices and image layering
- docker use cases
- continious integration
- CircleCI


Container orchestration, make
- microservice architecture
- stateless vs stateful service
- UML state machines, UML Protocol State Machines
- container orchestration
- Kubernetes basics (Containers, Pods, Control Plane, Deployments, ReplicaSets, Services)
- make

DSL, Executable specifications, UML extensibility
- domain specific languages
- internal and external DSLs - executable specifications
- UML extensibility mechanisms
- UML profiles and profile diagrams


ORM, databases
- object-relational impedance mismatch
- ORM
- active record, data access object, unit of work
- persistence as an extension of domain logic
- ACID vs BASE, CAP theorem


Generic programming
- templates, concepts
- type erasure
- policy pattern
- dependency injection using policy pattern
- comparing generic and OO programming


Asynchronous programming
- callbacks, futures, promisses, promise chaining
- event loop
- coroutine, async, await, coroutine chaining
- asynchronous vs thread based concurrency
- asynchronous programming queue vs queue for thread based concurrency
- Git rebasing