Quick Links

Course Materials

Course Learning Outcomes

Computational Practice

Students will learn the following computational practices:

  1. Students can implement programming projects that display knowledge of a variety of distributed system architectural styles. Assignments include significant programming projects with wide leeway in design and implementation choices.
  2. Students will analyze problems, determine solutions within an assigned architectural style, and successfully implement those solutions.
  3. Students will design and implement projects both individually and as part of a team.
  4. Students will use cloud-based systems to run and implement assignments.
  5. Students will manage a cloud-based web server and properly configure it.

Computational Theory

Students will understand the proper use of distributed and decentralized architectures and algorithms including

  1. RESTful APIs
  2. Hierarchical vs heterarchical system architectures
  3. Parallel computing and MapReduce
  4. Event-driven and reactive systems
  5. Peer-to-peer systems
  6. Uses for algorithms including Distributed Hash Tables (DHT), Paxos, gossip protocols, and blockchain

Students will understand theoretical concepts and limitations of distributed systems including

  1. network practicalities such as latency, bandwidth, topology, cost, heterogeneity, security
  2. coupling
  3. consensus
  4. CAP theorem
  5. distributed transactions
  6. serialization
  7. identity and naming
  8. cryptography
  9. simultaneity

Critical Thinking and Communication

Students will engage in meaningful discussion, prepare written reports, and make presentations.

Ethics and Computing

Students will be presented with societal outcomes of technological choices in distributed and decentralized systems, analyze those outcomes, explore possible alternatives from different choices, and present their findings in small groups .


Software Design (CS 340) or equivalent experience.

Internet Application Programming (CS 360) or equivalent experience.

Course Materials

Required Materials

Supplemental Materials
The course includes numerous readings available online.

(Back to top)

Course Organization

Each lesson (except the first) includes a reading quiz comprising some number of multiple-choice, matching, fill-in-the-blank, and true-false questions. The best way to prepare for the quizzes is to complete the required reading in each lesson.

  1. Why Distributed Systems?
  2. Distributed System Architectural Patterns
  3. Integrity, Non-Repudiation, and Confidentiality
  4. Identity, Naming, and Directories
  5. APIs
  6. Parallel Architectures
  7. Failure and Consensus
  8. Peer-to-Peer Systems
  9. Reactive Systems and the Actor Model
  10. Microservices


Lesson Quizzes

Each lesson after lesson 1 concludes with a multiple-choice quiz over the basic concepts.

Lab Assignments

Lab assignments give you an opportunity to demonstrate your knowledge of how to apply course concepts in solving problems that call for distributed or decentralized solutions.

Most labs allow you to use any operating system and programming language you are familiar with.

Other Assignments

You will complete these assignments in conjunction with specific lessons.

Final Project

The final project is a free-form exercise to build a non-hierarchical distributed solution to a problem of your choice according to a set of instructor-provided constraints. You will complete three elements for the project:

(Back to top)


There is one final exam with two parts:

The exam questions ask you to apply principles from the course to analyzing distributed systems and solving problems related to distributed system design. The final exam is design oriented, and you will be required to make architectural and implementation decisions about proposed systems. The exam is closed book and notes, with a 90-minute time limit.

The quizzes, labs, and course project are your best guide in preparing for this work. If you don't participate fully in the assignments and the project, don't expect to do well on the exam.

Note: You must pass the final exam to earn credit for the course.

(Back to top)


Class assignments are graded as follows:

9 Quizzes, 11 points each 99 points
8 labs, 43 points each 344 points
8 assignments, 13 points each 104 points
Final project proposal 20 points
Final project (presentation and documentation) 180 points
Final exam 200 points
Total 947 points

Grading Scale

Your course grade is based on these percentages.

A 100–93%
A− 92–90%
B+ 89–87%
B 86–83%
B− 82–80%
C+ 79–77%
C 76–73%
C− 72–70%
D+ 69–67%
D 66–63%
D− 62–60%
E (fail) 59–0%

(Back to top)

Course Policies

These policies are specific to this course. For additional information about general policies, please refer to Independent Study Course Policies page.


9 computer-graded quizzes, 8 applied labs (can be resubmitted once for a fee), 8 module assignments, final project. No assignment resubmissions except for labs, which you may submit once each for a fee.

Resubmit an assignment for a fee.


1 proctored, instructor-graded final exam. May retake the exam once for a fee. Must pass the final exam to earn credit for the course.

Retake an exam for a fee.

Getting Help

Please use the help menu in this course to contact Independent Study or your instructor. You can find a list of free tutors available to BYU Independent Study students on the Free Tutoring Services website.

Note: The Harold B. Lee Library website provides a number of online resources and librarians are available via phone, chat, and email to answer questions about library-related issues.

Inappropriate Use of Course Content

All course materials (e.g., outlines, handouts, syllabi, exams, quizzes, media, lecture content, audio and video recordings, etc.) are proprietary. Students are prohibited from posting or selling any such course materials without the express written permission of BYU Independent Study. To do so is a violation of the Brigham Young University Honor Code.

Copyright © 2016 Brigham Young University. All rights reserved.

Published by the
Department of Independent Study
Division of Continuing Education
Brigham Young University
120 MORC
Provo, Utah 84602-1514