
The Course
Hey there, aspiring tech wizards! If you're looking to land a top-notch job in the tech industry or just up your game in understanding how complex software systems work, you've stumbled upon the perfect course. Dive headfirst into the nuts and bolts of designing scalable, reliable, and efficient systems, just like the ones that anchor major tech companies. From unraveling the mysteries of load balancing to mastering the art of data sharding, and navigating through the cloud like it's your own backyard, you'll emerge with a designer's toolkit that's jam-packed with strategies, concepts, and a solid understanding of the technical considerations that make or break systems today.
But it's not all about theory – oh no! You'll get your hands dirty with real-world scenarios, typical of those pesky interview questions that try to throw you off your game. This is about turning you into a problem-solving powerhouse, able to dissect complex requirements, identify potential pitfalls, and present solutions with the confidence of a seasoned pro. Imagine walking into any system design interview with a cool head, ready to impress with knowledge and practical skills that'll make you an asset from day one. So, start powering through those techie career milestones and become the system design hero every company is on the hunt for!
What you will learn
I crafted this course with your journey in mind, starting from the ground up. Knowing how daunting technical interviews can be, especially when you're faced with those tricky system design questions, I've put together a roadmap that gradually builds your confidence and knowledge. It's structured in digestible modules, infused with real-world scenarios to give you hands-on practice. What makes it super helpful is that each lesson has clear objectives and follows a logical progression; so no matter where you're starting from, you'll find yourself leveling up your skills in no time. It's like having a personal coach to walk you through the complexities, turning what was once intimidating into something you can approach with a strategic mindset.
Curriculum
- Understanding Data Structures
- Types of Data Structures
- An Overview of Big-O
- Introduction to Arrays
- Problem 1: Running Sum of 1d Array (easy)
- Solution: Running Sum of 1d Array (easy)
- Problem 2: Contains Duplicate (easy)
- Solution: Contains Duplicate (easy)
- Problem 3: Left and Right Sum Differences (easy)
- Solution: Left and Right Sum Differences (easy)
- Problem 4: Find the Highest Altitude(easy)
- Solution: Find the Highest Altitude (easy)
- Introduction to Matrix
- Problem 1: Richest Customer Wealth (easy)
- Solution: Richest Customer Wealth (easy)
- Problem 2: Matrix Diagonal Sum (easy)
- Solution: Matrix Diagonal Sum (easy)
- Problem 3: Row With Maximum Ones(easy)
- Solution: Row With Maximum Ones(easy)
- Introduction to System Design
- Introduction to Load Balancing
- Uses of Load Balancing
- Load Balancing Algorithms
- Load Balancer Types
- Stateless vs. Stateful Load Balancing
- High Availability and Fault Tolerance
- Scalability and Performance
- Challenges of Load Balancers
- Introduction to API Gateway
- Usage of API gateway
- Advantages and disadvantages of using API gateway
- Introduction to Stack
- Operations on Stack
- Implementing Stack Data Structure
- Applications of Stack
- Problem 1: Balanced Parentheses
- Solution: Balanced Parentheses
- Problem 2: Reverse a String
- Solution: Reverse a String
- Problem 3: Decimal to Binary Conversion
- Solution: Decimal to Binary Conversion
- Introduction to Queues
- Working with Simple Queues
- Diving Deeper – Circular Queues and Deques
- Applications and Advanced Concepts
- Problem 1: Reverse a Queue
- Solution: Reverse a Queue
- Problem 2: Implement Stack using Queues
- Solution: Implement Stack using Queues
- Problem 3: Generate Binary Numbers from 1 to N
- Solution: Generate Binary Numbers from 1 to N
- Introduction to LinkedList
- Operations on Singly Linked List
- Operations on Doubly Linked List
- Problem 1: Reverse Linked List (easy)
- Solution: Reverse Linked List (easy)
- Problem 2: Remove Duplicates from Sorted List (easy)
- Solution: Remove Duplicates from Sorted List (easy)
- Problem 3: Merge Two Sorted Lists (easy)
- Solution: Merge Two Sorted Lists (easy)
- Scalability
- Availability
- Latency and Performance
- Concurrency and Coordination
- Security and Privacy
- Monitoring and Observability
- Resilience and Error Handling
- Introduction to DNS
- DNS Resolution Process
- DNS Load Balancing and High Availability
- Introduction to Caching
- Why is Caching Important?
- Types of Caching
- Cache Replacement Policies
- Cache Invalidation
- Cache Read Strategies
- Cache Coherence and Consistency Models
- Caching Challenges
- Cache Performance Metrics
- Introduction to Tree
- Binary Search Tree (BST)
- Maximum Depth (or Height) of Binary Tree (easy)
- Solution: Maximum Depth (or Height) of Binary Tree (easy)
- Balanced Binary Tree (easy)
- Solution: Balanced Binary Tree (easy)
- Minimum Difference Between BST Nodes (easy)
- Solution: Minimum Difference Between BST Nodes (easy)
- Introduction to Hashing
- Introduction to Hash Tables
- Issues with Hash Tables
- Problem 1: First Non-repeating Character (easy)
- Solution: First Non-repeating Character (easy)
- Problem 2: Largest Unique Number (easy)
- Solution: Largest Unique Number (easy)
- Problem 3: Maximum Number of Balloons (easy)
- Solution: Maximum Number of Balloons (easy)
- Introduction to HashSets
- Problem 1: Counting Elements (easy)
- Solution: Counting Elements (easy)
- Problem 2: Jewels and Stones (easy)
- Solution: Jewels and Stones (easy)
- Problem 3: Unique Number of Occurrences (easy)
- Solution: Unique Number of Occurrences (easy)
- What is Redundancy?
- What is Replication?
- Introduction to CAP Theorem
- Components of CAP Theorem
- Trade-offs in Distributed Systems
- Examples of CAP Theorem in Practice
- Beyond CAP Theorem
- Introduction to Databases
- SQL Databases
- NoSQL Databases
- SQL vs. NoSQL
- Real-World Examples and Case Studies
- What are Indexes?
- Types of Indexes
- Introduction to Modified Binary Search Pattern
- Order-agnostic Binary Search (easy)
- Solution: Order-agnostic Binary Search
- Ceiling of a Number (medium)
- Solution: Ceiling of a Number
- Next Letter (medium)
- Solution: Next Letter
- Number Range (medium)
- Solution: Number Range
- Introduction to Bitwise XOR Pattern
- Single Number (easy)
- Solution: Single Number
- Two Single Numbers (medium)
- Solution: Two Single Numbers
- Complement of Base 10 Number (medium)
- Solution: Complement of Base 10 Number
- Introduction to Top 'K' Elements Pattern
- Top 'K' Numbers (easy)
- Solution: Top 'K' Numbers
- Solution: Kth Smallest Number
- Kth Smallest Number (easy)
- 'K' Closest Points to the Origin (easy)
- Solution: 'K' Closest Points to the Origin
- Connect Ropes (easy)
- Solution: Connect Ropes
- Introduction to K-way Merge Pattern
- Merge K Sorted Lists (medium)
- Solution: Merge K Sorted Lists
- Kth Smallest Number in M Sorted Lists (medium)
- Solution: Kth Smallest Number in M Sorted Lists
- Kth Smallest Number in a Sorted Matrix (hard)
- Solution: Kth Smallest Number in a Sorted Matrix (hard)
- Introduction to Backtracking Pattern
- Combination Sum (medium)
- Solution: Combination Sum
- Word Search (medium)
- Solution: Word Search
- Sudoku Solver (hard)
- Solution: Sudoku Solver
- Factor Combinations (medium)
- Solution: Factor Combinations
- Introduction to Topological Sort Pattern
- Topological Sort (medium)
- Solution: Topological Sort
- Tasks Scheduling (medium)
- Solution: Tasks Scheduling
- Tasks Scheduling Order (medium)
- Solution: Tasks Scheduling Order
- Alien Dictionary (hard)
- Solution: Alien Dictionary
- Introduction to Multi-threaded Pattern
- Same Tree (medium)
- Solution: Same Tree
- Invert Binary Tree (medium)
- Solution: Invert Binary Tree
- Binary Search Tree Iterator (medium)
- Solution: Binary Search Tree Iterator
- What is a behavioral interview?
- Why prepare for the behavioral interview?
- What this course promises?
- The STAR method
- How to prepare for behavioral interview?
- Answering behavioral interview questions effectively
- Collaboration and teamwork questions
- Adaptability questions
- Problem solving and decision making questions
- Initiative and leadership questions
- Managing constraints and setbacks questions
- What is Dynamic Programming?
- 0/1 Knapsack
- Solution: 0/1 Knapsack
- Equal Subset Sum Partition
- Solution: Equal Subset Sum Partition
- Subset Sum
- Solution: Subset Sum
- Minimum Subset Sum Difference
- Solution: Minimum Subset Sum Difference
- Fibonacci numbers
- Solution: Fibonacci numbers
- Staircase
- Solution: Staircase
- Number factors
- Solution: Number factors
- Minimum jumps to reach the end
- Solution: Minimum jumps to reach the end
- House thief
- Longest Common Substring
- Solution: Longest Common Substring
- Longest Common Subsequence
- Solution: Longest Common Subsequence
- Minimum Deletions & Insertions to Transform a String into another
- Solution: Minimum Deletions & Insertions to Transform a String into another
- Longest Increasing Subsequence
- Solution: Longest Increasing Subsequence

Your instructor
Gabriel Do brings a wealth of experience to the realm of System Design, with a robust background in creating scalable, efficient, and resilient architectures across a variety of tech environments. His journey has been marked by hands-on roles that included software development, systems engineering, and consulting, where he excelled at turning complex requirements into tangible solutions. His expertise is not only grounded in academic foundations but has been refined by real-world challenges and the mentorship of industry leaders.
As the instructor for the "System Design Interviews" course, Gabriel has designed an immersive curriculum that mirrors the dynamic and ever-evolving landscape of technology systems. His passion for teaching is anchored in the belief that a deep understanding of system design principles is crucial for anyone looking to excel in tech roles, particularly when navigating the critical juncture of interview processes. Gabriel is dedicated to sharing his insights, providing practical strategies, and empowering students with the knowledge and confidence to succeed.

Masterful
Crafting Elegant Solutions for Complex Problems

Strategic
Navigating Trade-offs in High-Stakes Environments

Innovative
Pioneering Cutting-Edge Approaches to Design Challenges