Lectures & Modules

Modules can be submitted on Moodle. Only one member of each team needs to submit (just be sure all team members’ names are recorded).

  • T 23 Aug
    • Module 00: Introduction to CSCI 360 [ html | md ]
    • Module 01: Introduction to Haskell [ html | lhs ]
  • Th 25 Aug
    • Module 02: Algebraic data types and pattern matching [ html | lhs ]
  • T 30 Aug
    • Module 03: Polymorphism and Lists [ html | lhs ]
  • Th 1 Sep
    • Module 04: Syntax and semantics [ html | lhs ]
  • T 6 Sep
    • Module 05: Arith: pretty-printing [ html | lhs ]
  • Th 8 Sep
    • Module 06: Arith: parsing [ html | lhs ]
  • T 13 Sep, Th 15 Sep
  • T 27 Sep, Th 29 Sep
    • Module 08: Variables [ html | lhs ]
  • T 4 Oct
    • Module 09: Dynamic type checking [ html | lhs ]
  • Th 6 Oct
    • Module 10: Static type checking [ html | lhs ]
  • T 11 Oct
    • Module 11: Small-step reduction [ html | lhs ]
  • T 18 Oct
  • Th 20 Oct
    • Module 13: Closures and types [ html | lhs ]
  • T, Th 25-27 Oct
    • Module 14: Type checking first-class functions [ html | lhs ]
  • T, Th 1-3 Nov
  • T, Th 8-10 Nov
    • Module 16: Quilt shallow EDSL [ html | lhs ]
  • T, 15 Nov
    • Module 17: Quilt deep EDSL [ html | lhs ]
  • Th, 17 Nov - T, 29 Nov
  • Th, 1 Dec
    • Module 19: Disco [ html ]

Projects

  • Project 1: Arith compiler [ html, lhs ]
    Assigned: Thursday, 9/8
    Due: Thursday, 9/15 @ 1:15pm

  • Project 2: Calculator [ html, lhs, CalcREPL.hs ]
    Assigned: Friday, 9/16
    Due: Thursday, 9/29 @ 1:15pm

  • Project 3: Quilt [ html, REPL, starter code ]
    Assigned: Tuesday, 10/18
    Due: Thursday, 11/3 @ 1:15pm

  • Final project
    Assigned: Tuesday, 11/15
    Due: Thursday, 12/8 @ 2pm

Resources

Haskell installation and coding environment

  • Follow the instructions here to install Haskell on your computer.

  • If you have a favorite text editor it will probably work just fine for editing Haskell programs. There is a nice haskell-mode for emacs. Vim comes with syntax highlighting for Haskell out of the box; for more options try this vim haskell mode. Other editors commonly used with Haskell include Nodepad++, TextMate, Gedit, Sublime Text, or Atom.

Help/community

  • The #haskell IRC channel is a great place to get help. Strange as it may seem if you’ve spent time in other IRC channels, #haskell tends to be full of friendly, helpful people.

  • tryhaskell.org gives you a ghci session in your browser, and includes a very simple tutorial. It also features an interface to the #haskell IRC channel.

  • lpaste.net is a good place to paste programs you’re having trouble with in order to get help from people in #haskell.

  • Many people from the Haskell community are active on StackOverflow, which can be a good place to ask questions.

  • The Haskell-beginners mailing list is a good place to ask beginner-level questions.

  • The Haskell-cafe mailing list can also be a good place to ask questions, but is much higher-traffic.

  • The Haskell wiki has a list of frequently asked questions.

Reading

  • Haskell Programming from first principles is a book in progress which has been getting good reviews. An early access, electronic version is currently available for purchase.

  • The Typeclassopedia explains many of the type classes in the standard libraries (Functor, Applicative, Monad, Monoid, Arrow, Foldable, Traversable…).

  • The Haskell wikibook actually contains a substantial amount of well-written information; a great resource if you’re having trouble understanding a particular topic and want a different approach.

  • Learn You a Haskell for Great Good! is a whimsical Haskell tutorial with funny illustrations. Might be good as an extra reference though I disagree with many of the pedagogical choices it makes. Available for free online or in dead tree form.

  • The Haskell wiki is a huge grab-bag of all sorts of information, examples, explanations. The quality varies but it’s definitely a great resource.

  • Planet Haskell aggregates blog posts from the Haskell community.

  • There is a Haskell subreddit for aggregating Haskell-related websites, blog posts, and news.

Reference

  • Haskell standard library documentation.

  • A useful Haskell cheatsheet.

  • Hackage is a huge repository of Haskell packages. If it isn’t on Hackage, it doesn’t exist. Packages can be automatically downloaded and installed from Hackage using the cabal-install tool.

  • Looking for a function but don’t know what it’s called? Want to see the documentation for a particular function? Hoogle searches many standard libraries and can search either by name or by type.

  • Hayoo is another search engine for the Haskell documentation, which is much more complete (it searches all of Hackage).

  • If you really want the nitty-gritty details of the Haskell language standard, see the 2010 Haskell report.