This is a graduate-level course that covers advanced concepts and design principles of modern operating systems (OSes), both from theory and practical aspects, spanning the following aspects: virtualization, concurrency, persistence, distributed systems, and virtual machines/containers. The purpose of this course is to teach OS designs from a research point of view.
Grade of C or better in CS310 and CS 367 and CS 465. All students *MUST* be comfortable with programming in the C language. This is a strong requirement.
There are no official textbooks. Required readings are (most frequently) in the form of seminal research papers and/or selected textbook chapters of the awesome OSTEP textbook.
If you need a textbook to review and catch background, go get OSTEP, which is an excellent resource for learning OS and is completely free. OSTEP and is publicly available at:
I also strongly encourage you to discuss the papers with other students in the class — you may have insights that others do not, and vice versa. Oftentimes, students form reading groups, which I encourage; on the other hand, I would like to point out that group discussion is not an effective substitute for actually reading the paper.
In addition to textbook concepts that I will cover in the form of lectures, for research papers, we will use a discuss-oriented format. Therefore, class participation is required. We will discuss the papers and articles that we will have all read before each class. I will provide you with a review form that you must complete and submit before the class. I will provide feedback to your paper reviews the night before the class. During the class, I will lead discussions by asking questions of students at random in class. Note that your performance in class form 10% of your overall grade, so it does matter that you both show up to class and participate in the discussion (which in fact requires you to read the papers).
There will be several programming labs and a research project. You need to be comfortable with programming in C to complete these lab assignments. Programming labs will be individual. For research projects, you may choose to do it individually or in a group of two. I will provide a list of ideas to get you started thinking, but I highly encourage you to pursue your own ideas, which typically lead to better results. You will write a project report and present it at the end of the course. Details concerning the projects will be presented in class.
All students should have accounts on the VSE Unix cluster (aka zeus.vse.gmu.edu). Instructions and related links can be found here. Your labs written in C will be tested and graded on the zeus server.
There is no homework, no midterm, no final exams. Discussion and paper reading carries 30%, projects carries the rest 70%. Your grade will be calcuated as follows:
The final grade is computed according to the following rules:
All students must adhere to the GMU Honor Code and the Computer Science Department's Honor Code Policies. The students are supposed to work individually on the homeworks, assignments projects, unless told otherwise. We reserve the right to use MOSS to detect plagiarism. Violation of the Honor Code will result in an F.
If you have a documented learning disability or other condition that may affect academic performance, you should: