Materials
Development Environment
You can use any one of the following three approaches to set up your development environment for this course.
Devcontainer with GitHub Codespaces (Most Recommended)
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
- Winter 2024: midterm1; solutions
- Fall 2023: final; solutions
- Fall 2023: midterm; solutions
- Fall 2022: midterm; solutions
- Spring 2022: midterm; solutions
- Spring 2022: final; solutions
- Fall 2021: midterm; solutions
- Fall 2021: final; solutions
- Fall 2019: midterm; solutions
- Fall 2019: final; solutions