CSCI-UA.0202(-002): Operating Systems (Undergrad)

Latest Announcements

12/09: Grace Hopper on Letterman: a seminal moment
Grace Hopper was a hugely pioneering figure in Computer Science. As a matter of education, she used to carry rods around to show people how fast computers are, something along the lines of, "This is how far light can get in the time that it takes a computer to execute an instruction" (and the rod was not very long!). It turns out that David Letterman, who was one of the all-time great TV hosts, interviewed Grace Hopper (!). Here is the clip, which is well worth watching.
11/25: HW11 (last one) released
It is due on December 3, 2024, 11:59 PM.
11/25: Wrong submission code on HW10
We made a mistake on the original submission code for HW10. The correct one on Gradescope is 4J462V. If you have submitted HW10 with submission code B2DEZW, please resubmit with the right one. The wrong one will direct to a different version of the class.
11/18: HW10 released
It is due on November 26, 2024, 11:59 PM.
11/18: Wrong submission code on HW9
We made a mistake on the original submission code for HW9. The correct one on Gradescope is 4J462V. If you have submitted HW9 with submission code B2DEZW, please resubmit with the right one. The wrong one will direct to a different version of the class.
HW9 modified: We have removed the question on mmap()
If you already did the question, that is fine. But if not, you do not need to do it, since we are not going to get to mmap().
11/13: Lab 5 released
It is due on Friday, December 6, 2024, 11:59 PM
11/10: HW9 released
It is due on November 19, 2024, 11:59 PM.
11/08: Makeup classes this week: requirements
We are having two make-up classes this week:
  • Tuesday, November 12, 11:00 AM signup
  • Thursday, November 14, 4:55 PM signup
These classes are just as required as the normal classes, and are assigned viewing for the next day. You have three choices for viewing. (1) Attend in-person, which requires signing up at the links above. (2) Attend by Zoom (via Brightspace). (3) Watch the Zoom recording (via Brightspace). Please do not attend in person unless you have signed up. If we have more signups than the room's capacity, I will run a lottery.
10/31: HW8 updated
We removed a problem (on mmap) from HW8. We're planning to put it on a future homework.

See all announcements

Course information

  • Section: CSCI-UA.0202-002
  • Lectures: MonWed 11:00 AM – 12:15 PM, CIWW 109.
    • Lectures are streamed live via Zoom and recorded, with links available in NYU Brightspace.
  • Review sections (optional): See here for description and logistics
  • Communication:
    • Please use Campuswire (with posts, not DMs) for questions about assignments. If you include code, please mark your question private (per the collaboration policy). Please expect response latency of 12 to 24 hours.
    • For administrative and sensitive questions, please email cs202-24fa-staff@nyu.edu
    • Please email individual course staff only for things like setting up meetings with that person; individual emails about labs or course administration may be dropped.
  • Instructor: Michael Walfish
  • Teaching Assistants: (see also points of contact)
    Name Email (add @nyu.edu)
    Sam Frank (head TA) sff5097
    Happy Bafarat sfb7664
    Emad Benchekroun eb4579
    Johnny Ding yd2960
    Peter Lin zl4140
    Alex Liu pl2253
    Max Tang tt2505
  • Office hours: calendar (must be logged into NYU to view).

The work

  • The lectures will cover topics in operating systems and the topic of systems generally. The schedule is here.
  • The labs are a crucial component of this course and are described here. You will implement, help implement, or interact with, a number of the abstractions described below.
  • The exams are described here.
  • The readings are listed on the schedule and should be completed before class. The required and optional texts are listed below.
  • The homeworks (as distinct from the labs) are intended to reinforce the course material.

We assume that you check the announcements on this site every 24 hours. Also, we will use Campuswire. Finally, we will occasionally email you (for the most urgent communications). You are responsible for monitoring all three of these media.

A note about the labs

We recommend that you start the labs long before they are due. The standard advice is "Start the labs early", but that is not quite right. The best advice, we think, is "Start the labs on time, but on time is probably much earlier than you think it is".

Description and goals

We hope you learn three sets of interrelated things. The first thing is how computers work. Students graduating with CS degrees should believe "there is no magic": they should be able to describe the chain of events that occurs when they hit a key and cause a letter to appear on the screen from the register level (or logical gate level or transistor level) to the system architecture level to the operating system level to the application level. This is philosophically important, but it is also of practical interest to developers who need to figure out how to make a system do what they want it to do.

The second goal is for you to learn the core ideas in operating systems: concurrent programming, memory protection, virtual addressing, file systems, scheduling, transactions, etc. Often, such ideas are best explained as abstractions that some software layer (usually the operating system) provides above imperfect hardware to make that hardware usable by programmers and users. The intent is for you to understand such abstractions well enough to be able to synthesize new abstractions when faced with new problems.

Many of the ideas and abstractions that we will cover are relevant not only to operating systems but also to large-scale systems. Thus, a third goal of this course is to enhance your ability to understand, design, and implement large-scale systems.

The coding workload in this class will be substantial. This is a necessity: understanding many of the ideas above requires implementing them or working through them in code. The good news is that if things go according to plan, you will learn a lot in this class, and ideally find it rewarding. For example, you will learn how operating systems are implemented, and how to effectively use the abstractions exported by operating systems.

Readings

Required texts

OSTEP Operating Systems: Three Easy Pieces, by Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau. Arpaci-Dusseau Books, August 2018, edition 1.00.
Note: This book is freely available online, at the link given.
OSM:SCI Operating Systems and Middleware: Supporting Controlled Interaction, by Max Hailperin. June 2019, Revised Edition 1.3.1.
Note: As with the preceding text, this text is online and free. It is available under this Creative Commons license.
CS:APP3e Computer Systems: A Programmer's Perspective, Third Edition, Randal E. Bryant and David R. O'Hallaron. (Pearson), 2015. ISBN: 013409266X.
Note: The prerequisite to this class (CS201) required this text, so we assume that you already have it.

Optional texts

  • Highly recommended: The C programming language (second edition), Brian W. Kernighan and Dennis M. Ritchie. (Prentice Hall, Inc., 1988. ISBN: 0-13-110362-8.) This book is a classic reference to C.
  • Optional: Operating Systems: Principles and Practice, Beta Edition, Anderson and Dahlin. (Recursive Books, 2012. ISBN: 0985673516.)
  • Optional: Modern Operating Systems (third edition), Andrew S. Tanenbaum. (Prentice Hall, Inc., 2008. ISBN: 0-13-600663-9.) Note: the NYU bookstores list this text as required; it is not (it was in an earlier version of this class.)
  • Optional: Principles of Computer System Design: An Introduction, Jerome Saltzer and M. Frans Kaashoek (Morgan Kaufmann, 2009. ISBN: 0-12-374957-3.)
  • Optional: Operating System Concepts (eighth edition), Abraham Silberschatz, Peter Baer Galvin, and Greg Gagne. (John Wiley & Sons, 2008. ISBN: 0-47-012872-0.)

Acknowledgments

We are indebted to the staffs of related past courses at MIT, UCLA, Harvard, Stanford, and UT Austin (cs372h, cs372, and cs439 a, b, c), and ancestors of these courses. Credits are particularly due to Mike Dahlin (UT Austin), Eddie Kohler (Harvard), David Mazières (Stanford, formerly NYU), and Allison Norman (UT Austin). Design is borrowed from Harvard's CS61. This site relies on software to generate course Web pages, developed by Dave Andersen and Nick Feamster.