Skip to main content

CS404BKK

Software System Design

Bangkok Campus
Oct 19, 2026 - Nov 06, 2026
In the course, we work out a broad spectrum of important principles and solution patterns for the design of software systems, evaluate existing software systems, and design software systems ourselves.
Bangkok Campus
Oct 19, 2026 - Nov 06, 2026
Anton Topchii

Faculty

Anton Topchii

Senior Backend Developer at Byrd

Course length

3 weeks

Duration

3 hours
per day

Total hours

45 hours

Credits

6 ECTS

Language

English

Course type

Offline

Fee for single course

€1500

Fee for degree students

€750

Skills you’ll learn

User Interface DesignDesign PatternsSoftware Testing and DebuggingObject Oriented DesignDesign Scalable ArchitecturesLarge Scale Real-life ApplicationsDatabase Frameworks for Applications
OverviewCourse outlineCourse materialsPrerequisitesMethod & grading

Overview

Modern software applications are very big and complex. However, there are common patterns and approaches to designing architecture that satisfy functional requirements while supporting scalability, consistency, and high availability. In the course, we work out a broad spectrum of important principles and solution patterns for the design of software systems, evaluate existing software systems, and design software systems ourselves. We will also inspect architectures that support real-life big-scale systems: Uber, Yelp, TinyURL, TicketMaster. Discussing these real-life systems, we will follow the path of evolving a system serving tens of users to a system that serves millions of users.

Learning highlights

  • Know important general principles of the design of software systems and can apply them.
  • Evaluate existing software system designs and implementations based on design principles and patterns.
  • Select and implement problem-oriented solutions based on software design patterns.
  • Have basic knowledge of how to design software systems.
  • Implement a designed software system using modern technologies.
  • Gain hands-on experience in designing a system that will be reliable in the face of faults.
  • Effectively present and defend their system design.
  • Work together to discuss the trade-offs of different solutions.

Course outline

15 classes

Dive into the details of the course and get a sense of what each class will cover.
Monday
Tuesday
Wednesday
Thursday
Friday
Monday
1

Session 1

System design process: main steps

Tuesday
2

Session 2

Scaling from 10s to millions of users

Wednesday
3

Session 3

Case study: design TinyURL

Thursday
4

Session 4

Case study: design a Distributed key-value store

Friday
5

Session 5

Case study: design TicketMaster

Monday
6

Session 6

Case study: design Sequencer

Tuesday
7

Session 7

Case study: design Twitter newsfeed

Wednesday
8

Session 8

Case study: design a Web Crawler

Thursday
9

Session 9

Case study: design Job Scheduling

Friday
10

Session 10

Numbers every software engineer needs to know

Monday
11

Session 11

Adding Observability to your system

Tuesday
12

Session 12

Case study: design Yelp

Wednesday
13

Session 13

Case study: design Uber

Thursday
14

Session 14

DB index deep dive

Friday
15

Session 15

Final presentation

Prerequisites

Course 'Distributed Systems & Clouds' (recommended).

Course 'Building ML Solutions: From System Design to Deployment' (recommended).

Experience building multi-component applications (study projects are ok).

Acquaintance with distributed systems.

Acquaintance with SQL databases

Methodology

The course comprises 6 ECTS, which corresponds to a workload of 180 hours per person (45 hours attendance time, including examinations, 15 hours individual consultations, 120 hours self-study). The course consists of lectures given by the professor as well as case studies of different systems. The common framework for approaching a design will be given in the first session. Each session will consist of a lecture and a quiz based on the lecture. An important part of the course is class discussions and presentations.

Students will work in groups on a final project. The goal of the final project is to develop a system of their choosing. The system can be either an existing one or a new one. Implementation of the system, such as coding, is not required. However, the system design must be detailed enough to allow for its implementation.

Grading

The final grade will be composed of the following criteria:
20% - Quizzes
20% - Individual Assignments
50% - Group Project
10% - Class Participation
Anton Topchii

Faculty

Anton Topchii

Senior Backend Developer at Byrd

Anton is a proficient software engineer with over 8 years of industry experience. He is currently working as a backend engineer at Byrd GmbH, a European startup providing digital and scalable fulfillment solutions. He earned his Master's degree in Applied Mathematics and Computer Science from the Moscow Institute of Physics and Applied Science. In addition to his professional expertise, he has also contributed to various open-source projects. Anton has previously worked as a mathematics tutor, honing his ability to communicate complex ideas in an understandable manner.

See full profile

Apply for this course

Snap up your chance to enroll before all spaces fill up.

Software System Design

by Anton Topchii

Total hours

45 Hours

Dates

Oct 19 - Nov 06, 2026

Fee for single course

€1500

Fee for degree students

€750

How to secure your spot

Complete the form below to kickstart your application

Schedule your Harbour.Space interview

If successful, get ready to join us on campus

FAQ