CS 111: Operating System
Winter 2021, 8– 9:50am Tue Thur, Online
Office: 496A Engineering VI
Contacting me: I prefer to be reached by email.
In addition to me, this course is staffed by three teaching assistants, who will be attending the lab sections, and will be the primary point of contact with regard to the grading of projects.
Tianxiang Li (firstname.lastname@example.org), TA
Tengyu Liu (email@example.com), TA
Please post your questions on the piazza online forum.
CS 111, Operating System Principles is meant to provide you with a solid grounding in the basic principles of operating system design. This grounding will give you a deeper understanding of how a vital piece of system software operates and introduce you to important concepts that are frequently used in large software systems you are likely to encounter in your future work.
CS 111 has prerequisites of CS 32, 33, and 35L. The class involves serious programming and would be extremely challenging for anyone without a programming background. It also assumes knowledge of many fundamental tools used in software development, particularly in Linux/Unix environments. If you have not taken these courses or otherwise acquired this background, you are likely to find CS 111 very difficult.
CS 111 is widely held to be one of the most difficult courses in the undergraduate Computer Science catalog, due to:
· the amount of reading
· the number of new and subtle concepts to be mastered
· the complexity of the principles that must be applied
· the amount of work involved in the projects
People who have had little difficulty with previous Computer Science courses are often surprised by the workload in this course. Keeping up in this course requires considerable work and discipline. Catching up after falling behind is extremely difficult.
Times and place
The lecture meets on Tuesday and Thursday from 8--9:50am online. Zoom link will be announced via email.
Most of the readings for this course will come from Remzi Arpaci-Dusseau's Operating Systems in Three Easy Pieces. This is an online textbook, so you will not need to purchase a book for this class. However, the course covers certain topics that are not discussed in this textbook. These topics will be covered from alternative readings (all available on-line). These readings will be posted on the class web site before the class in question. Tests will cover material from both lectures and all assigned readings.
The second textbook we will use is Tanenbaum and Bos’ Modern Operating Systems. Here is an online copy of the book.
You are also recommended to read Linux Kernel Development. A copy can be found here.
Slides and other materials
All slides and other materials will be posted on the course website.
Obtaining additional assistance
Asking questions of course stuff
You can most easily get course questions answered by coming to lecture, a lab section, or office hours and asking them. I am happy to help you in person when I'm available. You can also ask questions by posting them on our piazza site or sending email to your TAs. If the questions require a complex or lengthy response, we may ask you to see one of us in person. As projects approach their due date, particularly on days when projects are due, we begin to receive quite a bit of email all at once, so we may not be able to respond to all messages before the project is due. We aren't ignoring you on purpose, but unfortunately it's not always possible for the relatively small course staff to answer questions from a large number of students at once.
Accommodations for disabilities
Any students who feel that they may need an accommodation based on the impact of a disability should contact me privately to discuss these specific needs. Also, contact the Center for Accessible Education online at (310) 206-8049 as soon as possible to better ensure that such accommodations, such as alternative test-taking environments or note-taking services, can be arranged for you in a timely way.
Weights of graded artifacts
Your course grade will be determined from the weighted combination of your scores on each of six projects, one Midterm, and one Final Exam. The weights of each of these are:
Determining final grades
No slip days are allowed. If your submission is X days late for a project, 2X-1 points will be deducted from your project grade. Makeups or alternate times for exams will only be possible with consent of the instructor prior to the exam date.
I will not formally curve the grades, but I will look at the distribution.
If you're curious about how you're doing in the course, I'm happy to discuss your estimated grade at any time. It's generally best to have this conversation in person, so that we can explore issues other than just the raw numbers; I'm happy to have this conversation at any time that I'm available, and I'm also glad to do it via email if we can't find a mutually available time.
There will be a midterm and final exam for this class. The midterm will be held in class during the fifth week. The final exam will be held in the scheduled final period for the class, which is Wednesday, March 17, 3-6PM. Both the midterm and final exam will be held online.
I have received many requests for PTEs. I will not give out PTEs until week 2 of the spring quarter. Please come to the class and tell me you need a PTE if you still want to take the class at the end of week 2.
The policy—avoid cheating!
I expect all students to follow the UCLA Student Conduct Code. This code prohibits cheating, fabrication, multiple submissions, and facilitating academic dishonesty. You can find further information about this code at the Student Guide to Academic Integrity. The Office of the Dean of Students offers a workshop on academic integrity if you wish to understand UCLA’s policies on this issue more thoroughly.
Group study is often useful and is encouraged, but projects are to be performed by each student individually, except for project 3, which can be performed with one partner. You are not permitted to use any other students’ code or written material in your projects (other than your partner’s for project 3), and you should not give your code or written material to any other students. You are not permitted to post your code to Github or to other web sites. In cases where multiple projects show signs of plagiarism, all involved parties will be reported to the Dean, so even if it was your work that was copied, you could still face consequences. Brief quotations from other sources are sometimes acceptable in project submissions, but submissions should be predominantly your own original work. If you include any material in your project submissions that is obtained from an online source, book, or other place, you must specify the sources for these parts of your submitted work.
The instructor is grateful to Paul Eggert, Peter Reiher, Mark Kampe, and Junfeng Yang who have generously provided related course materials.