DSA & Technical Interview Prep Tracker

A structured study plan built around MIT 6.006 Introduction to Algorithms and CLRS 4th Edition, supplemented by the Udemy course Data Structures and Algorithms using C++, Cracking the Coding Interview, and LeetCode. This serves as a refresher from my undergraduate studies in Computer Science at MSU as I look for full-time work. Please take a look at my portfolio!

Project Philosophy

This project is an exercise in understanding data structures and algorithms from first principles. Instead of just using standard library containers, each core data structure is built from scratch in C/C++, Python, and Java to gain a fundamental understanding of its memory layout, performance characteristics, and trade-offs.

Website Purpose

This website serves as a living document to track progress through a structured curriculum, hold myself accountable, and showcase the practical application of the concepts being learned.

Filter

C++ Project โ€” Current Tasks

AreaTaskDone
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

AreaTaskDone
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

ResourceTaskDone
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

ResourceTaskDone
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

ResourceTaskDone
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

ResourceTaskDone
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

ResourceTaskDone
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

ResourceTaskDone
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

ResourceTaskDone
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

ResourceTaskDone
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

ResourceTaskDone
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

ResourceTaskDone
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