Functional programming uses abstract mathematics - algebra and logic - to make software more reliable and more productive. Originally developed within specialized functional programming languages (e.g. LISP, Scheme, ML, Haskell), Functional Programming today is a general methodology that has given inspiration to new features in other languages (e.g. C++, Java, Python) as well as large-scale data processing techniques (e.g. MapReduce, TensorFlow).
Our department has been in the forefront of functional programming since the 1980’s and led the development of a large variety of tools. The current activities include
- Compilers and type systems
- Parallel programming
- Hardware design and verification
- Property based testing: QuickCheck
- Theorem provers and model checkers: Paradox
- Domain-specific languages
- Natural language processing: Grammatical Framework
- Web programming: Haste
For students, we offer several courses on functional programming on both elementary and advanced levels.