Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jeanqasaur/learn-programming-languages
Resources for the working programmer to learn more about the fundamentals and theory of programming languages.
https://github.com/jeanqasaur/learn-programming-languages
Last synced: 3 months ago
JSON representation
Resources for the working programmer to learn more about the fundamentals and theory of programming languages.
- Host: GitHub
- URL: https://github.com/jeanqasaur/learn-programming-languages
- Owner: jeanqasaur
- Created: 2020-05-12T07:24:03.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2020-06-26T05:51:59.000Z (over 4 years ago)
- Last Synced: 2024-08-02T01:26:52.018Z (6 months ago)
- Size: 5.86 KB
- Stars: 328
- Watchers: 13
- Forks: 18
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-repositories - jeanqasaur/learn-programming-languages - Resources for the working programmer to learn more about the fundamentals and theory of programming languages. (Others)
README
# Introduction
This 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.# Programming languages fundamentals
* UW professor Dan Grossman's [teaching materials](https://homes.cs.washington.edu/~djg/teachingMaterials/) are fantastic.
* UPenn professor Benjamin Pierce's [_Types and Programming Languages Book_](https://www.cis.upenn.edu/~bcpierce/tapl/) is a classic.
* 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.
* 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.
* I've never read Feilleisen et al's [_How to Design Programs_](https://htdp.org/), but it's also another highly recommended one.# Advanced topics in programming languages
* 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.
* 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/).
* 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.
* 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).# What's cool in programming languages research?
* 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).
* 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.
* 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.# What conferences should I follow for programming languages and software engineering research?
It'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.
* Principles of Programming Languages (POPL)
* Programming Language Design and Implementation (PLDI)
* History of Programming Languages (HOPL)
* Summit on Advances in Programming Languages (SNAPL)
* International Conference on Functional Programming (ICFP)
* SPLASH
* ASPLOS
* International Conference on Software Engineering (ICSE)