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
π View Projects β’ π― Goals β’ π οΈ Setup β’ π Progress
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.