Course introduction


  • Familiar with OS & networking
  • System-level C/C++ programming experience
  • Comfortable with concurrency and threading
  • Paper reading experience

Course readings

  • Lectures are based on research papers
  • Check webpage for schedules
  • Lectures assume you have read the assigned papers
  • No textbook

Ways to get your questions answered

  • Piazza (fastest)
  • Office hour
  • Email (slowest)

“This course is so hard!”

  • Some thinks this is one of the hardest courses
  • Take it with caution, do not take this class if:
    • you are “underload” and you do not have much time
    • you expect an automatic C
    • you don’t have much systems experience
  • Some thinks this is an easy course
    • grading is objective based on labs, you have an preview

How are you evaluated?

  • Lab assignments (60%)
    • 25 points each lab
    • You must work alone on all assignments
    • You have about 3 weeks for each lab
    • Late policy: 5 percent off per day, at most 40 percent (so you can still get 60 percent of the credit if you submit very late)
  • Exams (40%)
    • Either 1 exam or 2 quizzes (or 4 quizzes?)
    • All single choices
  • Grading standard
    • A: achieve >= 90 in score, or ranking 10%
    • A-: achieve >= 85 in score, or ranking 25%
    • B+: score >= 80, or ranking 35%
    • B: score >= 75, or ranking 50%
    • B-: score >= 70, or ranking 65%
    • C+: score >= 65, or ranking 80%
    • C: score >= 60, or ranking 95%
    • F: score < 60 and last 5%
  • Other bonus
    • we will have a few voluntary presentation sessions discussion papers. You can volunteer a 15-minute presentation.
      • I will release the papers you can choose from
      • To make sure the discussion goes on well, you need to prepare the slides and send it to me a week ago than the class.
      • If your presentation quality meets expectation, you get 5 points; if it exceeds expection, you get extra 5 points.
    • reporting a technical error I made (lecture/lab) gives you 2 points, up to 20 points
    • from time to time I would ask a “bonus question” in class; each 2 points.

Integrity policies

  • The work that you turn in must be yours.
  • You must acknowledge your influences.
  • You must not look at, or use, solutions from prior years or the Web, or seek assistance from the Internet.
  • You must take reasonable steps to protect your work.
  • You must not publish your solutions.
  • If there are inexplicable discrepancies between exam and lab performance, we will over-weight the exam and interview you.


  • Violate policy -> F, report to the department
    • We are serious: in 19fa we caught ~20 students, and they all failed.
  • Attempt to negotiate on grading -> 10% off per each attempt

What are distributed systems?

  • Machines communicate to provide some service for applications
  • Multiple hosts
  • A local or wide area network

Why distributed systems?

  • ease-of-use (web, NFS)
  • availability/reliability (hardware/software failures)
  • scalable capacity (CPU, memory, storage)
  • modular functionality (authentication service)


  • “A distributed system is one in which the failure of a computer you didn’t even know existed can render your own computer unusable.” – Leslie Lamport

Main challenges/topics in distributed systems

  • Abstraction/Interface
    • different system requirements: file system/database/disk
    • simple, flexible, implementation-friendly
  • System architecture
    • data center / wide area
    • client-server / peer-to-peer
  • Fault Tolerance
    • backup/replication
    • backup fail-over
  • Consistency
    • keep replicas identical
    • keep replicas non-identical
  • Performance
    • throughput (parallelism/divide load)
    • latency (queuing, minimize critical path)