Hi Guest, 30 September 2020 Wednesday IST

About CUSAT | About Department | Alumni | Sitemap | Disclaimer  

  Home > Academic/Programmes > Programme Structure > SE (2015)

Core/Elective: Elective Semester: 1 Credits: 3

Course Description

As big data and multiple cores become ubiquitous, functional programming has become relevant as never before. The latest standards for popular programming languages like C++ and Java have included support
for a large number of functional programming features. This course aims to provide a thorough introduc- tion to functional programming. It covers both the theoretical underpinnings and practical, programming aspects.

Course Objectives

1. To have a theoretical understanding of functional programming.
2. To develop the ability to design and implement functional programs.

Course Content

1. Introduction to Functional Programming Motivation Defining features of the functional Paradigm First Class Functions Referential Transparency Introduction to Haskell Data Types and Pattern Matching Laziness Program Correctness

2. Lambda Calculus Alpha, beta conversions Normal forms Applicative order Reductions Church Rosser Theorems Y combinator Recursion Proofs of correctness.

3.Classes for Numbers Lists in Haskell Basic List operations Higher order list functions List compre- hension Strings and Tuples User defined datatypes: lists, queues, trees.

4. Proving correctness of programs Induction Proofs using higher order functions Infinite Lists Lazy Evaluation Efficiency Controlling Space and Time complexity Polymorphism Conditional Polymor- phism Type classes

Programming imperatively in Haskell The IO Monad Why Monads are Necessary The State Monad ST Monad Mutable and Immutable Arrays Parsing using Monads Applications Fault-tolerant systems Financial analysis Comparison to other functional languages.


[1] Richard Bird, Thinking Functionally with Haskell, Cambridge University Press, 2014.
[2] Graham Hutton, Programming in Haskell, Cambridge University Press, 2007.
[3] Kees Doets, Jan van Eijck, The Haskell Road to Logic, Maths and Programming, 2nd Edition, College Publications, 2004.
[4] Greg Michaelson, An Introduction to Functional Programming Through Lambda Calculus, Dover Publi- cations, 2011.
[5] Chris Okasaki, Purely Functional Data Structures, Cambridge University Press, 1999.

Copyright © 2009-20 Department of Computer Science,CUSAT
Design,Hosted and Maintained by Department of Computer Science
Cochin University of Science & Technology
Cochin-682022, Kerala, India
E-mail: csdir@cusat.ac.in
Phone: +91-484-2577126
Fax: +91-484-2576368