A curated journey through Data Structures, Algorithms, and System Design, building a portfolio of 24 projects from foundational concepts to interview-ready systems.
This repository is my personal implementation of a comprehensive project-based learning roadmap. It's a structured approach to mastering the skills required for top-tier software engineering roles by combining theoretical knowledge with practical, hands-on projects.
- Guiding Principles
- Technologies Demonstrated
- The Project Roadmap
- Competency Goals
- How to Build & Test a Project
This portfolio is built on a philosophy of structured, incremental learning.
- Progressive Difficulty: The projects are sequenced to start with fundamental data structures and gradually introduce more complex algorithms and system design concepts, ensuring a strong foundation before tackling advanced topics.
- Practical Application: Each project is designed to solve a real-world problem, cementing theoretical knowledge by applying it to practical challenges like social network analysis, route planning, and distributed systems.
- Interview-Focused: The selection of projects and the DSA concepts covered are directly aligned with the skills assessed in technical interviews at FAANG and other top tech companies.
This repository showcases proficiency in the following technologies:
- C++ (Modern C++17)
- Object-Oriented Programming (OOP) principles.
- Standard Template Library (STL) containers and algorithms.
- Memory management with RAII and smart pointers.
- Modern features like structured bindings and lambdas.
- CMake
- Creating robust, cross-platform build systems.
- Managing project targets and dependencies.
- Automatically fetching and linking third-party libraries like Google Test using
FetchContent.
- Google Test
- Writing and running unit tests to ensure code correctness and maintainability.
- Using test fixtures to create a clean testing environment for each case.
The full roadmap consists of 24 projects divided into five phases.
Phase 1: Foundation Building (Months 1-2)
This phase focuses on programming fundamentals and basic linear data structures.
| # | Project | Core DSA Concepts | Status |
|---|---|---|---|
| 1 | Number Guessing Game | Linear search, basic sorting | 🟢 Completed (View Project) |
| 2 | Simple Calculator with History | Stack operations, arithmetic algorithms | 🟢 Completed (View Project) |
| 3 | To-Do List Application | CRUD operations, list manipulation | 🟢 Completed (View Project) |
| 4 | Student Grade Management | Bubble sort, selection sort, linear search | 🟢 Completed (View Project) |
| 5 | Library Management System | Hash functions, collision handling | 🟢 Completed (View Project) |
| 6 | Binary Search Tree | BST operations, DFS traversals | 🟢 Completed (View Project) |
Phase 2: Intermediate Skills (Months 2-4)
This phase moves on to core algorithms like advanced sorting and graph traversals.
| # | Project | Core DSA Concepts | Status |
|---|---|---|---|
| 7 | Sorting Algorithm Visualizer | Merge sort, quick sort, heap sort | 🟢 Completed (View Project) |
| 8 | Maze Solver | BFS, DFS, pathfinding | 🟢 Completed (View Project) |
| 9 | Spell Checker with Trie | Trie construction, string matching | 🟢 Completed (View Project) |
| 10 | File Compression (Huffman Coding) | Priority queues, Huffman algorithm | 🟢 Completed (View Project) |
Phase 3: Advanced Intermediate (Months 4-6)
This phase tackles complex graph algorithms and dynamic programming patterns.
| # | Project | Core DSA Concepts | Status |
|---|---|---|---|
| 11 | Social Network Recommender | Adjacency lists, BFS/DFS, shortest paths | 🟢 Completed (View Project) |
| 12 | Travel Route Planner | Dijkstra's algorithm, A* search | 🟢 Completed (View Project) |
| 13 | Stock Price Analysis | Sliding window, DP patterns, heaps | 🟢 In Completed (View Project) |
| 14 | Text Analysis Tool (LCS) | Longest Common Subsequence, Edit Distance | 🟡 In Progress |
Phase 4: FAANG Interview Preparation (Months 6-9)
This phase focuses on system design fundamentals and large-scale projects.
| # | Project | Core DSA Concepts | Status |
|---|---|---|---|
| 15 | Distributed Cache (Mini-Redis) | LRU/LFU cache, consistent hashing | ⚫ Not Started |
| 16 | Real-Time Chat Application | Priority queues, graph algorithms | ⚫ Not Started |
| 17 | Search Engine & Web Crawler | Inverted index, PageRank algorithm | ⚫ Not Started |
| 18 | Version Control (Mini-Git) | Merkle trees, graph traversal, diff algorithms | ⚫ Not Started |
| 19 | Machine Learning Framework | Matrix operations, gradient descent, decision trees | ⚫ Not Started |
| 20 | Database Engine | B+ trees, query algorithms, transaction management | ⚫ Not Started |
Phase 5: FAANG Interview Mastery (Months 9-12)
This final phase involves building specialized, domain-specific systems.
| # | Project | Core DSA Concepts | 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 systems, inventory algorithms | ⚫ Not Started |
| 24 | Ride-Sharing Service | Geospatial & matching algorithms | ⚫ Not Started |
This portfolio is a practical exercise to achieve the following competencies.
- ⏳ Foundation: Implement basic data structures from scratch (Arrays, Linked Lists, Stacks, Queues) and master time/space complexity analysis.
- 🎯 Intermediate: Achieve proficiency in core sorting/searching algorithms, trees, graphs, and hash tables. Can clearly explain algorithmic trade-offs.
- 📈 Advanced: Master advanced topics like graph algorithms (e.g., Dijkstra's) and Dynamic Programming. Can design basic system architectures.
- 🏆 Expert: Develop a strong understanding of system design principles, concurrent data structures, and build a portfolio of 20+ projects.