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 103.
Final Exam Time and Location.
Wed, Dec 20, 2:15pm-5:00pm
(from registrar's final exam schedule). Location TBD.
Scott Stoller: Monday and Friday, 11:20am-12:50pm. New Computer Science 357. Also by appointment and whenever I am in my office and not unusually busy.
Yu Wang (TA): Wed 9:30am-11:00am and Thu 11:00am-12:30pm. Computer Science 2217.
In-Class Exercises. Many classes will include in-class exercises. Bring an Internet-enabled device (smartphone, tablet, or laptop) to class in order to submit your responses.
Exams. During exams, 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. Problem 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 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 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 assignment will be computed by multiplying the original score for that assignment 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. Each team member is responsible for ensuring that he or she contributes equally. If you believe that your teammates are preventing you from contributing equally, discuss the situation with the instructor immediately.
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, assignments, etc., are posted in Blackboard. 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 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 3 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. Please don't try to game the system, e.g., by quickly answering easy questions posted by your friend.
The University Senate has authorized that the following required statements appear in all teaching syllabi on the Stony Brook Campus.
Americans with Disabilities Act: 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, if any, are necessary and appropriate. All information and documentation is confidential. http://studentaffairs.stonybrook.edu/dss/
Academic Integrity: 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. Faculty is required to report any suspected instances of academic dishonesty to the Academic Judiciary. Faculty in the Health Sciences Center (School of Health Technology & Management, Nursing, Social Welfare, Dental Medicine) and School of Medicine are required to follow their school-specific procedures. For more comprehensive information on academic integrity, including categories of academic dishonesty please refer to the academic judiciary website at http://www.stonybrook.edu/commcms/academic_integrity/index.html
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 University Community Standards any disruptive behavior that interrupts their ability to teach, compromises the safety of the learning environment, or inhibits students' ability to learn. Faculty in the HSC Schools and the School of Medicine are required to follow their school-specific procedures. Further information about most academic matters can be found in the Undergraduate Bulletin, the Undergraduate Class Schedule, and the Faculty-Employee Handbook.
|Problem Sets and In-Class Exercises||10|
Teams are encouraged to use a version control system, such as Subversion or git, to manage project files.
Subversion: Servers: If your team would like a repository on the Computer Science Department's SVN server, send a request containing the course identifier (CSE535) and the names and SBU ID numbers of the team members to email@example.com, and a repository will be created within a few days. Clients: 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: Servers: Git repositories on bitbucket are free for up to 5 developers, on github are free for open-source code and inexpensive (expect $7/month) for private code, and on gitlab are free for up to 10GB. Clients: git is supported in Netbeans and Eclipse, and there are stand-alone git clients, including several listed here and Tortoise Git.