Course Syllabus
Table of contents
- Reading
- Programming labs
- Collaboration policy
- Late policy
- Grading
- Academic Integrity
- Students with disabilities or learning needs
Reading
There are no official textbooks. Required readings are (most frequently) in the form of seminal research papers, online documentations, and/or selected textbook chapters There are several books that might be useful:
Distributed Systems 3rd edition (2017), by Maarten van Steen and Andrew S. Tenenbaum (free book).
Operating Systems: Three Easy Pieces (OSTEP), by Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau, Aug, 2018 v 1.00 (free book).
The Go Programming Language. Alan A. A. Donovan and Brian W. Kernighan (though this is an old book, the basic concepts about Goroutines and Channels never change – use it as a reference if you find online resources not sufficient). See instruction below how to access the free version via UVA Library.
To access the Go Programming Language text book, you just need to do the following:
- Access the UVA Library website.
- Search the title of the textbook: The Go Programming Language.
- Click on Library Catalog (Access Online), and sign into the O’Reilly website with your UVA email address.
- If the O’Reilly link brings you to an audiobook, search for the textbook in O’Reilly website and find the ebook.
Programming labs
A tentative list of programming lab assignments (note the order and the topic of the programming labs is tentative and is subject to change):
- Lab 0: Intro to Go: Familiarize yourself with Go (5%);
- Lab 1: MapReduce (15%);
- Lab 2: Key-value server (15%);
- Lab 3a: Raft leader election (15%);
- Lab 3b: Raft log replication (20%);
Lab 4: Serverless and containerization (15%).
Collaboration policy
Students must work individually on all programming assignments. We encourage you to have high-level discussions with other students in the class about the assignments.
However, we require that when you turn in an assignment, it is only your work. That is, copying any part of another student’s assignment is strictly prohibited. Anything that you hand in, whether it is a written problem or a computer program, must be written in your own words. If you base your solution on any other written solution, you are cheating.
Never look at another student’s code or share your code with any other student.
You must not make your code public (on GitHub or by any other means).
Late policy
Your work is late if it is not turned in by the deadline.
- 10% will be deducted for late assignments each day after the due date. That is, if an assignment is late, we’ll grade it and scale the score by 0.9 if it is up to one day late, by 0.8 if it is up to two days late, and by 0.7 if it is up to three days late.
- Late assignments will only be accepted for 3 days after the due date. Assignments submitted more than 3 days late will receive a zero. If you’re worried about being busy around the time of a HW submission, please plan ahead and get started early.
- Assignment that does not compile or run will receive at most 50% credit.
IMPORTANT: Please plan ahead and get started early! Debugging distributed systemscan be time-consuming.
For fairness to all, there are no exceptions to the above rules.
Quizzes
There will be a short quiz due at the end of some lectures. Make sure you know the rules regarding what is allowed and what is not.
Allowed
- However much time you need.
- Discussing answers with classmates who are taking the quiz at the same time.
- Referencing texts, notes, or provided course materials.
- Searching online for general information.
- Running code.
NOT allowed
- Taking it more than once.
- Discussing answers with anybody outside of the course.
- Discussing with classmates who have already completed the quiz when you haven’t completed it yourself yet.
- Posting anything online about the quizzes.
- Using such material potentially posted by other students who broke the preceding rule.
- Getting TA/instructor help on quiz questions prior to the quiz deadline.
Grading
Your grade will be calculated as follows:
- 70% programming assignments
- 5% quizzes
- 10% midterm exam
- 15% final exam
Grading rules
The final grade is computed according to the following rules:
TBA
Academic Integrity
The School relies upon and cherishes its community of trust. We firmly endorse, uphold, and embrace the University’s Honor principle that students will not lie, cheat, or steal, nor shall they tolerate those who do. We recognize that even one honor infraction can destroy an exemplary reputation that has taken years to build. Acting in a manner consistent with the principles of honor will benefit every member of the community both while enrolled in the School of Data Science and in the future. Students are expected to be familiar with the university honor code, including the section on academic fraud.
Students with disabilities or learning needs
It is my goal to create a learning experience that is as accessible as possible. If you anticipate any issues related to the format, materials, or requirements of this course, please meet with me outside of class so we can explore potential options. Students with disabilities may also wish to work with the Student Disability Access Center to discuss a range of options to removing barriers in this course, including official accommodations. Please visit their website for information on this process and to apply for services online. If you have already been approved for accommodations through SDAC, please send me your accommodation letter and meet with me so we can develop an implementation plan together.