CS111 Winter 2021 | Course Reference | Course Objectives | Schedule | Project Guide


CS111 Winter 2021
Schedule


This schedule is a work in progress and will be updated throughout the quarter; check in before each lecture for updates. In general, I'll try to keep the schedule at least a week or so ahead, so that you can anticipate where we're headed.

All assigned readings are from the Scott text. It is a good idea to skim the assigned reading before the lecture for the main ideas, attend lecture, and then to go through the assigned reading again to fill in the details that you missed, both in your initial skim of the reading and in the lecture.

Several lectures have little or no reading corresponding to them. In some cases, this is because a block of reading corresponds to more than one lecture. In other cases, the material covered in that lecture is not discussed in the textbook.

Date

Lecture Topics

Readings

Week 1

Tue 1/5

Administrative Introduction

OS Overview and History

Syllabus
OSTEP C2 (intro to OS)

MOS C1.1-1.2
OS Principles

 

Thur 1/7

PC Hardware and x86 Programming

MOS C1.3

Linking and Libraries
Linkage Conventions

F 1/8


Discussion: Linux/C Programming

 

Project 0
order Edison components

 

Week 2

Tue 1/12

Processes and Address Spaces

Linux Processes


 OSTEP C3 (intro to processes)
 OSTEP C4 (processes)
 OSTEP C5 (process APIs)
 OSTEP C6 (process implementation)
signal(2)
kill(2)

 

Thur 1/14

Scheduling

 OSTEP C7 (scheduling)
 OSTEP C8 (adaptive scheduling)

 

F 1/15

I/O and IPC

Project 1A

Week 3

Tue 1/19

Advanced Scheduling

MOS C 2.4

Thur 1/21

Interrupts and System Calls

MOS C 1.6, Ch 5.1.5

F 1/22

Encrypted Communication

Project 1B

Week 4

Tue 1/26

Segmentation and Paging

 OSTEP C12 (intro to memory)
 OSTEP C13 (address spaces)
 OSTEP C14 (memory APIs)
 OSTEP C17 (allocation algorithms)
Garbage Collection

 

 OSTEP C15 (relocation)
 OSTEP C16 (segmentation)
 OSTEP C18 (paging)

 

 

 

Thur 1/28

Virtual Memory

 OSTEP C19 (TLBs)
 OSTEP C21(swapping)
 OSTEP C22 (swapping policy)

MOS Ch 3.3, Ch 3.4
Working-set replacement

 

F 1/29

Embedded System bring-up

Project 4A

Week 5

Tue 2/2

Thread and Synchronization

 

Midterm Review


 OSTEP C25 (intro to sync)
 OSTEP C26 (theads & races)
 OSTEP C27-27.2 (thread APIs)
User-mode Threads

 

 

Thur 2/4

Midterm

F 2/5

Mutual Exclusion Operations

Project 2A

·         Week 6

Tue 2/9

Locks, Semaphores, and Monitors

 

 

 OSTEP C27.3-4 (Synchronization APIs)
 OSTEP C28-28.3 (locking)
 OSTEP C28.4-9 (implementing locks)
 OSTEP C28.12-15 (spinning)
 OSTEP C30-30.1 (condition vars)

 OSTEP C29 (protecting data)
 OSTEP C30.2-3 (producer/consumer prob)
 OSTEP C31 (semaphores)

 

 

Thur 2/11

Concurrency Errors: Deadlocks, Data Races, and Atomicity Violations

 

 


 OSTEP C32-32.2 (concurency probs)
 OSTEP C32.3 (deadlock)

Deadlock Avoidance

 

F 2/12

Contention

Project 2B

Week 7

Tue 2/16

 Memory Allocation

MOS C 3.1-3.3, 3.5-3.7

Thur 2/18

Linux Memory Management

Linux Kernel Development C 15

F 2/19


Edison sensors and communication

Project 4B

Week 8

Tue 2/23

Disks

 OSTEP C36 (I/O Devices)
 OSTEP C37 (Hard Disk Drives)

MOS C 5.4

Thur 2/25

RAID

Arpaci C38 (RAID)

F 2/26

File System Interpretation

Project 3A

Week 9

Tue 3/2

File Systems

 OSTEP C39 (files)
 OSTEP C40 (file systems)

 MOS C4

 

Thur 3/4

File System Examples

OSTEP C41 (FFS)

OSTEP C43 (LFS)

F 3/5

File System Analysis

Project 3B

Week 10

Tue 3/9

Linux File Systems and Journaling

OSTEP C42 (Journaling)

 

Thur 3/11

Final Review

 

F 3/12

Secure communication

Project 4C

Finals Week

W

3/17 3:00-6:00pm

Final exam on zoom