Learning outcomes

The objective of this course is to introduce students to declarative programming by studying the basics of functional and logic programming.

Content

This course comprises two parts. In a first part we develop the functional programming paradigm. We study the basic concepts underlying this paradigm (functions, reduction strategies, strict and lazy evaluation) and we develop some more advanced topics such as higher-order programming, monomorphic and polymorphic typings, and type classes. All concepts are studied using the language Haskell. In the second part, we develop the logic programming paradigm. We study the Prolog language and its use of Horn logic, unification, selection rule, and negation. We develop some examples of non-deterministic programming. Through the course, we pay attention to programming techniques traditionally associated with these paradigms (e.g. the use of meta-interpreters) and the techniques by which these languages and the involved technologies can be implemented effectively.

Assessment method

Written exam involving programming exercices as well as questions on comprehension and knowledge of the material. 

Sources, references and any support material

  • G. Hutton, Programming in Haskell. Cambridge 2007.
  • S. Thompson, The Craft of Functional Programming, Pearson 1999.
  • R. Bird, Introduction to Functional Programming using Haskell, Prentice-Hall, 1998.
  • P. Hudak, J. Peterson, J. Fasel. A Gentle Introduction to Haskell. Available on-line at http://www.haskell.org/tutorial
  • S. Peyton-Jones (ed.). Haskell 98 Language and Libraries - The Revised Report
  • H. Abelson, G.J. Sussman, J. Sussman. Structure and Interpretation of Computer Programs. The MIT Press, 1985
  • A. Aho, J. Ullman. Concepts fondamentaux de l'informatique. Freeman and Company, 1992. Dunod, Paris, 1993.
  • W. F. Clocksin and C. S. Mellish, Programming in Prolog, 2003.
  • M. Bramer, Logic Programming with Prolog, Springer, 2005.
  • U. Nilsson and J. Maluszynski, Logic, Programming and Prolog (2ed), John Wiley & Sons Ltd.
  • L. Sterling, E. Shapiro. The art of Prolog. MIT Press, 1986.
  • Y. Deville. Logic Programming: Systematic Program Development. Addison-Wesley, 1990.

Language of instruction

Français
Training Study programme Block Credits Mandatory
Bachelier en sciences informatiques Standard 0 5
Bachelier en sciences informatiques Standard 3 5