Syllabus for MCS-378: Operating Systems (Fall 2013)


This course covers the basics of operating systems as well as some material on concurrent programming, middleware, and networking. There are two principal reasons why a course on operating systems is practical to take (as opposed to just interesting), even if you never expect to be involved in the development of an operating system (which most of you won't):

Office hours

I welcome visitors to my office (OHS 306) on a drop-in basis as well as by appointment. You may send me electronic mail at

World Wide Web

All course materials will be available through my World Wide Web page. The URL for this course is After this syllabus I will give hardcopy handouts only to those students who want them.

Text and readings

The primary text for the course is Operating Systems and Middleware: Supporting Controlled Interaction by Max Hailperin, the current version of which is available online. Recent conference papers serve as additional required readings; you have access to these through the syllabus on the web. Those conference papers will form the basis for the student presentations, described below.


There will be seven times in the semester when I sit back and relax and let students teach the class instead. Each time, a pair of students will have 50 minutes to lead discussion on one of the papers we read from a conference. The whole class will be expected to read the paper at least casually, but the students leading the class will be expected to have read it more carefully and done whatever it takes to really understand it, which may involve additional background reading, talking with me, etc.

Each pair of students will be responsible for setting up a meeting with me the week before their presentation to go over it with me. (You are welcome to additional consultations as well.) At that meeting, you should also give me three straightforward questions about your reading. I will distribute these to the full class. All class members will email me their answers to these three questions by 7am the day of your presentation, as a way of making sure we all have a common starting point. I will look through them and alert you immediately before your presentation if there are any common difficulties you might want to address. No late answers will be accepted for these questions because their point is to lay the groundwork for the presentation.

I will provide a list of attributes that good presentations have. For each presentation, each student in the audience will be asked to select two of these attributes that were particular strong points and two that particularly need work. I will summarize this feedback for the presenters. I will also use the same list of attributes to structure my own evaluation of the presentation, which will take place in a face-to-face “debriefing” with the presenters, with the grade generated as a summary of that meeting.

I'm going to ask you to express a preference ranking for the topics and will try to the extent possible to assign people to topics based on that. I suggest you read the abstracts of the papers to help determine your preferences; you can also take into account the timing of the presentations. I'll need to have you email me the rankings by 2:30pm Thursday (September 5).

  1. September 17 (Sam and Helen): "FlashFQ: A Fair Queueing I/O Scheduler for Flash-Based SSDs", Kai Shen and Stan Park, 2013 USENIX Annual Technical Conference, June 2013, pages 67-78.
  2. October 17 (Zach and Tim): "Optimizing VM Checkpointing for Restore Performance in VMware ESXi", Irene Zhang, Tyler Denniston, Yury Baskakov, and Alex Garthwaite, 2013 USENIX Annual Technical Conference, June 2013, pages 1-12.
  3. November 5 (Nate and Ma): "Recon: Verifying File System Consistency at Runtime", Daniel Fryer, Kuei Sun, Rahat Mahmood, TingHao Cheng, Shaun Benjamin, Ashvin Goel, and Angela Demke Brown, 10th USENIX Conference on File and Storage Technologies, February 2012, pages 73-86.
  4. November 14 (Kevin and Todd): "Copysets: Reducing the Frequency of Data Loss in Cloud Storage", Asaf Cidon, Stephen Rumble, Ryan Stutsman, Sachin Katti, John Ousterhout, and Mendel Rosenblum, 2013 USENIX Annual Technical Conference, June 2013, pages 37-48.
  5. November 19 (Molly and Michael S.): "Improving Server Application Performance via Pure TCP ACK Receive Optimization", Michael Chan and David R. Cheriton, 2013 USENIX Annual Technical Conference, June 2013, pages 359-364.
  6. November 26 (Matt and Eli): "iShuffle: Improving Hadoop Performance with Shuffle-on-Write", Yanfei Guo, Jia Rao, and Xiaobo Zhou, 10th International Conference on Autonomic Computing, June 2013, pages 107-117.
  7. December 12 (Yunong and Michael P.): "Securing Embedded User Interfaces: Android and Beyond", Franziska Roesner and Tadayoshi Kohno, 22nd USENIX Security Symposium, August 2013, pages 97-111.

Daily preparation assignment

Each class day that has a reading assignment, you are to send me an email by 7am with your preparation assignment for that day. I will look these over in order to shape the class to meet your needs. As additional incentive, they will count for a portion of your class grade, based on how many you submit. No late preparation assignments are accepted, as that would undermine their real purpose.

For a conference paper, the preparation assignment will consist of questions provided by the presenters, as described in the section on presentations.

For readings from the textbook, your assignment is to send me an agenda for that day's class. Is there old business from prior days that you see as needing more time? In the new topics from that day's reading, what are the main points we should cover? What illustrations, programs, or other examples from the book would you like to go over? Are there items for which you would like a different example? Are there topics beyond the reading we ought to cover?

Homework assignment

You are to select your own homework problems. Each chapter in the textbook ends with exercises, programming projects, and exploration projects. For each of Chapters 2-11, you may submit any exercise and any programming or exploration project, subject to the restrictions listed below. If I indicate that your initial solution is inadequate, you can submit a revised version, as many times as are necessary to succeed.


There will be two intra-term take-home tests as shown on the schedule below and a final exam as scheduled by the registrar. If you have a conflict with a testing time, please contact me as soon as possible to make an alternative arrangement.

My default assumption is that students will take the final together. Therefore, I would ask you to please be respectful and quiet, even after completing your exam, so that your fellow students have a good test-taking environment. However, if you prefer to take the exam in a separate room, please contact me in advance and I will try to arrange it.

Tests will be closed-book and mostly closed-notes. You may, however, use a single 8 1/2 by 11 sheet of paper with hand-written notes for reference. (Both sides of the sheet are OK.)

Contribute to our open-source textbook

You can contribute to the further development of our textbook and earn course credit in the process. There are two ways you can contribute.

If you spot a bug in the book or something that could be improved, you can report this using the issue tracker or by emailing me. Each time you do this you will earn 3 Grade Points in lieu of the usual monetary reward offered in the Preface. You may claim these points for up to 5 bug reports.

For a greater number of Grade Points (10 instead of 3), you can do the work of improving the book in some way, rather than merely pointing out a place where improvement is needed. The best way for you to submit a "patch" to the book is to make your own fork of the github repository, commit a revision into that fork, and then send me a "pull request" to ask me to incorporate it into the mainstream. If you elect to make this kind of contribution, you needn't begin by identifying where an improvement is needed; you can address one of the issues already listed in the issue tracker. Creating some new supplemental material such as an animation or screencast would also qualify for the same points as a patch to the book. You may claim these points for up to 3 contributions to the book.


Students are encouraged to discuss the course, including issues raised by the assignments. However, the solutions to assignments should be individual original work unless otherwise specified. If an assignment makes you realize you don't understand the material, ask a fellow student a question designed to improve your understanding, not one designed to get the assignment done. To do otherwise is to cheat yourself out of understanding as well as to be intolerably dishonorable.

Any substantive contribution to your solution by another person or taken from a publication should be properly acknowledged in writing. Failure to do so is plagiarism and will necessitate disciplinary action.

The same standards regarding plagiarism apply to team projects as to the work of individuals, except that the author is now the entire team rather than an individual. Anything taken from a source outside the team should be be properly cited.

One additional issue that arises from the team authorship of project reports is that all team members must stand behind all reports bearing their names. All team members have quality assurance responsibility for the entire project. If there is irreconcilable disagreement within the team it is necessary to indicate as much in the report.

You are expected to be familiar with the college academic honesty honor code policy and to comply with that policy. If you have any questions about it, please ask.

Late lab assignments

All lab assignments are due at the beginning of class on the day indicated. Late assignments will be penalized by one Grade Point for each weekday late or fraction thereof.

If you are too sick to complete an assignment on time, you will not be penalized. Simply write “late due to illness” at the top of the assignment, sign your name and hand it in. Other circumstances will be evaluated on a case-by-case basis.

Grade changes

Please point out any arithmetic or clerical error I make in grading, and I will gladly fix it. You may also request reconsideration if I have been especially unjust.


You will have the opportunity to earn up to 335 Grade Points (GP) throughout the semester as shown in the following table:

Category#GP eachGP possible
Bug report5315
Total  335

Your course grade will be recorded as follows:


Style guidelines

All homework and lab reports should be readily readable and should not presuppose that I already know what you are trying to say. Use full English sentences where appropriate (namely almost everywhere) and clear diagrams, programs, etc. Remember that your goal is to communicate clearly and that the appearance of these technical items plays a role in this communication process. Be sure your assignments are either submitted online or stapled together with your name on them.


Gustavus Adolphus College is committed to ensuring the full participation of all students in its programs. If you have a documented disability (or you think you may have a disability of any nature) and, as a result, need reasonable academic accommodation to participate in class, take tests or benefit from the College's services, then you should speak with the Disability Services Coordinator, for a confidential discussion of your needs and appropriate plans. Course requirements cannot be waived, but reasonable accommodations may be provided based on disability documentation and course outcomes. Accommodations cannot be made retroactively; therefore, to maximize your academic success at Gustavus, please contact Disability Services as early as possible. Disability Services ( is located in the Academic Support Center.

Support for English Language Learners and Multilingual students is available through the Academic Support Center and the Multilingual/English Language Learner Academic Support Specialist, Laura Lindell ( or x7197). If you fall into one of these categories, she can meet individually with you for tutoring in writing, consulting about academic tasks, and helping you connect with the College’s support systems. In addition, you can seek help from peer tutors in the Writing Center. Please let me know if there is any accommodation in the course that would enable you to more fully show your abilities; for example, I would consider allowing extra time on tests, as well as allowing a dictionary in an otherwise closed-book test.


The two topics or activities shown for each date correspond approximately to the two halves of the class period with a brief stretching break in between. However, we will divide the time to meet our needs rather than necessarily at the halfway point.

In the reading column, a single number with no decimal point indicates an entire chapter. A number with three decimal points in it, such as or, refers to the material under the first or second heading within Section 8.5.1, even though those headings are not actually numbered.


9/53.1-3.3Scheduling Goals
3.4-3.7Scheduling Mechanisms

9/10Lab Preview
Lab 1: Scheduling

9/12No class

9/17paper 1I/O Scheduling for Flash Storage (Sam and Helen)Lab 1
4.1-4.3Mutual Exclusion

9/194.4-4.6Other Synchronization Patterns
4.7-4.8,4.10Synchronization Pathologies

9/244.9Nonblocking Synchronization
5.1-5.2Example Applications of Transactions

9/265.3-5.4Mechanisms for Atomicity and Durability
5.5-5.6Additional Transaction Mechanisms

10/1No class (attend Nobel Conference)

10/3Review of Chapters 1-5; take-home test 1 outHW rewrites (2-5)
6.1-6.2Uses for Virtual Memory

10/86.3Mechanisms for Virtual MemoryTake-home test 1
6.4-6.5Policies for Virtual Memory

10/10Lab Preview
Lab 2: Prepaging

10/157.1-7.2POSIX Process Management

10/17paper 2Virtual Machine Checkpointing for Restore Performance (Zach and Tim)
Lab 2 (continued)

10/248.1-8.3POSIX File API
Lab 2 (continued)

10/298.4- Space Allocation
Lab 2 (continued)

10/318.5.1.2-8.6Metadata, Directories, and Indexes
8.7-8.9Metadata Integrity

11/5paper 3Verifying File System Consistency at Runtime (Nate and Ma)Lab 2
Lab 3: File Allocation

11/7Review of Chapters 6-8; take-home test 2 outHW rewrites (6-8)
Lab 3 (continued)

11/129.1-9.3.1Socket APIsTake-home test 2
Lab 3 (continued)

11/14paper 4Cloud Storage Replication (Kevin and Todd)

11/19paper 5Optimizing Pure Acknowledgment Receipt (Molly and Michael S.)
Lab 3 (continued)

11/2110.1-10.3Messaging and Remote Method Invocation
10.4-10.5Web Services

11/26paper 6Improved Data Shuffling (Matt and Eli)Lab 3
Lab Preview

12/311.1-11.4Security Basics
Lab 4: Communication Middleware

12/5Lab 4 (continued)

12/1011.5-11.8More on Security
Lab 4 (continued)

12/12paper 7Securing Embedded User Interfaces (Yunong and Michael P.)Lab 4, HW rewrites (9-11)
Review and evaluation

Course web site:
Instructor: Max Hailperin <>