CS:5620 Distributed Systems and Algorithms
Fall 2016

12:30-1:45 TTh Room 75 SH (Schaeffer Hall)

Sriram V. Pemmaraju
101G MLH, sriram-pemmaraju@uiowa.edu, 319-353-2956
Office Hours: 1:00-2:00 M, 10:30-11:30 W, 2:00-3:00 F (and by appointment)

Course website: http://www.cs.uiowa.edu/~sriram/5620/fall16/
Department website: http://www.cs.uiowa.edu/

Modern life is increasingly dependent on networked services such as web searching, e-commerce, video-conferencing, stock trading and net banking, social media, video streaming, etc. Networks of sensors provide a variety of specialized services such as testing integrity of bridges, assessing nutrient content of farm soil, etc., whereas networks of mobile devices are being used for tasks such as gathering real-time blood pressure readings from patients, providing health-related alerts, etc. Also, with the increasing need to quickly process massive amounts of data, distributed systems are playing a key role in "big data" analytics. While physical networks provide the underlying connectivity, various services built on top of these networks are examples of distributed systems. The objective of this course is to study some of the foundational issues that arise in the design of distributed systems (but which may be absent in centralized or sequential systems). These issues include computing with local or partial knowledge, faults and designing fault-tolerant systems, asynchrony and the cost of simulating synchrony, randomization versus determinism in distributed settings, achieving parallelism and trade-offs between communication and computation. A tentative list of specific topics that we will cover in this course are:

The official prerequisites for the course are undergraduate algorithms (CS: 3330 or equivalent) and undergraduate operating systems (CS: 3620 or equivalent). Background in undergraduate algorithms will help you precisely describe distributed algorithms in pseudocode or in plain English, understand and effectively use asymptotic notation, understand and construct simple proofs of correctness of distributed algorithms, understand and perform simple round-complexity and message-complexity analysis of deterministic and randomized distributed algorithms. Background in operating systems will prove quite useful when we encounter topics such as inter-process communication, synchronization, threads, deadlock and mutual exclusion.

There is no required textbook for the course. However, much of the material will come from Professor Roger Wattenhofer's lecture notes and Professor Gopal Pandurangan's lecture notes and these collections of notes will serve as an "informal" textbook for the course. On occasion, material will be drawn from other sources including research papers, other online notes, and textbooks. The textbooks that are most likely to be sources of material are:

You are not required to buy any of these books and lecture notes or links to online sources will be posted for any material that is not in Roger's notes or in Gopal's notes.

Teaching Assistants
There is no Teaching Assistant (TA) assigned to this course yet. If a TA does get assigned, information such as office hours and location will be posted on the course website.

Plus/Minus grading will be used for the course. There are two components of evaluation that will collectively determine your grade.

Solutions to programming problems will have to submitted via ICON's dropbox feature. Grades will also be published on ICON. Homeworks, exams and solutions to these will be regularly posted on the course page (http://www.cs.uiowa.edu/~sriram/5620/fall16/) and all together these will form a significant study resource for students.

Tardiness and Absences
Late submissions will not be accepted and make-up exams should not be expected. To get credit for assignments you should plan on turning in what you have on time. Having said this, it is also worth noting that this course will follow the University and College of Liberal Arts and Sciences (CLAS) policies that require that students be allowed to make up missed examinations and assignments due to illness, certain University activities, circumstances beyond a student's control (such as a death in the family), or mandatory religious obligations. See http://clas.uiowa.edu/students/handbook/attendance-absences for more details on this policy. Attendance will not be marked, however there is a strong correlation between attendance and performance in the course. For most students, to be successful in this course will require consistent attendance.

The key to completing homeworks on time is starting early and asking questions. The instructor and the TA will be glad to help with any questions you may have on homeworks, either by e-mail or in person. So please feel free to visit us often during our office hours and if necessary, outside our office hours as well by making an appointment.

Communicating with Instructors and TAs
Asking the instructors and TA questions via e-mail is quite appropriate and any e-mails related to CS:5620 will be answered within 24 hours of e-mail receipt. You should make sure to include CS:5620 in the subject line to ensure that your e-mail is not consumed by spam filters. Try to state your question(s) as clearly as possible. The more easily understood you are, the more likely it is that you will receive a quick response. Occasionally the instructor or the TA may send e-mail announcement to all students in the class at your uiowa e-mail address. Note that you are responsible for all official correspondence sent to the uiowa address and so make sure that you check this e-mail account regularly. The instructor and TAs would also prefer receiving e-mails from your uiowa account, rather than from commercial e-mail providers (e.g., gmail or yahoo!).

