Software for CSE 341

Compilers or interpreters for all of the languages we'll be using this quarter should be installed on the undergrad computers on both Windows and Linux. You can also download and install them on your own machine if you have one. Specific directions for each language will be in the materials for that language.

Using Linux and Emacs in CSE 341

Working in the CSE Labs

If you're going to use the lab machines, everything is set up for you. If there is an application, simply search for it locally (e.g. DrRacket, Emacs, etc). Otherwise, you will be able to compile/run the necessary languages via terminal/command line. If you need a refresher on terminal commands, see the "Basic Unix Commands" section.

The department also has a cluster of four linux servers for instructional use known as attu. You can ssh to and be connected to one of the four servers.

Working elsewhere

It's also possible to work outside of the labs.
  1. Installing a particular piece of software is listed under a particular language (e.g. "Running Racket"). Generally you should get the latest stable release, although other recent versions should be OK as well.
  2. If you want to run something on a department linux machine, use a terminal and ssh to run Haskell, Prolog, Ruby, and Java. We recommend using emacs as your editor for this option. (This won't work with Racket though.)To ssh, follow the following instructions based on your machine:
    • Mac/Linux:
      1. Open a terminal window, and run the following command, substituting your username for USERNAME:
      2. Enter your password, and you should be logged in!
    • Windows
      • There's no default terminal that'll allow ssh'ing, so you'll have to download a package to do it for you. Here is a popular option:

Note that this will not allow you to launch GUIs (e.g. DrRacket) and have it displayed on your computer. However, for the software for this course, it will be sufficient to install GUI applications on your own machine, or use the lab machines and just interact via the terminal window.

Basic Unix commands

To move around through the directory structure in your xterm window, you'll need to know a few basic Unix commands.
attu4% mkdir mydir
attu4% ls
mail  mydir
attu4% cd mydir
attu4% pwd
attu4% exit
In the above (the things within the quotation marks are commands to type, don't type the quotation marks themselves): These are just the very minimum basics, but you won't need too much more in 341. For more info on UNIX, see the first few weeks of CSE 391 or this UNIX tutorial

Accessing your UNIX home directories from Windows lab machines

If you're in the basement labs, your Z: drive should already be mapped to your Unix home directory. Look under for the Z: drive under "My Computer" in the Start Menu. All the files you saved while working on Attu should be there.


To open emacs, open the application from the applications of the system or (if on xterm), run "emacs &".

[GNU Emacs: a labeled diagram]

Emacs uses many key combinations involving the Control and Meta keys. Such key combinations are denoted C-x (Control-x (lowercase)) or M-x (Meta-x). On keyboards that don't have Meta, Alt is usually an acceptable substitute. If Alt doesn't work, ESC-x is equivalent to M-x.

A sequence of key presses is written like C-a C-b M-x, which would mean do the three actions in sequence.

The most important keys in Emacs Some other useful keys: Getting help within Emacs: In addition to the help button on the right...
Finally, there are other resources, including the (older but not necessarily outdated) course help pages as well as the CS Lab pages.
Acknowledgment: These notes have evolved over many years, with contributions from various TAs and instructors. The linux/emacs notes are based on notes originally written by Keunwoo Lee in 2001. Last updated by Daniel Snitkovskiy Spring 2018.