Pre-requisites : NIL

Syllabus :
Functional programming: Functions as first class objects, laziness, data-types and pattern matching, classes and overloading, side-effects etc. Languages like ML and Haskell will be used to describe the concepts. Lambda calculus: Syntax, conversions, normal forms, Church-Rosser theorem, combinators. Implementation issues: Graph reduction, Three Instruction Machine. Logic programming: Horn clauses, resolution, SLD-refutation, Prolog. Negation in logic programs and implementation issues.

Texts :
1. R. Bird and P. Wadler, Introduction to Functional Programming, 2nd Ed, Prentice-Hall, 1998.
2. S. L. Peyton-Jones, The Implementation of Functional Programming Languages, Prentice-hall, 1987.
(Full text available online: http://research.microsoft.com/Users/simonpj/Papers/slpj-book-1987/index.htm).
3. J. W. Lloyd, Foundations of Logic Programming, Springer-Verlag, 2nd Ed. 1987.

References :
1. J. D. Ullman, Elements of ML Programming, ML 97 Edition, 2nd Ed, Prentice-Hall, 1998.
2. L. Sterling and E. Shapiro, The Art of Prolog, 2nd Ed, MIT Press, 1994.
3. J. R. Hindley and H. P. Seldin, Introduction to Combinators and Lambda-calculus, Cambridge University Press, 1988.