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.
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.
If you would prefer to directly install the Haskell compiler and build
toolchain on your local computer, first run
https://get.haskellstack.org/ | sh to install the build tool stack. Then
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.