Resources
Software
Textbooks
This course is based on several free resources, most of them available online.
Main textbooks
[DIS] https://diveintosystems.org/ – Dive Into Systems by Matthews et al. covers C, the Linux toolchain and shared-memory parallelism. Written by a distributed team of educators from good teaching-focused US colleges for today’s students. Has interactive exercises.
[BGC] https://beej.us/guide/bgc/ – Beej’s Guide to C Programming, a thorough tour of the language and its standard library. The language is informal by the insights are deep.
Secondary textbooks
[LLNL] https://hpc-tutorials.llnl.gov/posix/ – Lawrence Livermore’s POSIX threads tutorial, the usual reference for pthreads.
[K&R] The C Programming Language by Kernighan and Ritchie – old, legendary, short (by modern standards) textbook, still highly regarded; neither free nor required.
[CB] https://publications.gbdirect.co.uk/c_book/ – The C Book by Banahan, Brady and Doran, a systematic reference for the language; free online.
[LC] https://www.learn-c.org/ – an interactive C tutorial with in-browser exercises.
Guides
- Linux command line quick reference
- Writing a function: the design recipe — the order to write a function in, and how to write examples that fail when the body is wrong.
What we work through together in class has its own section: In Class, one page per meeting.
Where to get help
- Office hours — see Syllabus: Course info
- Course forum — see the Discord link on the main page