ASSIGNMENT items due times are 11:59PM on the listed date. Read the READ items before class on the day where they appear. Homework submissions via Moodle.
M Jan 2
Yay! Two more days of break!
W Jan 4
- [READ] Course information
- [LAB] VS Code & mantis
- Class notes
- Slides
F Jan 6
- [READ] Bryant & O'Halloran 1.1-1.4, 2.1
- [READ] An Introduction to Character Encodings (Ravi Suresh Mashru)
- [ASSIGNMENT 1/7] Starting C
- Class notes
- Slides
M Jan 9
- [READ] Bryant & O'Halloran 2.2-2.3
- [READ] Pointer basics (Stanford)
- [READ] The 5-Minute Guide to C Pointers (Dennis Kubes)
- [VIDEO] (3:11) Binky Pointer Fun Video C (Nick Parlante)
- [LAB] In class today. Playing with data representation
- Class notes
- Slides
W Jan 11
- [READ] The Descent to C (Simon Tatham)
- [READ] An Introduction to Character Encodings (Ravi Suresh Mashru)
- Class notes
- Slides
F Jan 13
- [VIDEO] (21:48) The queues assignment (how the compiler treats queue.h versus queue.c)
- [VIDEO] (16:30) C header files (how the compiler treats queue.h versus queue.c)
- Class notes
- Slides
M Jan 16
- [ASSIGNMENT 1/16, 8:30AM] Queues in C
- Class notes
W Jan 18
- [READ] Review sections 2.1.6-2.1.9 of Bryant & O'Halloran on bitwise and logical operations in C
- [QUIZ 1/18] C and data representation. You may retake this quiz as many times as you wish before the deadline (11:59PM on the listed date). Your score will be the maximum score of all your retakes.
- Class notes
- Slides
F Jan 20
- [READ] Read sections 3.1-3.3 of Bryant & O'Halloran to get started thinking about assembly language
- [ASSIGNMENT 1/22] Bits & character encodings
- [LAB] Weird integer stuff in C
- [READ] Sign extension
- [READ] Integer promotion in C
- Class notes
- Slides
M Jan 23
W Jan 25
- [READ] Use sections 3.3-3.6.7 of Bryant & O'Halloran as a reference as you work on assembly language homework
- [LAB] I will demo this material in class, but you should work through the lab outside class. Intro to debugging C code using gdb
- Class notes
- Slides
F Jan 27
- [LAB] Reverse engineering from assembly to C We'll work on this together in class on 1/25 and 1/27.
- Class notes
- Slides
M Jan 30
- [EXAM] In-class exam. Meet in Olin 304/306/308.
W Feb 1
F Feb 3
M Feb 6
- Woohoo, midterm break! 🥳
- [VIDEO] (38:54) gdb & the bomb-defusing lab
- [VIDEO] (20:45) Sample bomb walkthrough
- A gdb quick reference targeted at the bomb project
W Feb 8
F Feb 10
- [ASSIGNMENT 2/12] Defusing "bombs" with gdb
- [LAB] (outside class) Sample bomb to help you get started
- Class notes
M Feb 13
W Feb 15
- [READ] Bryant & O'Halloran 8.1-8.4
- [READ] Read the main sections of the manual pages for fork, execlp, execvp, wait, and signal (and fflush, while you're at it)
- Class notes
- Slides
F Feb 17
- [ASSIGNMENT 2/17] Implementing a command shell, part 1
- [VIDEO] (31:22) Implementing a command shell, part 1
- [VIDEO] (26:05) Implementing a command shell, part 2
- Class notes
- Slides
M Feb 20
- [ASSIGNMENT 2/20] Implementing a command shell, part 2
- Class notes
- Slides
W Feb 22
F Feb 24
- [READ] (Optional) Want to know about the history of buffer overflow attacks? Here are some links. Want a deep technical dive into one recent attack? Here you go. And here's a short summary of buffer overflow prevention techniques.
- Class notes
- Slides
M Feb 27
- [ASSIGNMENT 2/27] Exploiting buffer overflows
- Class notes
- Slides
W Mar 1
F Mar 3
- [READ] Bryant & O'Halloran 12.3-12.4 about threads
- Class notes
- Slides
M Mar 6
- [ASSIGNMENT 3/6] Programming with threads
- Class notes
- Slides
W Mar 8
F Mar 10
- [EXAM, 5:00PM 3/15] Takehome final exam
- 🎉 Yay, last day of classes! 🎉
- Class notes
- Slides