C++ Project โ Current Tasks
| Area | Task | Done |
|---|---|---|
| Algorithm | Implement additional sorting algorithms (e.g., Merge Sort, Quick Sort) as methods of the `Array` class. | |
| Project | Set up a simple build system with a Makefile or CMake. |
C++ Project โ Completed Tasks
| Area | Task | Done |
|---|---|---|
| C++ | Convert `Array` class to a generic template (`Array<T>`) and merge into a header-only library. | |
| C++ | Implement Iterators (`begin()`, `end()`) for range-based `for` loop compatibility. | |
| Array | Implement dynamic resizing to handle overflow automatically. | |
| Project | Split monolithic code into `.h` (header) and `.cpp` (source) files. | |
| Testing | Add a simple unit test function to main and set up an XCTest target. | |
| C++ | Replace `using namespace std;` with specific `using` declarations for better practice. | |
| Algorithm | Implement and test various duplicate-finding methods (sorted, hashing, brute-force). |
Foundations
| Resource | Task | Done |
|---|---|---|
| MIT | Lecture 1: Algorithms and Computation | |
| MIT | Lecture 2: Data Structures and Dynamic Arrays | |
| MIT | Lecture 19: Complexity | |
| MIT | Lecture 20: Course Review | |
| MIT | Lecture 21: Algorithms โ Next Steps (bonus) | |
| CLRS | Chapters 1-3: Role of Algorithms, Getting Started, Growth of Functions | |
| CLRS | Chapter 4: Divide-and-Conquer, Recurrences | |
| CLRS | Chapter 5: Probabilistic Analysis and Randomized Algorithms | |
| CLRS | Chapter 16: Amortized Analysis | |
| Udemy | Introduction โ What are Data Structures?, ADT, What is an Algorithm? | |
| Udemy | Recursion โ Static/Global Variables, Taylor Series, Fibonacci, Tower of Hanoi | |
| Udemy | Arrays Representations โ Array ADT, 2D Arrays, Matrices | |
| MIT | Problem Set 0 ยท Solutions | |
| MIT | Problem Set 1 ยท Solutions | |
| MIT | Recitation 1 | |
| MIT | Recitation 2 | |
| MIT | Recitation 19 | |
| MIT | Problem Session 1 ยท Solutions | |
| MIT | Problem Session 2 ยท Solutions |
Arrays and Strings
| Resource | Task | Done |
|---|---|---|
| Udemy | Array Operations (Display, Add, Insert, Delete, Search, Binary Search) | |
| Udemy | String Ops (Length, Case, Reverse, Palindrome, Duplicates, Anagrams) | |
| CTCI | Read Chapter 1: Arrays and Strings | |
| LeetCode | Two Sum, Valid Anagram, Contains Duplicate, Longest Substring Without Repeating Characters |
Matrices
| Resource | Task | Done |
|---|---|---|
| Udemy | Diagonal, Lower/Upper Triangular, Symmetric Matrix representations | |
| CTCI | Review matrix problems in Chapter 1 (e.g., Zero Matrix, Rotate Matrix) | |
| LeetCode | Rotate Image, Set Matrix Zeroes, Spiral Matrix |
Sorting
| Resource | Task | Done |
|---|---|---|
| MIT | Lecture 3: Sets and Sorting | |
| MIT | Lecture 5: Linear Sorting | |
| CLRS | Chapters 6-9: Heapsort, Quicksort, Sorting in Linear Time, Medians and Order Statistics | |
| Udemy | Basic (Bubble, Insertion, Selection), Advanced (Quick Sort, Merge Sort) | |
| Udemy | Specialized (Count Sort, Radix Sort, Shell Sort) | |
| CTCI | Read Chapter 10: Sorting and Searching | |
| LeetCode | Merge Sorted Array, Sort Colors (Dutch National Flag problem) | |
| MIT | Problem Set 2 ยท Solutions | |
| MIT | Recitation 3 | |
| MIT | Recitation 5 | |
| MIT | Problem Session 3 ยท Solutions |
Hashing
| Resource | Task | Done |
|---|---|---|
| MIT | Lecture 4: Hashing | |
| CLRS | Chapter 11: Hash Tables | |
| Udemy | Hashing Intro, Chaining, Linear Probing, Quadratic Probing | |
| CTCI | Review Hash Table applications in Ch 1 (Arrays/Strings) and Ch 2 (Linked Lists) | |
| LeetCode | Group Anagrams, Ransom Note, Design HashMap | |
| MIT | Recitation 4 |
Binary Trees
| Resource | Task | Done |
|---|---|---|
| MIT | Lecture 6: Binary Trees, Part 1 | |
| MIT | Lecture 7: Binary Trees, Part 2 โ AVL | |
| MIT | Lecture 8: Binary Heaps | |
| CLRS | Chapter 12: Binary Search Trees | |
| CLRS | Chapter 13: Red-Black Trees (AVL alternative) | |
| CLRS | Chapter 17: Augmenting Data Structures (Order Statistics, Interval Trees) | |
| CLRS | Chapter 18: B-Trees | |
| Udemy | Binary Trees: Creation, Traversals (Preorder, Inorder, Postorder, Level-order), Height & Count | |
| Udemy | Binary Search Trees (BST): Search, Insert, Delete | |
| Udemy | Advanced Trees: AVL Trees (Rotations), Heaps (Insert, Delete, Heap Sort), Trie | |
| CTCI | Read Chapter 4: Trees and Graphs | |
| LeetCode | Maximum Depth of Binary Tree, Invert Binary Tree, Validate BST, Kth Largest Element (Heap), Implement Trie | |
| MIT | Problem Set 3 ยท Solutions | |
| MIT | Recitation 6 | |
| MIT | Recitation 7 | |
| MIT | Recitation 8 | |
| MIT | Problem Session 4 ยท Solutions | |
| MIT | Quiz 1 Review |
Linked Lists
| Resource | Task | Done |
|---|---|---|
| Udemy | Singly Linked List (Intro, Display, Search, Insert, Delete, Reverse) | |
| Udemy | Circular Linked List, Doubly Linked List, Merge, Check for Loop | |
| CTCI | Read Chapter 2: Linked Lists | |
| LeetCode | Reverse Linked List, Linked List Cycle, Merge Two Sorted Lists, Remove Nth Node From End |
Stacks and Queues
| Resource | Task | Done |
|---|---|---|
| CLRS | Chapter 10: Elementary Data Structures (Stacks, Queues, Linked Lists, Rooted Trees) | |
| Udemy | Stack (Array/LL), Parenthesis Matching, Infix to Postfix | |
| Udemy | Queue (Array/Circular/LL), Priority Queues | |
| CTCI | Read Chapter 3: Stacks and Queues | |
| LeetCode | Valid Parentheses, Min Stack, Implement Queue using Stacks |
Graphs
| Resource | Task | Done |
|---|---|---|
| MIT | Lecture 9: Breadth-First Search (BFS) | |
| MIT | Lecture 10: Depth-First Search (DFS) | |
| MIT | Lecture 11: Weighted Shortest Paths | |
| MIT | Lecture 12: Bellman-Ford | |
| MIT | Lecture 13: Dijkstra's Algorithm | |
| MIT | Lecture 14: APSP & Johnson's Algorithm | |
| CLRS | Chapter 20: Elementary Graph Algorithms (BFS, DFS, Topological Sort) | |
| CLRS | Chapter 22: Single-Source Shortest Paths (Bellman-Ford, Dijkstra) | |
| CLRS | Chapter 23: All-Pairs Shortest Paths (Floyd-Warshall, Johnson) | |
| CLRS | Chapter 19: Data Structures for Disjoint Sets (Union-Find) | |
| CLRS | Chapter 21: Minimum Spanning Trees (Kruskal, Prim) | |
| CLRS | Chapter 24: Maximum Flow (Ford-Fulkerson) | |
| CLRS | Chapter 25: Matchings in Bipartite Graphs | |
| Udemy | Terminology, Representation, BFS, DFS | |
| Udemy | Spanning Trees (Prim's Algorithm, Kruskal's Algorithm) | |
| CTCI | Review Graph problems in Chapter 4 | |
| LeetCode | Number of Islands, Clone Graph, Course Schedule (Topological Sort) | |
| MIT | Problem Set 4 ยท Solutions | |
| MIT | Problem Set 5 ยท Solutions | |
| MIT | Recitation 9 | |
| MIT | Recitation 10 | |
| MIT | Recitation 11 | |
| MIT | Recitation 12 | |
| MIT | Recitation 13 | |
| MIT | Recitation 14 | |
| MIT | Problem Session 5 ยท Solutions | |
| MIT | Problem Session 6 ยท Solutions | |
| MIT | Quiz 2 Review |
Dynamic Programming
| Resource | Task | Done |
|---|---|---|
| MIT | Lecture 15: Dynamic Programming, Part 1 (SRTBOT, Fib, DAGs, Bowling) | |
| MIT | Lecture 16: Dynamic Programming, Part 2 (LCS, LIS, Coins) | |
| MIT | Lecture 17: Dynamic Programming, Part 3 (APSP, Parens, Piano) | |
| MIT | Lecture 18: Dynamic Programming, Part 4 (Rods, Subset Sum, Pseudopolynomial) | |
| CLRS | Chapter 14: Dynamic Programming | |
| CLRS | Chapter 15: Greedy Algorithms | |
| CTCI | Read Chapter 8: Recursion and Dynamic Programming | |
| LeetCode | Climbing Stairs, Coin Change, Longest Common Subsequence, Longest Increasing Subsequence | |
| MIT | Problem Set 6 ยท Solutions | |
| MIT | Problem Set 7 ยท Solutions | |
| MIT | Problem Set 8 ยท Solutions | |
| MIT | Recitation 15 | |
| MIT | Recitation 16 | |
| MIT | Recitation 17 | |
| MIT | Recitation 18 | |
| MIT | Problem Session 7 ยท Solutions | |
| MIT | Problem Session 8 ยท Solutions | |
| MIT | Problem Session 9 ยท Solutions | |
| MIT | Quiz 3 Review |