Course introduction
Class stuff and office hour
Prerequisites
- 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
Important website
“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?
- No exam, graded by 4 lab assignments
- 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)
- An extra 25-point bonus project
- You need to get at least 70% of the first three labs to do the bonus project, i.e., this project is not supposed to be used as a “plan B” to increase your score. You should only do it if you like to do it.
- This project is graded subjectively. It is possible you do not get any points if you do not do a good job.
- A few candidate projects will be released, which you can choose from
- Grading standard
- A: achieve >= 90 in score, or ranking 10%
- A-: achieve >= 85 in score, or ranking 20%
- B+: score >= 80, or ranking 30%
- B: score >= 75, or ranking 50%
- B-: score >= 70, or ranking 70%
- C+: score >= 65, or ranking 80%
- C: score >= 60, or ranking 90%
- F: score < 60 and last 10%
- Other bonus
- we will have a few voluntary presentation sessions discussion papers. You can volunteer a 20-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.
- An alternative to lab assignments
- an alternative to all above is to work on a more complex distributed systems project (expect at least twice the workload—usually much more—of the lab assignment). This is invitation-only. Consult the lecturer for more information.
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.
Penalty
- 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)
Downside
- “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)