Principles of Functional Programming
A language that doesn’t affect the way you think about programming is not worth knowing.
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
- Instructor: Gowtham Kaki.
- Where: ECCS 1B14
- When: M,W,F 10:10 - 11:00 AM
- Zoom: https://cuboulder.zoom.us/j/91236061034. Email me for the passcode.
- Office Hours: On Piazza or by appointment.
- Canvas: https://canvas.colorado.edu/courses/92609
Textbook
- There is no published textbook for this course. We will rely on class notes distributed via Jupyter notebooks and PDFs.
- The main reference material for OCaml is Real World OCaml, 2nd Edition, by Yaron Minsky and Anil Madhavapeddy.
- The secondary reference material for OCaml is Cornell cs3110’s textbook: OCaml Programming: Correct+Efficient+Beautiful
- Pierce’s Types and Programming Languages is a recommended reading. This book is available for checkout at CU Libraries.
Evaluation Components
Item | Nos. | Weight (%) |
---|---|---|
Homeworks | 6 | 48 |
(Late) Mid-term | 1 | 30 |
Course Project | 1 | 20 |
Class Participation | - | 2 |