• Links to lecture notes/slides are preliminary, and will be updated as our course progresses.
  • Lectures are more comprehensive than lecture notes/slides.
  • Lecture notes/slides are not a replacement for attending lectures.


MondayTuesday WednesdayThursday Friday
jan 13

week 1
jan 14
LEC 1: Introduction, slides, and Xv6 book
Preparation: Read Xv6: Ch 2 OS Organization (for your amusement: Unix)
Assignment: Lab shell: Unix shell
jan 15 jan 16
LEC 2: C Programming, slides, and examples
Preparation: Read Introduction in Lab firstlab: C Programming, Pointers: 5.1- 5.6, and Structures: 6.1-6.4 in Kernighan & Ritchie
Assignment: Lab firstlab: C Programming
jan 17
jan 20
week 2
Martin Luther King Day
jan 21
LEC 3: C Programming - Xv6 API, slides, and examples
Preparation: Read Xv6: Ch 1 OS Interfaces
jan 22 jan 23
DUE at 8AM: Lab firstlab: C Programming
LEC 4: C Programming - Xv6 API, slides, and examples
Preparation: Read Bitwise Operators: 2.9, Pointers: 5.1- 5.6, and Structures: 6.1-6.4 in Kernighan & Ritchie
Assignment: Lab util: Unix utilities
jan 24
jan 27

week 3
jan 28
LEC 5: OS Design, slides
Preparation: Read Xv6: Ch 2 OS Organization and xv6 code: kernel/proc.h, kernel/defs.h, kernel/entry.S, kernel/main.c, user/initcode.S, user/init.c, and skim kernel/proc.c and kernel/exec.c
jan 29 jan 30
DUE at 8AM: Lab util: Unix utilities
LEC 6: RISC-V Calling conventions, slides
Preparation: Read RISC-V Calling Convention
jan 31
DROP w/o W
feb 3

week 4
feb 4
LEC 7: System Call Entry/Exit and Traps, slides
Preparation: Read Xv6 Ch 4 Traps, except 4.6 and kernel/riscv.h, kernel/trampoline.S, and kernel/trap.c
Assignment: Lab syscall: System calls
feb 5 feb 6
LEC 8: Virtual Addressing
Preparation: Read OSTEP: Ch 15: Address Translation, Ch 16: Segmentation, and Ch 18:Intro to Paging.
feb 7
feb 10

week 5
feb 11
DUE at 8AM: Lab syscall: System calls
LEC 7: Page Tables
Preparation: Read Xv6: Ch 3 Page Tables and kernel/memlayout.h, kernel/vm.c, kernel/kalloc.c, kernel/riscv.h, and kernel/exec.c
feb 12 feb 13
LEC 8: Page Faults, slides
Preparation: Read Xv6: Section 4.6 Page Faults
Assignment: Lab pgtbl: Page Tables
feb 14
feb 17

week 6
feb 18
LEC 9: Device drivers, slides
Preparation: Read Xv6: Ch 5 Interrupts and kernel/kernelvec.S, kernel/plic.c, kernel/console.c, kernel/uart.c, kernel/printf.c
feb 19 feb 20
DUE at 8AM: Lab pgtbl: Page Tables
LEC 10: Locking, slides
Preparation: Read Xv6: Ch 6 Locking with kernel/spinlock.h and kernel/spinlock.c
Assignment: Lab traps: Traps
feb 21
feb 24

week 7
feb 25
Review Material from First Half of Class
Prepare for Midterm Exam
Discuss Second Half Material
feb 26 feb 27
Midterm Exam
feb 28
mar 3
week 8
Spring Break
mar 4

Spring Break
mar 5

Spring Break
mar 6

Spring Break
mar 7

Spring Break
mar 10

week 9
mar 11
Review Midterm Exam
Begin Second Half of Material
mar 12 mar 13
DUE at 8AM: Lab traps: Traps
LEC 11: Scheduling Basics
Preparation: Read OSTEP: Ch 6: Direct Execution and Ch 7: Scheduling.
mar 14
mar 17

week 10
mar 18
LEC 12: Scheduling Fair
Preparation: Read OSTEP: Ch 8: MLFQ and Ch 9: Lottery.
mar 19 mar 20
LEC 13: Scheduling Details, Scheduling Coordination, code, slides
Preparation: Read Xv6: Ch 7 Scheduling at least through Section 7.6, and kernel/proc.c, kernel/swtch.S, kernel/sleeplock.c
Assignment: Lab scheduling: Scheduling
mar 21
DROP w/o F
mar 24

week 11
mar 25
LEC 14: File systems, slides
Preparation: Read Xv6: Ch 8 File system (except for logging sections) and kernel/bio.c, kernel/fs.c, kernel/sysfile.c, kernel/file.c
mar 26 mar 27
DUE at 8AM: Lab scheduling: Scheduling
LEC 15: Crash recovery, slides
Preparation: Read Xv6: Ch 8 logging sections and kernel/log.c
mar 28
mar 31

week 12
apr 1
LEC 17: File system performance and fast crash recovery
Preparation: Read Journaling the Linux ext2fs Filesystem (1998)
Assignment: Lab fs: File Systems
apr 2 apr 3
LEC 18: Concurrency - Threads Intro
Preparation: Read OSTEP: Ch 26: Concurrency Intro and Ch 27: Threads API.
apr 4
apr 7

week 13
apr 8
DUE at 8AM: Lab fs: File Systems
LEC 19: Concurrency - Locks
Preparation: Read OSTEP: Ch 28: Locks
apr 9 apr 10
LEC 20: Concurrency - Condition Variables, Semaphores
Preparation: Read OSTEP: Ch 30: Condition Variables
Ch 31: Semaphores.
Assignment: Lab thread: Multithreading
apr 11
apr 14

week 14
apr 15
Cushion Day - snow, extra time, etc
apr 16 apr 17
DUE at 8AM: Lab thread: Multithreading
Cushion Day - snow, extra time, etc
apr 18
apr 21

week 15
apr 22
Special Lab Day - Security Lab.
Preparation: Read and aswer the questions in Lab Security.
Assignment: Lab security: Security
apr 23 apr 24
DUE at 8AM: Lab shell: Unix shell
Review Material from Entire Class
Prepare for Final Exam
apr 25
apr 28

week 16 - Exams
apr 29

Final Exam (date/time TBD): 8:30-11
apr 30

Exam Week
may 1

Exam Week
may 2

Exam Week


Questions or comments regarding CPSC 405? Send e-mail to Gusty at ecooper@umw.edu.

Creative Commons License Top // CPSC 405 home // Last updated 8-Aug-2024 13:30 EST