Resources

Table of Contents

Installation

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:

1
curl https://gist.github.com/jimpo/6357542/raw/37c2c7a5ea99738abfb9a52d3da060af18ca397a/Duke-PL-Course-MacOSX-Install.sh | 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.

Windows

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.

Linux

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.

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

Unix

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.

Git

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.

Branching

Learn Git Branching

Editors

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.

Emacs

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.

Vim

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

Racket

The Little Schemer

Haskell

Learn You a Haskell for Great Good

Downloads

Shared Dropbox folder with course resources