Spring 2024 Course Overview
-
TR 4:10pm-5:25pm, 501 Northwest Corner Building
- Two synchronous and in-person exams for all sections:
- Exam 1: Thursday March 7, 4:10pm
Exam 2: Tuesday May 7, 4:10pm (Final exam is canceled)
All students in all sections MUST take the exams at those times.
There are no make-up or alternate exams.
If you cannot make any of those exams, please take the course next semester.
- Instructor: Kostis Kaffes
- Office hours: Calendar
- REQUIRED READING:
ACADEMIC HONESTY POLICIES
- 4118 Dev Guides
HW Due Dates
Date |
Assignment |
F 1/19 |
HW0 due |
F 1/26 |
HW1 due |
Su 2/10 |
HW3 due |
Fr 2/23 |
HW4 due |
Su 3/17 |
HW5 due |
Fr 4/5 |
HW6 due |
Fr 4/19 |
HW7 due |
Tu 5/7 |
HW8 due |
Course Schedule
Course overview and logistics
- Lecture:
-
Assignments:
-
Check that you have access to Ed
- Read the following two documents:
-
HW0 (50 points, individual assignment) – due Fri 1/19, 11:59pm
Send an email to Kostis containing:
- To: kkaffes@cs.columbia.edu
- Subject: “[4118] hw0-UNI” – without quotes, sole space before
hw0, UNI replaced with your actual UNI in lowercase
- Your name, major & school program, year – ex) Kostis Kaffes,
Electrical and Computer Engineering, National Technical University of
Athens, class of 2015
- Your pledge – see http://www.cs.columbia.edu/~jae/honesty.html
- CS classes taken and/or other programming background
- Optionally anything else you want to let me know
- Optionally attach a picture of you, but please reduce image file
size to about 100KB
- Start forming your group of three people
Introduction to OS/Unix
- Lecture:
- Reading:
- APUE: chapter 1, 2.3, 2.4
- OSTEP: chapter 2
- LKD: chapter 1
HW1: VM Setup & Linux Linked List
- Individual assignment, 100 points, due 23:59 pm Fri 1/26
Linux Overview
UNIX File I/O
- Lecture:
- Reading:
- APUE: 3.1-3.13
- APUE: 8.1-8.10
- APUE chapter 5 (skim)
HW3: Multi-Server
- Group assignment, 150 points, due Sat 2/10
Recitation: Sockets API and HTTP 1.0 in preparation for HW3
UNIX signals
- Lecture:
- Reading:
- APUE 9.4 - 9.6: skim, just to get a sense of process group, session, and controlling terminal
- APUE 9.7: skim pages 299-301, skip rest – just to get a sense of jobs running in foreground and background
- APUE 10.1 - 10.6 (skim signal descriptions in 10.2)
- APUE 10.8 - 10.9
- APUE 10.10: you can skip pages 340-341 & 343 (but interesting read if you know setjmp() / longjmp() or willing to find out)
- APUE 10.11 - 10.13
- APUE 10.14: skip page pages 352-353
Interprocess communication in UNIX
- Lecture:
- Reading:
- APUE 15.2, 15.5
- APUE 15.10
- APUE 15.8 (just pgs 565-566): semaphore semantics
- APUE 7.6 - 7.7
- APUE 7.8: a little bit off-topic, so optional
- APUE 14.8: read page 525-527, skim the rest
- APUE 15.9: page 576-578
POSIX threads
- Lecture:
- Reading:
- APUE 11.1 - 11.4
- APUE 11.5: read page 388-393; skip the rest of 11.5
- APUE 11.6: read up to (and including) 11.6.6
Nonblocking I/O and I/O multiplexing
- Reading:
- APUE 14.2
- APUE 14.4.0 (i.e., page 500-501)
- APUE 14.4.1
- Lecture:
UNIX domain sockets
- Reading:
- APUE 17.1
- APUE 17.2: pages 631-633 are optional, but recommended
- APUE 17.2.1
- APUE 17.3: pages 637-641 are optional, but recommended
- APUE 17.4: read 642-643, skip the rest
- Lecture:
Linux system calls
- Reading:
- OSTEP chapter 4 (previously assigned)
- OSTEP chapter 6 (previously assigned)
- LKD chapter 2
- LKD chapter 3: skim pages 37-40
- LKD chapter 5
- Lecture:
Run queues and wait queues
- Reading
- Process states (previously assigned)
- OSTEP 4.4
- LKD pages 27-28
- Scheduling basics & wait queues
- Lecture
HW4: Tabletop
- Individual assignment, 100 points, due Fr 2/23
Interrupts & Spin Locks
- Reading:
- Interrupts: LKD chapter 7
- Kernel locks: LKD chapter 10: pages 183 (from Spin Locks) - 202
- Preemption: LKD pages 62 - 64 (before Real-Time Scheduling Policies)
- Lecture:
Synchronization
- Reading:
- OSTEP chapter 28 (sections 28.9, 28.10, 28.11, and 28.15 are optional)
- Optionally, OSTEP chapter 30
- OSTEP chapter 31
- Optionally, read java.lang.Object API
doc
about
wait()
, notify()
, notifyAll()
if you haven’t already
- Lecture:
No class
HW5: Fridge
- Group project, 200 points, due Sun 3/17 (Hard Deadline)
Synchronization (cont.)
Scheduling algorithms
Midterm Review
Midterm
No class – Enjoy the spring break!
No class – Enjoy the spring break!
Scheduling in Linux
- Reading:
- OSTEP chapters 9, 10
- LKD chapter 4:
- pages 42 (Linux’s Process Scheduler) - 50
- optional, but recommended: pages 50 - 56
- pages 57 - 64: previously assigned, but read again
- pages 64 - 67
- Lecture:
HW6: Freezer
- Group project, 250 points, due Fr 4/5
Introduction to Paging
- Reading:
- Address translation basics: OSTEP chapter 15
- Segmentation: OSTEP chapter 16 (skim)
- see this blog if you want to learn about x86 segmentation (optional)
- Free-space management: OSTEP chapter 17
- Paging: OSTEP chapter 18
- Lecture:
x86 Memory Management
- Reading:
- Multi-level page table: OSTEP 20.3
- Inverted page table: OSTEP 20.4
- TLB: OSTEP 19
- Lecture:
Virtual Memory Beyond Physical Memory
- Reading:
- OSTEP chapter 21
- OSTEP chapter 22
- Lecture:
No class
Memory Management in Linux
HW7: Farfetch’d
- Group project, 125 points, due Fr 4/19
Storage Devices
- Reading:
- OSTEP chapters, 36, 37, 40, and 44
- Lecture
Storage Devices (continued)
UNIX File System and Journaling
- Reading:
- APUE 4.14, 4.15
- OSTEP chapter 41, 42
- Lecture:
VFS and LFS
- Reading:
- OSTEP chapter 43
- LKD chapter 13
- LKD chapter 14: pages 289 - 294
- See HW8 Part 2 for more resources you can read and reference.
- Lecture:
HW8: ezfs
- Group project, 250 points, due Tu 5/7
Final Review & Wrap-up
eBPF Tutorial
Guest lecture presented by Yannis Zarkadas, Columbia CS Ph.D. Student
Final is canceled