This course covers fundamental and advanced topics in design and implementation of software for asynchronous distributed systems, especially principles and algorithms underlying fault-tolerant distributed systems.
Prerequisites. Undergraduate or graduate course on computer networks, or permission of the instructor. Knowledge of Python, or willingness to learn Python on your own (see Course Work). Basic knowledge of databases, as background for the discussion of distributed databases.
Course Work. Readings (conference papers, journal papers, and lecture notes; no textbook), in-class exercises, problem sets, a midterm exam, a final exam, and a team project (2 students per team). Part of the project is to implement a distributed algorithm in DistAlgo, an extension of Python. You should know Python or be prepared to learn Python on your own. There will probably be one or two lectures on Python and DistAlgo to help you get started. Many online resources are available to help you learn Python, including a beginner's guide, tutorial, and reference manual on the official Python website.
Class Meeting Time and Location.
Monday and Friday, 1:00pm-2:20pm. Javits 111.
Scott Stoller: Monday 11:00am-12:30pm, and Friday noon-12:50pm and 2:20pm-3:00pm. New Computer Science 357. Also by appointment and whenever I am in my office and not unusually busy.
Yuxuan Shui (TA): Tue 3pm-4pm and Thu 5pm-6pm, Computer Science 2217.
Exam. Exams are open book, meaning that you may use anything printed on paper, but no electronic devices. Do not miss the exam. If you miss the exam, you will get a zero, unless there are convincingly documented extenuating circumstances (e.g., doctor's note stating that you were ill and unfit to take the exam).
Submission of Assignments. Problems sets should be submitted as printouts in class on the due date and on Blackboard by 11:59pm on the due date. Project assignments should be submitted following the instructions in the project description.
Late Submissions. The lateness penalty for problem sets and project assignments is 5% per day or fraction thereof. A problem set is considered late if either the printout or the electronic submission is late. The lateness penalty for demos is 10% per day of fraction thereof. A demo is considered late if it is not held during the team's scheduled demo timeslot.
Grading. Each assignment is graded relative to some maximum number of points (e.g., 20). The maximum number of points is unrelated to the weight of the assignment in the course grade. Each score is normalized into a number between zero and one (e.g., 19/20 -> 0.95) and then multiplied by the weight of the assignment to obtain a weighted score. Course grades are based primarily on the sum of the weighted scores.
Grading of Teamwork. Each project assignment will receive a score reflecting the quality of the work. At the end of the semester, each team member's score for that assignment will be computed by multiplying that score by an individual contribution factor (ICF) that reflects the team member's overall contribution to the team effort for the entire semester. Typically, every team member contributes equally to the overall effort, in which case every team member's ICF is 1. If some team member's overall contribution was, for example, only 90% of his or her fair share, then that team member's score for each project will be computed by multiplying the original score for the project by that team member's ICF of 0.9. A team member who contributes more than his or her fair share will have an ICF larger than 1. We will evaluate each team member's contribution using all available information, including the summary of contributions in the README of each project assignment.
Blackboard. Blackboard discussion forums are an important communication tool. You are responsible for reading each discussion forum frequently or (more conveniently) subscribing to each discussion forum, by clicking the Subscribe button in the header row above the list of threads in the forum; you will then receive an email informing you of each post. Lecture notes, assigments, etc., are posted in Blackbooard. I recommend subscribing to content changes in the course: click the down arrow next to your name in the right part of the page header, select Settings in the resulting menu, and then select Edit Notifications Settings.
Incentive for Helpful Postings. As an additional incentive for helpful postings (e.g., answering other students' questions), beyond the intrinsic satisfaction of being helpful, at the end of the semester, the 2 students with the largest numbers of helpful postings (provided it is at least 2 postings) will get +1% on their sum of weighted scores (cf. the Grading item under Policies on CSE535 home page). Note that this is equivalent to getting an additional 10% on the midterm exam, since the midterm exam is worth 0.1 of the course grade. I will determine which postings count, in case anyone tries to game the system (e.g., quickly answer easy questions posted by their teammate.
Academic Integrity. In Fall 2006, the Undergraduate Council adopted the following statement and mandated that it be included in all undergraduate course syllabi.
Each student must pursue his or her academic goals honestly and be personally accountable for all submitted work. Representing another person's work as your own is always wrong. Any suspected instance of academic dishonesty will be reported to the Academic Judiciary. For more comprehensive information on academic integrity, including categories of academic dishonesty, please refer to the academic judiciary website at http://www.stonybrook.edu/uaa/academicjudiciary/
Disabilities. The Provost requests that the following information be included in the syllabus for every course. If you have a physical, psychological, medical or