This course covers fundamental and advanced topics in design and implementation of software for 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. The planned course work (especially exams) is subject to change, especially if there is a switch to online instruction due to COVID-19. Part of the project is to implement a distributed algorithm in DistAlgo, an extension of Python. There is a DistAlgo website, a DistAlgo SourceForge project, and a DistAlgo github repo. You should know Python or be prepared to learn Python on your own. There will probably be a lecture on DistAlgo to help you get started.
Class Meeting Time and Location.
Monday and Wednesday, 11:40am-1:00pm. New Computer Science 120.
December 15, 2:15pm-5:00pm, in NCS 120 (our usual classroom).
Instructor: 9:30am-10:15am on Mon, Tue, Wed, and Fri. Office hours will be held online. During office hours, I will be available on Google Chat. Login to Google Chat using your @stonybrook.edu Google account, and enter my name in the search box. This will create a private chat message thread for us. (If Chat says my status is "away", don't always believe it; chat a message to me anyway.) If you'd like to talk, create a Zoom or Google Meet meeting, and send me the link in Google Chat; if you'd like to talk with me together with some teammates, send them the link, too. If I'm currently talking with other students, I'll mention this in the chat and tell you when I'm ready to join your meeting. In online meetings, I'll follow your preference and lead on the use of video: I'll start with my camera off and will turn it on if you turn on your camera.
TA: Murray Coueslant: 8:45am-9:45am Tue and Thu. Held online in the same way as the instructor's office hours.
TA: Duin Baek: 10:30am-11:30am, Monday and Wednesday. Held online in the same way as the instructor's office hours.
Announcements, lecture notes, assignments, etc., are posted in Blackboard. I recommend enabling email notifications (or your other preferred form of notification) for announcements, content changes, etc. To do this, 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. More detailed instructions are here: Blackboard Help: Notifications.
Blackboard discussion forums are an important communication tool in this course. I recommend 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.
|Problem Sets and In-Class Exercises||10|
The project's weight is split among the phases as follows: phase 2: 55%, phase 3: 15%, phase 4: 30%.
Masks. By order of the Provost: Everyone participating in this class must wear a mask or face covering at all times or have the appropriate documentation for medical exemption. In addition, if students need to drink or eat, they should step out of the classroom to do so. Any student not in compliance with this policy will be asked to leave the class. If a student does not comply or leave the classroom, the instructor will end the class and report the name and SB ID number of the non-compliant student to the Office of Student Conduct and Community Standards.
Electronic Communication. (1) It is your responsibility to read email in your official University email account. For most students that is Google Apps for Education, but you may verify your official Electronic Post Office (EPO) address. (2) It is your responsibility to read the Blackboard discussion forums for this course. I post announcements, clarifications, etc., in them. Questions that do not require confidentiality should be posted in them (rather than sent by email), so everyone can benefit from the answers.
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 formally documented extenuating circumstances (e.g., doctor's note stating that you were ill and unfit to take the exam).
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.
Repository. Code and other files for the course project must be stored in a private (i.e., not accessible to students on other teams) repository that maintains a commit history. If a team's code is in a public repository during the semester, and another team copies it or is suspected of copying it, both teams will be charged with suspected academic integrity violations for code sharing. Teams may be required to give the instructor and TA access to the team's repository for examination of the commit history.
Submission of Assignments; Late Submissions. Problem sets and project assignments should be submitted on Blackboard by 11:59pm on the due date. Problem sets and project assignments submitted after the deadline receive a -1% penalty per 6 hours late (rounded up to the next multiple of 6). 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.
Teamwork. Each team member is responsible for ensuring that he or she contributes equally, and that the Contributions section of each assignment documents their contributions accurately and in sufficient detail. This is important in case of a subsequent dispute about a team member's contributions. If you believe that your teammates are preventing you from contributing a fair share, or that one of your teammates is not contributing a fair share, it is critical to discuss the situation with the instructor promptly, so that an appropriate response can be taken before it is too late. Team members not contributing their fair share may receive individual project scores lower than the team's scores, or they may, with the instructor's approval, be removed from the team.
Incentive for Helpful Postings. As an 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. 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.
Missed work due to extenuating circumstances. Students are expected to attend every class, report for examinations and submit major graded coursework as scheduled. If a student is unable to attend lecture(s), report for any exams or complete major graded coursework as scheduled due to extenuating circumstances, the student must contact the instructor as soon as possible. Students may be requested to provide documentation to support their absence and/or may be referred to the Student Support Team for assistance. Students will be provided reasonable accommodations for missed exams, assignments or projects due to significant illness, tragedy or other personal emergencies. Please note, all students must follow Stony Brook, local, state and Centers for Disease Control and Prevention (CDC) guidelines to reduce the risk of transmission of COVID. For details, see SBU's Latest COVID Guidance and, regarding masks, Student FAQs: Face Masks/Coverings.
Academic Integrity Statement. 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/.
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.
Student Accessibility Support Center Statement. If you have a physical, psychological, medical or learning disability that may impact your course work, please contact Student Accessibility Support Center, Stony Brook Union Suite 107, (631) 632-6748, or at firstname.lastname@example.org. They will determine with you what accommodations, if any, are necessary and appropriate. All information and documentation are confidential. Students who require assistance during emergency evacuation are encouraged to discuss their needs with their professors and Student Accessibility Support Center. For procedures and information go to the following website: http://www.stonybrook.edu/ehs/fire/disabilities.
You may use any repository satisfying the course repository policy. Here are some suggestions.
Git: Free private Git repositories on GitHub and GitLab allow unlimited collaborators. Free private Git repositories on Bitbucket allow 4 or fewer team members.
Subversion: The Computer Science Department runs a Subversion server. If your team would like a repository on it, send a request for a repository, mentioning that it is for this class, and specifying the names and SBU ID numbers of all team members, to email@example.com. A repository will be created within a few days. You can then access your team's repository using your Computer Science Department Windows Lab username with your Stony Brook ID as the password.