Procedural programming, C best practices
- polymorphism in procedural programming
- SOLID principles applied to procedural programming
- Const correctness
- C Macros


C++
- smart pointers
- move semantics


Generic programming
- templates, concepts
- policy pattern
- dependency injection using policy pattern
- type erasure


Git
- basic workflows
- merging, rebasing, cherrypicking
- git rebase --update-refs
- hooks
- Github actions


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


Container orchestration
- microservice architecture
- stateless vs stateful service
- container orchestration
- Kubernetes basics (Containers, Pods, Control Plane, Deployments, ReplicaSets, Services)


DSL, Executable specifications
- domain specific languages
- internal and external DSLs - executable specifications


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