A comprehensive journey through Data Structures, Algorithms, and System Design
Building a portfolio of 24 production-grade projects from foundational concepts to interview-ready systems
This repository represents a structured, project-based learning journey designed to master the skills required for top-tier software engineering roles at FAANG and leading tech companies. Each project combines theoretical knowledge with practical implementation, solving real-world problems while demonstrating proficiency in modern C++ development practices.
📊 24 Production-Grade Projects → Real-world applications, not toy examples
🎓 Interview-Aligned Curriculum → Directly maps to FAANG interview patterns
🔧 Modern C++ Best Practices → C++17, RAII, smart pointers, STL mastery
✅ Comprehensive Testing → Full test coverage with Google Test
📈 Progressive Complexity → From basics to distributed systems
|
Projects are carefully sequenced to build upon previous knowledge. Start with fundamental data structures and gradually progress to complex algorithms and system design, ensuring a solid foundation at each level. |
Every project solves real-world problems: social network analysis, route optimization, distributed caching, and more. Theory meets practice in production-quality implementations. |
Concepts and patterns are directly aligned with technical interviews at FAANG companies. Each project reinforces skills assessed in coding rounds and system design discussions. |
| Technology | Skills Demonstrated |
|---|---|
| C++17 | • OOP principles & design patterns • STL containers & algorithms • Memory management (RAII, smart pointers) • Modern features (structured bindings, lambdas, std::optional) |
| CMake | • Cross-platform build systems • Dependency management • Third-party library integration (FetchContent) • Multi-target project configuration |
| Google Test | • Unit testing & test fixtures • Mocking & test doubles • Parameterized tests • Code coverage analysis |
| Algorithms | • Time/space complexity analysis • Algorithm optimization techniques • Trade-off evaluation • Performance profiling |
Phase 1: ████████████████████ 100% (6/6)
Phase 2: ████████████████████ 100% (4/4)
Phase 3: ████████████████████ 100% (4/4)
Phase 4: ███░░░░░░░░░░░░░░░░░ 17% (1/6)
Phase 5: ░░░░░░░░░░░░░░░░░░░░ 0% (0/4)
Focus: Programming fundamentals and basic linear data structures
| # | Project | Core Concepts | Difficulty | Status |
|---|---|---|---|---|
| 1 | Number Guessing Game | Linear search, basic sorting | ⭐ | 🟢 View |
| 2 | Calculator with History | Stack operations, arithmetic algorithms | ⭐ | 🟢 View |
| 3 | To-Do List Application | CRUD operations, list manipulation | ⭐ | 🟢 View |
| 4 | Student Grade Management | Bubble sort, selection sort, linear search | ⭐⭐ | 🟢 View |
| 5 | Library Management System | Hash tables, collision handling | ⭐⭐ | 🟢 View |
| 6 | Binary Search Tree | BST operations, DFS traversals | ⭐⭐ | 🟢 View |
Key Learnings: Arrays, Linked Lists, Stacks, Queues, Hash Tables, Trees, Basic Sorting & Searching
Focus: Advanced sorting algorithms and graph traversals
| # | Project | Core Concepts | Difficulty | Status |
|---|---|---|---|---|
| 7 | Sorting Algorithm Visualizer | Merge sort, quick sort, heap sort | ⭐⭐ | 🟢 View |
| 8 | Maze Solver | BFS, DFS, pathfinding algorithms | ⭐⭐⭐ | 🟢 View |
| 9 | Spell Checker with Trie | Trie construction, prefix matching | ⭐⭐⭐ | 🟢 View |
| 10 | File Compression (Huffman) | Priority queues, Huffman encoding | ⭐⭐⭐ | 🟢 View |
Key Learnings: Advanced Sorting (O(n log n)), Graph Traversals, Tries, Priority Queues, Greedy Algorithms
Focus: Complex graph algorithms and dynamic programming
| # | Project | Core Concepts | Difficulty | Status |
|---|---|---|---|---|
| 11 | Social Network Recommender | Graph algorithms, shortest paths | ⭐⭐⭐ | 🟢 View |
| 12 | Travel Route Planner | Dijkstra's algorithm, A* search | ⭐⭐⭐⭐ | 🟢 View |
| 13 | Stock Price Analysis | Sliding window, DP patterns, heaps | ⭐⭐⭐⭐ | 🟢 View |
| 14 | Text Analysis Tool (LCS) | Longest Common Subsequence, Edit Distance | ⭐⭐⭐⭐ | 🟢 View |
Key Learnings: Dijkstra's, A*, Dynamic Programming, Sliding Window, Advanced Graph Algorithms
Focus: System design fundamentals and scalable architectures
| # | Project | Core Concepts | Difficulty | Status |
|---|---|---|---|---|
| 15 | Distributed Cache (Mini-Redis) | LRU/LFU cache, consistent hashing | ⭐⭐⭐⭐⭐ | 🟡 In Progress |
| 16 | Real-Time Chat Application | Message queues, WebSocket protocols | ⭐⭐⭐⭐ | ⚫ Not Started |
| 17 | Search Engine & Web Crawler | Inverted index, PageRank algorithm | ⭐⭐⭐⭐⭐ | ⚫ Not Started |
| 18 | Version Control (Mini-Git) | Merkle trees, diff algorithms | ⭐⭐⭐⭐⭐ | ⚫ Not Started |
| 19 | Machine Learning Framework | Matrix operations, gradient descent | ⭐⭐⭐⭐⭐ | ⚫ Not Started |
| 20 | Database Engine | B+ trees, query optimization, ACID | ⭐⭐⭐⭐⭐ | ⚫ Not Started |
Key Learnings: Caching Strategies, Distributed Systems, Indexing, Version Control, ML Basics, Database Internals
Focus: Specialized, production-grade distributed systems
| # | Project | Core Concepts | Difficulty | Status |
|---|---|---|---|---|
| 21 | Blockchain Implementation | Hash chains, consensus algorithms | ⭐⭐⭐⭐⭐ | ⚫ Not Started |
| 22 | Recommendation Engine | Collaborative filtering, ML algorithms | ⭐⭐⭐⭐⭐ | ⚫ Not Started |
| 23 | E-commerce Order Processing | Distributed transactions, inventory mgmt | ⭐⭐⭐⭐⭐ | ⚫ Not Started |
| 24 | Ride-Sharing Service | Geospatial algorithms, matching systems | ⭐⭐⭐⭐⭐ | ⚫ Not Started |
Key Learnings: Blockchain, Recommendation Systems, Distributed Transactions, Geospatial Algorithms
# Required
- C++17 compatible compiler (GCC 7+, Clang 5+, MSVC 2017+)
- CMake 3.14 or higher
- Git
# Optional
- Ninja build system (faster builds)
- Clang-format (code formatting)# Clone the repository
git clone https://github.com/indiser/DSA-Projects.git
cd DSA-Projects
# Navigate to any project
cd "Project Name"
# Create build directory
mkdir build && cd build
# Configure with CMake
cmake ..
# Build the project
cmake --build .
# Run tests
ctest --output-on-failure
# Run the executable
./ProjectName # Linux/Mac
ProjectName.exe # WindowsProjectName/
├── CMakeLists.txt # Build configuration
├── README.md # Project-specific documentation
├── src/
│ ├── main.cpp # Entry point
│ └── *.cpp # Implementation files
├── include/
│ └── *.h # Header files
└── tests/
└── *_test.cpp # Unit tests
| Skill Category | Proficiency | Projects Applied |
|---|---|---|
| Data Structures | ████████████████████ 95% | 14/14 |
| Algorithms | ████████████████░░░░ 85% | 14/14 |
| System Design | ████░░░░░░░░░░░░░░░░ 20% | 1/10 |
| Testing & QA | ████████████████████ 95% | 14/14 |
| Modern C++ | ██████████████████░░ 90% | 14/14 |
- Total Hours: ~400+ hours
- Average per Project: 15-30 hours
- Code Written: ~15,000+ lines
- Tests Written: ~200+ test cases
Click to see how projects map to interview topics
- Projects: #1, #3, #4, #9, #14
- Projects: #2, #3, #6
- Projects: #6, #8, #11, #12
- Projects: #13, #14
- Projects: #15, #16, #17, #18, #19, #20
- Projects: #21, #22, #23, #24
- Books: "Introduction to Algorithms" (CLRS), "Effective Modern C++" (Scott Meyers)
- Courses: MIT 6.006, Stanford CS106B
- Practice: LeetCode, HackerRank, Codeforces
- Documentation: cppreference.com, CMake Docs
While this is a personal learning repository, suggestions and feedback are welcome! Feel free to:
- Open an issue for bugs or improvements
- Share your own implementations
- Suggest new project ideas
This project is open source and available under the MIT License.