Thursday, February 2, 2017

SICP: Lisp and the Y Combinator

Today was the last lecture of 6.037: Structures and Interpretations of Computer Programs (SICP) which is the condensed version of the legendary 6.001 previously taught at MIT by famous professors Hal Abelson and Gerry Sussman, and more recently, Eric Grimson. SICP is taught in scheme (a dialect of Lisp). However, the course is more about teaching you how to think about designing computer programs than the language in itself.

SICP was an amazing class. It inspired the perfect mix of confusion and fascination that makes me want to continue understanding more, as if SICP had inducted me into a secret society of hackers who are able to appreciate computer science in a way unbeknownst to even CS majors. Ironically, I was presented with a button today that officially inducted me into the Knights of the Lambda Calculus.




I actually first learned about Lisp through reading Paul Graham's essays around a year ago before starting school at MIT. I'm a huge fan of Paul Graham and Paul Graham loves Lisp, so I developed a curiosity for Lisp, which prompted me to take 6.037. I never understood that Paul Graham's firm's name Y Combinator meant anything more until today's lecture, when the instructor talked about lambda calculus, which was introduced by Alonzo Church as a way of expressing computation (equivalent to the Turing machine).  Church's idea means that any program can be expressed solely through a series of lambda expressions. I learned today that the y-combinator is a way of supporting recursion through only implementing lambda expressions.

It was so uncanny getting the Knights of the Lambda Calculus button, seeing the y-combinator on it, and finally understanding what the name of Paul Graham's firm means. It feels almost cosmic, as if Paul Graham had inspired me to take 6.037 through his essays, and on the last day of class, I received a button that said the y-combinator on it, reinforcing the origin of my desire to learn Lisp.

Perhaps this is the cosmic way of congratulating me on my time at MIT so far: a pat on the back for everything I've learned here, and validation for my actions thus far towards getting where I would like to be in the future.