429

From MCIS Wiki
Jump to: navigation, search
Haskellclass.jpg
This course studies pure functional programming in the Haskell language and the use of functional programming to build domain specific languages (DSLs): customized, application specific programming languages. This course starts with an introduction to Haskell and its essential ideas of lazy evaluation and type inference. Advanced functional programming topics will include type classes, monads and monad transformers, arrows, templates, dependent types, parser combinators, and multiple parameter type classes. The class will study existing DSLs and DSL implementation techniques, including languages for reactive programming, computer vision, hardware design, computer music, and parallel processing. Students will implement a DSL of their choice in Haskell.

Syllabus

Calendar

  • /Week 1 (September 5) - About the course
  • /Week 2 (September 10, 12) - Haskell and Type Systems
  • /Week 3 (September 17, 19) - IO and Type Classes
  • /Week 4 (September 24, 26) - Monads
  • /Week 5 (October 1, 3) - DSL Design, Euterpea
  • /Week 6 (October 8, 10) - Parsing and Testing
  • /Week 7 (October 16, 17) - Pretty Printing and Reactive Programming
  • /Week 8 (October 22, 24) - Reactive Programming
  • /Week 9 (October 29, 31) - Hurricanes and Reactive Programming
  • /Week 10 (November 5, 7) - Sharing and Embedded Languages
  • /Week 11 (November 12, 14) - Presentations / Haskell Tools
  • Week 12 (November 19) - Work day
  • /Week 13 (November 26, 28) - Haskell features
  • /Week 14 (December 3, 5) - Presentations
  • /Final Presentations

The Final Presentations will be on Thursday, Dec 13. The scheduled time is 9am but we will also use a 2pm slot in a location to be determined. I will be giving a department colloquium at 10:45. Please contact me if you are not available for the 2pm slot.

Projects

Add your project here:

Dyna to K3 compilation - nwf
Dynasty: visualization in the Dyna language - timv

Turnins

Resources

Human Resources

  • TA: Alex Rozenshteyn <arozens1@jhu.edu>
    • can usually be found in Shaffer 204
    • send an email to make sure he's there when you plan to arrive.

Haskell Resources

DSL Resources