Home » Teaching » CPSC 416 (Winter 22 Term 2) » CPSC 416 (Winter 2022 Term 2): Syllabus

Subscribe to Blog via Email

Enter your email address to subscribe to this blog and receive notifications of new posts by email.

Join 210 other subscribers
November 2024
S M T W T F S
 12
3456789
10111213141516
17181920212223
24252627282930

CPSC 416 (Winter 2022 Term 2): Syllabus

CPSC 416 Winter 2022 Term 2, Department of Computer Science
Delivery: In Person, Tuesday and Thursday 8:00-9:30 am (Location TBA)
Course Dates: January 10, 2023 to April 13, 2023

Instructor Information

Tony MasonOffice:
E-mail: fsgeek@cs.ubc.ca
In-person Office Hours by AppointmentTeaching Assistants: (TBA)
Online Office Hours:Tuesday @ 13:00-14:00 via Zoom
Thursday @ 16:00-17:00 on Discord

General Course Information

Description

A distributed system is one in which the failure of a computer you didn’t even know existed can render your own computer unusable. – Leslie Lamport (2013 ACM Turing Machine Award Winner)

This course covers fundamental concepts in distributed computing and how systems can be designed to use those concepts to enable distributed applications. Course objectives are: in-depth understanding of distributed computing concepts and practical techniques, how to build distributed systems using hands-on labs as well as optional projects, as well as an understanding of the current state of the art for several aspects of building distributed systems (Machine Learning, Data Analysis, and Byzantine Fault Tolerance, for example.)

Distributed systems provide substantial benefits that justify their use despite their complexity. Properly executed distributed system implementations are more fault tolerant since there are fewer (or no) single points of failure. In addition, distributed systems provide a highly useful technique for providing scalability, which in turn can improve their ability to handle more work – including brief periods of high demand work. Techniques such as caching provide strong benefits but introduce additional complexities due to the need to manage distributed state.

Distributed systems have complex failure modes that must be handled properly in order to provide the benefits of those same systems. Thus, much of this material is about handling failures in a fashion that permits forward progress, which is often different than typical programming involves.

The tentative topics are listed in the schedule below. For the most part this will be a lecture-style course. However, distributed system concepts are notoriously challenging to internalize without first-hand experience. The emphasis of this course, therefore, will be on building distributed system prototypes, small and large.

Prerequisites

CPSC 317 (Networks)

CPSC 313 (Computer Hardware and Operating Systems)

Textbooks

There are no required textbooks for this course. The following books are optional and may help your understanding of the materials.

  1. TBD
  2. TBD

Communications

TBA

Course Goals and Learning Objectives

Schedule

Note that this schedule is a work in progress and is subject to change.

DateTopicsDeliverables
January 10, 2023Introduction: Failure
Readings: TBA
Course Collaboration Policy Quiz Due Monday January 16, 2023.
January 12, 2023Networks and Remote Procedure Calls
January 17, 2023Clocks, Time, and Event Ordering.
January 19, 2023Distributed StateProject 1: Intro to DS Labs due Monday January 16, 2023.
January 23, 2023Last Day to Drop
January 24, 2023Achieving Consensus
January 26, 2023Replication
January 31, 2023Fault-Tolerance
February 2, 2023TransactionsProject 2: Client-server due Sunday February 5, 2023.
February 7, 2023Distributed Logging
February 9, 2023Quorum Replication
February 14, 2023PAXOSProject 3: Primary-backup replication Due Monday February 13, 2023
February 16, 2023Viewstamped Replication
February 21, 2023Reading Break
February 23, 2023Reading Break
February 28, 2023Raft
March 2, 2023PMMC Walk-through
March 7, 2023Last Day to Withdraw (Extended)
March 7, 2023Introduction to Formal Verification (TLA+)
March 9, 2023Consistency and Geo-Distributed Data Stores
March 14, 2023Guest Lecture
March 16, 2023Project 5 Walk-through
March 21, 2023Peer-to-Peer Systems and MobilityProject 4: Paxos Due Monday, March 20, 2023
March 23, 2023Distributed Data Analytics
March 28, 2023Datacenter-based Distributed Computing
March 30, 2023Distributed Machine Learning
April 4, 2023Byzantine Fault Tolerance and Blockchain
April 6, 2023Guest Lecture
April 11, 2023Guest Lecture
April 13, 2023TBAProject 5: Sharded Fault-Tolerant Key-Value Store due Thursday April 13, 2023.
TBDFinal Exam

My goal is to have several guest speakers during the term. I have put time for four such guest lectures at the end of the schedule and will adjust the schedule as I am able to confirm specific dates with guests. If I am not able to get four guest speakers I will provide supplementary presentations in lieu of those guest speakers.