You are on page 1of 3

NPTEL Syllabus

Advanced Functional Programming - Web course


COURSE OUTLINE The course will address three issues Programming in a functional programming language Features of a functional programming language, and The implementation of functional programming languages. All this will be done using Haskell for illustration. COURSE DETAIL Pre-requisites: Sl.No. Topics/Contents No.of Hours 1. A first course on Principles of Programming Languages. 2. Course on Compilers. Coordinators: Prof. Amitabha Sanyal Department of Computer Science and EngineeringIIT Bombay

NPTEL
http://nptel.iitm.ac.in

Computer Science and Engineering

Introduction to functional programming features. Expressions and function definitions. Recursive formulation of programming problems. Types-monomorphic, universally polymorphic and conditional polymorphic (type variables ranging over type classes). Naive type inferencing. Lazy evaluation, its significance and consequences. Referential transparency and its significance. Abstractions supported by functional languages - Higher order functions, data abstraction through algebraic data types. Pattern matching. The Haskell program development environment.

Programming with Lists, Trees and Graphs Generic functions over these data structures and their properties. List comprehensions. Examples of applications coded using these data structures.

Resoning about functional programs Proving properties of functional programs through structural induction and rewrites.

Lambda Calculus

Historical background. Relevance to functional programming. Syntax and reductions. Church Rosser theorem. Expressibility-Church numerals, booleans, algebraic datatypes. Computational completeness.

Type inferencing The typed lambda calculus. Type rules, type checking and type inferencing. Type rules of the Hindley-Milner type system. Introducing polymorphism through the let construct. The Hindley-Milner type inferencing algorithm.

Type classes and their implemetation Translation of conditional polymorphic functions to universally polymorphic functions through type dictionaries. The Haskell organization of numeric types into classes. Ambiguous types and their resolution.

Monads and IO IO and referential transparency. Values and computations. Modelling side-effects through monads. Examples of monads. IO as a form of state monad. IO in Haskell

Implementation of lazy languages through graph reduction Different translation (interpretation and compilation) models used for implementing functional programming languages. Translation of a subset of Haskell into(enriched) lambda terms. Graph representation of lambda terms. Emulating different evaluation orders through graph reduction. Incorporating laziness through sharing.

Total

40

References: 1. R.Bird. Introduction to Functional Programming using Haskell. Prentice Hall Europe, 1998. 2. Bryan OSullivan, Don Stewart, and John Goerzen. Real World Haskell. OReilly Media, November 2008. 3. S.Peyton Jones. The Implementation of Functional Programming languages, Prentice Hall, New York, 1987. 4. Henk Barendregt. Lambda Calculus with Types, From Handbook of Logic in Computer Science, Eds. S. Abramsky, D. Gabbay, T.S.L. Maibaum, Oxford University Press. 5. H.P. Barendregt. The lambda calculus, its syntax and semantics, Elsevier Science Publishers B.V. Amsterdam, 1984.
A joint venture by IISc and IITs, funded by MHRD, Govt of India http://nptel.iitm.ac.in

You might also like