Table of contents
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).
As a result, it is important that all members of society have a basic understanding of cloud computing. Software developers must understand t because a lot of today software is designed to run in cloud-computing environments. Policy makers 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 security/privacy and 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, distributed storage, and databases.
- Use various 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 ISTIO.
- 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.
The final course grade will be calculated as follows:
|Item||Percentage of final grade|
|Reading summaries and Q & A||25%|
|Meet your friendly prof.||5%|
Students will be assigned the following grades based on the percentages above.
|A||90 - 100%|
|B||80 - 89.9%|
|C||70 - 79.9%|
|D||65 - 65.9%|
We may make these grade intervals more generous, but we will not adjust them to be less so. We will use +/- grading.
Homeworks: These will be individual written assignments that will be handed in via Gradescope. We will assign about one writen assignment per course module. We will also assign one additional homework assignments that will allow you to express your cumulative understanding of a set of readings in a creative way.
Projects: Most projects will be group programming assignments done in groups of three. We will assign about two projects during the course of the semester.
*Paper summaries: Students must submit summaries for most required readings for this class. Summaries must be posted as private notes addressed only to the instructors and TAs on Piazza. Notes must be tagged with the corresonding lecture (e.g., "lec3_sum"). Please see this link for more informaton about how to read research papers and write your summaries.
Team presentations: At the beginning of most lectures, one team will present their summary and answers to any questions posed about the reading. This presentation should last between 10-15 min. After presenting, teams should turn in their slides on Canvas under the 'Team presentation' assignment.
Meet your friendly prof: During the course of this semester, you must meet your course instructor (Raja) at least once during the semester during his office hours, either in-person or virtually. During this meeting, this meeting your instructor will assess your understanding of the previous lecture, reading, or homework.
Raja, Anne, and Hifza's office 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.
- 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.
- Piazza: All course announcements will be posted to the COMP 118 F'20 course discussion board on Piazza. Please check this board frequently and subscribe to new notifications.
- Gradescope: Written homeworks will be graded and handed back on the COMP 118 F'20 Gradescope page.
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 not mandatory.
Extensions & Late policy: You may miss up to two paper summaries during the semester w/o penalty. Otherwise, we do not grant extensions for homeworks or any project-related material unless there are extremely extenuating circumstances.
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 dinosaur. This note must be private, adddressed only to your instructor and both your TAs, and submitted by Monday, September 14th.
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.
- Homeworks: We expect you to work individually. After completing a question, you may discuss your answers and obtain feedback from other members of the class. You must write up answers to questions individually.
- 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 teams of three. 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.
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.
Accommodations for the pandemic: The course instructors realize that we are all doing our best in a very difficult time. As a result of the pandemic, we know you might be experiencing stress or might be more strained for time. If you are experiencing any such difficulties, please come talk to us and we will do our best to help you succeed in the class.
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 over Zoom (or in-person) 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.
The course policies and course descriptions were informed by the New Computer Science Faculty Teaching Workshop, Michael Hughes' COMP-150 Bayesian Learning (Fall 2018) website, and Justine Sherry's 15-829 Programmable Networks (Fall 2018) website. The course syllabus is informed in part by Greg Ganger, Majd Sakr, and George Armvrosiadis's 15-719 Cloud Computing (Spring 2019) class, and Orran Krieger and Peter Desnoyer's Cloud Computing (Spring 2019) class. The course website's theme is based on Pelican Alchemy and Jason K. Moore's Mechanical Engineering Capstone Course at UC Davis.