pete > courses > Systems Programming (CSCI 0315), Fall 2026
Systems Programming (CSCI 0315), Fall 2026
| who | Peter C. Johnson (pete@midd) |
| where/when | lecture: Tuesdays and Thursdays, 9:45am–11:00pm in SHS 224 lab: Thursdays, 1:30pm–4:15pm in SHS 224 |
| textbook | none |
Schedule
| 15 Sep | introduction, overview, and architecture review Assignment 0 available |
| 17 Sep | C review, basic Linux usage, program design lab: make and git Assignment 1 available |
| file mode, extern, code spacing, first syscalls | |
| basic linking, make variables, gitignore | |
| pointers | |
| memory bugs lab: git merging |
|
| malloc | |
| binary organization | |
| linking | |
| mmap | |
| fork, exec, and wait | |
| environment, permissions, and sudo | |
| signals | |
| threads and mutexes | |
| networking concepts | |
| networking API |
Coursework
There will be seven assignments throughout the semester, each with their own list of requirements. No new work will be assigned after week 10.
There will also be a final project.
There will be no exams.
Partnerships
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 can be a pain, so please keep that in mind.
Assessment
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. Assignments have no official deadline except the end of the semester. 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. Those 6 must include assignments 1, 2, 3, and 5.
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 12pm (noon) EST on Monday, 21 December. There will be no flexibility with this deadline.
References
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:
- Linux commands
- make
- git: quick-and-dirty guide tailored for this course’s usage
The best reference for using git is this online book. I have also found this description of its internals very useful to understand the common foundation of all the commands, which can seem inscrutable and/or magical without that understanding.
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.
Resources
VPN: If you want to access weathertop from off-campus (for ssh and for git), you need VPN access. Instructions here.
Academic Integrity
All work submitted in this course must be your own and no-one else’s. You are permitted to search for assistance online, but a) you may not search for solutions to entire assignments (confine your searches to individual concepts) and b) you must record which online resources you consult in each assignment’s README file. Under no circumstances may you copy or transcribe code that you didn’t write originally. When in doubt, ask me.
Use of generative AI tools (such as ChatGPT) is prohibited. If I determine that you have used such tools on an assignment, you will receive no credit for and will be ineligible to submit future solutions for that assignment. This is an elective about writing code. If you don’t want to write code, elect to take a different class.
ADA
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, Peter Ploegman, and Deirdre Kelly of the DRC at ada@middlebury.edu for more information. All discussions will remain confidential.