ASSIGNMENTs are due on the day in which they appear below. Due time is 5:00PM if the due date is a Friday, or 11:59PM otherwise. Do READING/VIDEO items by class time on the date where they appear. LABs will happen during class, and are due by the end of that same day. You will submit homework via Moodle.
M March 30
- [READ] Course information
- [READ] Advice
- Join our class Slack workspace and introduce yourself in #general
- [LAB] JupyterHub & mantis Do this no later than the first day of class.
- [SAMPLES] Read through and experiment with these simple C programs: hello.c, output.c, args.c, and bitwise.c
- Class notes
- Slides
W Apr 1
- [QUIZ] in class today
- [READ] Dive Into Systems (DIS), section 1.1 Getting Started Programming in C
- [READ] DIS 4.6 Bitwise Operators
- [READ (or SKIM, as needed)] the DIS sections about print statements, if statements, functions, and arrays. Questions about other starter topics in C? Take a look at the rest of Chapter 1.
- [LAB] command-line arguments and bits in C
- Class notes
- Slides
Fri Apr 3
- [ASSIGNMENT] bases & bits: getting started with integers in C
- [SAMPLES] byte-counter.c and byte-counter-better.c and strings.c
- Class notes
- Slides
Mon Apr 6
- [QUIZ] in class today. Bitwise operators |, &, ^, and ~
- [ASSIGNMENT] select-column: a simple CSV file parsing exercise
- Class notes
- Slides
Wed Apr 8
Fri Apr 10
- [QUIZ] in class today. Two's complement integers
- [READ] UTF-8
- Class notes
- Slides
Sun Apr 12
- [ASSIGNMENT] bits & character encodings: UTF-8 and its friends
Mon Apr 13
- [SAMPLES] printing-bytes.c, pointers.c
- Class notes
- Slides
Wed Apr 15
- [LAB] pointers in C
- [READ] DIS 2.1-4: Various sections about memory and pointers
- [VIDEO] tokenizer assignment info. Note that I have changed the
get_tokensfunction signature since this video was made, but overall, the video is likely to be helpful. - [SAMPLE] memory.c
- Class notes
- Slides
Fri Apr 17
- [ASSIGNMENT] tokenizer: making space for an array of strings
- [INFO] Exam study guide
- Class notes
- Slides
Mon Apr 20
- [QUIZ] on Moodle, about data representation. You can take it as many times as you wish. I'll record only your highest score.
- Class notes
Wed Apr 22
- In-class exam
Fri Apr 24
- [LAB] (complete by Monday classtime) getting started with assembly language
- [READ] DIS 6 and 7.1-4: Intel x86_64 assembly language basics. You really need to read these sections.
- [RESOURCE] Compiler Explorer
- [RESOURCE] Getting started with Compiler Explorer
- [RESOURCE] x86-64 quick reference
- Class notes
- Slides
Mon Apr 27
Tue Apr 28
- [ASSIGNMENT] Assembly & C: puzzles 1-3 plus one reverse-engineered puzzle
Wed Apr 29
- [ASSIGNMENT, due 9:40AM on paper] (Optional) exam corrections
- Class notes
- Slides
Thu Apr 30
- [ASSIGNMENT] Assembly & C: puzzles 4-6 plus one reverse-engineered puzzle
Fri May 1
- [SAMPLE] stackframe.c
- Class notes
- Slides
Wed May 6
[RESOURCES] Zoo stuff
- gdb quick reference, focused on the zoo project
- get your zoo here
- view zoo progress here
- [VIDEO] (29:04) The Zoo: Getting Started
- [SAMPLE] minizoo.c (see compilation instructions in the comment at the top)
- [LAB] Debugging C programs with gdb
- [READ] C Debugging Tools is the Dive Into Systems chapter about gdb. Skim through this section so you'll know what kind of help the textbook is offering you.
- Class notes
- Slides
Fri May 8
Mon May 11
- [LAB] (finish by May 12) Command shells and redirection
- [ASSIGNMENT] Escape from the Zoo: A Reverse Engineering Adventure
- [READ] DIS 13 intro and 13.1-2 about processes
- [SAMPLE] exitstatus.c
- Class notes
- Slides
Wed May 13
- [VIDEO] (31:21) Command shell, part 1 (fork, exec, argv/argc)
- [VIDEO] (26:05) Command shell, part 2 (redirection)
- [SAMPLES] Some programs relevant to the command shell assignment. forktest.c, exectest.c, argv.c, exectest_with_args.c, files.c, redirect.c, and shell208.c
- Class notes
- Slides
Fri May 15
- [SAMPLE] pipe.c
- Class notes
- Slides
Mon May 18
- [ASSIGNMENT] a simple command shell
- Class notes
- Slides
Wed May 20
- Exam
Fri May 22
- [VIDEO] (19:38) Introduction to HTTP
- Class notes
Mon May 25
- [ASSIGNMENT] a little networking
- Class notes
- Slides
Wed May 27
- [ASSIGNMENT, due 9:40AM on paper] (Optional) exam corrections