Ethan Blanton

This information is advisory only. The authoritative course description and requirements for a given semester are defined in the course syllabus.

Overview

This course is a cross-listed graduate/undergraduate course titled Distributed Systems for both graduate and undergraduate students. Both versions of the course are project-heavy. Some semesters, only one call or the other has been offered.

Course materials for semesters before Spring 2026 have been taken down as they do not comply with current Federal accessibility standards, and no exception is provided for historical material.

Offerings

Spring 2026 Spring 2025 Spring 2024 Spring 2023 Spring 2021 Spring 2018

This Offering: Spring 2024

Lecture
486LEC-000 (10472):MWF11:00–11:50,Knox 104(Ethan Blanton)
Office HoursN/A
SA Office HoursN/A

Course Materials

Materials from this course, including the syllabus and lecture slides, have been taken down as they do not comply with current Federal accessibility standards, and no exception is provided for historical material.

Prerequisites

All students are expected to have a thorough understanding of data structures and fundamental algorithms, as well as meaningful familiarity with the Internet architecture and networking (including the TCP/IP protocol suite) and operating systems concepts. In addition, students are expected to have done some systems programming (e.g., using threads and sockets). Students must either have some experience in the Go programming language or be capable of picking it up rapidly.

Undergraduate students must have completed CSE 220 and CSE 250 (or equivalent courses at another institution with appropriate articulation).

Text

The required text for this course is Distributed Computing: Principles, Algorithms, and Systems by Ajay D. Kshemkalyani and Mukesh Singhal, ISBN 978-0-521-18984-2. It is available to all UB students in digital form from the UB libraries.

Policies

The ultimate authority for course policies is the course syllabus. However, my general academic integrity policy can be found here.

Course Structure

This is a project-heavy course. Students will be expected to implement several non-trivial applications in the Go programming language. Projects will make up about half of the final course grade, with the remainder being quizzes and exams.

There will be one midterm examination and one final examination.

There are no graded homeworks for this course. Homeworks may be assigned to help students understand the material, and any material covered in homeworks may appear on exams or quizzes.

Programming Assignments

All programming assignments for this course will be in Go. The version of Go used this semester is 1.19. Go is a systems programming language with a flavor not dissimilar to C, but providing much higher-level support for strings, buffers, message passing, and concurrency.

All projects in this course must compile and run correctly in the grading environment used for this course, which is Ubuntu 20.04.

Students considering this course or wishing to do some preparation before the semester begins may wish to complete A Tour of Go to get a feel for the Go language and the programming that will be required in this course.

Preparing for this course

Students wishing to prepare for this course may wish to review this advice for succeeding in CSE 486/586. In particular, undergraduate students who have not yet taken several 3xx/4xx courses and graduate students who do not have a strong practical background in systems programming or implementation will find extra resources to review prior to the semester there.

Students unfamiliar with the Go language who do nothing else will wish to do A Tour of Go before the semester begins.