Guidelines
Objective
- Individual assignment
- Study of a topic related to functional programming
- Write a report (around 6 A4 pages)
- Do a short presentation (15 mins, maximum 10 slides)
Structure of the report
- Title, author, context (year, course, etc.)
- Summary
- Introduction / motivation
- Development / examples
- Conclusion
- Bibliography
These as just sugestions, you may alter the structure if convenient.
Assement
Report:
- Structure: 20%
- Clarify: 20%
- Depth: 20%
- Bibliography: 10%
Presentation:
- Remaning 30% of mark
- Mandatory for obtaining any marks
Plagarism
Copying uncited text from articles, internet, etc. will lead to the disqualification of all assignments.
Themes
Data structures and algorithms
- Hash-based containers
- Vectors
- Graph algorithms
- e.g. DFS, Dijkstra, Union-find, topological sort
- “Structuring Depth-First Search Algorithms in Haskell”, D.King, J.Lauchbury (1995) PDF
- Heaps (aka Priority queues)
- “Purely functional data structures”, C. Okasaki, chap.3.
- Pretty-printing
- Attoparsec
- Aeson
- Pandoc
Testing
- SmallCheck, Lazy SmallCheck
- Hedgehog
- Doctest
Streaming
- Conduit
- Pipes
See also the talk “Lazy I/O and Alternatives in Haskell”:
https://skillsmatter.com/skillscasts/4230-lazy-io-and-alternatives-in-haskell
Databases
- Sqlite-simple
http://hackage.haskell.org/package/sqlite-simple
(There are other alternatives; this is the simplest.)
Interfaces and frontend
- The Elm language
- Functional reactive programming
- “The Yampa arcade”, A. Courtney, H. Nilsson, J. Peterson. PDF
Web backend
- Scotty
https://hackage.haskell.org/package/scotty
(There are other alternatives; this is the simplest.)
Concurrent and parallel programming
- Evaluation strategies
- S. Marlow, “Parallel and concurrent programming in Haskell”, Chap.2-3.
- Software transactional memory
- Repa (Regular Parallel Arrays)
Types
- Linear types
- Dependent types
Functional Pearls
- “Functional Pearl: The Zipper”, G. Huet, 1997 PDF
- “Probabilistic functional programming in Haskell”, M. Erwig and S. Kollmansberger, 2006 PDF
“When Maybe is not good enough”, M. Spivey, 2012. PDF
“Composing contracts: an adventure in financial engineering”, S. Peyton Jones, J-M. Eber, J. Seward. PDF
“Two Can Keep a Secret, If One of Them Uses Haskell”, A. Russo. PDF