This page collects documentation of several software tools we use in CS 240. [Updated 20 September 2015 for clarity.]

The goal of CS 240 is to learn enduring concepts underlying computer systems, not to learn specific contemporary software tools. However, you will pick up several useful operational skills along the way, since we use “real” tools to apply the concepts we learn. These same tools are used daily by programmers and others to build major (and minor) pieces of systems software, including software you use every day. Incidentally, these tools are also free software or open-source software, with the exception of LogicWorks, which we use to simulate hardware in the first part of the course.

CS 240 Computing Environments

Use a CS 240-Approved Computing Environment!

We provide and support two computing environments for CS 240. Unlike your earlier CS courses, CS 240 focuses on low-level implementation of computer systems. We apply the general concepts we learn in real computer systems, so our work often depends on low-level details of specific systems. It is typically difficult, error-prone, or impossible to complete CS 240 assignments elsewhere1 (e.g., on Mac or Windows). We are unable to offer support or guarantees if you choose to work on environments other than ours.

We provide all software tools on two fully-supported computing environments running versions of 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 CS 240 GNU/Linux computing environment for your Mac or Windows computer.2
    • No CS account is required.

Key Software Tools

We use a few key software tools for CS 240. Most of these tools are likely new to you and will require some practice. The first 4 are general tools introduced in these lab materials. The rest are introduced in later labs and lectures. The links in this list lead to sections on this page with lists of links to reference materials.

GNU/Linux and the Terminal

Resources for using GNU/Linux (available on CS Linux machines or in the wx appliance on your personal computer), especially via the command-line terminal and the Bash shell.

Mercurial

The CS 240-specific resource for using the Mercurial version control system also contains links to other Mercurial resources.

Emacs

Resources for using the Emacs text editor.

C Tools

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

Debugging and Disassembly

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

x86

Detailed resources about the x86 assembly language and instruction set architecture.

CSAPP textbook resources

Similar courses with good resources

  1. If you run Linux already, it is likely you will have good luck installing tools directly.

  2. The wx appliance can also be installed on Linux, but if you run Linux already, it is likley you will have good luck installing tools directly, with less overhead.