This semester, I got the nod from the computer science department to take a self directed readings course over, broadly speaking, functional programming and programming language theory.
These are topics I’ve become increasingly interested in, especially since getting involved with rust and haskell, and attending ICFP and Strange Loop these past years.
I always struggle with being overly ambitious about what I can achieve, especially with reading. That all said, I plan to split my time between a few resources.
- Haskell Programming from First Principles by Chris Allen and Julie Moronuki
- Purely Functional Data Structures by Chris Okasaki
- Types and Programming Languages by Benjamin Pierce
- Select Readings in Programming Languages
- Fundamental Concepts in Programming Languages by Strachey
- Why Functional Programming Matters by Hughes
- Can Programming Be Liberated from the von Neumann Style? by Backus
- An Incremental Approach to Compiler Construction by Ghuloum
- The Conception, Evolution, and Application of Functional Programming Languages by Hudak
At the risk of sounding obvious, this is a lot. However, I have been cheating this schedule by reading over winter break; in particular, I’ve read about 1/4th of Haskell Programming from First Principles and hope to make it roughly 1/2 through before the semester starts. I figure it would be a major boost to my productivity by being comfortable with the ergonomics and syntax of Haskell before studying FP and PLT more formally. The book is also fantastic.
Okasaki’s book is more of a reference text for reasoning about problems and making efficient design choices in an FP context.
Pierce’s book is the Moby of my semester. I’m not exactly sure what I’m heading into with this other than I know I find programming languages very interesting and, after ICFP in particular, I’m fascinated by type systems. The Haskell Book has only increased my interest in these subjects and I hope Pierce can help illuminate more for me where my programming languages class failed me.
In a similar vein of thought, the papers I listed above are both to complement the previous texts but also to act as a supplement to my previous programming languages class. I find the history and development of programming languages themselves extremely interesting and want to learn more about them. I hope to achieve that partially with this list, albeit with a strong FP bias.
My semester is “light” this spring…. theoretically. I hope to have a lot of time to sink into this readings course and basically get lost in it. I also really would like to document my progress through it here. Let’s consider this blog post the start of something.