pete > courses > Systems Programming (CSCI 0315), Fall 2021

Systems Programming (CSCI 0315), Fall 2021

Who Peter C. Johnson (pete@midd)
Where/When lecture: Tuesdays and Thursdays, 9:30am–10:45am in SHS 202
lab: Thursdays, 1:30pm–4:15pm in SHS 224
Textbook none
Tutoring Majd Hamdan (majdh@midd), Sundays and Tuesdays, 7pm–9pm in SHS 206


14 Sep introduction, overview, and architecture review
Assignment 00 available
16 Sep C review, basic Linux manpages, program design
Lab: make and git
Assignment 01 available
21 Sep intro to syscalls
23 Sep measuring syscall efficiency and strace
Assignment 02 available
28 Sep beginning linking, gitignore, Makefile variables
30 Sep memory and pointers
Lab: memory and pointer bugs and debugging
05 Oct malloc
Assignment 03 available
07 Oct memory alignment, symbols, and some more linking
Lab: Facebook downtime, merge conflicts in git
12 Oct more linking
14 Oct yet more linking
Assignment 04 available
21 Oct mmap
26 Oct fork, exec, and wait
28 Oct users, permissions, and sudo
Assignment 05 available
02 Nov signals
04 Nov threads and mutexes
Assignment 06 available
09 Nov networking concepts
11 Nov networking system calls
Assignment 07 available
16 Nov HTTP
future extra: virtual memory
extra: ??? NAT, VPN, Tor ???


There will be seven assignments throughout the semester, each with their own list of requirements. No new work will be assigned after Thanksgiving break.

There will also be a final project.

There will be no exams.


All coursework (assignments and final project) may be completed in groups of two. Partnerships are not required, but they are strongly encouraged: working with someone else forces you to explain your ideas, which deepens your understanding; it forces you to come to grips with somebody else’s understanding, which may reveal weak aspects of your own; it gives you somebody to bounce ideas off of; it lightens the per-person workload; it lightens the grading burden. Okay, that last one is more for my benefit than for yours, but you get the idea.

Partnerships are not binding for the duration of the semester. That said, changing things up midway through may be a pain, so please keep that in mind.


Each assignment will contain a list of requirements. You will keep working on it until all requirements are met. I will provide weekly-ish feedback on all outstanding assignments. Your semester grade will be determined by how many assignments you complete.

To earn a C, you must complete 4 of the 8 assignments.

To earn a B, you must complete 5 of the 8 assignments.

To earn an A, you must complete 6 of the 8 assignments.

In the above calculation, the final project is counted as an assignment. (Yes, this implies that the final project is, strictly speaking, optional.)

Final revisions of all coursework must be submitted by 5pm EST on Sunday, 19 December. There will be no flexibility with this deadline.


There is no required textbook. Where pertinent, I will make suggestions for readings (both online and dead-tree).

Here are resources I’ve written that might be useful:

The best reference for git is this online book.

These are a couple classic references in this area:

The C Programming Language, Brian Kernighan and Dennis Ritchie – The original C book, written by the authors of the language. Covers ANSI C, which is (at this point) a bit of an antiquated standard, but it hits all the important parts. Both I and the school library have copies you can refer to.

Advanced Programming in the UNIX Environment, W. Richard Stevens – A massive overview of the POSIX system call interface. Unfortunately, the school doesn’t have a copy, but I do, which you are welcome to peruse. Your primary reference on this topic should, however, be the manpages.


Students who have Letters of Accommodation in this class are encouraged to contact me as early in the semester as possible to ensure that such accommodations are implemented in a timely fashion. For those without Letters of Accommodation, assistance is available to eligible students through the Disability Resource Center (DRC). Please contact ADA Coordinators Jodi Litchfield and Peter Ploegman of the DRC at for more information. All discussions will remain confidential.

Last modified: