Data centers form the backbone of large-scale applications today, powering everything from popular online platforms such as Zoom, TikTok, and ChatGPT to critical enterprise systems in healthcare and other industries. Data centers are also expanding and evolving, with intense competition and rapid adoption of new technological innovations.
In this course, students will learn how next-generation data centers work. We will explore the requirements of data center applications (search, AI, etc.) and the characteristics of data center hardware (servers, networks, accelerators, etc.). We will learn how to provide isolation, reliability, high performance, and energy efficiency for data center applications. We will also discuss the security, economic, and sustainability challenges facing data center operators. Students will learn how to analyze tradeoffs in system design and will gain hands-on experience with the course material by implementing a cloud application, deploying it in the cloud, and analyzing and improving its performance.
The course material will be presented primarily through lectures. Discussion sections are led by the TA and focus on providing guidance about the programming projects and a forum for the group design assignments. We will attempt to podcast both lectures and discussion sections. Please note that podcasts do fail from time to time; attending in person is the most reliable way to participate in the course.
The course schedule will be posted as we go along. Topics will include: data center applications, virtualization, containers, queueing and scheduling, memory and storage technologies, reliability, orchestration, data center networks and congestion control, hardware accelerators, security, energy efficiency, and carbon emissions.
Most lectures have reading associated with them, which you should complete before lecture. The textbook for this course is the third edition of The Datacenter as a Computer, by Luiz André Barroso, Urs Hölzle, and Parthasarathy Ranganathan. You can obtain a free PDF of this book from the publisher's website. We will supplement readings from this textbook with readings from other books or papers.
The course will have two individual homework assignments and you will submit these via Gradescope.
We encourage you to discuss the homework questions with other students; you can learn a lot from your peers. However, you should write up your own answers independently. As a rule of thumb, you should be able to discuss a homework problem in the hall with others, go home, and then write up your answer to the problem on your own.
The course will include two group design assignments. We will use some of the discussion sections to begin these group assignments (but you may also complete them outside of the discussion sections). These assignments will also be submitted via Gradescope.
The programming projects for this course include three labs and a fourth open-ended project. There is also an ungraded warm-up lab to get you familiar with the tools that we will use for the labs and with the Go programming language, which you will use for the projects.
Students may work on the labs in groups of 2 or 3. Note that our expectations for the open-ended project will scale up proportionately for groups of 3.
For the projects, you are encouraged to ask for help from the instructor, from the TA, and from other students. However, you may not: share code or text, look at project solutions that might be on the Internet, or use someone else's code or text in your solutions. Sharing ideas, explaining your approach to someone else to see if they know why it doesn't work, or providing debugging suggestions to another student are all ok.
The course will include several short in-class quizzes during lecture, which will be based on the lecture material. We will drop your two lowest quiz grades.
There is no midterm or final exam. For homeworks, design assignments, and programming projects, we will reduce your grade by 20% for each day that an assignment is late. The one exception to this is the final programming project, which may not be submitted late.
The academic honesty guidelines outlined by Charles Elkan apply to this course. If you find yourself in circumstances that tempt you to violate these guidelines, I encourage you to talk to the course staff for assistance.
In this course, you may not use Generative AI tools such as ChatGPT, GitHub Copilot, Claude, or Gemini to write your assignments. This includes asking these tools to write code for the labs or asking these tools to write text for any assignment. In general, copying text or retyping text that was generated by these tools is not permitted in this course. If you are found to have violated this policy, you (and your teammates if applicable) will receive a zero on the portions of the assignments that you used Generative AI for.