Table of Contents


Virtual Machine

I have created a Lubuntu virtual machine which I highly recommmend using for this class. The languages and environments are already installed and you avoid clustering your operating system with languages that you may not use again for a while. If you do not have a lot of RAM on your computer, this may not be a good option.

To install the virtual machine, you need virtualization software like VirtualBox or VMWare, which can be downloaded for free through Duke OIT. You should be able to import the this image using the virtualization software. Instructions for VirtualBox are here.

Mac OS X

Type this in your terminal:

curl | sh

You should be set after the script completes.

If you are interested in what the install script is doing, you can view the source here.


Since many of the languages can't run natively on Windows, I have created a Virtual Machine for you to use. Follow the above instructions to set it up.


You can install most of the packages using apt-get or its equivalent for your distribution. If you are having trouble, please let the instructors know.

sudo apt-get install racket ghc swi-prolog ruby1.9.3 scala


In this class, we will be working on a Linux distribution (or OSX, which is Unix based). You should be comfortable using a command line. If you don't have much experience with Unix based systems, I recommend this tutorial.


Pro Git is a introduction to git.

Most problems can be found using google or stackoverflow. If you are still having trouble, let the instructors know.


Learn Git Branching


Sublime Text 2

We suggest that you use Sublime Text 2, a cross platform editor that's extremely flexible. You can download and evaluate it for free indefinitely. Follow the instructions in this post to set up Package Control and other useful packages to make your development environment easier to work with.


If are willing to put some effort into learning a terminal based editor, it will pay large dividends in the future. Both emacs and vim are very powerful and highly customizable terminal based editors. The emacs environment is the provided virtual machine image is already configured for the languages we will be using.

Here is a good emacs tutorial for those interested.


If you are a vim user or would like to use vim for this course, then you can find the recommended plugins and configuration files in this archive. In addition, you can find a blog post on how to install and configure vim here.

Language Specific Resources


The Little Schemer


Learn You a Haskell for Great Good


Shared Dropbox folder with course resources