This page is organized by the weeks of the quarter in which lectures were given. The weeks are in inverse order, on the assumption you will most often be looking for the most recent week.
This class will be taught by Peter Reiher.
All assigned readings will be made available by web links. The textbook is Operating Systems: Three Easy Pieces, by Remzi Arpaci-Dusseau and Andrea Arpaci-Dusseau. This is an on-line textbook, with links to the various chapters towards the bottom of the page, but the direct links to the assigned chapters will be provided on this page. You will not need to pay anything to use this textbook.
There wll be supplemental readings from Principles of Computer System Design, by Jerome Saltzer and Frans Kaashoek. All readings from this book will be available on-line, but only from UCLA IP addresses. Use the UCLA VLAN to connect into UCLA's network if you need to access them from another place. You do not need to pay for this textbook, either There will also be other web readings, also free.
I will be lecturing on these subjects during the class. Note that this syllabus is a statement of my intentions, NOT a guarantee that particular things will happen on particular dates. If you need to ensure that a vacation or business trip does not conflict with an important part of the class, speak to me. Don't just assume that the syllabus is absolutely correct.
The slides used in the lectures are posted in Powerpoint via links below for the particular week in which the lecture was given. Because some people have trouble with the Powerpoint versions of the slides, I am also posting PDF versions. The PDF versions do not support the animations, however.
The TA for the course is Diyu Zhou (email address: zhoudiyupku@gmail.com). He will be responsible for all issues related to the lab projects and design problems. Questions on these should be directed to him.
I will make the basic project materials available on this site. Solutions will be handed in via the Summer Session CCLE site.
One note on covered material: some lectures include "hidden slides," which were not lectured on. Material that is found ONLY on these hidden slides (and not, for example, in assigned readings) will not appear on the final exam. The PDF versions of the lectures do not distinguish between regular slides and hidden slides, so if you want to avoid studying this material, look at them in the Powerpoint version.
I have previously sent out information on the Edison kits you need for lab 4. In case you didn't get it earlier, here it is. Sometimes people find that some of the links in this PDF don't seem to work. That's usually because their PDF reader has broken the line. Please check that you are trying to follow the entire link before complaining to me that it doesn't work.
The final exam for CS 111 will be held during the final regular class session on Thursday August 31. It is an open book, open notes exam. It will cover all material in assigned readings and lectures through the entire class, including material covered on the midterm. Material only presented in exercises, but not in lectures or readings, will not appear on the test. The test will contain 3 questions covering topics covered in class. These questions will require you to demonstrate depth of understanding of concepts in the class and the ability to apply those concepts to new problems in computer systems. Unlike the midterm, I expect answers to be extensive. You cannot provide adequate answers in two or three sentences.
Here is a sample final to give you a sense of what your test will be like. Here are example answers. Unlike the midterm, the questions on the final will not have cut-and-dried answers that are either correct or incorrect, but will require thinking. There are different approaches to the questions and you can get good scores on the test even if your answers are not the same as these example answers, provided they show understanding, insight, and creative use of concepts in the class.
Project 4C is due on Monday September 4. The project description is here, along with a check script. There is also information about the server to use and a certificate for the server.
Distributed Systems: Goals and Challenges Distributed Systems Security
Project 3B is due on Monday August 28. The project description is here, along with a check shell program for testing. Files used in Project 3A will also be used here.
Introduction to operating system security
Authentication for operating systems
Distributed Systems: Goals and Challenges
Project 3A is due on Monday August 21. The project description is here, along with a trivial file system image for testing and the output you should produce for the trivial file system image. The test image that you are to work with is also here.
Object storage (only history and architecture sections of page
Key-value stores (only Introduction and types sections of page)
FUSE (only Introduction, history, and uses sections of page)
Arpaci-Dusseau, Appendix I.6-10.
Project 4B is due on Friday August 11. The project description is here, along with a checking script.
Measuring Operating System Performance
Arpaci-Dusseau, Chapter 33-33.6.
Device Drivers Classes and Services
Arpaci-Dusseau, Chapter 30, section 30.2 on.
Arpaci-Dusseau, Chapter 30, through section 30.1
Project 2A is due on Friday July 22. The project description is here, along with several files used in the project.
Arpaci-Dusseau, Chapter 17. This chapter should have been assigned with Lecture 5. The material in the chapter will not appear on the lecture 7 quiz, but may appear on the midterm and final exams.
Named pipes. This is a web page with multiple links off it. You are to read the parts labeled 6.3.1 through 6.3.5.
There will be no lecture meetings this week on Tuesday and Thursday, since I am out of town. I will post taped versions of the lectures on the CCLE site. The slides and readings are below.
Project 1B is due on Friday July 15. The project description is here, along with several files used in the project.
Project 1A is due on Friday July 7. Here is the project description for project 1A. This project teaches you how to work with terminal I/O and how to perform interprocess communications. You should turn your answers in on the class CCLE page for week 2.
Tuesday is July 4, the Independence Day holiday, so there is no class, assigned readings, or slides for that day.
Project 0 is due on Friday June 30. Here is the project description for project 0. This project is intended to allow you to gauge if you have the skills required to complete the other projects in CS 111 with ordinary effort. If you do not find project 0 easy, or if you do not get a very high score on this project, you should rethink whether you are ready to take CS 111.
Introduction to the class, PDF version.