Introduction to Functional Programming
I had heard fascinating tales of Functional Programming and how it has been a food for thought to many exceptional programmers. Over a year ago when I was looking for Python mastery tips on the web, I came across this question on StackOverflow, that laid down an ultimate path for progression from an apprentice to guru. The highest voted answer recommended one to discover Haskell after they have learned almost all the key features of Python and embrace functional programming in the end. As much as I would have loved to explore it then and there; however, it wasn't possible until two weeks ago that I could actually delve into the subject with all my seriousness and attention. It's not that I didn't make any effort at all during this time. It's just that I wanted to have a guiding course that I could follow and use it to keep track of my progress.
Just a few weeks ago, a course on Functional Programming by Delft University kicked off on edX platform. I was very much influenced by the instructor and immediately signed up for the course. Its been several weeks now, and I must that this course has certainly met my expectations. The instructor for this course is Erik Meijer, a highly acclaimed computer scientist who has been closely associated with aspects of functional programming throughout his career  . I must however say that he's quite bold about his opinions  and doesn't like the idea of spoon feeding students. One can follow him on twitter (@headinthebox) for interesting updates. Exactly during the same time, another famous researcher and computer scientist Dr. Gérard Huet happened to visit out campus for a two days guest lecture on lambda calculus, type theory, functional programming, and semantics of programming languages. I was fortunate to interact to attend his lecture and see him in person. The lecture helped me understand the mathematical foundations of programming language design and its semantics  (being a Biotechnology student, we don't really get to do courses on Automata Theory, or Mathematical Logic). It was an overwhelming experience to have.
As far as the particulars of course are concerned, the exercises are really nice and encourage one to explore concepts on their own. Although the course can be done with the help of any language that supports functional programming, Haskell is the recommended main language of the course (that is a thing I love). Supplementary reading material is readily provided for those who want to stay ahead of the course backed by a strong and supportive community in the discussion forums. The assignment deadlines are quite stretched allowing one to comprehend material and attempt quizzes at their pace.
Also, I have been collecting all the resources that has been suggested by the instructor or the others during the course and maintaining a list on GitHub at vivekiitkgp/haskell. It will also contain all the code that I would write during my learning experience. However, the course repository is hidden because the assignment dates are not yet over and releasing solutions would be violating honor code agreement for the course. Feel free to star and contribute.
In the end, as Erik would say, "Developers don't talk about code, they code". However, I would love to post more interesting content as I delve more into matter.
|||Haskell 98 Language and Libraries: The Revised Report; December 2002. http://www.haskell.org/onlinereport/|
|||List of published papers by Erik Meijer.|
|||One Hacker Way, a Rational Alternative to Agile by Erik Meijer, Presented at Reaktor Dev Day 2014|
|||An executable computability theory course based on λ-calculus. [PDF]|