DM552: Programming Languages
This repository contains the public material and information related to the Programming Languages offered by the IMADA Department at SDU.
The course is a mandatory course in the bachelor program giving an introduction to the main concepts and the structure of programming languages, paying particular attention to the functional paradigm. It fosters a coherent understanding of advantages and disadvantages of different levels of abstraction and programming language constructs, giving to the participants the experience with programming in languages other than the mainstream object-oriented languages.
The course is divided into two main modules that will be thought in parallel:
- programming language: principles and paradigms
- functional programming: Haskell
The first module will introduce the general concepts of programming languages either using linguistic mechanism or the implementation structures corresponding to them in a manner that is independent of any specific language. The second module instead focus on one concrete language, Haskell, to allow students to get familiar with the functional programming paradigm.
Contact email: firstname.lastname@example.org
- Jonas Stisen (email@example.com)
- Lovro Lugovic (firstname.lastname@example.org )
The course will rely on the following two books:
- Programming Languages: Principles and Paradigms (Gabbrielli Maurizio, Martini Simone)
- Learn You a Haskell for Great Good!: A Beginner's Guide (Miran Lipovaca)
The additional course material is available on this git repository. Material that can not be made public will be available on the Blackboard platform.
Additional interesting books to know a bit more on Haskell (optional):
- Bird, Richard and Wadler, Philip (1988). Introduction to Functional Programming (1st ed.). Prentice Hall Press. ISBN 0-13-484189-1.
- Bird, Richard (1998). Introduction to Functional Programming using Haskell (2nd ed.). Prentice Hall Press. ISBN 0-13-484346-0.
- Hutton, Graham (2007). Programming in Haskell. Cambridge University Press. ISBN 978-0-52169-269-4.
- Thompson, Simon (1999). Haskell - The Craft of Functional Programming (2nd ed.). Addison-Wesley. ISBN 0-201-34275-8.
- Marlow, Simon (2013). Parallel and Concurrent Programming in Haskell. O’Reilly. ISBN 1-4493-3594-2.
Online Haskell Resources
- Hoogle: Search Haskell APIs by type!
- Haskell Hierarchical Libraries
- Tour of Haskell syntax
- Desugar Haskell code
To access the exam, students will have to submit and pass as a pre-requisite a project assignment, i.e., and Haskell program.
Finally, to complete the course the student has to pass a written exam having questions covering all the topics presented in class. The written exam will be evaluated using a 7 grades scale. No external auxiliary material (e.g., books, personal notes) will be allowed to be used during the exam.