Pro Track
- Compilers, linking and CMake: See every stage between source code and a program, then describe a multi-file C project with CMake.
- Git and pull requests: Work the way teams do. Feature branches, pull requests, a real merge conflict, undoing mistakes and tagging a release.
- Debugging with gdb and sanitizers: Hunt down four real bugs (null dereference, use-after-free, buffer overflow, integer overflow) with a debugger and sanitizers.
- Unit testing with GoogleTest: Write the test suite yourself. Graded by mutation testing, so every one of seven hidden bugs must make a test fail.
- Exceptions and exception safety: Everything the browser couldn't run. Throwing, catching, designing error types and writing code that stays correct when things throw.
- Concurrency and ThreadSanitizer: Build a blocking queue, a thread pool and a parallel algorithm, and prove them free of data races.
- Code quality with clang-tidy and clang-format: Clean up working legacy code until it passes a team's automated quality gates, and find the leak the linters miss.
- Profiling and performance: Take correct but hopelessly slow code from hours to milliseconds by measuring first and fixing what matters.
- Third-party libraries: Add a real library to a CMake project with a download fallback, and use it to load and validate settings.
- POSIX systems programming: Go below the standard library. Raw file I/O, running programs with pipes, and a TCP server and client.
- Capstone A: a key-value server: A small networked database. Concurrent clients, a text protocol, crash-safe persistence and a written design.
- Capstone B: a C library with a clean API: A hash map library held to release standards, from ownership rules to surviving every failed allocation.