CSE 124
2017 December 3: final exam guide

The final exam (given during the assigned time by the registrar) will cover the material from the course. I’ve included a set of topics that are on my mind as I’m finalizing the questions, and wanted to provide that list to you to help you review.

In terms of in-exam notes, you may bring in 2 8.5” x 11” pieces of paper, and may use both sides (so four sides total). You can hand-write those pages, or use a computer if you’d like. You can work together on a shared set of notes and bring those in, however reserach has shown that the act of putting together the study guide is actually more useful than having the guide during the exam! So keep that in mind. No electronic devices, computers, tables, phones, watches, etc may be used during the exam.

  • Protocols
    • Layering
    • Framing vs. parsing
    • Encoding strategies: text vs binary
    • Encoding integer types
    • HTTP and the web
    • The protocol
    • HTTP pipelining
    • IP addresses
    • DNS (basic + as used by CDNs)
  • Sockets programming
    • Client and server APIs
    • Note: you do not need to memorize the specific arguments for these calls. If any question requires that information, a brief description of the API will be provided
    • Concurrency, options, signals, timeouts, threading
  • RPC-based protocols
    • Networked storage
    • Consistency, caching, versioning
    • RPC fundamentals, encoding data, stub compilers, IDLs
  • Time
    • Algorithms related to establishing time synchronization, NTP
    • Lamport clocks, vector clocks
  • Consistency, available, and fault tolerance of replicas
    • Primary/backup replication, split brain
    • Lamport-based approaches to total ordered multicast
    • 2PC
    • Replicated state machines
    • Distributed transactions, transaction coordinators, two-phase locking
  • Datacenters
    • Anything from Chapters 1-5 of Barroso et al
  • The tail at scale paper
  • Peer-to-peer networks, DHTs, and Chord
    • Performing lookups given a Chord network
    • Theory behind joining such a network
    • Linked lists and skip lists
  • Anything you learned during the projects