Operating systems is a large area with a long history, so we have a lot of ground to cover in a seven-week course. We will be moving very quickly, so you will need to manage your time carefully to keep up. You should expect to spend about 20 hours a week on this course; that means you should allow at least 10 hours outside of class to complete readings, labs, and assignments.


My goal is to help you learn as much as possible in this course; please let me know what I can do meet your learning needs. If you have a disability that requires accommodations, please contact Disability Resources. Disability Resources will work with you to determine your needs, and will provide you with paperwork outlining the accommodations you require. Please give me this paperwork at least a week before the course activity for which you need accommodations. If this timeline is not feasible for any reason, please contact me as soon as possible and we will work together to find a solution.


Your classmates and partner(s) depend on your contributions to learn new material and complete the required work for this course. Don’t let them down! You are expected to arrive on time and actively participate in every class. I will not be taking attendance, but I will keep track of contributions to class discussions. You won’t be able to contribute if you aren’t in class, so you should avoid missing class days as much as possible. If you know in advance that you need to miss two or more consecutive days of class, please let me know before your absences.

Making up for Missed Work

If you miss class you are responsible for making up any missed topics and in-class work. Please complete the day’s assigned reading, review the posted notes from class, and talk to at least one classmate about what was covered. If you still have questions after reviewing those materials I would be happy to help during office hours.

If you miss class on a day with an in-class exercise you should complete that exercise on your own. I generally do not grade these exercises, so you do not need to turn anything in unless the schedule says otherwise. If you miss a lab day, please send me an email after the class period and I will assign you to a group to complete the lab; I generally do not group students who miss labs with groups that started during class time, so you will end up working individually or with other students who missed the lab. Unless we have made alternate arrangements prior to your absence, work is due at the originally scheduled times.

Preparation for Class

Our primary textbook is Operating Systems: Three Easy Pieces, by Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau. This textbook is available for free online. The textbook page includes information on how to order a printed copy of the book, but this is not required. There will be some supplementary readings, including a few important research papers in systems. All of these readings are linked on the course schedule, and should be available for free. Some readings may require you to log in with your Grinnell account when you are off campus.

If you find additional readings that help you to prepare for class, please share them with me! I will incorporate these into a future offering of the class. I also encourage you to share additional references with your classmates.


Your participation in class will account for 20% of your final grade. Participating in class involves:

  • being present in class,
  • coming to class prepared,
  • asking questions,
  • making contributions to class discussion by volunteering and when called upon,
  • staying on task during collaborative exercises, and
  • working effectively with your group.

Students who consistently meet these criteria can expect to earn 90% (an A-) for their class participation grade. I will reward students who regularly provide significant insights or guide discussion in a productive manner. Students who fail to participate, or participate in counterproductive ways—by dominating the discussion or making inappropriate comments—will earn a lower score. Please remember that collaborative work on labs is part of your grade in this course; one of the skills I expect you to develop in this course is to work well with others on challenging technical problems.


Individual assignments will make up 20% of your total grade. These assignments fall into two categories: programming assignments and reading journals. All assignments will be weighted equally, though not all are equally challenging. Every assignment is listed with a due date and time on the course schedule. You are responsible for submitting each assignment to gradescope by the time it is due; late assignments will not be accepted.

Programming Assignments

These assignments are intended to help you practice programming skills you will use in labs, and to assess your individual understanding of the course material. Therefore, collaboration on assignments is not permitted. Prohibited collaboration includes discussion of common issues, potential solutions, or past assignments; we will spend class time discussing these assignments after they are due. If you have questions on an assignment, please bring them directly to me.

Reading Journals

You will need to complete reading journals for several papers we will read in the last few weeks of the semester. Your responses will help me plan the in-class discussion of the papers we read, so do not be surprised if I ask you to repeat a point or question you raised in your journal. Asking questions about papers will earn more points that reciting facts; there is no penalty for failing to understand part of a paper, but a journal that only recites facts about a paper will earn a poor grade. The quality of your writing will have an impact on your grade for reading journals; I expect you to respond clearly in complete sentences and paragraphs with correct spelling and grammar.


Labs will account for 60% of your grade in this class. Most labs will be be weighted equally, but the last three labs in the course are larger or more difficult, and will contribute the same as 1.5 labs. Late labs will not be accepted.

Unless you are given explicit permission to do otherwise, you must work with your assigned group for each lab. While I expect that you understand how to work collaboratively, I have found it is sometimes necessary to clearly state some expectations for group work: I expect every member of your lab group to contribute to the work you submit, and that work must be a product of your collaborative effort. That means you cannot divide the lab into parts and work separately, you cannot allow other members of your lab group to complete the lab for you, and you cannot complete the lab on your own without your group’s involvement.

You are encouraged to use outside resources when completing labs, provided you cite them. Building on existing code is a valuable skill, and relying on outside sources will not be penalized. However, you may not use an outside source for the majority of your implementation. If your assignment is to implement a shell, you cannot simply submit someone else’s shell implementation with a citation. If you find an outside source you would like to use but you are unsure whether that would be acceptable, come talk to me.

Academic Honesty

I encourage collaboration when it promotes learning. However, it is important for you to understand the course materials and demonstrate your own learning on assignments. As an instructor, I will meet my obligation to bring any work suspected to be in violation of the College’s Academic Honesty Policy to the attention of the Committee on Academic Standing, after which point there is no recourse with me.

You are free to discuss course readings and labs with other students, but copying is not acceptable. For individual assignments, you may only discuss your work with the instructor and course mentors. Work that you submit should be your own, and must acknowledge the contributions of others. When you submit individual work, I expect that work to be the result of your individual effort; likewise, group work should be a product of the collaboritive efforts of your entire group.

Misrepresenting who has contributed to work you submit is a violation of the academic honesty policy, and I will inform the committee on academic standing of any such violation. These cases could result in a zero on the assignment, or in the entire course. If you find that your lab group is not contributing, or if your partner(s) completed a lab without you, please tell me immediately so we can resolve the issue before you submit any work.


The graded components for this course will contribute to your total grade in the following proportions:


There will be no curves or competitive grading in this course; every student has an opportunity to earn an A. Your final grade will be determined with the following scale:


I reserve the right to adjust this scale during the semester, until two weeks before the end of class. I will notify all students of any change in the grading scale. You may ask me for your current grade in the class at any point; I will happily give you my best estimate based on the current scale and graded work so far, but these estimates are not guarantees of a specific final grade.

Getting Help

Office Hours

Please come by during my office hours to discuss course content, get extra assistance, or just talk about how the course is going. I will share information about how to attend virtual office hours on the first day of class.

If you cannot make it to regular office hours, email me to schedule an alternate time to meet. Please send at least three possible meeting times with your request so we can find a time that works for both of us.


I am happy to answer questions by email, but please allow 24 hours for a response (except on weekends, when I may not answer email at all). If you have an urgent issue that must be resolved, email is the best way to reach me. If an issues comes up and it cannot wait until the next class period, please include the text “URGENT” at the beginning of your subject line.