Class Meetings: Mondays, Wednesdays 09:00 - 10:20, CIT 368
Role | Name | Office Hours |
---|---|---|
Instructor | Akshay Narayan akshayn@brown.edu | Mondays 10:30 - 12:00 (and by appointment), CIT 545 |
Co-Instructor | Franco Solleza franco_solleza@brown.edu | Tuesdays, Wednesdays 10:30-12:30, CIT 102 |
HTA | Aryan Singh aryan_singh@brown.edu | Mondays 16:00 - 18:00 CIT 102, Wednesdays 20:00 - 22:00, CIT 201 |
UTA | Edward Wibowo edward_wibowo@brown.edu | Tuesdays 16:00 - 17:00 CIT 203, Thursdays 16:00-17:00 CIT 102 |
You can reach staff in office hours, via the class discussion board, or (for private questions) via email. Course logistics are also available on this calendar.
Registration FAQ | Description | Schedule | Current Week
How can we understand the performance of network systems and make them faster? To explore this question, we will break it down into pieces, including (i) how to define and measure a system’s performance, (ii) how to determine what factors in the system’s design affect its performance, and (iii) how to use this information to make the system faster. Through lectures, labs, readings, and hands-on programming projects, we will explore topics including throughput-latency curves, tradeoffs between open and closed request generation, and concurrency. Hands-on projects will involve modern Linux technologies such as perf and io_uring, as well as modern microservice architecture tools such as Kubernetes. The class will consist of lectures, short homework assignments that reinforce lecture content, and 4 project assignments with programming and technical writing components that explore these topics in greater detail.
This is the first offering of this class; students should anticipate technical difficulties, and the course components and schedule are subject to change.
Due to constrained TA resources, this offering of CS 1675 will be capped at 40 students. Students requesting an override must (a) have fulfilled the prerequisites (CS 1680, 1670, or equivalent) and (b) complete course assignments during shopping period. All registered students will be responsible for completing all course assignments regardless of when they register for the class. To join the override waitlist, please fill out this form.
If you wish to audit the class, note that the aforementioned limits on TA resources still apply, so we won’t be able to offer auditors grading support or support in office hours.
The largest component of this class is a series of four course projects. Each project will involve an implementation task, an experimental evaluation task, and a project writeup. Course staff will grade projects based on the correctness of the implementation and experimental evaluation components, and the clarity and completeness of the project writeup. Projects will be graded during meetings with course staff, and students should be able to answer technical questions about the project during these grading meetings.
Projects in this offering of 1675 will be implemented in Rust. Our colleagues at Brown have recently published a great book to help students learn Rust; we expect that Chapter 4, “Ownership,” will be especially helpful for this class. There are also great traditional resources such as The Rust Programming Language book, the standard library documentation, and Rust by Example.
This class will also involve reading-based homework assignments. Students will read a technical document that reinforces lecture content and answer questions to test their understanding. Homework assignments will be graded on writing clarity and response correctness.
Students should expect to spend 3 hours per week in lecture, a further 3 hours per week on homework assignments, and approximately 100 hours on the class projects, for a total of at least 180 hours over the course of the semester.
To conserve the course staff’s grading effort, projects should be completed on time. However, in recognition of the need for some flexibility, students are allowed three “project late days” to submit projects past their deadline with no penalty, and one “homework late day” to submit homework assignments past their deadline with no penalty. Project late days cannot be used for homework assignments and vice versa. Late days cannot be used past the week the assignment is due in (i.e., the latest possible submission date for an assignment is at 23:59 on the Friday of the week it is originally due). Assignments won’t be accepted for grading beyond their last possible submission date or if no late days remain. There is no credit for unused late days at the end of the semester. Any fraction of a late day used counts as one late day. While weekends and University holidays don’t consume late days, note the above policy about the latest possible due date of each assignment. If serious extenuating circumstances arise after late days are exhausted, contact Akshay.
Students should understand and follow the Brown Academic Code and the Code of Student Conduct.
Additionally, specific to this course, we encourage working with other students to build conceptual understanding and debug software issues. However, each student is responsible for their own project implementation and writeup, and their own homework response. Students must understand their submissions; instructors will interview and quiz students about their answers as part of the grading process to determine this.
For all class assignments, students must cite all sources (people, websites, papers, etc.) that they consult as a part of their work. External sources include but are not limited to previously published articles, blog posts, Stackoverflow or similar sites, conversations with other people, etc. This policy is not meant to discourage the use of external sources, but rather to codify a standard academic practice. Be generous with citations.
Finally, by taking this class, you agree to never post solutions for any assignments publicly.
Dates are tentative. Changes will be announced in class.
Date | Event |
---|---|
22 January | HW 0: Evaluating Systems released |
27 January | Project 0: Woonsocket released |
3 February | HW 0 due |
4 February | End of shopping period |
12 February | Project 0 due |
12 February | Project 1: Modern OS Interfaces released |
19 February | HW 1: C10K released |
3 March | Project 1 due |
5 March | Project 2: Concurrency released |
10 March | HW 1 due |
17 March | Project 2 due |
19 March | HW 2: Microservices released |
19 March | Project 3: Microservices released |
7 April | HW 2 due |
21 April | Project 3 due |
Lecture recordings are available on Panopto here.
Class intro.
What is performance?
Instrumentation
IO
Kernel Extensions
Kernel Bypass
Concurrency
Scheduling
Isolation
Spring Recess. No class.
Queueing Theory
Caching and Storage
The Tail at Scale
Cloud Computing