Resources

Software

  • A Linux environment – the department’s lab machines, or WSL on Windows, or a virtual machine. We set one up in the first week.

  • GCC and GDB, which come with every Linux distribution

  • VS Code with the C/C++ extension

  • Git

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

What we work through together in class has its own section: In Class, one page per meeting.

Where to get help