Learning Resources¶
A structured path through software engineering fundamentals. Each guide is written to help you move from concept to practice efficiently, with visual explanations and hands-on examples.
-
Algorithm Patterns
Master 12+ essential patterns with visual explanations, step-by-step walkthroughs, and LeetCode practice problems.
-
Data Structures
From arrays to tries, understand when and why to use each structure with complexity analysis.
-
Interview Preparation
A 7-step framework for technical interviews plus communication strategies and practice plans.
-
System Design
Scalability, reliability, and maintainability principles for building production systems.
-
Cloud AI Platforms
Hands-on guides for Google Vertex AI, from setup to deployment.
-
Additional Topics
Curated resources on distributed systems, networking, security, and engineering best practices.
Learning Path¶
┌─────────────────────────────────────────────────────────────────────────────┐
│ RECOMMENDED PROGRESSION │
└─────────────────────────────────────────────────────────────────────────────┘
┌───────────────┐ ┌───────────────┐ ┌───────────────┐
│ FOUNDATION │ │ PATTERNS │ │ ADVANCED │
│ │ │ │ │ │
│ Data │──────>│ Sliding │──────>│ System │
│ Structures │ │ Window │ │ Design │
│ │ │ │ │ │
│ Arrays │ │ Two Pointers │ │ Distributed │
│ Hash Tables │ │ │ │ Systems │
│ Trees │ │ Dynamic │ │ │
│ Graphs │ │ Programming │ │ Cloud AI │
│ │ │ │ │ │
│ Complexity │ │ Backtracking │ │ Interview │
│ Analysis │ │ │ │ Prep │
└───────────────┘ └───────────────┘ └───────────────┘
│ │ │
│ │ │
▼ ▼ ▼
2-3 weeks 4-6 weeks Ongoing
Algorithm Patterns at a Glance¶
Each pattern includes conceptual overview, step-by-step approach, and worked LeetCode examples.
| Pattern | Use Case | Complexity | Links |
|---|---|---|---|
| Sliding Window | Contiguous subarrays, substring problems | O(n) | Notes |
| Two Pointers | Sorted arrays, palindromes, partitioning | O(n) | Notes |
| Fast & Slow | Cycle detection, middle element | O(n) | Notes |
| Dynamic Programming | Overlapping subproblems, optimization | O(n) to O(n^2) | Notes |
| Backtracking | Permutations, combinations, constraint satisfaction | O(2^n) | Notes |
| Binary Search on Answer | Optimization with monotonic check | O(n log k) | Notes |
| Greedy | Local optima lead to global optima | O(n log n) | Notes |
| Heap / Priority Queue | Top-k, scheduling, streaming | O(n log k) | Notes |
| Monotonic Stack | Next greater/smaller element | O(n) | Notes |
| Graph Traversal | BFS/DFS, connectivity, shortest path | O(V + E) | Notes |
| Trie | Prefix matching, autocomplete | O(m) | Notes |
How to Use These Notes¶
Active Learning
Don't just read the solutions. Write code from scratch, trace through examples by hand, and explain approaches out loud.
Pattern Recognition
When stuck on a new problem, ask: "What pattern does this remind me of?" The pattern library helps build this intuition.
Spaced Repetition
Revisit problems after a few days. If you can't solve it again, you haven't truly learned it yet.
Track Progress
Keep a log of problems solved and patterns practiced. Celebrate consistency over cramming.
Quick Reference¶
| Resource | Best For |
|---|---|
| Algorithm Patterns | Systematic problem-solving techniques |
| Data Structures | Understanding when to use which structure |
| Interview Prep | Communication and strategy under pressure |
| System Design | Designing scalable systems |
| Distributed Systems | Consensus, consistency, and resilience |
| Cloud AI | Hands-on with Vertex AI and cloud ML |