Phase 1: Syntax and Tool Familiarization
Phase 1 focuses on familiarizing you with modern C++20 syntax and building foundational command-line tools. This phase builds practical skills with the language while implementing simplified versions of common Unix utilities.
Learning Objectives
By the end of Phase 1, you will:
- Master modern C++20 features including smart pointers, ranges, and coroutines
- Understand how to build robust command-line applications
- Implement file processing and text manipulation algorithms
- Apply proper error handling and logging techniques
- Use CMake for cross-platform builds
- Write comprehensive unit tests for your code
Projects in This Phase
This phase consists of three main projects:
- CLI Tools Suite: Simplified implementations of
ls,grep, andwccommands - JSON Parser: A lightweight JSON parsing library
- Multi-threaded Logger: A thread-safe logging system
Each project is designed to introduce you to different aspects of C++ programming while building practical, useful tools.
Development Environment
All projects in Phase 1 should be developed and tested in the Docker environment for consistency:
# Enter development container
./scripts/docker-dev.sh exec
# Navigate to project root
cd /app
# Build Phase 1 projects
cd build
cmake ..
make -j4
Testing Strategy
For each project in Phase 1, you should:
- Write unit tests using Google Test framework
- Test both normal and edge cases
- Verify correct behavior with various inputs
- Ensure proper error handling
Run tests with:
./scripts/docker-dev.sh test
Next Steps
Begin with the CLI Tools project to implement your first command-line utilities!