Skip to main content

Pragmatic System Design

4h 28m 50s
English
Paid

This course aims to prepare you for system design interviews and discusses how you can apply this knowledge in your day-to-day job. In the real world, most engineers don't frequently design new systems. Some may not get to design them at all. In many companies, architecture is a task reserved for only a few individuals. However, during interviews, there is a sudden expectation for everyone to master system design.

Course Objectives

This course covers basic topics and provides my approach to common system design interview questions. Additionally, the course offers senior engineers an alternative perspective on system design. In the industry, design is not often openly discussed because no real-world design is perfect—something I hope to change.

How to Approach the Course

There are two ways I recommend consuming the course:

  • Comprehensive Approach: If you have ample time, watch from start to finish. The course is structured logically to build your confidence incrementally.
  • Focused Approach: If short on time or not actively preparing for interviews, begin with the design videos. If you're unfamiliar with a topic discussed, there should be a video or a linked relevant article available.

Understanding System Design Interviews

The goal of a system design interview is to evaluate multiple topics, assessing breadth of knowledge first, and depth second. Therefore, I have kept the theoretical part of each topic relatively brief, reflecting my expectations as an interviewer.

The Imperfection of System Design

Finally, let me emphasize that no design is perfect. There are always tradeoffs and compromises you must make. Each design is personal, influenced by your expertise areas. While watching my videos, consider them as a collection of ideas rather than definitive methods for system design.

About the Author: udemy

udemy thumbnail
By connecting students all over the world to the best instructors, Udemy is helping individuals reach their goals and pursue their dreams. Udemy is the leading global marketplace for teaching and learning, connecting millions of students to the skills they need to succeed. Udemy helps organizations of all kinds prepare for the ever-evolving future of work. Our curated collection of top-rated business and technical courses gives companies, governments, and nonprofits the power to develop in-house expertise and satisfy employees’ hunger for learning and development.

Watch Online 85 lessons

This is a demo lesson (10:00 remaining)

You can watch up to 10 minutes for free. Subscribe to unlock all 85 lessons in this course and access 10,000+ hours of premium content across all courses.

View Pricing
0:00
/
#1: Introduction to Pragmatic System Design
All Course Lessons (85)
#Lesson TitleDurationAccess
1
Introduction to Pragmatic System Design Demo
03:50
2
Diagram building blocks
02:31
3
Diagram flow
01:11
4
Making Estimates
03:28
5
Load Balancing
05:53
6
CDN
04:19
7
Introduction
01:46
8
Caching Strategies
03:12
9
Eviction Policies
03:23
10
Redis
03:58
11
Introduction
04:32
12
Messaging
02:29
13
RabbitMQ
05:09
14
Kafka
03:57
15
TCP
04:03
16
UDP
03:09
17
Summary: TCP vs UDP
00:56
18
HTTP
01:05
19
HTTP - Methods
01:56
20
HTTP - Status Codes
02:36
21
REST
01:14
22
RESTfulness
03:30
23
WebSockets
03:36
24
Long Polling
02:54
25
gRPC
04:13
26
GraphQL
04:54
27
Summary
01:58
28
Concurrency vs Parallelism
02:29
29
Processes
06:40
30
Threads
03:52
31
Thread Pools
01:17
32
Indexes
07:09
33
Sharding
10:25
34
Consistent Hashing
03:59
35
Partitioning
10:29
36
CAP Theorem
04:36
37
ACID transactions
04:53
38
Web Sessions
05:35
39
Problem Introduction - Design a Taxi Hailing App
05:34
40
Driver Locations
04:40
41
Storing Locations
03:54
42
Taxis Around You
05:06
43
Matching
03:29
44
Summary - Design a Taxi Hailing App
00:49
45
Problem Introduction - Design a Chat
01:37
46
Basic Design
03:25
47
Scaling Reads
02:11
48
Sharding Chat Messages
02:00
49
Scaling chat using queues
02:18
50
Summary - Design a Chat
01:25
51
Problem Introduction - Design a Web Crawler
02:30
52
Basic Design
02:13
53
Fetching Content
03:00
54
What's a "new" URL?
03:12
55
Uniqueness
04:14
56
Priorities
05:41
57
Summary - Design a Web Crawler
01:06
58
Problem Introduction - Design an Auction
01:47
59
Basic Design for an Auction
02:15
60
Optimistic Locking of Bids
01:45
61
Serialisation of Bids
02:08
62
Event-Driven Approach for Bids
02:55
63
Scaling an Auction
01:42
64
Summary - Design an Auction
00:53
65
Problem Introduction - Design a URL Shortener
01:23
66
Basic Design for a URL Shortener
01:59
67
Short Identifiers
02:48
68
Scaling Reads
02:27
69
Extra: DynamoDB
01:06
70
Caching
02:03
71
Summary - Design a URL Shortener
01:09
72
Problem Introduction
01:42
73
Basic Design
04:38
74
Concurrency
04:46
75
Scalability
04:54
76
Summary
01:01
77
Extra: Scaling Using Queues
02:13
78
Problem Introduction - News Feed
02:13
79
Basic Design - News Feed
02:05
80
Storage Calculations - News Feed
01:17
81
Scaling reads
03:48
82
Long Term Storage and Short Term Storage
02:23
83
Feed Optimisation
01:26
84
VIPs
03:15
85
Summary - News Feed
01:19
Unlock unlimited learning

Get instant access to all 84 lessons in this course, plus thousands of other premium courses. One subscription, unlimited knowledge.

Learn more about subscription