Development Environment

You can use any one of the following three approaches to set up your development environment for this course.

You can 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.

Local Devcontainer with VS Code

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.

See the included README for installation instructions.

Native install

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

Textbooks

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.

  • An Introduction to Functional Programming Through Lambda Calculus by Greg Michaelson. Free pre-print.

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

  • Programming in Haskell (2nd ed.) by Graham Hutton.

  • Real World Haskell by Bryan O’Sullivan.

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

  • Write You a Haskell by Stephen Diehl. (incomplete, but useful) Available

Prior year midterms/exams

HW5 tips