Table of contents
1 Description
Society relies on cloud computing---i.e., the practice of developing and using software services that run on top of rented, remotely-located software and hardware---for almost everything. For example, we rely on it when shopping (e.g., Amazon), when conducting financial transactions (e.g., online brokers), when traveling (e.g., flight-booking software), when entertaining ourselves (e.g., Netflix), when collaborating at work (e.g., Google Docs), and even when getting medical diagnoses (e.g., radiology scans in the cloud).
All members of society are incentivized to have a basic understanding of cloud computing due to our reliance on it. Software developers must understand it because a lot of today's software is designed to run in cloud computing environments. Policymakers must understand it to create security & privacy regulations that govern cloud providers' use of customers' data. The general public must be aware of it so that they can evaluate policy decisions, make informed decisions about which clouds to use, and grok how the software and services they use in their everyday lives work.
This course will cover foundational aspects of cloud computing. We will cover: 1) Why cloud computing has emerged as the dominant paradigm for developing and using software; 2) Important distributed-systems background that is needed to understand and evaluate cloud technologies; 3) The software and hardware technologies that make cloud computing possible, and 4) How to program for cloud environments. If time allows, we will discuss emerging trends in cloud computing.
Key outcomes: After completing the course, students will be able to:
- Articulate why cloud computing has emerged as the dominant paradigm for computing in the 21st century.
- Understand, contrast, and evaluate the software and hardware technologies that form the basis of most cloud-computing environments. Examples of such technologies include: virtualization, consensus protocols, and distributed storage/databases.
- Understand and use technologies for developing and running software in the cloud. Some possibilities include: 1) Infrastructure-as-a-service tools to allow developers to launch virtual machines or containers, such as AWS EC2; 2) Platform-as-a-service frameworks to allow developers to create applications using higher-level building blocks sold by the cloud providers, such as AWS EMR; 3) Frameworks for deploying distributed applications in the cloud, such as Kubernetes.
3 Prerequisites
- For undergraduates: COMP 40 (Machine Structure & Assembly Language Programming). Though not required, having taken COMP 111 (Operating Systems), COMP 112 (Networking), or COMP 117 (Internet-scale distributed systems) will help significantly.
- For PhD students and Master's students: a graduate or undergraduate course in computer systems, networking, or distributed systems taken at any university.
- If you are not sure you have the background needed for this class, please email one of the instructors! We will meet with you to discuss your background and the skills you should independently acquire to do well in this class. We want everyone to excel in this class.
4 Evaluation goals & structure
The final course grade will be calculated as follows:
Item | Percentage of final grade |
Homeworks | 30% |
Projects | 20% |
Reading summaries and Q & A | 20% |
Team presentations | 15% |
In-class quizzes | 15% |
Students will be assigned the following grades based on the percentages above.
Grade | Interval |
A | 90 - 100% |
B | 80 - 89.9% |
C | 70 - 79.9% |
D | 65 - 65.9% |
F | < 65% |
We may make these grade intervals more generous, but we will not adjust them to be less so. We will use +/- grading.
5 What are the various assignments about?
*Paper summaries: Students must submit summaries for most required readings. They must also post three questions they have about the reading. Paper summaries are worth 20 points. Summaries must be posted to the relevant discussion threads on Canvas. Please see this link for more information about how to read research papers and write your summaries.
Homeworks: These will be individual written assignments that will be handed in via Gradescope. We will assign about one written assignment per course module.
Projects: Most projects will be group programming assignments done in groups of three. We will assign approximatley two projects during the semester.
Team presentations: At the beginning of most lectures, one team will present the three most popular questions asked in students' summaries. They will try to answer them. After presenting, teams must turn in a PDF of their slides on Canvas under the 'Team presentation' assignment.
- In-person quizes: We will have short quizes at tend of each module
- to test students' understanding.
6 Office hours
Raja & Tomislav's hours will be announced the first week of class.
Please come to office hours so that we can get to know every one of you. Valid reasons to come to office hours include, but are not limited to: chatting about the course, discussing any of the readings, discussing course projects, discussing research ideas or anything you find cool about the class, or just wanting to say hi and introduce yourselves.
7 Where should I look for important information?
- Course website: This website contains invaluable resources to help you with your project and paper critiques. It is a living document that will be updated regularly throughout the semester. Please check it frequently.
- Canvas: You will submit reading summaries for readings as replies to discussions on Canvas. We will also use Canvas to host your grades.
- Piazza: All course announcements will be posted here. You can also use Piazza to ask questions to the instructors or to the class. Please check this board frequently and subscribe to new notifications.
- Gradescope: Written homeworks will be submitted, graded, and handed back here.
8 Course policies
Attendance: We encourage you to attend class and participate in discussions. Doing so will help foster a lively, positive class environment for both you and your fellow classmates. However, attendance is (sadly) not mandatory.
- Extensions & Late policy: Anything but the final project and
- in-class presentations can be submitted up to 7 days late with 5 percent per day late penalty. You cannot submit the final project write-up late as it is due very close to when grades are due for the semester. Any in-class presentations cannot be late!
Extra credit easter egg: For 5 points of extra credit added to Homework 0, post a private note on Piazza with a link to a picture of your favorite octopus. This note must be private, addressed only to your instructor and both your CAs and submitted by Friday, September 13th.
Collaboration: Please talk to other people and share ideas! Much of this class is collaborative. We strongly encourage you to discuss ideas and obtain feedback on drafts from your classmates.
- Paper summaries and questions: Please write these up individually. After submitting a summary, you may look at other students' summaries on canvas to get a sense of how they understood the reading.
- Projects: We expect you to work in teams of three. You may work individually if mandated by the class size. You may use or modify any open-source codebase as part of your project. The core of your code, the entirety of your writeups, and the entirety of your presentations must be written by you and your teammates. Each team member must contribute equally and their contributions must be explicitly listed in each of the project documents (code, writeup, presentation). If you feel that a team member is not pulling their weight or if you feel your teammates are assigning you insufficient work or inappropriate work, please come talk to us.
- Team presentations: You will prepare slides on select topics and present them in class in your project teams. The core presentation must be created by you and your teammates and you must explicitly cite any external resources you use. Team members must speak for equal amounts of time during presentations. You are not allowed to adapt or use existing presentations on the topic that you find online. This is because we want you to have to think deeply about best to present ideas to the class; doing so will greatly enrich your own understanding of the material.
- Homeworks: We expect you to work in your project teams. After completing a question, you may discuss your answers and obtain feedback from other teams. You must submit one solution per team.
- ChatGPT: Feel free to use ChatGPT to help you understand homework assignments. However, please ensure you understand the material as we may ask similar questions during the in-sclass quizes during which laptops are not allowed. You should not use ChatGPT for any programming assignments or projects.
Academic Integrity: This course will strictly follow the Academic Integrity Policy of Tufts University. Students are expected to finish course work independently when instructed and to acknowledge all collaborators appropriately when group work is allowed. Submitted work should truthfully represent the time and effort applied. Please refer to Tufts' Academic Integrity Policy, available here.
9 Diversity statement
The instructors and CAs of this class welcome students from all backgrounds. We view diversity and differences in viewpoints as critical strengths to be celebrated, not squashed. This is an especially important to emphasize in systems because, as you will see, often the answer to many questions is "it depends."
We expect that all members of this class contribute to a respectful and inclusive environment for every other member of the class. This does not mean we cannot disagree or have different ideas. It does mean we must consider perspectives other than our own, though they may differ from our own beliefs/experiences. If something in class or in the course materials makes your uncomfortable, please arrange a time to talk with me about ways I can improve the course. Alternatively, you can arrange to speak with the CS Department Chair (Jeff.Foster@tufts.edu) about providing feedback that is anonymous to me.
10 Accommodations and wellness
Accommodations for Students with disabilities: Tufts University values the diversity of our body of students, staff, and faculty and recognizes the important contribution each student makes to our unique community. Tufts is committed to providing equal access and support to all qualified students through the provision of reasonable accommodations so that each student may fully participate in the Tufts experience. If a student has a disability that requires reasonable accommodations, they should please contact the StAAR Center (formerly Student Accessibility Services) at StaarCenter@tufts.edu or 617-627-4539 to make an appointment with an accessibility representative to determine appropriate accommodations. Please be aware that accommodations cannot be enacted retroactively, making timeliness a critical aspect for their provision.
Children in class: All exclusively breastfeeding babies are welcome in class as often as is necessary. For older children and babies, I understand that unforeseen disruptions in child-care often put parents in the position of having to choose between missing class to stay at home with a child and leaving them with someone you or the child does not feel comfortable with. While this is not meant to be a long-term child-care solution, occasionally bringing a child to class in order to cover gaps in care is perfectly acceptable.
Student wellness: As a student, you may experience a range of challenges that can interfere with learning, such as strained relationships, increased anxiety, substance use, feeling down, difficulty of concentrating, and/or lack of motivation. These mental health concerns or stressful events may diminish your academic performance and/or reduce your ability to participate in daily activities. There are resources at Tufts to help. You can learn more about confidential health services available on campus here. For mental health emergencies, please contact the CMHS front office at 617-627-3360 during regular business hours or the counselor-on-call at 617-627-3030 after hours.
Academic support: The StAAR Center (formerly the Academic Resource Center and Student Accessibility Services) offers a variety of resources to all students (both undergraduate and graduate) in the Schools of Arts and Sciences, and Engineering, the SMFA, and The Fletcher School; services are free to all enrolled students. Students may make an appointment to work on any writing-related project or assignment, attend subject tutoring in a variety of disciplines, or meet with an academic coach to hone fundamental academic skills like time management or overcoming procrastination. Students can make an appointment for any of these services by visiting go.tufts.edu/TutorFinder, or by visiting go.tufts.edu/StAARCenter.
In case of emergency: If you, a family member, or a close friend are experiencing an emergency or crisis: absolutely do not worry about contacting me until you have some free time. In collaboration with other university resources, we will take care of getting your course work back on track after the crisis has passed.
11 Acknowledgments
The course policies and course descriptions are informed in part by the New Computer Science Faculty Workshop and numerous other classes at Tufts and other universities. The course syllabus is informed in part by Greg Ganger, Majd Sakr, and George Armvrosiadis's 15-719 Cloud Computing class, and Orran Krieger and Peter Desnoyer's Cloud Computing class. The course website's theme is based on Pelican Alchemy and Jason K. Moore's Mechanical Engineering Capstone Course at UC Davis.