Tópicos Avançados de Programação Funcional

Advanced Functional Programming

2021

First assignment

The first assignment is described here: assignment1.html; more documentation on Gloss: aula11.pdf; aula12.pdf

Second assignment

The second assignment consists of studying and writing a report and presentation on a topic related to functional programming.

  • The list of topics is here: assignment2.html
  • Each topic should be assigned to a single student (first come, first served)
  • Deadlines: will be defined soon.

    Lectures

    1. Introduction: intro.html
    2. Review of Haskell: haskell.html
    3. Purely functional data structures: datastructures.html Examples: contar.hs; Dict.hs
    4. Amortization: amortization.html
    5. Understanding typeclasses: typeclasses.html. Examples: https://github.com/pbv/tapf-classes.git
    6. How to declare an imperative: imperative.html; What is a Monad? Computerphile video
    7. Monads for functional programming: monads.html.Examples: search.hs; https://github.com/pbv/tapf-monad-examples.git
    8. Monadic parsing: parsing.html; Functional parsing video Computerphile code: https://github.com/pbv/tapf-parsing
    9. Functors and applicatives: applicative.html
    10. Property-based testing using QuickCheck: quickcheck.html
    11. QuickCheck example: Testing binary search trees. video: How to specify it; code: BST.hs; BSTTests.hs
    12. Case study: testing a simple JSON parser; code: https://github.com/pbv/tapf-json
    13. Domain-specific embedded languages: dsels.html; code: https://github.com/pbv/tapf-shapes
    14. Case study: a DSEL for turtle graphics; code: https://github.com/pbv/tapf-turtle
    15. Monad transformers: transformers.html; code: https://github.com/pbv/tapf-monad-examples

    Exams

    Final exams (from previous editions): 2015; 2016; 2017.


    Pedro Vasconcelos, 2018-2021.