Emerging Tech: Haskell

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. This course explores 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.

This is a duplicated of http://www.seas.upenn.edu/~cis194/ with some small modifications.

Plan of study

This course is self-led and should follow this plan for new topics and homeworks.

Each homework is due (turned in via email to advisor) by the start of the following week unless otherwise noted.

So homework 1 is due by the start of week 2. Each session starts on Monday, so homework 1 is due by the Sunday at 11:59pm

Grading

The class is pass/fail. A pass will be awarded if greater than 60% of the homework assignments are completed on time and the final project is completed on time. A fail will be assigned if the final project is not completed or 60% or less of the homework assignments are completed.

Late work

No late work is accepted. However, assignments and projects may be turned in early.

Recommended books

Learn You a Haskell for Great Good

Free online at learnyouahaskell.com. Available for purchase in print at the website as well.

Real World Haskell

Free online at book.realworldhaskell.org. Available for purchase in print at the website as well.

Timetable

Weeks start on Monday. Items due during a specific week are due on the Monday that the week starts on.

Week Lecture(s) Homework assigned Projects assigned Items due
1 Introduction to Haskell Homework 1 None None
2 Polymorphism and Functional Programming Homework 2 None Homework 1
3 Algebraic Data Types Homework 3 None Homework 2
4 Typeclasses Homework 4 None Homework 3
5 I/O Homework 5 None Homework 4
6 Lazy Evaluation Homework 6 None Homework 5
7 Monads Homework 7 None Homework 6
8 Monads II None None Keep working on Homework 7
9 Testing None Write proposal for Final project Homework 7
10 Type Wizardy Homework 8 None None
11 GADTs in Action None Work on final project Homework 8
12 Unsafe Haskell None Work on final project None
13 Making Haskell Projects None Work on final project None