Exam 3 topics
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")