System Design and Distributed Systems Tutorial

Design scalable, reliable, secure distributed systems through quantitative requirements, data architecture, messaging, resilience, operations, case studies, and a production capstone.

  • Level: Beginner to advanced
  • Format: 36 free, self-paced lessons
  • Best for: Students, career changers and developers refreshing their skills

Start learning System Design and Distributed Systems →

What You Will Learn

This learning path covers the following areas in curriculum order:

  • System Design Foundations
  • Networking and API Architecture
  • Data Storage and Consistency
  • Caching Messaging and Streams
  • Distributed Coordination and Scale
  • Reliability and Resilience
  • Security and Isolation
  • Observability Delivery and Operations
  • Architecture Case Studies and Capstone

Who This Course Is For

This tutorial is suitable for complete beginners as well as learners who already know some programming and want a structured reference. Start from the first lesson if the subject is new to you. Experienced learners can use the curriculum below to jump directly to a specific concept.

How to Use This Tutorial

  1. Read each lesson in curriculum order and run every example yourself.
  2. Change the examples to test your understanding instead of only copying them.
  3. Complete the exercises and review the common-mistake sections before moving on.
  4. Bookmark this course page so you can return to the complete lesson index.

Course Contents

System Design Foundations

Networking and API Architecture

Data Storage and Consistency

Caching Messaging and Streams

Distributed Coordination and Scale

Reliability and Resilience

Security and Isolation

Observability Delivery and Operations

Architecture Case Studies and Capstone

Frequently Asked Questions

Is this System Design and Distributed Systems tutorial free?

Yes. The lessons listed on this page are free to read and can be completed at your own pace.

Do I need previous experience?

No previous experience is required for the introductory lessons. Some advanced modules are easier if you first complete the fundamentals in this course.

How should I practise?

Type and run the examples, deliberately change their inputs, predict the result before execution and build a small project after completing each major section.