Directory: main/java/deques/
Objective: Implement and compare different deque (double-ended queue) data structures
Implementations:
ArrayDeque- Circular array-based implementationArrayListDeque- ArrayList-based implementationLinkedListDeque- Doubly-linked list implementation
Technical Spec: https://courses.cs.washington.edu/courses/cse373/25su/projects/deques/
Directory: main/java/autocomplete/
Objective: Build efficient string matching systems for real-time search suggestions
Click to watch me yapping about implementation
Technical Spec: https://courses.cs.washington.edu/courses/cse373/25su/projects/autocomplete/
Implementations:
- Sequential Search - Linear scan through unsorted array
- Binary Search - Optimized search on sorted array
- Ternary Search Tree (TST) - Space-efficient trie variant
- TreeSet Implementation - Red-Black BST approach
Performance Analysis:
- Asymptotic complexity comparison across all implementations
- Experimental benchmarking with real city name datasets (deleted for DEMO due to size constaints)
Directory: main/java/minpq/
Objective: Implement various priority queue data structures with performance optimization
Click to watch me yapping about implementation
Implementations:
- DoubleMapMinPQ - Given reference implementation using TreeMap & HashMap (not a heap)
- UnsortedArrayListPQ - Naive linear-time operations baseline, unsorted array using excess for-loops
- HeapMinPQ - Standard binary heap using Java's PriorityQueue implementation (client)
- OptimizedMinPQ - Custom binary heap with HashMap indexing, adapt helper methods (sink, swim, exch, greater) to an array list. Use HashMap to speed up contains() & changePriority() by retrieving node with index in constant time (implementor)
Key Optimizations:
- O(1)
contains()andchangePriority()operations via HashMap indexing - Memory-efficient array-based heap representation
Technical Spec: https://courses.cs.washington.edu/courses/cse373/25su/projects/priority-queues/
Directory: main/java/seamfinding/ and main/java/graphs/shortestpaths
Objective: Implement content-aware image resizing using dynamic programming and graph algorithms
Click to watch me yapping about implementation
Implementations:
- AdjacencyList Graph - Explicit graph & neighbors construction ahead of time
- Generative Graph - On-demand node's neighbor generation for memory efficiency
- Dynamic Programming - Direct DP solution without explicit graph representation
- Topological Sort - Optimized for DAG structure (O(V + E))
- Dijkstra's Algorithm - General-purpose shortest path (O((V + E) log V))
Technical Spec: https://courses.cs.washington.edu/courses/cse373/25su/projects/shortest-paths/
- Algorithm Design: Implemented and optimized fundamental algorithms from scratch
- Data Structure Mastery: Deep understanding of trade-offs between different data structures
- Performance Engineering: Experience with profiling, benchmarking, and optimization
- Software Architecture: Clean separation of concerns and modular design patterns
- Testing Methodology: Comprehensive testing strategies for algorithmic code


