Haskell Additional Info

 

What to Bring

Participants are welcome to bring their own laptops with GHC and cabal already installed, or to use netbooks provided by Galois. There will be code provided as a foundation for the exercises, but where applicable participants will be welcome to apply the exercises to their own code.

Additional Takeaways

To support further learning, each participant will receive a copy of Real World Haskell (O’Reilly) and additional reading material.

 

Professional Haskell Development Course:
Level I (One Day)

Description: This level is for you if can program in traditional programming languages (e.g., C or Java), but do not have any familiarity with Haskell or any other functional programming language.

Self-check precondition: You have a solid background in programming, including data structures and algorithms.

Level I: Course Curriculum

Objective: You will gain a solid introduction to Haskell. You will be able to write, compile, and execute pure functional programs in Haskell, using types to aid in the construction of correct programs. You will be able to construct basic functional algorithms (e.g., queues and trees) and will understand their execution complexity.

1. List Programming

  • Prerequisite: Able to program in traditional languages.
  • Learning objective: Able to construct and execute list expressions in GHCI; able to write and load simple functions, including list processing functions.
  • Content: Haskell syntax, GHCI, functions, pattern matching, computation without side-effects, list programming, types.

2. Recursive Programming

  • Prerequisite: List Programming
  • Learning objective: Able to define and execute recursive functions over inductive data types; able to find and fix type errors.
  • Content: New data types, basic type classes (Eq, Ord, Num, Show), deriving, recursion, induction.

3. Higher Order Functions

  • Prerequisite: Recursive Programming
  • Learning objective: Able to compile and execute; able to construct and use higher order functions.
  • Content: Compiling with GHC, cabal, higher order functions, folds, zips, infinite lists, parametric polymorphism.

4. Functional Algorithms

  • Prerequisite: Higher Order Functions
  • Learning objective: Able to structure Haskell programs; able to make algorithmic choices.
  • Content: Haskell prelude, constructing larger programs, arrays, data structures, and functional algorithms.