Operating Systems Principles

NOTE: this website is out of date. This is the course web site from a past quarter, Winter 2023. If you are a current student taking the course, you should visit the current class web site instead. If the current website is not yet visible by going to cs111.stanford.edu, it may be accessible by visiting this link until the new page is mounted at this address. Please be advised that courses' policies change with each new quarter and instructor, and any information on this out-of-date page may not apply to you.

Winter 2023

Important course announcements will be posted below and announced in class. You are responsible for all material that appears here and should check this page for updates frequently.

Announcements

Scroll to see more announcements. Updates will also be posted on the discussion forum.

  • Final Course Grades Posted Wed. March 29 by Nick Final grades have been uploaded to Axess. Check your Stanford email for more details about grades. We have also posted all your grade information and breakdown to the Gradebook page. There is more information about how we calculated final course grades on the Ed forum. Have a great spring break - we hope you enjoyed the course!

  • Final Exam Grades Released Tues. Marh 28 by Nick Final exam scores have been released via Gradescope, an online course grading website. You can find more information about the exam solutions, statistics, how to see your score, and information about regrade requests, on the final exam grading page here. Awesome job on the exam!

  • assign6 Grades Released Tues. March 28 by Nick Assignment 6 grades have been posted to the Gradebook page. The quartiles of scores on the assignment were all 92/92; rock on! See Ed for a more in-depth announcement about grading feedback.

  • assign5 Grades Released Tues. March 28 by Nick Assignment 5 grades have been posted to the Gradebook page, along with scores for code review. The quartiles of scores on the assignment were as follows (/104): 1st quartile = 101, second quartile = 103, third quartile = 104. Great job! See Ed for a more in-depth announcement about grading feedback.

  • assign4 Grades Released Wed. March 22 by Nick Assignment 4 grades have been posted to the Gradebook page, along with manual code review scores for the assignments. The quartiles of scores on the assignment were as follows (/127): 1st quartile = 124, second and third quartiles = 127; rock on! See Ed for a more in-depth announcement about grading feedback.

  • Final Exam Optional Tues. March 21 by Nick Because of the disruptions due to the on-campus power outage, the final exam is optional. Please see Ed for more information: click here

  • Final Exam Wed. 3/22 3:30PM-6:30PM Tues. March 14 by Nick The CS111 final exam is on Wednesday, March 22 from 3:30-6:30PM in Hewlett 200/201. Please see the final exam webpage for information about the exam, as well as study tips and review materials.

    If you have not already let us know about academic accommodations (e.g. OAE) or athletics accommodations, please let us know as soon as possible__. We'll also be hosting a review session for the exam, the details of which are coming soon!

  • assign3 Grades Released Fri March 10 by Nick Assignment 3 grades have been posted to the Gradebook page. The quartiles of scores on the assignment were as follows (/98): 1st quartile = 92, second quartile = 95, third quartile = 98. Rock on! See Ed for a more in-depth announcement about grading feedback.

  • assign6 Released! Thurs. March 9 by Nick The final assignment, assign6, has been posted in the assignments dropdown. It is meant to reinforce the topics of virtual memory and demand paging; you will implement the core components of a demand paging system to track page mappings and swap pages to disk. We hope you have fun with it! It is due Friday 3/17 at 11:59PM PT and no late submissions are accepted on this assignment, whether or not you have free late days remaining, except in cases of instructor-granted extensions or OAE accommodations. You can find more details on the assignment page. YEAH hours for assign6 will take place as part of Friday 3/10's lecture.

  • Mid-Quarter Grade Update Posted Fri. March 3 by Nick We've posted a mid-quarter grade update page containing overall course statistics for your work so far this quarter. That page includes your raw overall assignment score so far, your overall raw course score, and your percentile range. You can view all this information here. In addition, we have added your autograder score for assign3 (93 of the 98 points). Lastly, we have also posted a page containing information about commonly-asked questions heading into the final weeks of the course, for example about how to interpret course grades, succeed in the remainder of the course, and more. We hope you find it helpful!

  • assign5 Released! Wed March 1 by Nick Assignment 5 has been posted in the assignments dropdown. It is meant to reinforce the topics of dispatching and scheduling, with exercises ranging from implementing your own thread dispatcher to implementing your own lock and condition variable types. We hope you have fun with it! The assignment is due Thurs 3/9 at 11:59PM PT. We'll be holding YEAH hours for assign5 on Thurs. 3/2 from 2-2:50PM on Zoom (link on Canvas). We encourage you to get started early and come by YEAH hours with questions!

  • Midterm Grades Released Sat Feb 25 by Nick Midterm exam scores have been released via Gradescope, an online course grading website. You can find more information about the exam solutions, statistics, how to see your score, and information about regrade requests, on the midterm grading page here. Awesome job on the exam!

  • assign2 Grades Released Wed Feb. 22 by Nick Assignment 2 grades have been posted to the Gradebook page, along with feedback on your readmes and code. The quartiles of scores on the assignment were as follows (/70): 1st quartile = 67, second quartile = 68, third quartile = 69. Awesome job! See Ed for a more in-depth announcement about grading feedback.

  • assign4 Released! Sun Feb. 19 by Nick Assignment 4 has been posted on the assignments page. It is meant to reinforce the topic of multithreading and synchronization, with exercises including reflecting on trust, managing boarding Caltrain passengers and coordinating guests at a party. We hope you have fun with it! The assignment is due Tues 2/28 at 11:59PM PT. You can find more details on the assignment page.

  • assign1 Grades Released Mon Feb 13 by Nick Assignment 1 grades have been posted to the Gradebook page. The quartiles of scores on the assignment were (/90): 1st quartile = 86, second quartile = 88, third quartile = 89. Nice work! Check out Ed for a debrief of the assignment.

  • Midterm Exam Thurs. 2/16 7-9PM Tues Feb 7 by Nick The CS111 midterm exam is on Thursday February 16th from 7-9PM in STLC111 / 420-040 / 420-041 (depending on last name). Please see the midterm exam webpage for information about the exam, review materials (coming soon) and study tips. You got this!

  • assign3 Released! Thurs Feb. 2 by Nick Assignment 3 has been posted on the assignments page. It is meant to reinforce the topics of multiprocessing and pipes; your task is to implement your very own shell! The assignment is due Mon Feb 13 at 11:59PM PT. You can find more details on the assignment page.

  • assign0 Grades Released Fri Jan 27 by Nick Assignment 0 grades have been posted to the Gradebook page. The quartiles of scores on the assignment were (/79): 1st quartile = 76, second quartile = 78, third quartile = 79. Nice work! Check out Ed for a short debrief of the assignment.

  • assign2 Released! Fri. Jan 27 by Nick Assignment 2 has been posted on the assignments page. It is meant to reinforce the topic of crash recovery and OS trust with exercises ranging from implementing components of a crash recovery tool to using provided tools to explore logging filesystems and crash recovery tradeoffs to exploring assumptions we make when we use operating systems. We hope you have fun with it! The assignment is due Thurs 2/2 at 11:59PM PT. You can find more details on the assignment page.

  • assign1 Released! Tues. Jan 17 by Nick Assignment 1 has been posted on the assignments page. It is meant to reinforce the topic of filesystems (specifically the design of the Unix V6 filesystem); your job is to implement the logic for reading from the Unix v6 filesystem. We hope you have fun with it! It is due on Thursday January 26th at 11:59pm. See the assignment page for more information. Note that starting with this assignment, we aren't able to look at assignment code when helping in helper hours, though we can still provide code-level help. Friday's lecture covers enough material to implement the inode_iget and the singly-indirect portion of inode_indexlookup; the remaining portions require material covered on Wed. 1/18.

    Additionally, we'll be holding "YEAH hours" (Your Early Assignment Help Hours) for assignment 1 - YEAH Hours are an overview session meant to talk through the asignment, discuss the different components, and provide tips and tricks. YEAH hours take place via Zoom and are recorded - we'll announce the date and time soon! We encourage you to start the assignment beforehand and come to the session to go over the assignment as a whole, get tips, and get questions answered!

  • Section Assignments PostedTues. Jan. 17 by Nick We have posted section assignments - you can view your assignment from the "sections" dropdown in the top toolbar. We did our best to assign everyone to one of their top choices. On this form, if you'd like, you can also join a different section with space available. Unfortunately, if a section is full, we are not able to accommodate additional students at this time, but check back later, as enrollments may shift over time, and we also plan to add a few more section times soon with available space. If you didn't submit section preferences, you can also join any section with space available.

    Sections start Wed., and in the first section, your TA will introduce themselves and explain everything about section and what it's all about. You can find more information about section and section policies, including makeup sections, on the course information page. We'll see you in section this week!

  • assign0 Released! Wed. Jan 11 by Nick Assignment 0 has been posted on the assignments page. It is meant to get you up to speed with the tools, techniques and some of the C/C++ features we'll be relying on this quarter, and consists of some code reading, short answer questions, and a little code writing. We hope you have fun with it! It is due on Tuesday January 17 at 11:59pm. See the assignment page for more information. Also check out our course style guide for tips and guidelines on how to write code with good style!

  • Section Signups Open until Sat. 5PM Tues. Sep 27 by Nick Section preference submissions are now open! Anytime until Saturday at 5PM PDT, please submit your section preferences for which section you would prefer to attend this quarter. Note that preferences are not first-come first-serve; you may fill out your preferences anytime between now and Saturday at 5PM PDT, and you may come back to update your preferences later as well. You can access the preferences form in the "Sections" dropdown at the top of the page. For more information about sections including attendance, missing sections, and other policies, see the sections portion of our course syllabus.

  • Apply to CS111A! Sun Jan. 8 by Nick If you're looking for more practice and support as you take CS111, consider applying for CS111A ("CS111ACE")! It is a 1-unit class that is a part of ACE (Additional Calculus for Engineers), a supplementary instruction program that includes weekly sections, office hours, and ACE-specific review sessions. It is done in addition to all the normal requirements for CS111, and is scheduled this quarter for Tues 3-4:50PM in 320-109. Enrollment is by application, and you can find more information at this link: click here. Once enrollment decisions are made, students who are accepted will then be given a permission number to enroll on Axess. If you have questions, please email Trip Master, the ACE CA, at tmaster@stanford.edu.

  • Welcome! Sun Jan. 8 by Nick Welcome to CS111! Class starts on Monday, January 9th at 1:30PM in NVIDIA Auditorium. We are looking forward to meeting you and starting off a great quarter together! We'll have more details to come about the details of CS111's winter offering. In the meantime, please feel free to check out our FAQ. It covers questions about recorded lectures, conflicting classes, CS111A, and more. We hope you find it helpful! SCPD students, please check out our SCPD handout for more information on SCPD logistics.

Course Logistics

Lectures: Mon/Wed/Fri 1:30PM-2:20PM in NVIDIA Auditorium

Sections: Wed/Thu/Fri at various times; students sign up for sections after the quarter begins.

Exams:

  • Midterm Exam
    Date/Time: Thursday, February 16th, 7PM-9PM
    Location: various (see midterm webpage)
    Info: midterm webpage

  • Final Exam
    Date/Time: Wednesday, March 22nd, 3:30PM-6:30PM
    Location: Hewlett 200/201
    Info: final exam webpage

Feedback

  • How are we doing? Submit anonymous feedback here.

Course Staff

Instructor email: troccoli@stanford.edu
Visit the Getting Help page for more information about how to contact the course staff.

Anjali Ragupathi

Arden Ma

Briana Berger

Daniel Garcia Lopez

Isaac Gorelik

Jonathan Kula

Kevin Tan

Michela Marchini

Nikhil Raghuraman

Saumya Goyal

Sumer Kohli

Swayam Parida

Xiyu Zhang

Yash Govil

CS111A CA:

Trip Master (tmaster@stanford.edu)