Principles of Functional Programming

A language that doesn’t affect the way you think about programming is not worth knowing.

-- Alan Perlis, First recipient of Turing Award, 1966.

There is a theory in Linguistics called Linguistic Relativity that hypothesizes that the language we speak affects our worldview and cognition. Alan Perlis suggests that this is likely to be true of programming languages as well, where the language in which we write code affects how we think about programming. In this course, you will learn a paradigm of programming called Functional Programming, which, if you were not exposed to previously, will fundamentally alter the way you think about programming. Functional programming has contributed several powerful abstractions and techniques, such as Garbage Collection, Type Systems, Lambdas, and MapReduce, that have together shaped the modern approach to programming. Indeed, functional languages are breeding grounds of new ideas that eventually make their way into mainstream programming. Why not be ahead of the curve and be a pioneer yourself? This course helps you do precisely that. It teaches you functional programming through the lens of OCaml and introduces you to novel programming abstractions and techniques that, at the very least, help you write efficient, maintainable, and correct code, and at best, give you a fresh perspective on approaching hard programming problems.

Classroom and Office Hours


Evaluation Components

Item Nos. Weight (%)
Homeworks 6 48
(Late) Mid-term 1 30
Course Project 1 20
Class Participation - 2