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.
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). Both exams will be open book, meaning that you may use anything printed on paper, but no electronic devices. Part of the project is to implement a distributed algorithm in DistAlgo, an extension of Python. You should know Python or be prepared to teach yourself Python. 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. Frey 105.
TA Ankit Arya: Wednesday, 10:30am-11:30am, Computer Science 2110, starting
TA Shachee Mishra: Thursday, 3pm-4pm, Computer Science 2110, starting Oct 2.
Professor Scott Stoller: Monday and Friday,
10:00am-10:45am and noon-12:45pm, Computer Science 1429. Also by appointment
and whenever I am in my office and not unusually busy.
Exam. Both 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 on Blackboard by 11:59pm on the due date.
Late Submissions. The lateness penalty for problem sets and project assignments is 5% per day. A problem set submitted after the end of class on the due date is considered 1 day late. The lateness penalty for demos is 10% per day. A demo held after the scheduled timeslot on the scheduled day is considered 1 day late.
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. In most cases, 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.
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 learning disability that may impact your course work, please contact Disability Support Services, ECC (Educational Communications Center) Building, room 128, (631) 632-6748. They will determine with you what accommodations are necessary and appropriate. All information and documentation is confidential.
Critical Incident Management. Stony Brook University expects students to respect the rights, privileges, and property of other people. Faculty are required to report to the Office of Judicial Affairs any disruptive behavior that interrupts their ability to teach, compromises the safety of the learning environment, or inhibits students' ability to learn.
|Problem Sets and In-Class Exercises||10|
Every team is encouraged to use a version control system, such as Subversion or git, to manage its project files.
Subversion: On the server side, the Computer Science Department's Windows Lab has a Subversion server (click on Services > SVN for details). If your team would like a repository on it, send a request containing the course identifier (CSE535) and the names and SBU ID numbers of the team members to firstname.lastname@example.org, and a repository will be created within a few days. On the client side, Netbeans and Eclipse both support Subversion, either natively or via a plug-in, or you can use a stand-alone GUI client, such as TortoiseSVN, or a command-line svn client (e.g., from cygwin).
Git: On the server side, Git repositories on bitbucket are free for up to 5 developers, and repositories on github are free for open-source code and inexpensive (expect $7/month) for private code. On the client side, git is supported in Netbeans and Eclipse, and there are stand-alone git clients, including several listed here, and Tortoise Git.