# CS162: Operating System

## Descriptions

- Offered by: UC Berkeley
- Prerequisites: CS61A, CS61B, CS61C
- Programming Languages: C, x86 Assembly
- Difficulty: 🌟🌟🌟🌟🌟🌟
- Class Hour: 200 hours+

The course impressed me in two aspects:

Firstly, the textbook: *Operating Systems: Principles and Practice (2nd Edition)* is written in an insightful but easy-to-understand way, well compensated for the lack of theoretical knowledge in MIT6.S081, I highly recommend you to read this book.

Secondly, the project for this course *Pintos* is a great journey for system hackers. *Pintos* is a toy operating system developed at Stanford for educational use. The author Ben Pfaff even published a [paper](https://benpfaff.org/papers/pintos.pdf) to explain the design principles of *Pintos*.

Unlike the small but comprehensive design philosophy in MIT's xv6 labs, *Pintos* emphasizes system design and implementation more. The codebase is about 10,000 LOC and only provides the basic functions of a working operating system. The four projects let you add scheduler (Project1), system calls (Project2), virtual memory (Project3), and the file system (Project4) to this extremely simple operating system. All projects leave a a big design space for students and require more than 2000 LOC. Based on the [feedback](https://www.quora.com/What-is-it-like-to-take-CS-140-Operating-Systems-at-Stanford) from Stanford students, the latter two projects take over 40 hours per person even in teams of 3-4 people.

Although it is tough, Stanford, Berkeley, JHU and many other top U.S. colleges have chosen *Pintos* as their OS course project. If you're really interested in operating systems, it will greatly improve your ability to write and debug low-level system code. For me, it is an invaluable experience to design, implement, and debug a large system independently.

*Pintos* will also be introduced as a course project in Peking University's OS Course. In the Spring 2022 semester, I worked with [another TA](https://github.com/AlfredThiel) to write a comprehensive [lab documentation](https://pkuflyingpig.gitbook.io/pintos) and provided a docker image for the ease of cross-platform development. In the last semester before graduation, I hope such an attempt can make more people fall in love with systems and contribute to the field of systems in China.

## Course Resources

- Course Website: <https://cs162.org/>
- Lecture Videos: <https://www.youtube.com/watch?v=YfHY0pvpRkk>, videos for each lecture can be found on the course website.
- Textbook: [Operating Systems: Principles and Practice (2nd Edition)](http://ospp.cs.washington.edu/)
- Assignments: <https://cs162.org/>, 6 Homework, 3 Projects, the course website has specific requirements.

## Personal Resources

Since the Operating System Course at PKU uses the project, my implementation is not open source to prevent plagiarism.
