Syllabus

Computer Systems discusses computers as an integrated whole, including: hardware resources (e.g., CPU cores, CPU cache, memory management unit (MMU), RAM); the operating system; and systems languages (assembly language, C (the low-level high-level language), POSIX threads, the shell (the original UNIX scripting language), and Python (the de facto scripting language today)). This course will review the topics above (but including only an abridged "reading knowledge" of assembly). It will then apply this background to a real-world case study of importance today: Docker-style containers, the Cloud, and orchestration frameworks for clusters of servers.

Schedule

This is an approximate plan. I reserve the right to update it based on the interests and background of the class and/or time constraints. The reading list will be updated as we progress in the semester. Please check back regularly for the assigned readings for the quiz.
Week Topics Chapter/Assigned Reading
Sep. 9 C and pointers, and models of linking

HW0 due

class lecture, xv6:syscall.c, xv6:sysproc
The UNIX Time-Sharing System
Sep. 12 No class!
Sep. 19 UNIX shell, fork/exec/wait;
file descriptors, I/O re-direction
Ch. 4--6, Ch. 2 (code), Ch. 5 (code);
xv6: file.c, sysfile.c, pipe.c, proc.[ch]
Sep. 26 Process startup; args. and env. vars
syscalls; linking and loading
Ch. 4--6, Ch. 2 (code), Ch. 5 (code);
xv6: file.c, sysfile.c, pipe.c, proc.[ch]
Oct. 3 POSIX Threads, Concurrency; a first look at Locks
Ch. 28--31, xv6:spinlock.c
Required readings: Optional readings:
Oct. 10 University holiday: Columbus Day, no class.
Oct. 17 Virtual Memory, clock algo.; Cache/MMU/TLB
class lecture; Ch. 13--15, Ch. 17--19,
xv6: memlayout.h, exec.c, kalloc.c, mmu.h, and vm.c
Required reading:
Virtual memory, processes, and sharing in multics
Optional suggested reading:
What Every Programmer Should Know About Memory
Oct. 24 Midterm Exam
Oct. 31 Virtual Memory; Caches revisted;
ELF; GOT, PLT; static/dynamic linking
class lecture
Required readings: Optional readings:
Nov. 7 Scheduling get/setcontext, and xv6:swtch.S xv6:fs.c
Ch. 7, Ch. 8, Ch. 10
Readings:
Nov. 14 Intro to Filesystem Class lecture; Ch. 37 - 43
xv6: fs.c,file.c,sysfile.c,exec.c
Readings:
Nov. 14 Filesystem contd.; Python: high-level scripting
Nov. 21 Virtual Machines class lecture
Nov. 28 Linux Containers, Docker, Cloud, Orchestration
Cloud, orchestration (cont.);
class lecture
ostep.org: App B
Dec. 5 Orchestration (contd.);
Project Presentations
class lecture
Dec. 12 Final Projects Due Project Presentations (contd.)