Tufts CS 117:
Internet-scale Distributed Systems
Fall 2024

Are you trying to decide whether CS 117 is right for you? If so, please visit the information page for prospective CS 117 students. It gives information about the course content, pre-requisistes, workload, etc.

Have you decided you would like to take the course? For Fall term 2024 admission to this class is by permission of the instructor only; students cannot sign up in SIS without prior authorization. A page is available with instructions for applying . Be sure to follow the instructions exactly and fill out the online application ASAP if you want to be considered for admission. The deadline for filling out the online application is: Wednesday April 3rd.

Course description

The World Wide Web, one of the most important developments of our time, is a unique and in many ways innovative distributed system. This course will explore the design decisions that enabled the Web's success, and from those will derive important and sometimes surprising principles for the design of other modern distributed systems.

We will introduce and draw comparisons with more traditional distributed system designs, including distributed objects, client/server, pub/sub, reliable queuing, etc. We will also study a few (easily understood) research papers and some of the core specifications of the Web. Specific topics to be covered include: global uniform naming; location-independence; layering and leaky abstractions; end-to-end arguments and decentralized innovation; Metcalfe's law and network effects; extensibility and evolution of distributed systems; declarative vs. procedural languages; Postel's law; caching; and HTML/XML/JSON document-based computing vs. RPC.

The purpose of this course is not to teach Web site development, but rather to explore lessons in system design that can be applied to any complex software system.

Logistics

Classes will meet Tuesdays and Thursdays from 4:30 PM - 5:45 PM US Eastern time, in room TBD.

Students are expected to attend all classes in person, and participation in class discussions is a component of your grade. Video recordings of individual classes will be made available only to students who have excused reasons for absence (illness, job interview, etc.) Please contact the Professor, in advance when practical, to have your absence approved and to get access to the corresponding recording. Classroom sessions will not be live streamed.

Instructor, TAs and Getting Help

This course will be taught by Professor Noah Mendelsohn. Noah's office hours will be listed on his home page. Our teaching assistant(s) for the course is/are TBD. Email sent to ta117@cs.tufts.edu will reach all of us. When you do need to contact Noah Mendelsohn only, you can e-mail him at noah@cs.tufts.edu.

For course news and Q/A we will be using Piazza (click here to enroll). If you have questions, please post them there.

Books

There are no books that you are required to buy, but several you might want to consider. Your alternative is to use Safari Books Online, an online eBook service to which Tufts students have access. Information about books and using Safari is available on the CS 117 Information Page.

Collaboration, use of Others' Work or AI Tools, and Academic Misconduct

Students should read the policy on Academic Integrity available at http://students.tufts.edu/student-affairs/student-life-policies/academic-integrity-policy. Absolute adherence to the Code of Conduct is demanded of the instructors, teaching assistants, and students. This means that no matter the circumstance any misconduct will be reported to Tufts University. You are especially warned that code is not to be shared, except with your partner(s), and all quotations in your written work must be properly set off with quotation marks and appropriate bibliography citations.

You are strongly encouraged to discuss problems and to brainstorm with friends and colleagues. This course is about broad architectural themes in computing systems. You will learn them much better if you discuss and debate them with other students, and with the course staff. However, except in cases where an assignment specifically allows you to collaborate with others or to adapt existing code, the code and other written work you submit must be entirely your own.

You must only submit writing and code that is your own original work, or jointly the work of you and your partner in the case of pair-programming projects. You must not submit writing or code that was created by or adapted from the output of ChatGPT or similar "artificial intelligence" tools. You must ensure to the extent that you reasonably can that sources you reference are not the result of such tools, unless those results have been curated and fact-checked by responsible and knowledgeable humans. If your work is in any way suggested by or influenced by such AI tools, then you must clearly explain when making your submission. Failure to follow these rules is typically a violation of the Tufts rules on Academic Integrity, and will be reported to the appropriate authorities.

In all cases where you use or adapt the materials of others, you must respect applicable copyrights. In general, such copyrights do not prevent you from using small fragments of a line or two of code or text, but for anything larger, you must make sure that the license accompanying the code or written work allows you to copy it.

Every source of assistance must be acknowledged in writing. There is never a penalty for seeking help with a problem, but help must be acknowledged, and you must only submit work that you completely understand. You will be graded on what you have learned and on the quality of your own contributions. If you have any doubt as to whether what you're doing is appropriate it is your responsibility to check in advance!

Programs and written material you prepare for this course must not be posted online, except when the assignment specifically requires that you do. For example, it is not acceptable to post your assignment solutions for public access on GitHub. You are encouraged to submit general programming questions to online forums such as Stack Overflow. Questions about particular homework problems must never be posted to public fora — send an e-mail to the course staff.

(This policy is adapted from the one used by Ming Chow for the summer 2012 edition of COMP-15.)