Course Information

CS422/522: Design and Implementation of Operating Systems, Fall 2021, Yale University

  • General Information
  • Overview
  • Textbook and Resources
  • Computers
  • Grading
  • Attendance
  • Assignments
  • Late-Assignments Policy
  • Collaboration Policy
  • How to Submit Programming Assignments
  • Keeping In Touch

  • General Information

    MW 2:30 PM -3:45 PM, Room TBA.

    Zhong Shao, 314 AKW, 432-6828, zhong dot shao at yale dot edu
    Office hours: W 4:00-4:30 PM or by appt. (via this zoom link)

    Teaching Assistants:
    TBA, 310 AKW, office: 432-xxxx, xxxx at yale dot edu
    Office hours: make an appointment.

    TBA, 310 AKW, office: 432-xxxx, xxxx at yale dot edu
    Office hours: make an appointment.


    This course covers the fundamentals of operating system design and implementation. Lectures present the central ideas and concepts (e.g., synchronization, deadlock, process management, storage management, file systems, security, protection, and networking) and explain how they are manifested in practical operating systems. Students will be working on a series of six programming assignments leading to a small but real operating system. Prerequisite: CPSC 323 or equivalent.

    Textbook and Resources

    The following textbook is required:

  • T. Anderson and M. Dahlin, Operating Systems: Principles and Practice (2nd Edition), 690 pages. Recursive Books; August 2014, ISBN-10: 0985673524.
  • Also, the following books are optional readings:
  • T. Shanley, Protected Mode Software Architecture, MindShare, Inc., 1996. ISBN 0-20-155447-X.
  • B. W. Kernighan and D. M. Ritchie, The C Programming Language (Second Edition), Prentice-Hall 1988. ISBN 0-13-110362-8. The definitive guide to C, but see also the excellent online C reference
  • A. Silberschatz, P. Galvin, and G. Gagne, Operating System Concepts (9th Edition) , John Wiley & Sons, Inc., 2012. ISBN 1118063333.
  • A. Tanenbaum, Modern Operating Systems (4th Edition), Pearson; 2014. ISBN 013359162X.
  • F. Brooks Jr, The Mythical Man-Month: Essays on Software Engineering, Addison-Wesley Pub Co, 1995 ISBN 0-201-83595-9. How to organize and plan a large-scale software development project.
  • S. Maguire, Writing Solid Code, Microsoft Press, 2013. ISBN 1570740550. Tips for writing bug-free C code.

  • Computers

    You will be using the Intel Linux PCs in the Zoo computing lab. These machines are named as follows:

           aphid        bumblebee    cardinal    chameleon  cicada       
           cobra        cricket      frog        gator      giraffe
           grizzly      hippo        hornet      jaguar     ladybug      
           lion         macaw        monkey      newt       peacock     
           perch        python       rattlesnake rhino      scorpion    
           swan         termite      tick        turtle     viper      

    To access these PCs, you can either directly login from their consoles in the Zoo, or just remotely login from other machines across the campus.

    If you plan to take the course for credit, you should get an account on these machines in the first week. Please visit the following web site to create a cs422 class directory (or to just sign up for a zoo account):


    Do not allow anyone else to use your accounts for any purpose. They are for your use alone, and you are responsible for any misuse. Your passwords control access to your accounts and should be kept secret.


    Your grade will be calculated as follows: These weights are subject to minor variation.

    The midterm exam is scheduled in class on Wednesday, November 3rd, 2021. Unless prior arrangements are made, a grade of zero will be recorded for missed exam.


    Attendance at lectures is expected but will not be recorded. Students are, however, fully responsible for all material presented in lectures, even if some of it does not appear in the "official" lecture notes. Class attendance is recommended strongly.

    Lecture notes will be made available. Watch for an announcement of their availability.


    There will be 6 programming assignments, Assignments are due at 11:59 PM on the date specified in the Schedule sheet.

    For each programming assignment, you must turn in two things: the code, and a writeup describing what you did and why, and how you tested your program. The writeup is an important part of your work and will contribute significantly to your assignment grade.

    Late-Assignments Policy

    Each student is given 144 discretionary late hours for programming assignments, but any one assignment may only be up to 72 hours late (this is because we will post the sample solution after then). These are calendar hours, not business hours. As the homework assignments are submitted electronically, the "write date" on the student's homework file will be considered the completion date for late assignments.

    After you use up all of your discretionary late hours, assignments turned in late will be graded according to the following formula: S = R * (1 - t / c), where S is the grade given, R is the grade the work would have gotten if turned in on time, t is the amount of time by which the work was late, and c is equal to four days. Thus, the value of a late assignment decays daily, with a half-life of just over two days. Examples: work turned in five minutes late gets 99.9% credit, one hour late gets 99.0% credit, six hours late gets 93.8% credit, one day late gets 75.0% credit, two days late gets 50.0%, and three days late gets 25.0%. Assignments submitted more than 72 hours late will not be accepted.

    There will be no extensions due to scheduling conflicts, computer downtime, or other such factors, except under truly extraordinary circumstances. Extensions will be granted only for university-sanctioned excuses such as illness, and then only with the proper documentation. You are responsible for planning ahead and managing your time so that you can complete the assignments on time. You must either finish on time or accept the consequences of doing otherwise.

    Collaboration Policy

    Programming, like composition, is an individual creative process. Individuals must reach their own understanding of the problem and discover a path to its solution. During this time, discussions with friends are encouraged. However, when the time comes to write the code that solves the problem, such discussions are no longer appropriate -- the program must be your own work (although you may ask teaching assistants or lab assistants for help in debugging).

    Do not, under any circumstances, copy another person's program. Writing code for use by another or using another's code in any form violates the University's academic regulations and will be dealt with harshly.

    How to Submit Programming Assignments

    We use Git for assignment submission (see "Hand-In Procedure" in Lab 1 spec for details). For each programming assignment, you must also turn in a README file for the writeup, the writeup is an important part of your work and will contribute significantly to your assignment grade.

    Keeping In Touch

    We will use the piazza forum for announcements and discussions.

    Copyright (c) 1998 - 2021, Zhong Shao, Dept. of Computer Science, Yale University