CSE 551: An Introduction to Computer Systems Research
Course Overview:As an experiment this year, CSE 551 will be run in a completely different fashion than in previous years: it will provide a graduate-level introduction to systems research, spanning common material now spread across 544, 551, 552, and 561. As such, it is particularly suited to those who are likely to take a single quals course in the systems area, fifth year masters students, as well as those intending to immediately jump into systems research. If successful, our intent is to introduce this as a new course in subsequent years, allowing the traditional 551 to return in the future. Catalog Description: Advanced techniques in computer system software design, including network systems, operating systems, web servers, parallel computing, and databases. Prerequisite: CSE major and CSE 451. Motivation: This course will provide the common intellectual foundation for systems research, suitable as a terminal course for those not interested in further study, or as a gateway course to the various specialized systems courses the department offers. The course will cover the common foundation for research in operating systems, databases, cluster and wide area distributed systems, networking, and parallel systems. These topics include:
In addition, the course will also teach students some of the mechanics of doing systems research:
Student Deliverables:Summary:
Readings, Blogs and Presentation: The core of the course is the reading and discussion of a set of foundational papers in computer systems. These papers cover the most important ideas in computer systems research, ones that are necessary to understand the context for any later work you might encounter. The reading is to be done before class, as we will take the papers as a starting point, not the end point of the class discussion. For each class other than the first, we will post a small set of discussion questions, linked off the course web page, based on the reading. You are required to add a unique comment to the discussion of one of the questions before noon on the day of the class. (This is to give time for everyone to read the blog entries before class.) Note that the earlier you post, the easier it is to be unique. Please keep blog entries short: they can be anything that provides insight into the question being asked. We will automatically grant two mulligans during the quarter. We will ask students (each student once per quarter) to kick off the class discussion by presenting a two minute synopsis of the main ideas for the paper for that class, plus the main ideas from the blog postings. Project and Problem Sets: The course project is to be done in small teams (2-3 people), and should illustrate some interesting concurrent or distributed algorithm or system, and must include a quantitative evaluation of the work. The project can be either student defined or one defined by the instructor. Sample projects would be to implement and quantitatively evaluate Paxos (week 5), Chord (week 9), optimal congestion control (week 8), or a multithreaded, replicated web server providing both read and write operations (week 2, week 4). There will also be three problem sets handed out during the quarter, and four extended design exercises. The problem sets and design exercises are to be done individually. The problem sets are intended to reinforce the basic material covered in the class – e.g., can you write a correct concurrent program, while the design exercises are intended to apply the ideas in the class to novel domains – e.g., one assignment will be to ask how operating system virtualization might be applied to the Internet. The design exercises will be done in two steps: an initial draft due at noon (by email) on the day of the section, followed by a revised draft due one week later (in section). This is so that student work can benefit from the discussion in section. All assignments are due at 12:00 noon on Thursday of the week indicated, except for the final project presentations and writeup, which are due at 9AM on Monday of finals week. Collaboration/Cheating: In our experience, students often learn more from each other than they do from the instructor. Thus, we encourage you to collaborate with your classmates, in all aspects of the course. The grading in the class is emphatically not curved; we would like nothing better than for all of you to get a 4.0. To draw a very clear line, you may use any idea from any other person or group in the class or out, provided you clearly state what you have borrowed and from whom. If you do not provide a citation -- that is, you turn other people’s work in as your own -- that’s cheating. Anything else is fair game. Of course, we’ll be grading you on the ideas you’ve added, but you should always borrow as much as you can as a starting point – there’s no point in reinventing the wheel. Final: This class will have no final exam. Grading: Blogs/oral summary: 15%; Problem sets and design exercises: 50%; Project: 35%. Syllabus and Reading List:
Problem Sets:Design Exercises:Design exercise 1: Internet virtualization Design exercise 2: PCM-based file system Design Exercise #3: High availability web service. Project Proposals:
|