This page collects documentation of software tools used in CS 301.

Computing Environments

We provide all CS 301 software tools on two fully-supported computing environments:

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

You can install most of the necessary software (Scala IDE) directly on any computer. A key component of our compiler (the machine code generator) depends on specific system details. Assembling, linking, and running compiled programs will require some tinkering on your personal computer, but should just work on our platforms. We may also provide useful testing scripts that assume a Linux/Unix/Mac OS X environment.


Scala command line tools

  • Edit: emacs Things.scala
  • Compile: fsc Thingy.scala or scalac Thingy.scala
    • If fsc hangs on the wx appliance, run sudo hostname localhost and try again.
  • Run compiled code: scala Thingy
  • REPL: scala

Eclipse / Scala IDE

  • Scala IDE
  • Eclipse
  • Eclipse Documentation
  • Lots of errors all of sudden? “Conflicting Symbols” or “Already Defined”? The asynchonous compiler seems to have a concurrency bug. Make a small change and save or choose “Clean…” from the “Project” menu – should kick it to resolve.


JFlex and JavaCUP


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

Debugging and Disassembly

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

C Tools

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


Reference for the Emacs text editor.

GNU/Linux and the Terminal

Reference for the GNU/Linux command-line environment (available on CS Linux machines or in the wx appliance on your personal computer).