Exam 3 topics

Table of Contents

Overview

This is intended to give you a sense of what I think is important from the course so far, and what I will be thinking of when creating the exam.

I hate disclaimers, but here are some anyway. This is not a contract. I may have inadvertently left something off this list that ends up in an exam question. I make no guarantees that the exam will be 100% limited to items listed below. Moreover, I will not be able to test all of this material given the time limitations of the exam. I will have to pick and choose some subset of it.

You are permitted one 8.5 x 11 sheet of paper with notes (both sides) for use as a reference during the exam.

Specifics

Students should be able to…

  • evaluate tradeoffs for synchronous vs asynchronous replication, as well as primary vs no-primary replication. Analyze with respect to strong vs eventual consistency vs weak consistency. (Reading: see Moodle page, "An Intro to Distributed Systems")
  • describe and answer analytical questions regarding 2-phase commit process for distributed systems. (Reading: see Moodle page, "An Intro to Distributed Systems")
  • interpret MPI code as well as write pseudocde in the style of MPI to solve a particular problem (Reading: see Moodle page, "MPI (Wikipedia)"
  • evaluate technical issues that arise regarding remote procedure calls that distinguish them from traditional procedure calls (Reading: see Moodle page, "[Remote procedure calls] Distributed Systems Ch.2 Communication")
  • interpret Apache Spark code as well as write Spark code to solve a particular problem (Reading: various Spark references on Moodle)
  • compare and contrast clock synchronization methods, specifically: (Reading: see Moodle page)
    • Cristian's method
    • Berkeley algorithm
    • Network Time Protocol
  • describe Byzantine Generals problem, justify the interactive consistency conditions, address impossibility of a 3 general solution with a single traitor (Reading: see Moodle page, "Byzantine Generals")