[
  {
    "path": "README.md",
    "content": "# Introduction\nThis is mostly based on an email I wrote to someone a few months ago who wanted to spend some time learning more about programming languages.\n\n# Programming languages fundamentals\n  * UW professor Dan Grossman's [teaching materials](https://homes.cs.washington.edu/~djg/teachingMaterials/) are fantastic.\n  * UPenn professor Benjamin Pierce's [_Types and Programming Languages Book_](https://www.cis.upenn.edu/~bcpierce/tapl/) is a classic.\n  * Tufts professor Norman Ramsey was the one who taught me a lot of what I know. He also has a book [here](https://www.cs.tufts.edu/~nr/build-prove-compare/), available upon request.\n  * MIT professors Abelson and Sussman's [_Structure and Interpretation of Computer Programs_](https://mitpress.mit.edu/sites/default/files/sicp/full-text/book/book.html) is another classic. I'm pretty sure I've read through the whole thing cover-to-cover multiple times.\n  * I've never read Feilleisen et al's [_How to Design Programs_](https://htdp.org/), but it's also another highly recommended one.\n\n# Advanced topics in programming languages\n  * There is, of course, Benjamin Pierce's [_Advanced Topics in Types and Programming Languages_](https://www.cis.upenn.edu/~bcpierce/attapl/). Most PL people I know have this and TAPL on their bookshelf.\n  * If you're interested in program analysis, you may be interested in checking out CMU professor Jonathan Aldrich's [Program Analysis course](http://www.cs.cmu.edu/~aldrich/courses/17-355-19sp/).\n  * If you're interested in Coq and formal verification, you may be interested in MIT professor Adam Chlipala's books, [_Certified Programming with Dependent Types_](http://adam.chlipala.net/cpdt/) and [_Formal Reasoning About Programs_](http://adam.chlipala.net/frap/). You might also consider Benjamin Pierce's [_Software Foundations_](https://softwarefoundations.cis.upenn.edu/). This book is written as a collection of Literate Coq files with exercises.\n  * If you're interested in the intersection of software foundations and security, you may be interested in the syllabus for this course Matt Fredrikson and I designed at CMU a few years ago. We taught a bunch of grad-level material very slowly to upper-level students and they seemed to learn a lot! Her are the [original materials](https://github.com/jeanqasaur/cmu-15316-spring17/tree/master/lectures). Here's the [current website](https://15316-cmu.github.io/index.html).\n\n\n# What's cool in programming languages research?\n  * I taught a graduate seminar a few years ago in which we looked at all programming language designs through the lens of their domains. Here's the [reading list for that course](https://github.com/jeanqasaur/dsl-syllabus-fall-2016).\n  * When I was the Publicity Chair for Principles of Programming Languages (POPL), one of the flagship conferences of our field, I did an [People of POPL interview series](http://www.cs.cmu.edu/~popl-interviews/) with some of the luminaries of our field, as well as a diversity of younger researchers. It gives a pretty good picture of the cutting edge as of 2017.\n  * The Publicity Chairs for Programming Language Design and Implementation (PLDI), another flagship conference of our field, did [People of PLDI](http://abstract.ece.cmu.edu/peopleOfPLDI/) in 2019.\n\n# What conferences should I follow for programming languages and software engineering research?\nIt's way past my bedtime, so I'm going to put a list of conferences I've submitted to, plus a couple more. This is by no means a complete list.\n  * Principles of Programming Languages (POPL)\n  * Programming Language Design and Implementation (PLDI)\n  * History of Programming Languages (HOPL)\n  * Summit on Advances in Programming Languages (SNAPL)\n  * International Conference on Functional Programming (ICFP)\n  * SPLASH\n  * ASPLOS\n  * International Conference on Software Engineering (ICSE)\n"
  }
]