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. The textbook is *Principles of
Computer System Design*,
by Jerome Saltzer and Frans Kaashoek.
Assigned readings are from this book, unless otherwise indicated.
Some chapters of this textbook are not in the hard copy version, but are
only available on-line. For these readings, I will provide a URL.

I will be lecturing on these subjects during the class.

The slides used in the lectures are available via links below for the particular week in which the lecture was given. Slides are available in both Powerpoint and PDF form. For slides that used animation, the PDF versions may be hard to deal with.

The TAs for the course are:

Tuan Le -- tuanle@cs.ucla.edu

Mohammad Mehdi -- taqi@cs.ucla.edu

They will be responsible for all issues related to the lab projects and design problems. Questions on these should be directed to them.

The final exam will be held at the scheduled period (Friday June 12, 8-11 AM) in the usual lecture hall, Boelter 3400.

The final exam will be substantially harder than the midterm. The questions on the final exam will require you to do more than remember and recite the definitions of terms or simply repeat basic procedures we discussed in class. They will involve application of knowledge from the class to new problems we have not explicitly discussed, either in the readings or in class.

There will be seven questions on the test, but you will only be required to answer any four of them, of your own choosing. The material covered by the final exam will span the entire ten weeks of the class. The test will cover both the lectures and the readings. The test will be open book, open notes, but you are not allowed to consult Internet resources other than the online book chapters.

Here is a set of sample final exam questions, taken from past final exams given for this class. Suitable answers are included.

Chapter 11, Overview and section 11.1, pages 11-4 to 11-28.

These readings are part of the online textbook and can be found here.

Chapter 11, section 11.2, pages 11-28 to 11-36.

Chapter 11, section 11.4, pages 11-49 to 11-54.

Chapter 11, section 11.6, pages 11-72 to 11-80.

These readings are part of the online textbook and can be found here.

Chapter 7, section 7.1, pages 7-1 through 7-20. Here is a link to the PDF online version of Chapter 7.

Fallacies of Distributed Computing Explained, Amon Rotem-Gai-Oz.

Chapter 9, section 9.6.3. Here is a link to the PDF online version of Chapter 9.

Chapter 4, section 4.5, pages 184-195.

What Cloud Computing Really Means, Eric Knorr, Galen Gruman, Infoworld.

Because I've fallen one full lecture behind, I am only assigning one lecture and set of readings for this week.

Chapter 2, section 2.5. (pages 91-112)

Chapter 8, Sections 8.1.1 (pages 8-3 to 8-6), 8.2.1 (pages 8-8 to 8-13), and 8.5.4 (pages 8-40 to 8-51). Here is a link to the PDF online version of Chapter 8. This chapter discusses reliability issues, a subject I will not have time to cover in class, so I recommend you read this material carefully.

An Introduction to Device Drivers," Chapter 1 of "Linux Device Drivers," by Jonathan Corbet, Alessandro Rubini, and Greg Kroah-Hartman, published by O'Reilly, 2005..

Understanding Modern Device Drivers, Asim Kadaf and Michael M. Swift, Proceedings of the seventeenth international conference on Architectural Support for Programming Languages and Operating Systems. 2012.

Chapter 6, section 6.1 (pages 300-321), section 6.3.4 (pages 360-362)

Chapter 6, Sections 6.2-6.2.1 (pages 321-323).

Dynamic Storage Allocation: A Survey and Critical Review, by Paul Wilson, Mark Johnstone, Michael Neely, and David Boles. This is a very long paper. You are only required to read the following sections of it:

Sections 1.1-1.3 and section 2-21 (pages 6-13) and sections 3.3 and 3.4 (pages 42-45).

Chapter 5, Section 5.4 (pages 242-255).

Chapter 6, section 6.2.2-6.2.9 (pages 323-347).

The midterm will be on Thursday, April 30, so there is only one lecture for this week.

Chapter 5, Section 5.2.5 (pages 221-222), Chapter 5, Section 5.6 (pages 273-284)

Slides:

Chapter 5, Section 5.2 (pages 210-230), Chapter 4, Section 4.2 (pages 167-173)

A note on these (and other) slides: depending on how you look at them, you may see some hidden slides that I did not lecture on. For example, lecture 7 contains several hidden slides on signals. You are not responsible on the tests for the content of these hidden slides. If the same material was also covered in the assigned readings, of course, you are responsible for what was said there. The slides are hidden because I have determined, from previous offerings of the class, that I would not have time to cover them, and I regarded them as less important than the other material in the lecture. However, the material they discuss is still useful, and it's worth looking at them, if you have an interest in the subject of operating systems that extends beyond merely taking this class.

Chapter 9, Section 9.1-9.1.7 (pages 9-1 through 9-20). Note: This is one of the chapters that is not included in the print version of the book, but is only available on line. Here is a link to the PDF online version.

NOTE: I will be out of town again on Thursday, April 15. I have taped the lecture for that day and will post links to the taped version as soon as they are available. I will be here for the Tuesday class, as usual.

Chapter 5, Section 5.5 (pages 255-272).

Chapter 6, Section 6.3 (pages 347-362).

As noted in class and in an email sent to all enrolled students, I will not be on campus for this lecture. Below, in addition to the usual Powerpoint version of the slides for the lecture, are links to a taped version of this lecture, which you should view at your convenience. It is possible that the links to the taped version will only work from within UCLA or when using the UCLA VPN.

As mentioned in class, I will be out of town on Tuesday, April 7, so we will not hold a class in our normal period. Instead, I have taped lecture 3. You should try to view it early in week 2, at your convenience. These should be viewable through most web browsers, though I would recommend using a device with a reasonably sized screen for the purpose.

I have divided the taped version into three pieces, for your convenience. I recommend viewing them in order.

Taped version of lecture 3, Part 1.

Taped version of lecture 3, Part 2.

Taped version of lecture 3, Part 3.

Chapter 2, Section 2.1 (pages 43-60)

Chapter 4, Section 4.1-4.1.2 (pages 147-162), Chapter 5, Section 5.1 (pages 199-210), Section 5.3-5.3.4 (pages 230-237)

No readings assigned for lecture 1.

Chapter 1 (pages 1-40).