tl;dr

Take CS112 if and only if you have taken cs111. CS140 has been renumbered to CS212, but is temporarily still available under the old number as well. Take CS212/CS140 only if you have not taken CS111. Prefer the new number CS212 over CS140 unless you need the number CS140 for backwards compatibility with an old program sheet.

Why three OS classes?

Stanford's operating systems class, previously called CS140, suffered from two problems. First, many students found the Pintos projects challenging to complete while simultaneously learning about operating systems for the first time. The class's difficulty then dissuaded some undergraduates from learning about operating systems. Second, CS140 prevented the undergraduate systems core, CS110, from covering important topics such as virtual memory to avoid redundancy with CS140.

Our solution was to create a new operating systems class, CS111, with similar lecture material as CS140 but much easier projects. We can then offer the Pintos projects separately as a follow-on class, CS112. Our hope is that replacing CS110 with CS111 will give all undergraduates the opportunity to learn about operating systems. Moreover, we hope that offering the Pintos projects as a standalone class will make them less painful, both because the CS111 background should help and because students will not have to spend time on lectures and exams. Moreover, for people who don't want to do the Pintos projects, or who want even more kernel hacking experience, we can offer alternatives to CS112 such as CS140e.

Who should take CS112?

You should take C112 only if you have already taken CS111. In that case, you should take CS112 because you want to do the Pintos projects to learn more about operating systems, as well as to fulfill requirements on your program sheet. Note that if you don't want to do the Pintos projects, you can take an alternative class such as CS140e. Or, if you really like operating systems, you can take both CS112 and CS140e as the two classes should be mostly complementary.

Who should take CS212?

You should take CS212 if you want to learn about operating systems and have not taken and do not intend to take CS111. CS212 is effectively an accelerated class combining CS111 and CS112 into a single quarter. It is primarily intended for graduate students, but is also suitable as a one-quarter substitute for the CS111, CS112 sequence for undergraduates who already have a strong C programming background.

Who should take CS140?

CS140 is just an alias for CS212. While CS212 is the preferred new name of the class, students needing to satisfy the requirements of legacy program sheets only listing CS140 may wish to take the class under its old name. However, we believe the 200-level designation is more appropriate given the workload and pace of the class, and the CS department should accept CS212 anyplace CS140 is listed as a requirement.

Can I take CS112 without CS111?

No. If you take only one of CS111 and CS112, it should be CS111, which provides a good overview of operating systems including programming projects. Many of the concepts taught in CS111 are not covered in CS110, so even if you took CS110, the material from CS111 will not be redundant. What CS112 provides over CS111 is experience writing kernel code--but it doesn't make sense to write kernel code without also learning OS concepts. If you want to learn OS concepts and write kernel code in the same quarter, then you should take CS212.

What lectures/sections should I attend if I'm enrolled in CS112?

We highly recommended that you attend or watch the four Friday sections on the four Pintos projects, as these will help you get started.

We also suggest that you attend or watch the lectures on concurrency and synchronization, which are flagged on the syllabus. These topics often come up in job interviews, and CS212 will cover them in a bit more detail than CS111. However, you will not be tested on the material, so this is purely optional.

Finally, you are welcome to attend any other CS212 lecture you want, and should feel free to ask questions about the lecture material on edstem. We expect most students will not do this, but if there were topics you didn't understand or don't remember from CS111, then this is a good chance to see them presented in a different way or ask questions about them.

Can a project team include students from both CS112 and CS212?

Yes. You are welcome to form project teams across the two classes, and the Pintos projects are identical. We recommend that prospective teammates inform each other of the class they are enrolled in and whether they are taking it pass/fail.

Which office hours should I attend?

Because the projects in CS112 and CS212 are the same, we have a combined course staff and you should feel free to attend any office hours. In the past, the instructor (David) has spent a higher faction of his office hours fielding questions about lecture material than the CAs, but this might change with the reorganization into CS112/CS212.