Skip to content

ECE428

ECE428 (Distributed Systems) is a 3-or-4-credit hour course that counts as an Advanced Computing Elective for CEs. It is offered in the fall and spring semesters. This course is the same as CS425.

Content Covered

  • Failure detection
  • Timestamps and global state
  • Multicast
  • Leader election and mutual exclusion
  • Distributed consensus (Paxos and Raft)
  • Blockchains
  • Distributed transactions and concurrency control
  • MapReduce, Distributed datastores (Spanner, Hadoop, Cassandra, etc.)

This course is intended to give you a broad overview of distributed systems, including the theory behind them and practical applications. You will learn about the challenges of distributed systems, such as failure detection, consensus, and distributed transactions. You will also learn about the practical applications of distributed systems, such as MapReduce and distributed datastores.

This class can be taken for 3-or-4-credit hours. The content is the same, but the 4-credit hour section has to complete 4 MPs where you will implement distributed systems. These MPs are different in the fall and spring. In the fall, the MPs build on each other, while in the spring, they are independent. The MPs are generally quite challenging and will require a significant amount of time to complete.

Note: The content and structure of this course can vary depending on the professor. Some professors may focus more on the theory behind distributed systems, while others may focus more on the practical applications. Make sure to check the syllabus for the specific semester you are taking the course.

Prerequisites

An operating systems course is a prerequisite for this course, and it assumes you're familar with systems software topics. If you did well in your OS class and have coding/debugging skills, you are prepared for this course. Having knowledge of networking (such as ECE438) is also helpful, although it is not strictly required.

When to Take it

This course is usually taken in your junior or senior year, since it is quite rigorous and has an OS class as a prerequisite. If you're interested in large-scale systems, you should take this course as soon as you can. This course is also a good preparation for interviews at companies that work on distributed systems.

Course Structure

The course structure varies between the fall and spring semesters.

In Spring 2024, with Prof. Radhika Mittal, there were 2 1.25-hour lectures per week. There were 5 homework assignments, submitted every 2 weeks through Gradescope. There were 2 midterm exams and a comprehensive final exam, all through CBTF.

For the 4-credit hour section, there are 4 independent MPs. The MPs can be worked on with a partner and for MP0, MP1, and MP3 you can choose between C++, Go, Java, or Python. MP2 can only be done in Go. If you choose the 4-credit hour section, you also get 2 HW drops.

There are 168 "late hours" for MPs, and 48 "late hours" for HWs. Late hours can be used to submit an assignment late without penalty.

Instructors

Typically, Professor Indranil (Indy) Gupta teaches this course in the fall. Recently, Professor Radhika Mittal has taught this course in the spring.

Course Tips

Most people who choose to take this class should take it for 4 credit hours. The MPs are challenging but do a good job of reinforcing the concepts learned in lecture. They also force you to learn how to properly design a system and write clean code. The MPs are also a good way to practice working with a partner and managing a larger codebase.

The most common language used for this class is Go, which is ideal because of its native concurrency support and useful libraries (net, encoding/gob). If you're not familiar with Go, this class is a great way to learn it.

The exams are quite challenging and will require you to understand the material in depth. Make sure to go through the lecture notes and homework problems to prepare for the exams.

Life After

CS525 is a graduate-level course that builds on the concepts learned in ECE428. However, it is more research-based and focuses on more modern distributed systems.

CS438 (Communication Networks) is another course that dives deeper into networking, which is briefly covered but mostly abstracted away in this course.

Resources

Textbook: "Distributed Systems: Concept and Design, Fifth Edition"