# CIS 194: Introduction to Haskell (Fall 2016)

- Lectures: Wednesdays 1:30pm-3:00pm, Towne 303
**Instructor:**Joachim Breitner**TA**: Kathleen Chen- TA office hours are announced on Piazza.
- Class Piazza site

## Course Description

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.

## Lecture notes and assignments

All homework assignments should emerge creatively from the Style guidelines. Homework is due at midnight at the end of the day listed. All homework submission is via Canvas.

- Week 1 (Wednesday, 31 August):

Haskell Basics: Functions and Pictures

Homework 1 (due Tuesday, 6 September). Example solution

- Week 2 (Wednesday, 7 September):

Higher order functions and data types

Homework 2 (due Tuesday, 13 September). Example solution

- Week 3 (Wednesday, 14 September):

Polymorphism

Homework 3 (due Tuesday, 20 September). Example solution

- Week 4 (Wednesday, 21 September):

Type classes

Homework 4 (due Tuesday, 27 September). Example solution

- Week 5 (Wednesday, 28 September):

Real World Haskell

Homework 5 (due Tuesday, 4 October). Example solution

- Week 6 (Wednesday, 5 October):

IO and monads

Homework 6 (due never). Example solution

No homework, enjoy the fall brake!

- Week 7 (Wednesday, 12 October):

Laziness

Homework 7 (due Tuesday, 18 October). Example solution

- Week 8 (Wednesday, 19 October):

Functor and Applicative

Homework 8 (due Tuesday, 25 October). Example solution

- Week 9 (Wednesday, 26 October):

More Applicative

Homework 9 (due Tuesday, 1 November). Example solution

- Week 10 (Wednesday, 2 November):

Testing

Homework 10 (due Tuesday, 8 November). Example solution

- Week 11 (Wednesday, 9 November):

Functional Reactive Programming

Homework 11 (due Tuesday, 15 November). Example solution

- Week 12 (Wednesday, 16 November):

Libraries

No homework this week, work on your project!

- Week 13 (Wednesday, 30 November):

Packages

No homework this week, work on your project!

- Week 14 (Wednesday, 7 December):

Lenses

No homework this week, prepare your demo!