General Course Information:1,2

Instructor: Katia Obraczka (katia "at"

Lab: Internetwork Research Group (i-NRG)  (

Office hours: Thu 5-6pm and by appointment (Zoom link posted on the class Canvas page)

TAs: Daniel Alves (dalves "at"

Office hours: Tue 1:30-3:30pm, Th 9-11am, F 1-3pm

Lab (discussion) sections: M 2-3pm, W 2-3pm

Alexander Rinaldi (arinaldi "at"

Office hours: M 9-11am, W 9-11am, F 11am-1pm

Lab (discussion) sections: Tue 9-10am, Th 2-3pm

Lectures: T Th 11:40-1:15 

Location: Remote (Zoom link posted on the class Canvas page)

Lecture recordings available from:


Lab (discussion) sections are not mandatory but highly recommended as they will help with the programming assignments.

Required Text: Principles of Computer System Design, Saltzer & Kaashoek (ISBN 0123749573)

Optional Text: Modern Operating Systems, 4th ed., Tanenbaum & Bos (ISBN 0-13-359162-X)

Piazza: TBD

Course Focus: 

This course provides a general understanding of basic principles of computer systems design, including: modularity/abstraction, synchronization / concurrency, naming, and performance evaluation. It covers multiple approaches to each design principle along with the background necessary to choose the right approach for a given situation, understand how to apply these approaches to sample problems, and generalize them to other computer systems.

Students will also gain experience implementing computer systems code. This experience will be invaluable in later courses such as operating systems, database design, computer security, computer networks, and distributed systems.

 Topic Covered: 

♦ Introduction: dealing with complexity in computer systems

♦ Organization of complex computer systems: fundamental abstractions

♦ Modularity: clients & services

♦ Modularity: virtualization (memory, CPU, computer)

♦ Synchronization & concurrency: definitions & primitives

♦ Synchronization & concurrency: usage examples

♦ Approaches to naming in computer systems

♦ Measuring and evaluating computer system performance

♦ Security in computer systems: issues & mitigation

♦ Distributed computer systems

Resources: We will use the textbook as the main reference source. We expect you to read the assigned sections in the book prior to the lecture when the corresponding material will be covered. That way you’re prepared to participate, ask questions, and engage in discussions. Other than the textbook, all material for the class will be distributed and managed online using the class Web page and the class Canvas page. The former will be used for general class information, announcements, etc while the latter will be used for assignements and grading. We wil also have a discussion forum TDB.

Exams, Programming Projects & Grading:


There will be two exams, Exam 1 and Exam 2. Exam 1 will be scheduled around mid-quarter and Exam 2 during the scheduled slot in final exam week. You must take each exam at the scheduled time unless you are ill or have an unexpected family emergency. You must let the instructor know by email before the exam’s scheduled start regardless of the reason.

Programming Projects:

Programming assignments are an important component of this course, since they will give you an opportunity to “learn by doing”.  Lab sections will focus on providing guidance on the programming projects. There will be 4 programming projects, where the first one (Assignemnt 0) will be used to get students set up with the right environment for the remainder projects.

Grading: Grades will be assigned as follows:

Programming assignments: 50%

Note: Late projects will not be accepted. However, students have a 3-day grace period they can use over the quarter. For example, they can turn in Assignment 2 3 days late without any penalty but they will have to turn in every other assignment on time. Or they could turn in Assignments 1, 2, and 3 1 day late each. 

Exam 1: 20%

Exam 2: 25%

Class Participation: 5%


The class (both lectures and lab sections) will be delivered online using Zoom. Please make sure you have the adequate Zoom client installed on your device. Lecture and lab sections will happen as recurring Zoom meetings. All sections will be recorded and made available to students. Please use the links below to join.

Lecture: TBD

Lab sections: TBD 

UC Santa Cruz is committed to creating an academic environment that supports its diverse student body. If you are a student with a disability who requires accommodations to achieve equal access in this course, please submit your Accommodation Authorization Letter from the Disability Resource Center (DRC) to the instructor by email, preferably within the first two weeks of the quarter. The teaching staff would be happy to discuss additional ways we can ensure students' full participation in the course. All students who may benefit from learning more about DRC services are encouraged to contact DRC by phone at 831-459-2089 or by email at

 Student Responsiblities  

Students enrolled in this class agree to the following:

♦ All work turned in as projects and exams MUST be individual. If any work claimed by a student to be his/her own is found to be shared with other students, that will be considered a violation of academic integrity and will be handled accordingly. Academic integrity violations will NOT be tolerated and may resut in failing the class as well as additional disciplinary actions. More information about UCSC's academic integrity is provided below.

♦ Students are responsible for keeping up with material covered in class including readings from textbook. Students are also responsible for checking the class Web page frequently for updates, schedule changes, etc.

♦ Students must keep up with programming projects.

♦ Course material, including assignments and lecture notes, will be posted on the class Web page. However, students are responsible for all material covered in class, whether or not it appeared on the Web site.

Academic Integrity:

In recent years, there has been a steady increase in the number of academic integrity violation incidents in many UC campuses, and unfortunately, UCSC is no exception. The School of Engineering has a zero-tolerance policy for any incident of academic dishonesty. If cheating occurs, they will result in academic sanctions in the context of the course, and in addition, every case of academic dishonesty is referred to the students' College Provost, who then sets the disciplinary sanctions. Cheating in any part of the course may lead to failing the course and suspension or dismissal from the University.

What is cheating? In short, it is presenting someone else's work as your own. Examples would include copying someone (including friends, family members, tutors, current & former students, paid consultants, and random people on the Internet) else's written or electronic assignment, project, exams, etc, or allowing your own work to be copied. Although you may discuss problems and projects with fellow students, when you submit a project/exam with your name on it, it is assumed it is your own work. If you use ideas or text from others, you MUST cite your sources and give credit to whoever contributed to your work. Copying solutions from online sources is also considered cheating.

By taking this class, you agree to abide by the following rules on collaboration:

- You may not work on your assignment with anyone.

- You may not show your code or design to anyone.

- You may not have anyone “walk you through” an assignment, describe a solution in detail, or sit with you as you work on it. You may not provide such assistance to anyone, either. This includes friends, family members, tutors, current & former students, paid consultants, and random people on the Internet.

- You may not post code or questions from your project and exams online. This means anywhere online, including Canvas (ask us in person!), independent message boards (e.g., StackExchange), file sharing sites, etc.

Bottom line: don’t cheat!

If there are any questions on what constitutes academic integrity violations, please make sure to talk to the instructor and/or the TAs for clarification. You are also referred to for additional information on UCSC's academic integrity policies.

Tentative Schedule:

Date              Topic  Readings       Lecture Notes   
03.30 General course information  N/A        lecture 1           
04.01  Introduction to Systems  Ch. 1        lecture 2
04.06 Elements of Computer System Organization  Ch. 2 (Sections 2.1 to 2.3)        lecture 3
04.08 Elements of Computer System Organization Ch. 2 (Sections 2.1 to 2.3)        lecture 4
04.13  Client-Server Model Chapter 4 (Sections 4.1 to 4.3)        lecture 5
04.15  Client-Server Model Chapter 4 (Sections 4.1 to 4.3)        lecture 6
04.20 Client-Server Model Chapter 4 (Sections 4.1 to 4.3)         lecture 7
04.22  Client-Server Model & Interprocess Communiation/Synchronization "Modern Operating Systems", 4th. Edition, Tanenbaum,Chapter 2 (Sections 2.1-2.3)        lecture 8
04.27  Interprocess Communiation/Synchronization "Modern Operating Systems", 4th. Edition, Tanenbaum,Chapter 2 (Sections 2.1-2.3)        lecture 9
04.29 Interprocess Communiation/Synchronization "Modern Operating Systems", 4th. Edition, Tanenbaum,Chapter 2 (Sections 2.1-2.3)         lecture 10
05.04 Interprocess Communiation/Synchronization  "Modern Operating Systems", 4th. Edition, Tanenbaum,Chapter 2 (Sections 2.1-2.3)         lecture 11
05.06 Interprocess Communiation/Synchronization  "Modern Operating Systems", 4th. Edition, Tanenbaum,Chapter 2 (Sections 2.1-2.3)         lecture 12
05.11 Exam 1       

Interprocess Communication/Synchronization&Deadocks

"Modern Operating Systems", 4th. Edition, Tanenbaum,Chapter 2 (Sections 2.1-2.3) &"Modern Operating Systems", 4th. Edition, Tanenbaum, Chapter 6        lecture 13
05.18 Deadlocks  "Modern Operating Systems", 4th. Edition, Tanenbaum, Chapter 6          lecture 14
05.20 Finding Web Browser Bugs: Case Study Using Google's Chrome Browser Guest speakers: Adrian Taylor and Amy Ressler, Google
05.25 Deadlocks & Virtualization  "Modern Operating Systems", 4th. Edition, Tanenbaum,Chapter 6 & Textbook Ch. 5         lecture 16
05.27 Virtualization Textbook Chapters 5         lecture 17
06.01 Virtualization & Performance Textbook Chapters 5 & 6         lecture 18
06.03 Performance Textbook Chapter 6        lecture 19


06.08 Exam 2      12-3pm

Lecture recordings available from:

Optional Readings:

. Saltzer et al., End-to-end Arguments in System Design.

.Lampson, Hints for Computer System Design.

. David Clark, "The Design Philosophy of the DARPA Internet Protocols"

The class Web page will continue to be updated during the quarter. Students must check the page regularly. 

 2 Adapted from previous course offerings by Ethan Miller, Darrell Long, Peter Alvaro, and Faisal Nawab.