This page collects documentation of software tools used in CS 240. General tools are introduced in the first lab. The rest are introduced in later lab and class meetings.

We provide and support two computing environments for CS 240. Unlike your earlier CS courses, CS 240 is a low-level systems course where the low-level system details matter. It is typically difficult, error-prone, or impossible to complete CS 240 assignments elsewhere1 (e.g., on Mac or Windows). We do not offer support or guarantees for environments other than ours. Do not waste time trying to use a different environment.

CS 240 Computing Environments

We provide all CS 240 software tools on two fully-supported computing environments using the GNU/Linux operating system:

  • CS Linux machines are available in the SCI microfocus lab and SCI 173.
  • The wx appliance is a self-contained GNU/Linux environment for your computer.

GNU/Linux and the Command Line

Reference for the GNU/Linux command-line environment on CS Linux machines and the wx appliance.

Emacs

Reference for the Emacs text editor.

Mercurial

C Tools

Reference for the C programming language, the GNU C Compiler (GCC), and the Make system for automating compilation.

Debugging and Disassembly

Reference for the GNU Debugger (GDB), the Valgrind memory error detector, and other tools for debugging and disassembly.

x86

Detailed reference on the x86 assembly language and instruction set architecture. CSAPP contains good basic reference.

CSAPP textbook resources

Similar courses with good resources

  1. If you already use Linux on your personal computer, I am happy to share the list of tools we need or point you to our RPM package repository, but I will not have time to help you figure out how those map to packages on Linux distributions other than Fedora.