Text
There is no text for CSE 130. We will be using the lecture notes, and other course materials such as articles, web sites, tutorials, etc. will be made available on this site as appropriate.
Below you can find a list of books and online resources that explore various class topics in more depth.
Give me feedback
Canvas
I will not be using Canvas unless extenuating circumstances force a discussion section or lecture to occur virtually. In that case we will upload the materials to canvas.
Lambda Calculus
- Types and Programming Languages by Benjamin Pierce
Haskell
Installation Guide
Per OS Instructions
- Windows: install WSL2. You will first install the Windows Subsystem for Linux (WSL), with the administrator-level command
wsl --install
. Once you restart, then ensure you are using version 2, withwsl -l -v
. If you haven’t used this before, you are likely already on WSL2. If not, check this link to see how to upgrade from 1 to 2. - MacOS: Ensure you’ve agreed to the XCode License agreements, to ensure you have
clang
and other build tools available. Simply runxcode-select --install
- Linux: You’ll need some usual compiler tools, including
clang
andnasm
. If you’re on a Debian-like build, thebuild-essential
package should suffice.
General instructions
- Install GHCup
- In a terminal, run:
ghcup tui
- Install and set these versions of the tools:
Stack
: 2.9.1HLS
: 1.8.0.0Cabal
: 3.6.2.0GHC
: 8.10.7
Once you have GHC
, Cabal
, and Stack
installed, you can edit your homework in your favorite text editor and build it by running make
. For best experience, we recommend using VSCode with the Haskell
extension; to make the extension work, you first need to install HLS
via ghcup
(see above).
Books
- Learn You a Haskell by Miran Lipovača
- Haskell Programming from First Principles by Christopher Allen and Julie Moronuki
- Programming in Haskell by Graham Hutton
- Real World Haskell by Bryan O’ Sullivan, John Goerzen, and Don Stewart
- The Haskell School of Expression by Paul Hudak
- Haskell Wiki Book
Other Resources
- Monadic IO
- Haskell-Lang
- Getting started with Haskell
- What I Wish I Knew When Learning Haskell
- Haskell Cheat Sheet
- Haskell Pitfalls
- A Simple editor-independent mini-ide
- API Search Engines: Hoogle Hayoo
- Haskell modes: Emacs Atom Vim
Fun Articles
- PL Dictionary by Dan Grossman
- The Humble Programmer by Edsger Dijkstra
- Can Your Programming Language Do This? by Joel Spolsky
- Closures in C++
- MapReduce