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!