DSA & Technical Interview Prep Tracker

An integrated study plan combining the foundational Udemy course "Data Structures and Algorithms using C++" with targeted practice from "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 and C++ 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.

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`) 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).

Section 1-3: Foundations (Completed)

Section Topics Done
1: Introduction What are Data Structures?, ADT, What is an Algorithm?
2: Recursion What is Recursion?, Static/Global Variables, Taylor Series, Fibonacci, Tower of Hanoi
3: Arrays Representations Array ADT, 2D Arrays, Matrices

Section 4 & 5: 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

Section 6: 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

Section 7: 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

Section 9 & 10: Stacks and Queues

Resource Task Done
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

Section 11: Trees

Resource Task Done
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 Binary Search Tree, Kth Largest Element in an Array (Heap), Implement Trie

Section 12: Hashing

Resource Task Done
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

Section 13: Sorting Techniques

Resource Task Done
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)

Section 14: Graphs

Resource Task Done
Udemy Terminology, Representation, Breadth-First Search (BFS), Depth-First Search (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)