Click here to chart your progress through the course.
Week | Lecture | Assignment Due | Due | Presenter |
---|---|---|---|---|
1 | Introduction to Haskell | cc numbers, hanoi | ||
2 | Algebraic Data Types | log parsing | ||
3 | Recursion patterns, polymorphism, and the Prelude | code golf | ||
4 | Parametric Polymorphism | BST, recursion | ||
5 | More polymorphism and type classes | calculator | ||
6 | Lazy evaluation | streams | ||
7 | Monoids | monoids | ||
8 | Functors Applicative functors (part 1) | parsers, part one | ||
9 | Applicative functors (part 2) | parsers, part two | ||
10 | Property-based Testing w/QuickCheck | testing | ||
11 | Monads | risk | ||
12 | Lenses | lenses |
This project uses Stack to build and test the assignments. To install it, follow the steps here.
Or, use Homebrew:
brew install haskell-stack
15:07 $ git clone git@github.com:laser/cis-194-spring-2017.git
Cloning into 'cis-194-spring-2017'...
remote: Counting objects: 350, done.
remote: Compressing objects: 100% (9/9), done.
remote: Total 350 (delta 13), reused 10 (delta 10), pack-reused 331
Receiving objects: 100% (350/350), 9.41 MiB | 2.93 MiB/s, done.
Resolving deltas: 100% (134/134), done.
Checking connectivity... done.
Create a new branch off of master
whose name is the same as your GitHub username. Then, push the branch to the remote (GitHub) repository. If you don't have permission to push to this repository, let me know and I'll grant them.
15:07 $ cd cis-194-spring-2017/
✔ ~/dev/cis-194-spring-2017 [master|✔]
15:09 $ git checkout -b laser
Switched to a new branch 'laser'
✔ ~/dev/cis-194-spring-2017 [laser|✔]
15:09 $ git push origin laser
Total 0 (delta 0), reused 0 (delta 0)
To git@github.com:laser/cis-194-spring-2017.git
* [new branch] laser -> laser
✔ ~/dev/cis-194-spring-2017 [laser|✔]
We use Stack to build our project. After cloning the repository, run stack setup
.
Assignments are tested with Hspec and QuickCheck. The full test suite can be run by running the stack test
command.
To run a single test:
stack build && stack runghc test/Homework/Week01Spec.hs
To rebuild and run the tests each time one of the project's files change:
~/eswenson-healey> stack test --file-watch
To rebuild the project and re-run a single test when a file changes, look into something like entr.
The coursework-progress
application (link here) provides a basic view
of who is participating in the course and how far they've progressed.