Advanced Functional Programming
Beschrijving
The goal of functional programming is to write software that is efficient, scalable, and robust, all while maintaining a high level of abstraction. In this course we will investigate a number of techniques and language features that have been developed to apply functional programming to large-scale software projects. Concretely, we will discuss and apply the following topics:
Efficiency of functional programs: purely functional data structures, controlling lazy evaluation, persistence and amortization, parallel and concurrent functional programming.
Scalability of functional programs: monad transformers, free monads, and effect systems, lenses and optics, embedded domain-specific languages, generic programming.
Robustness of functional programs: type-level programming, generalized algebraic datatypes, refinement types, security types.
In the course project, you will apply these concepts and techniques to implement a type checker for a small language with an advanced type system, such as a dependent type system or an ownership type system.
Toetsing
The final grade of the course consists of the following components:
Homework Assignments (weighting 30%)
Programming Project (weighting 70%)
Final grade calculation = 0.3 * Homework Assignments + 0.7 * Programming Project
A passing final grade for the course can only be earned when for all components at least a 5.0 is earned, and the weighted final grade is at least a 5.8.
In case of an insufficient final result, repair options may exist in accordance with Article 17A, Times and number of examinations, sub 1, of the Teaching and Examination Regulations, for:
Homework Assignments: Repair opportunity
Programming Project: Repair opportunity
Disclaimer: information may change depending on unforeseen circumstances or measures (see: TER Art 2, sub 5).
Reviews0 reviews
Heb jij dit vak gevolgd?
Deel je ervaring met toekomstige studenten. Inloggen met je TU Delft mailadres duurt één minuut.
Schrijf een review