We have created a VS Code Development Container to help bootstrap your Haskell development. This is a docker container pre-configured with a Haskell environment that you can interact with directly from VS Code.

You can download the latest version of the devcontainer here. See the included README for installation instructions.

GitHub Codespaces

Instead of downloading the devcontainer, you can also set up your development environment using GitHub’s new Codespaces. A Codespace is just like a devcontainer, but instead of running on your local machine, it runs in the cloud.

To create a new Codespace, go to the repository created after you accept an assignment. Click on the green <> Code button and select the Codespaces tab. Finally click the green Create codespace on main button.

A new tab will open and GitHub will begin building your codespace based on the CSE114A devcontainer. Once it is complete, a web-based VS Code interface will display with your repository folder open. Notice there is a terminal on the right (or you can open one using the Terminal menu).

Some VS Code extensions are not compatible with the web interface. If you would like to open the codespace in the VS Code desktop app, click on the green >< Codespaces button at the bottom left, and select Open in VS Code from the pull-down menu that appears at the top.

Native install

If you would prefer to directly install the Haskell compiler and build toolchain on your local computer, first run curl -sSL | sh to install the build tool stack. Then type make in the directory of your cloned repository.


There are no required textbooks for this course, but using one or more of the following textbooks to expand your understanding of course topics is highly recommended. In particular, these textbooks are good sources of example problems to test your understanding of course concepts. When a free online copy is available (either a preprint or an ebook via the UCSC library), I’ve noted it below. More ebooks may become available through the library soon.

  • Programming Languages: Application and Interpretation (third edition) by Shriram Krishnamurthi. Available free online.

  • Learn You a Haskell for Great Good by Miran Lipovača. Available free online.

  • An Introduction to Functional Programming Through Lambda Calculus by Greg Michaelson. Available free online.

  • Thinking Functionally with Haskell by Richard Bird. Available online (free via library).

  • Programming in Haskell (second edition) by Graham Hutton.

  • Real World Haskell by Bryan O’Sullivan. Available free online.

Exams from previous editions of the course

You might find these useful for studying.