Effort Level
According to University guidelines, a student should expect to work for 2 hours per week (outside the classroom) for each course credit. This is a 3 credit course and so you should expect to spend on average about 6 hours per week studying lecture notes and the textbook, solving homeworks, preparing for exams, etc. However, the "6 hours per week" estimate is an average and also presupposes that you attend classes regularly, pay attention in class, visit the instructor and the TA with your questions during their office hours, etc.

Administrative Home
This course is run by the Department of Computer Science which is part of the College of Liberal Arts and Sciences. This means that class policies on matters such as the add/drop deadlines, the second-grade-only option, and other related issues are governed by the College of Liberal Arts and Sciences (CLAS). Questions may be addressed to 120 Schaeffer Hall, or see the CLAS Academic Policies Handbook at http://clas.uiowa.edu/students/handbook. Students wishing to add or drop this course after CLAS deadlines must receive the approval of the Dean of CLAS. Details of the University policy of cross enrollments may be found online at https://provost.uiowa.edu/files/provost.uiowa.edu/files/crossenroll.pdf.

Accommodations for Disabilities
The University of Iowa is committed to providing an educational experience that is accessible to all students. A student may request academic accommodations for a disability (which includes but is not limited to mental health, attention, learning, vision, and physical or health-related conditions). A student seeking academic accommodations should first register with Student Disability Services (SDS) and then meet with the course instructor privately in the instructor's office to make particular arrangements. Reasonable accommodations are established through an interactive process among the student, instructor ,and SDS. For more information, see http://sds.studentlife.uiowa.edu/.

Academic Honesty
The components of evaluation for this course (homeworks and exams) are meant to test your individual mastery of the material. Hence none of these are collaborative and under no circumstances should you pass off the work of someone else as your own. Doing so would constitute academic dishonesty. This also applies to code or other material that you might find on the internet. Providing answers to another student also constitutes academic dishonesty.

We do want students to talk to each other about concepts and ideas that relate to the class. We believe that this type of peer-interaction can be quite helpful to students. However, this interaction needs to happen without actual exchange of written answers (e.g., code or pseudocode snippets) to homeworks. Of course, students are welcome (in fact, encouraged) to study together for exams.

If you are unclear about what constitutes academic dishonesty contact the instructor or consult the CLAS Code of Academic Honesty at http://clas.uiowa.edu/students/handbook/academic-fraud-honor-code. All CLAS students or students taking classes offered by CLAS have, in essence, agreed to the College's Code of Academic Honesty: "I pledge to do my own academic work and to excel to the best of my abilities, upholding the IOWA Challenge. I promise not to lie about my academic work, to cheat, or to steal the words or ideas of others; nor will I help fellow students to violate the Code of Academic Honesty." Any student committing academic misconduct is reported to the College and placed on disciplinary probation or may be suspended or expelled. See the CLAS Academic Policies Handbook at https://clas.uiowa.edu/students/handbook for more details.

Student Complaints
If you have any complaints or concerns about how the course is being conducted please feel free to talk to the instructor. You are also welcome to get in touch with Prof. Alberto Segre, the Computer Science department chair (alberto-segre@uiowa.edu, 319-335-1713, 14D MacLean Hall). Consult the CLAS statement on Student Rights and Responsibilities at http://clas.uiowa.edu/students/handbook/student-rights-responsibilities for more information.

Classroom Etiquette
Showing up to class late, leaving your cell phone ringer on, reading a newspaper in class, chatting with your friends, burying your head in laptop, etc., can be quite distracting to the instructor and to fellow students. If you are in class, it is your responsibility to pay attention and to make sure that you are not doing anything that makes it harder for fellow-students to pay attention. When disruptive activity occurs, a University instructor has the authority to determine classroom seating patterns and to request that a student exit immediately for the remainder of the period. One-day suspensions are reported to appropriate departmental, collegiate, and Student Services personnel (Office of the Vice President for Student Services and Dean of Students). For more information consult the CLAS statement on Student Rights and Responsibilities at http://clas.uiowa.edu/students/handbook/student-rights-responsibilities.

University Statement on Sexual Harassment
Sexual harassment subverts the mission of the University and threatens the well-being of students, faculty, and staff. All members of the UI community have a responsibility to uphold this mission and to contribute to a safe environment that enhances learning. Incidents of sexual harassment should be reported immediately. See the UI policy on sexual harassment at http://opsmanual.uiowa.edu/community-policies/sexual-harassment for assistance, definitions, and the full University policy. Also see http://www.sexualharassment.uiowa.edu/ for additional resources.

Reacting Safely to Severe Weather
In severe weather, class members should seek appropriate shelter immediately, leaving the classroom if necessary. The class will continue if possible when the event is over. For more information on Hawk Alert and the siren warning system, visit http://hawkalert.uiowa.edu/.