Class stuff and office hour
- Lecturer: Shuai Mu firstname.lastname@example.org
- Office hour: W 2:00-4:00pm (appointment recommended)
- TA TBD
- Familiar with OS & networking
- System-level programming experience
- Comfortable with concurrency and threading
Polling of PhD and Master
- Lectures are based on research papers
- Check webpage for schedules
- Lectures assume you have read the assigned papers
- No textbook
How are you evaluated?
- Labs 50%
- You must work alone on all assignments.
- A single deadline: Dec 1
- Late policy: 10% off per day
- Final exam 50%
- A: achieve > 85% in score, or ranking top 20%
- B+: score > 80%, or ranking 35%
- B: score > 75%, or ranking 50%
- B-: score > 70%, or ranking 75%
- C: score > 60%, or ranking 90%
- F: achieve < 30%, or ranking bottom 10%
- No A-, C+, C-
- 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 (and report to department)
- 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 a system in which I can’t do my work because some computer that I’ve never even heard of has failed.” – Leslie Lamport
Main challenges/topics in distributed systems
- 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 fail-over
- keep replicas identical
- keep replicas non-identical
- throughput (parallelism/divide load)
- latency (queuing, minimize critical path)