Welcome to the System Design course! As an experienced software engineer and system architect, I am excited to share my knowledge and experience with you in this course.
In this course, you will learn the fundamentals of system design, including how to identify and prioritize requirements, select appropriate hardware and software components, and design for reliability and performance. We will also delve into advanced topics such as load balancing, caching, database design, and design patterns.
Throughout the course, you will have the opportunity to work on hands-on projects and apply your knowledge to real-world scenarios. By the end of this course, you will have a strong foundation in system design and be able to confidently design and build scalable and robust systems for any application.
This course is suitable for intermediate to software engineers looking to improve their skills in system design and architecture.
I am here to guide and support you every step of the way, and I am always available to answer any questions you may have. Let's get started on your journey to becoming a system design expert!
You will learn
Introduction to System Design
Defining system design
Identifying and prioritizing requirements
Selecting hardware and software components
Designing for reliability and performance
Load Balancing
Introduction to load balancing
Types of load balancers
Implementing load balancing in a system
Caching
Introduction to caching
Types of cache systems
Implementing caching in a system
Database Design
Introduction to database design
Selecting the appropriate database for a system
Normalization and denormalization
Designing for scalability and performance
Design Patterns
Introduction to design patterns
Common design patterns for system design
When to use specific design pattern
Hands-on Projects
URL shortener
Google Drive / Dropbox