- Lectures: TODO: Insert lecture days
- Instructors:
- TA
Haskell is a high-level, purely functional programming language with a strong static type system and elegant mathematical underpinnings. It is being increasingly used in industry by organizations such as Facebook, AT&T, and NASA, along with several financial firms. We will explore the joys of functional programming, using Haskell as a vehicle. In the first part of the course, you will learn to use Haskell to easily and conveniently write practical programs. The last couple of weeks will consist of several special topics that explore advanced features of Haskell. Evaluation will be based on class participation, weekly programming assignments, and an open-ended final project.
You will need ghc
(the Haskell compiler; at least version 8.6.5, preferably
version 8.10.1), cabal
(a build tool for Haskell; at least version 2.4.1,
preferably version 3.2), and a suitable development editor to edit source files
with (e.g. Visual Studio Code, or (neo)vim).
Instructions on how to install the necessary software are available here, separated by platform (Linux, MacOS, Windows).
These instructions also include information on how to set up more advanced IDE-like
editor support for Visual Studio Code, in the form of ghcide
. While this will be
helpful in the long run, it is not mandatory, and if you experience problems setting
this up, don't worry for now.
- Discord TODO: Insert link to the discord chat for the class
- Forum TODO: Insert link to the forum for the class
- Haskell tag stackoverflow.com
- How do I install Haskell on Windows? video
If you find a defect in one of the sample programs. Or maybe a typo in one of the slides we will really appreciate it if you could post it as an issue on GitHub Itself. Report defecs in: [issues](TODO Insert link to issues for this class)
Homework are due on Fridays before the lecture, one week after they have been handed out. All homework submission is via GitHub classroom. If you have questions, check this video: How to submit your homework on GitHub classroom
Every two weeks there will be a little exam. Don't worry, it's the same technique as the homeworks, the only difference is that here the time windows is shorter and that you will work alone, not in a team.
| Date | Time | |---------+-----------------------------------------------| | Test 10 | t1 | | Test 20 | t2 | | Test 30 | t3 | | Test 40 | t4 |
We have read most of this books and they provide good information for beginners.
- Lipovača M. Learn You A Haskell For Great Good!. San Francisco: No Starch Press; 2012.
Beginner Friendly book with lots of examples.
- O'Sullivan B, Stewart D, Goerzen J. Real World Haskell. Farnham: O'Reilly; 2009.
A lot of real world techniques, just a little bit outdated at this point.
- Bird R. Algorithm Design With Haskell. Cambridge University Press; 2020.
Learn how far you can get with immutable data, to implement almost all standard algorithms.
- Thibaut C. Texas Hold'em: The Little Haskeller.leanpub.com; 2019.
A long article, written in the Quesntion and Answer format. Like the Little Schemer.
- Penner C. Optics By Example: Functional Lenses In Haskell. leanpub.com; 2020.
The only book on optics.