Santa Clara University
Department of Computer Science and Engineering
COEN-317: Distributed Systems

Course Description

Fundamental algorithms for distributed system architectures, inter-process communications, data consistency and replication, distributed transactions and concurrency control, distributed file systems, network transparency, fault tolerant distributed systems synchronization, reliability. Prerequisites: COEN 233 and 283 or equivalent. (4 units)

Prerequisites

COEN 233 and 283 or equivalent.

Instructor

Robert Bruce

Learning Outcomes

Upon successful completion of this course, students will be able to:

  1. Demonstrate an understanding of the working details of distributed systems and the underlying technologies, including their basic architectures, algorithms, and techniques to achieve synchronization, consistency with replication, and fault tolerance.
  2. Develop and evaluate efficient algorithms and techniques for building fast, scalable, and fault-tolerant distributed systems.
  3. Compare the advantages and disadvantages of various distributed systems architectures.

Required Texts/Readings

Textbook

  1. Maarten van Steen and Andrew S. Tanenbaum, Distributed Systems, Third edition.

References (These are not required readings but are helpful resources.)

  1. Brian W. Kernighan and Dennis M. Ritchie, C Programming Language, 2nd edition
  2. David R. Butenhof, Programming with POSIX Threads.
  3. W. Richard Stevens, Bill Fenner, and Andrew M. Rudoff, Unix Network Programming, 3rd edition
  4. W. Richard Stevens and Stephen Rago, Advanced Programming in the UNIX Environment, 3rd edition
  5. Robert Mecklenburg, Managing Projects with GNU make, 3rd edition

Example Programs

The following programs are meant as helpful resources and may be modified or utilized to complete the programming project.

C program using fork, exec, pipe, and FFMPEG:

C program using POSIX threads:

C program using POSIX threads with mutex:

C program example that connects to a Postgres database:

C program demonstrating socket communication between a client and server

C++ program demonstrating face landmark detection using the dLib library.

C/C++ program to draw Delaunay triangles

Course Requirements and Assignments

Lectures

Most of the class lectures will be highly relevant to the project for this class and serve to complement Steen and Tanenbaum’s Distributed Systems.

Programming Project

The programming project is a team-based assignment to develop a distributed computing queue that processes a series of jobs (tasks) via a network of computers.

Project Presentations

Each team will give two presentations in the class:

  1. A progress update.
  2. The completed project.

Project Report

Each student must submit a project report.

Midterm Examination

The midterm exam will based-on chapters 1 through 4 inclusive of Steen and Tanenbaum’s Distributed Systems. The exam will be comprised of open-ended questions. The exam will be closed-book. You may use one A4 sheet of paper (8.5 inches width by 11 inches length) for notes during the midterm examination. You may write notes on both sides of the sheet of paper.

Final Examination

The final exam will based-on chapters 6 through 9 (inclusive) of Steen and Tanenbaum’s Distributed Systems. The exam will be comprised of open-ended questions. The exam will be closed-book. You may use one A4 sheet of paper (8.5 inches width by 11 inches length) of notes during the final exam. You may write notes on both sides of the sheet of paper.

Grading Information

Assignment Percentage of Grade
Project presentation update 5%
Project report 10%
Completed project presentation 10%
Programming Project 15%
Midterm exam 30%
Final exam 30%
TOTAL 100%

† Graded as an individual
‡ Graded as a group (each member of the group gets the same grade)

Determination of Grades

Ultimately this course is graded A, B, C, D, or F. Percentage grades are rounded to the nearest whole number. For example, a grade of 92.4% will be rounded to 92% and result in a grade of "A minus". A grade of 92.5% will be rounded to 93% and result in a grade of "A".

Grading Scale

Percent range Grade
93% to 100% inclusive A
90% to 92% inclusive A-
87% to 89% inclusive B+
83% to 86% inclusive B
80% to 82% inclusive B-
77% to 79% inclusive C+
73% to 76% inclusive C
70% to 72% inclusive C-
67% to 69% inclusive D+
63% to 66% inclusive D
60% to 62% inclusive D-
Below 60% F

Grading Policies

  • Normally, late projects are not accepted.
  • There are no make-up exams.
  • Official proof of emergency required for missing an exam, project, or project presentation.

Course Schedule

Week Topics and Assignments Readings and Deadlines
1 Introduction: Course objectives Chapter 1: Introduction
1 Building a distributed systems pipeline: an overview.
Team formation.
 
2 Architecture of distributed systems Chapter 2: Architectures
2 The Postgres relational database management system and Application Programming Interface (API)  
3 POSIX threads Chapter 3: Processes
3 FFMPEG library and systems programming tools  
4 Interprocess Communication Chapter 4: Communication
4 dLib and OpenCV  
5 MIDTERM EXAM  
5 Cooperation and coordination in distributed systems
Feedback on midterm exam
Expectations for upcoming Team project updates
Chapter 6: Coordination
6 Team project update (presentation)  
6 Team project update (presentation)  
7 Resiliency in distributed systems (part 1 of 2) Chapter 7: Consistency and replication
7 User interfaces for distributed systems  
8 Resiliency in distributed systems (part 2 of 2) Chapter 8: Fault tolerance
8 Scalability in distributed systems  
9 Security in distributed systems Chapter 9: Security
9 Implementations of distributed systems  
10 Team project presentations DUE: Programming Project
DUE: Project Report
10 Team project presentations  
  FINAL EXAM