“Concurrent & Distributed Systems”
Fall 2019: Mondays & Wednesdays, 9:00am-10:15am, Exploratory L003
Instructor: Prof. Jonathan Bell
Email: [email protected] (Note: please use Piazza for all course contact)
Twitter: @_jon_bell_
Office: 4422 Engineering Building; (703) 993-6089
Office Hours: Mondays 10:15-11:00am, Wednesdays 2:30-3:15pm, anytime electronically via Piazza, or by appointment
GTA: Hamza Mughal
Office Hours: Mondays and Thursdays, 2pm-4pm, ENGR 5321
UTA: Isaiah King
Regularly available on Piazza
Contacting:
Please post on Piazza for course-related inquiries.
Pre-Requisites:
Students are required to have previously taken CS 367 (Computer Systems & Programming).
This is a programming intensive course. You need to be comfortable with programming in Java to be able to do the programming assignments (note: this semester, all assignments will be in Java). It is also not a good idea to take this class if your course/work schedule is already quite full.
Objectives:
The class focusses on issues that arise in the design and implementation of concurrent and distributed applications. Course work will involve several programming assignments.
Learning Outcomes:
- Demonstrate an ability to design and implement concurrent programs
- Demonstrate an understanding of the fundamental concepts in synchronizing concurrent processes and threads by using locks, semaphores and monitors
- Demonstrate an ability to design and implement distributed programs using current middleware technologies
- Demonstrate an understanding of the fundamental concepts underlying distributed programming including message passing and remote procedure calls
Readings:
Please note change in book from prior years:
Required textbook: “The Art of Multiprocessor Programming”, Revised Reprint, 1st Edition (Herlihy and Shavit) https://www.amazon.com/Art-Multiprocessor-Programming-Revised-Reprint/dp/0123973376/ (Also at the bookstore)
Recommended additional textbook (E-book): Distributed Systems 3rd Edition (van Steen and Tanenbaum) https://www.distributed-systems.net/index.php/books/distributed-systems-3rd-edition-2017/
Grading:
There will be five programming assignments. The software required for these projects is available on the computers in the IT&E Lab. You can also do the projects on your own computer. (The programming assignments involve programming in Java on a UNIX/Linux platform.) You must do the programming assignments individually.
40% Programming Assignments
15% Final Project
10% Quizes and in-class activities
15% Midterm Exam
20% Final Exam
Homework policy
Students must work individually on all homework 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. You are free to reuse small snippets of example code found on the Internet (e.g. via StackOverflow) provided that it is attributed. If you are concerned that by reusing and attributing that copied code it may appear that you didn’t complete the assignment yourself, then please raise a discussion with the instructor.
10% will be deducted for late HW assignments and late HW assignments will only be accepted for 24 hours after the due date. HW assignments submitted more than 24 hours 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. Homework that does not compile or run will receive at most 50% credit.
For fairness to all, there are no exceptions to the above rules.
In Class Activities:
Most lectures will feature interactive activities and/or quizzes that support the material being presented. These quizzes and activities are meant primarily to help me understand how well you (and the class as a whole) are understanding the material that day. These quizzes will be graded on a “did it” or “didn’t” basis: you either take the quiz, and you get the marks, or you did not take the quiz, and do not get the marks (that is, as long as you answer the questions, you get full credit, regardless of what the answers are). You must be present in class to take the quiz (participating in an online quiz remotely will be considered an honor code violation). You can miss up to three quizzes with no penalty.
You are strongly encouraged to bring your laptop or phone to class so that you can participate in the activities.
Schedule (subject to change):
# | Date | Topic | Notes | Slides |
---|---|---|---|---|
1 | 8/26/19 | Class Overview; Introduction to Concurrency | Reading: H&S 1.1-1.2 | PDF | Keynote |
2 | 8/28/19 | Processes & Threads | Reading: H&S 1.3-1.5 | PDF | Keynote | Code Examples |
3 | 9/4/19 | Mutual Exclusion | Reading: H&S 2.1-2.3 HW1 out |
PDF | Keynote |
4 | 9/9/19 | Concurrency and Correctness | Reading: H&S 3.1-3.7 | PDF | Keynote |
5 | 9/11/19 | Concurrency in Java | Reading: H&S 3.8, 8.1-8.5 | PDF | Keynote |
6 | 9/16/19 | Locking Strategies: Coarse, fine | Reading: H&S 9.1-9.5 | PDF | Keynote |
7 | 9/18/19 | Locking Strategies: Optimistic, Lazy | Reading: H&S 9.6-9.7 HW1 Due; HW2 out |
PDF | Keynote |
8 | 9/23/19 | Locking Strategies: Lock Free | Reading: H&S 5.6-5.8, 9.8, 9.9 | PDF | Keynote |
9 | 9/25/19 | Spin Locks and Contention | Reading: H&S 7.1-7.4 | PDF | Keynote |
10 | 9/30/19 | Barriers | Reading: H&S 17.1-17.3 | PDF | Keynote |
11 | 10/2/19 | Concurrent Programming Models | Reading: H&S 16.1-16.2 | PDF | Keynote |
12 | 10/7/19 | Network Fundamentals | Additional Reading: Saltzer Ch 7.1,7.2 HW2 Due |
PDF | Keynote |
13 | 10/9/19 | Midterm | Note: sample midterm available on Piazza | |
14 | 10/15/19 | Midterm Review; RPC/RMI | Midterm solutions on Piazza Additional Reading: Tannenbaum 4.2 HW3 out |
PDF | Keynote |
15 | 10/16/19 | Distributed App Architectures | PDF | Keynote | |
16 | 10/21/19 | Transactions, Agreement: 2PC | Reading: Tannenbaum 8.5 Prof Bell traveling, YouTube lecture |
PDF | Keynote |
17 | 10/23/19 | Agreement: 3PC | Reading: Tannenbaum Note 8.13; The Paper Trail 2PC, 3PC Prof Bell traveling, YouTube lecture |
PDF | Keynote |
18 | 10/28/19 | Consistency (Strict) | Reading: Tannenbaum 7-7.2 | PDF | Keynote |
19 | 10/30/19 | Consistency (Relaxed) | Reading: Tannenbaum 7.2-7.3. HW3 Due, HW4 out |
PDF | Keynote |
20 | 11/4/19 | Naming & DNS | PDF | Keynote | |
21 | 11/6/19 | Distributed Filesystems | Reading: OS-TEP Ch 49 | PDF | Keynote |
22 | 11/11/19 | GFS & MapReduce | Bonus: Podcast about how DropBox works | PDF | Keynote |
23 | 11/13/19 | Sharding & CDNs | Prof Bell traveling, YouTube lecture | PDF | Keynote |
24 | 11/18/19 | ZooKeeper & Curator |
HW4 due; Project Out ZooKeeper code example: Explained (YouTube), Empty, Finished Additional info: Podcast about ZooKeeper at PagerDuty, Blogpost testing ZooKeeper’s guarantees and comparing to Etcd/Consul |
PDF | Keynote |
25 | 11/20/19 | P2P | PDF | Keynote | |
26 | 11/25/19 | Byzantine Fault Tolerance | PDF | Keynote | |
27 | 12/2/19 | Security | Course evaluation in class | PDF | Keynote |
28 | 12/4/19 | Review | Final exam review and study questions on Piazza | PDF | Keynote |
12/7/19 | Project due (9 pm) | |||
12/16/19 | Final Exam from 7:30am – 10:15am |
Honor Code:
GMU is an Honor Code university; please see the Office for Academic Integrity for a full description of the code and the honor committee process, and the Computer Science Department’s Honor Code Policies regarding programming assignments. The principle of academic integrity is taken very seriously and violations are treated gravely. What does academic integrity mean in this course? Essentially this: when you are responsible for a task, you will perform that task. When you rely on someone else’s work in an aspect of the performance of that task, you will give full credit in the proper, accepted form. Another aspect of academic integrity is the free play of ideas. Vigorous discussion and debate are encouraged in this course, with the firm expectation that all aspects of the class will be conducted with civility and respect for differing ideas, perspectives, and traditions. When in doubt (of any kind) please ask for guidance and clarification.
Course Policy on Electronic Devices:
Please feel free to use laptops, tablets, etc. to take notes, review slides, etc. during class. I make only one request: If you know that you will need to be doing other things on your screen/device too (answering emails, purchasing concert tickets the moment they go on sale, perusing facebook etc), please sit in the back row, to ensure that other students are not distracted by your screen. We all need to do this stuff some times, and I have no judgements on you if you choose to sit in back with your screen open — just do not distract those sitting around you.
Accommodations for Disabilities:
If you have a documented learning disability or other condition that may affect academic performance you should: 1) make sure this documentation is on file with Office for Disability Services (SUB I, Rm. 4205; 993-2474; http://ods.gmu.edu) to determine the accommodations you need; and 2) talk with me to discuss your accommodation needs.
Privacy:
Students must use their MasonLIVE email account to receive important University information, including messages related to this class. See http://masonlive.gmu.edu for more information.
Notice of Mandatory Reporting of Sexual Assault, Interpersonal Violence, and Stalking:
As a faculty member, I am designated as a “Responsible Employee,” and must report all disclosures of sexual assault, interpersonal violence, and stalking to Mason’s Title IX Coordinator per University Policy 1412. If you wish to speak with someone confidentially, please contact one of Mason’s confidential resources, such as Student Support and Advocacy Center (SSAC) at 703-380-1434 or Counseling and Psychological Services (CAPS) at 703-993-2380. You may also seek assistance from Mason’s Title IX Coordinator by calling 703-993-8730, or emailing [email protected].