Syllabus
Instructors: Prof. Tim Wood and Prof. Roozbeh Haghnazar
Time/Place:
- Class meets Thursdays 6:10-8:40PM online
Office Hours:
- Prof. Wood: Tuesdays 1pm-2pm
- Prof. Haghnazar: Fridays 2-3:30pm
- Huadong Hu: Monday 7pm-8pm
Course prerequisites:
- CSCI 6212 Algorithms (Co-Requisite)
- Undergraduate Operating Systems
- Strong programming skills
Website: https://gwdistsys20.github.io
Course Description
This course will be an in-depth study of the algorithmic and implementation challenges in building large scale distributed applications. Topics include distributed coordination, scheduling, consistency issues, and fault tolerance algorithms. The course will cover how fundamental distributed systems concepts are applied to cloud computing environments. The course will mix algorithmic concepts and practical implementations; substantial programming experience is required.
Learning outcomes
As a result of completing this course, students will be able to:
- Design distributed architectures that are scalable and efficient
- Build distributed systems that are correct and reliable despite network delays and failures
- Recognize and overcome the key challenges in implementing distributed systems
- Analyze the performance of different distributed system designs
Direct and Independent Instruction Time
The course will include 2.5 hours of direct instruction each week. The lecture period will typically be split between live lecture, discussion, and in-class exercises. Asynchronous options will be available for students unable to attend lectures live. Students are expected to spend a minimum of five hours on independent learning per week.
Textbook
Students do not need to purchase a textbook for this class. The instructors may assign supplementary readings from Distributed Systems 3rd edition by Marteen van Steen and Andrew Tanenbaum, which is available for free at: https://www.distributed-systems.net/index.php/books/ds3/
Schedule
(Subject to small changes, see home page for updates)
Date | Topics | Assignment(s) due |
---|---|---|
Week 1 | Overview of Distributed Systems Challenges | |
Week 2 | Scalable Execution Contexts Threads, Virtual Machines, Containers, Parallelism |
HW1: Parallel Sum |
Weeks 3 | Communication Mechanisms RPC, Sockets, HTTP, P2P |
HW2: Map Reduce |
Weeks 4-5 | Distributed Systems Architectures Centralized vs Decentralized, Resource Management |
|
Weeks 6-8 | Coordination and Consensus State Machine Replication, Ordering, Agreement |
HW 3: Elections; Project Milestone 1 |
Weeks 9-10 | Reliability and Fault Tolerance Consistency, Replication, Quorums |
HW4: DHT; Midterm |
Weeks 11-12 | Understanding Performance Throughput, Latency, Bottlenecks, Profiling |
Project Milestone 2 |
Weeks 13-14 | Applied Distributed Systems Distributed Systems Design Patterns, Cloud and Grid Computing |
Project Milestone 3 |
Finals Period | Final project due |
Grading
- Midterm exam (10%)
- Programming Assignments (35%)
- Final project (35%)
- Class participation and lecture prep (20%)
Assignments
We plan to have four programming assignments to help students learn how to deploy real distributed systems concepts in practice. Some programming assignments will be done individually, meaning students may not share any code with other students. In group projects, all students are expected to contribute equally.
Project
In the second half of the semester, students will work on a group project. Project proposals will need to be approved by the instructors and students will need to submit Milestone reports on a regular basis. Instead of a final exam, students will submit a final report and video presentation describing their project.
Lecture Preparation and Participation
Prep Grading: Students will be expected to prepare in advance of lectures by reading the specified materials or watching videos. A prep-quiz before each lecture will test students’ preparation and allow them to pose questions in advance of the lecture to guide discussion. These must be completed by the deadline (usually before class) to receive credit. No late submissions will be accepted.
Participation Grading: Students are expected to actively participate in the class, either during the live lectures or through the online discussion system. Participation opportunities will be provided for students unable to attend lectures synchronously. Each week you can earn up to 2 participation points. You obtain 1 point each time you perform one of the following:
- Attend a live lecture or office hour session
- Post a question, answer, or comment on Slack or in the prep-quiz.
You can obtain your 2 points per week from any combination of the above. Participating more than twice a week is encouraged, but you can still get at most 2 points per week! Your final participation grade will allow for one week with no participation, i.e., if there are 15 weeks with participation point opportunities, then we will sum your total points earned and divide by (14*2=28) instead of (15*2=30).
There will also be periodic opportunities for bonus participation points – subscribe to slack notifications to be sure you don’t miss out!
Illness and Absence Policy
The instructors understand that students may need to be absent from class either due to illness or other personal situations. For personal situations such as being in a difficult time zone, internet connectivity issues, etc., students can watch lectures asynchronously and are still expected to participate via other means such as the course message board.
If students anticipate missing several classes such as due to illness, they should alert the instructor as soon as possible. In this case deadlines may be extended for students and participation requirements will be relaxed.
University policies
Use of Electronic Course Materials and Class Recordings
Students are encouraged to use electronic course materials, including recorded class sessions, for private personal use in connection with their academic program of study. Electronic course materials and recorded class sessions should not be shared or used for non-course related purposes unless express permission has been granted by the instructor. Students who impermissibly share any electronic course materials are subject to discipline under the Student Code of Conduct. Please contact the instructor if you have questions regarding what constitutes permissible or impermissible use of electronic course materials and/or recorded class sessions. Please contact Disability Support Services if you have questions or need assistance in accessing electronic course materials.
University policy on observance of religious holidays
In accordance with University policy, students should notify faculty during the first week of the semester of their intention to be absent from class on their day(s) of religious observance. For details and policy, see “Religious Holidays” at provost.gwu.edu/policies-procedures-and-guidelines
Academic Integrity Code
Academic Integrity is an integral part of the educational process, and GW takes these matters very seriously. Violations of academic integrity occur when students fail to cite research sources properly, engage in unauthorized collaboration, falsify data, and in other ways outlined in the Code of Academic Integrity. Students accused of academic integrity violations should contact the Office of Academic Integrity to learn more about their rights and options in the process. Outcomes can range from failure of assignment to expulsion from the University, including a transcript notation. The Office of Academic Integrity maintains a permanent record of the violation.
More information is available from the Office of Academic Integrity at studentconduct.gwu.edu/academic-integrity. The University’s “Guide of Academic Integrity in Online Learning Environments” is available at studentconduct.gwu.edu/guide-academic-integrity-online-learning-environments. Contact information: rights@gwu.edu or 202-994-6757.
Support for students outside the classroom
Virtual academic support
A full range of academic support is offered virtually in fall 2020. See coronavirus.gwu.edu/top-faqs for updates.
- Tutoring and course review sessions are offered through Academic Commons in an online format. See academiccommons.gwu.edu/tutoring
- Writing and research consultations are available online. See academiccommons.gwu.edu/writing-research-help
- Coaching, offered through the Office of Student Success, is available in a virtual format. See studentsuccess.gwu.edu/academic-program-support
- Academic Commons offers several short videos addressing different virtual learning strategies for the unique circumstances of the fall 2020 semester. See academiccommons.gwu.edu/study-skills. They also offer a variety of live virtual workshops to equip students with the tools they need to succeed in a virtual environment. See tinyurl.com/gw-virtual-learning
Writing Center
GW’s Writing Center cultivates confident writers in the University community by facilitating collaborative, critical, and inclusive conversations at all stages of the writing process. Working alongside peer mentors, writers develop strategies to write independently in academic and public settings. Appointments can be booked online. See gwu.mywconline.
Academic Commons
Academic Commons provides tutoring and other academic support resources to students in many courses. Students can schedule virtual one-on-one appointments or attend virtual drop-in sessions. Students may schedule an appointment, review the tutoring schedule, access other academic support resources, or obtain assistance at academiccommons.gwu.edu.
Disability Support Services (DSS) 202-994-8250
Any student who may need an accommodation based on the potential impact of a disability should contact Disability Support Services to establish eligibility and to coordinate reasonable accommodations. disabilitysupport.gwu.edu
Counseling and Psychological Services 202-994-5300
GW’s Colonial Health Center offers counseling and psychological services, supporting mental health and personal development by collaborating directly with students to overcome challenges and difficulties that may interfere with academic, emotional, and personal success. healthcenter.gwu.edu/counseling-and-psychological-services
Safety and Security
- In an emergency: call GWPD 202-994-6111 or 911
- For situation-specific actions: review the Emergency Response Handbook at safety.gwu.edu/emergency-response-handbook
- In an active violence situation: Get Out, Hide Out, or Take Out. See go.gwu.edu/shooterpret
- Stay informed: safety.gwu.edu/stay-informed