Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/steshaw/plt

Programming Language Theory λΠ
https://github.com/steshaw/plt

category-theory functional-programming logic programming-languages proof-theory type-theory

Last synced: about 2 months ago
JSON representation

Programming Language Theory λΠ

Awesome Lists containing this project

README

        

---
layout: page
title: Programming Language Theory
---

Programming Language Theory
===========================

Learning about _Programming Language Theory_ can be a tough journey,
particularly for programming practitioners who haven't studied it formally.
This resource is here to help. Please feel free to get in touch if you have
ideas for improvement.

#### 💡 Top Tips

For a quick course in Type Theory, Philip Wadler recommends: _[Types and
Programming Languages](http://www.cis.upenn.edu/~bcpierce/tapl/)_, _[Proofs
and Types](http://www.paultaylor.eu/stable/Proofs+Types.html)_, followed by
_[Advanced Topics in Types and Programming
Languages](https://www.cis.upenn.edu/~bcpierce/attapl/)_.

See also Daniel Gratzer's [Learn Type Theory](https://github.com/jozefg/learn-tt), and Darryl McAdams's [So you want to learn type theory](https://web.archive.org/web/20190213100051/http://purelytheoretical.com/sywtltt.html).

Type Theory
-----------

### Books

- [PLFA](https://plfa.github.io/) - Programming Language Foundations in Agda - [Philip Wadler](https://github.com/wadler), [Wen Kokke](https://github.com/wenkokke)
- [SF](https://softwarefoundations.cis.upenn.edu/) - Software Foundations - Benjamin C. Pierce et al. [Available with jsCoq](https://jscoq.github.io/ext/sf/)
- [TAPL](http://www.cis.upenn.edu/~bcpierce/tapl/) - Types and Programming Languages - Benjamin C. Pierce
- [PROT](http://www.paultaylor.eu/stable/Proofs+Types.html) Proofs and Types - Jean-Yves Girard, Yves Lafont and Paul Taylor - 1987-90 [pdf](http://www.paultaylor.eu/stable/prot.pdf)
- [PFPL](http://www.cs.cmu.edu/~rwh/pfpl/) - Practical Foundations for Programming Languages (Second Edition) - Robert Harper [Online preview edition](http://www.cs.cmu.edu/~rwh/pfpl/2nded.pdf)
- [ATTAPL](http://www.cis.upenn.edu/~bcpierce/attapl/) - Advanced Topics in Types and Programming Languages - Edited by Benjamin C. Pierce
- [CPDT](http://adam.chlipala.net/cpdt/) - Certified Programming with Dependent Types - Adam Chlipala
- [SEwPR](https://mitpress.mit.edu/9780262062756/semantics-engineering-with-plt-redex/) - Semantics Engineering with PLT Redex - Matthias Felleisen, Robby Findler, and Matthew Flatt. [Redex](https://redex.racket-lang.org/)
- [HoTT](http://homotopytypetheory.org/book/) - Homotopy Type Theory, Univalent Foundations of Mathematics
- [Coq'Art](http://www.labri.fr/perso/casteran/CoqArt/index.html) Interactive Theorem Proving and Program Development, Coq'Art: The Calculus of Inductive Constructions - Yves Bertot, Pierre Castéran.
- [TTFP](http://www.cs.kent.ac.uk/people/staff/sjt/TTFP/) - Type Theory and Functional Programming - Simon Thompson, 1991
- [PiMLTT](http://www.cse.chalmers.se/research/group/logic/book/) - Programming in Martin-Löf's Type Theory, An Introduction - Bengt Nordström, Kent Petersson, Jan M. Smith
- Using, Understanding, and Unravelling The OCaml Language — An introduction [pdf](http://pauillac.inria.fr/~remy/cours/appsem/ocaml.pdf)
- Polymorphic typing of an algorithmic language (PhD Thesis) - Xavier Leroy [pdf](https://xavierleroy.org/publi/phd-thesis.pdf)
- [ATP](http://www.cl.cam.ac.uk/~jrh13/atp/) - Handbook of Practical Logic and Automated Reasoning - John Harrison
- Basic Simple Type Theory - J. Roger Hindley [pdf](http://mathtrielhighschool.files.wordpress.com/2011/08/number-theory.pdf) [paperback@booko](http://booko.com.au/9780521054225/Basic-Simple-Type-Theory)
- [Lambda Calculus and Combinators](http://www.cambridge.org/us/academic/subjects/computer-science/programming-languages-and-applied-logic/lambda-calculus-and-combinators-introduction-2nd-edition) [pdf](http://pds14.egloos.com/pds/200901/16/93/Lambda-Calculus_and_Combinators.pdf) — J. Roger Hindley and Jonathan P. Seldin
- [Semantics with Applications: An Appetizer](https://www.cs.ru.nl/~herman/onderwijs/semantics2019/wiley.pdf) — Hanne Riis Nielson, Flemming Nielson
- An Introduction to Lambda Calculi for Computer Scientists - Chris Hankin
- [The Definition of Standard ML (1990) and Commentary on Standard ML (1991)](https://web.archive.org/web/20180927020934/http://www.itu.dk/people/tofte/publ/1990sml/1990sml.html) [definition (pdf)](https://web.archive.org/web/20160518190441/http://www.itu.dk/people/tofte/publ/1990sml/1990sml.pdf) [commentary (pdf)](https://web.archive.org/web/20160917123723/https://www.itu.dk/people/tofte/publ/1990sml/1991commentaryBody.pdf)
- [The Definition of Standard ML (Revised)](https://smlfamily.github.io/sml97-defn.pdf) - Milner, Fofte, Harper, and MacQueen
- [Programs and Proofs](http://ilyasergey.net/pnp/) — Ilya Sergey [pdf](http://ilyasergey.net/pnp/pnp.pdf)
- [Type Theory and Formal Proof: An Introduction](https://www.cambridge.org/core/books/type-theory-and-formal-proof/0472640AAD34E045C7F140B46A57A67C) — Rob Nederpelt, Herman Geuvers
- [Lectures on the Curry-Howard Isomorphism (pdf)](http://disi.unitn.it/~bernardi/RSISE11/Papers/curry-howard.pdf)
- Program = Proof — Samuel Mimram [pdf](https://www.lix.polytechnique.fr/Labo/Samuel.Mimram/teaching/INF551/course.pdf)

### Papers

- [A Tutorial Implementation of a Dependently Typed Lambda Calculus](http://www.andres-loeh.de/LambdaPi/) — Andres Löh, Conor McBride and Wouter Swierstra [pdf](http://www.andres-loeh.de/LambdaPi/LambdaPi.pdf). Previously published as [Simply Easy](http://strictlypositive.org/Easy.pdf).
- [ΠΣ: Dependent Types without the Sugar](https://www.andres-loeh.de/PiSigma/PiSigma.pdf) - Thorsten Altenkirch, Nils Anders Danielsson, Andres Löh, and Nicolas Oury
- [Lambda Calculi with Types](http://ttic.uchicago.edu/~dreyer/course/papers/barendregt.pdf) — Henk Barendregt
- [Intuitionistic Type Theory](http://www.csie.ntu.edu.tw/~b94087/ITT.pdf)
- [Type Theory](https://plato.stanford.edu/entries/type-theory/) - Thierry Coquand

### Videos

- [OPLSS — Oregon Programming Language Summer School](https://www.cs.uoregon.edu/research/summerschool/)
- [OPLSS 2023 — Types, Semantics, and Logic](https://www.cs.uoregon.edu/research/summerschool/summer23/topics.php)
- [OPLSS 2022 — Types, Semantics, and Program Reasoning](https://www.cs.uoregon.edu/research/summerschool/summer22/topics.php)
- [OPLSS 2021 — Foundations of Programming and Security](https://www.cs.uoregon.edu/research/summerschool/summer21/topics.php)
- [OPLSS 2019 — Foundations of Probabilistic Programming and Security](https://www.cs.uoregon.edu/research/summerschool/summer19/topics.php)
- [OPLSS 2018 — Parallelism and Concurrency](https://www.cs.uoregon.edu/research/summerschool/summer18/topics.php)
- [OPLSS 2017 — A Spectrum of Types](https://www.cs.uoregon.edu/research/summerschool/summer17/topics.php)
- [OPLSS 2016 — Types, Logic, Semantics, and Verification](http://www.cs.uoregon.edu/research/summerschool/summer16/curriculum.php)
- [OPLSS 2015 — Types, Logic, Semantics, and Verification](http://www.cs.uoregon.edu/research/summerschool/summer15/curriculum.html)
- [OPLSS 2014 — Types, Logic, Semantics, and Verification](http://www.cs.uoregon.edu/research/summerschool/summer14/curriculum.html)
- [OPLSS 2013 — Types, Logic, and Verification](http://www.cs.uoregon.edu/research/summerschool/summer13/curriculum.html)
- [OPLSS 2012 — Logic, Languages, Compilation, and Verification](http://www.cs.uoregon.edu/research/summerschool/summer12/curriculum.html)
- [OPLSS 2011 — Types, Semantics and Verification](http://www.cs.uoregon.edu/research/summerschool/summer11/curriculum.html)
- [OPLSS 2010 — Logic, Languages, Compilation, and Verification](http://www.cs.uoregon.edu/research/summerschool/summer10/curriculum.html)
- [Complete archives 2002-Present](https://www.cs.uoregon.edu/research/summerschool/archives.html)
- [HoTTEST — Homotopy Type Theory Summer School 2022](https://www.uwo.ca/math/faculty/kapulkin/seminars/hottest_summer_school_2022.html)
- [ICFP 2012 Monday keynote. Conor McBride: Agda-curious?](https://youtu.be/XGyJ519RY6Y)

### Subtopics

- [Higher Type Theory]({{site.github.url | replace: 'http://', '//'}}/higher-type-theory/)
- [Module Systems]({{site.github.url | replace: 'http://', '//'}}/module-systems/)
- [Effect Systems]({{site.github.url | replace: 'http://', '//'}}/effect-systems/)

Programming Languages
---------------------

### Books

- [DCPL](https://mitpress.mit.edu/9780262201759/design-concepts-in-programming-languages/) - Design Concepts in Programming Languages – Franklyn Turbak and David Gifford, 2008. [Course](https://ocw.mit.edu/courses/6-821-programming-languages-fall-2002/)
- [CTM](http://www.info.ucl.ac.be/~pvr/book.html) - Concepts, Techniques, and Models of Computer Programming, Peter Van Roy and Seif Haridi
- [EOPL](http://www.eopl3.com/) - Essentials of Programming Languages, 3rd Edition - Daniel P. Friedman
- [PLAI](https://www.plai.org/) - Programming Languages: Application and Interpretation - Shriram Krishnamurthi
- [PAIP](https://github.com/norvig/paip-lisp) Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp - Peter Norvig, 1992
- [PLP](http://cs.rochester.edu/u/scott/pragmatics/) Programming Language Pragmatics - Michael L. Scott
- [FSPL](https://mitpress.mit.edu/books/formal-semantics-programming-languages) The Formal Semantics of Programming Languages - Glynn Winskel
- [PL:BPC](https://www.build-prove-compare.net/) Programming Languages: Build, Prove, and Compare - Norman Ramsey

### Papers

- [An argument against call/cc](http://okmij.org/ftp/continuations/against-callcc.html) — Oleg Kiselyov

Compiler Construction
---------------------

### Books

- [MinCaml](http://esumii.github.io/min-caml/index-e.html) - A Crash Course for the MinCaml Compiler
- [MCIiML](http://www.cs.princeton.edu/~appel/modern/ml/) Modern Compiler Implementation in ML - Andrew W. Appel
- [pj-lester-book](https://www.microsoft.com/en-us/research/publication/implementing-functional-languages-a-tutorial) Implementing functional languages: a tutorial - Simon Peyton Jones and David Lester, 1992
- [slpj-book-1987](https://www.microsoft.com/en-us/research/wp-content/uploads/1987/01/slpj-book-1987.pdf) - The Implementation of Functional Programming Languages - Simon Peyton Jones - 1987
- [MCD-2e](http://www.dickgrune.com/Books/MCD_2nd_Edition/) Modern Compiler Design, Second Edition — Dick Grune et al.
- [EaC-2e](https://dl.acm.org/doi/10.1145/2088883.2088908) Engineering a Compiler, 2nd Edition, Cooper and Torczon
- [Compiler Construction](https://people.inf.ethz.ch/wirth/CompilerConstruction/index.html), Niklaus Wirth
- [DragonBook](https://suif.stanford.edu/dragonbook/) - "The Dragon Book" Compilers: Principles, Techniques, and Tools
- [LiSP](http://www.cambridge.org/us/academic/subjects/computer-science/programming-languages-and-applied-logic/lisp-small-pieces) - Lisp in Small Pieces - Christian Queinnec
- [CwC](http://www.cambridge.org/us/academic/subjects/computer-science/programming-languages-and-applied-logic/compiling-continuations) Compiling with Continuations - Andrew W. Appel
- [Static Program Analysis](https://cs.au.dk/~amoeller/spa/spa.pdf), Anders Møller and Michael I. Schwartzbach
- [List of compiler books at the GCC Wiki](http://gcc.gnu.org/wiki/ListOfCompilerBooks)

### Papers

- [An Incremental Approach to Compiler Construction](http://scheme2006.cs.uchicago.edu/11-ghuloum.pdf), Abdulaziz Ghuloum
- [A Nanopass Framework for Compiler Education](http://www.cs.indiana.edu/~dyb/pubs/nano-jfp.pdf), Dipanwita Sarkar, Oscar Waddell, R. Kent Dybvig
- [A Nanopass Framework for Commercial Compiler Development](http://andykeep.com/pubs/dissertation.pdf), [Andrew W. Keep](http://andykeep.com/)
- [ZINC](http://caml.inria.fr/pub/papers/xleroy-zinc.pdf) - The ZINC experiment, an economical implementation of the ML language - Xavier Leroy (Technical Report) [more OCaml papers](http://caml.inria.fr/about/papers.en.html)

### Videos

- [Stanford - Compilers](https://online.stanford.edu/course/compilers-0) - Alex Aiken

Runtime systems
---------------

### Books

- [The Garbage Collection Handbook, The Art of Automatic Memory Management](http://gchandbook.org/) — Richard Jones, Antony Hosking, Eliot Moss, 2011.

### Papers

- [Debunking the 'Expensive Procedure Call' Myth, or, Procedure Call Implementations Considered Harmful, or, Lambda: The Ultimate GOTO](https://web.archive.org/web/20180406191621/http://library.readscheme.org/page1.html) — Guy Lewis Steele, Jr. (1977) [pdf](https://web.archive.org/web/20180130013734/http://repository.readscheme.org/ftp/papers/ai-lab-pubs/AIM-443.pdf)

Functional Programming
----------------------

### Books

- [Bird and Wadler](http://usi-pl.github.io/lc/sp-2015/doc/Bird_Wadler.%20Introduction%20to%20Functional%20Programming.1ed.pdf) - Introduction to Functional Programming, 1st Edition - Bird and Wadler
- [AoP](http://www.amazon.com/books/dp/013507245X) - The Algebra of Programming - Richard Bird, Oege de Moor
- [Programming in Haskell](http://www.cs.nott.ac.uk/~gmh/book.html) — Graham Hutton (2007)
- [RWH](http://book.realworldhaskell.org/) - Real World Haskell - Bryan O'Sullivan, Don Stewart, and John Goerzen
- [FPiS](http://www.manning.com/bjarnason/) - Functional Programming in Scala - Paul Chiusano and Rúnar Bjarnason
- [SICP](http://mitpress.mit.edu/sicp/), Structure and Interpretation of Computer Programs, by Abelson, Sussman, and Sussman
- [PCPH](http://chimera.labs.oreilly.com/books/1230000000929) - Parallel and Concurrent Programming in Haskell - Simon Marlow
- [RWOC](https://realworldocaml.org/) - Real World OCaml - Jason Hickey, Anil Madhavapeddy, and Yaron Minsky
- [Developing Applications With OCaml](http://caml.inria.fr/pub/docs/oreilly-book/index.html) — Emmanuel Chailloux, Pascal Manoury and Bruno Pagano (2000)
- [BTLS](http://www.ccs.neu.edu/home/matthias/BTLS/) - The Little Schemer - Daniel P. Friedman, Matthias Felleisen
- [BTSS](http://www.ccs.neu.edu/home/matthias/BTSS/) - The Seasoned Schemer - Daniel P. Friedman, Matthias Felleisen
- [BTML](http://www.ccs.neu.edu/home/matthias/BTML/) - The Little MLer - Matthias Felleisen, Daniel P. Friedman
- [The Reasoned Schemer](http://minikanren.org/) and miniKanren
- [HTDP](http://www.htdp.org/) - How to Design Programs - Matthias Felleisen, Robert Findler, Matthew Flatt, Shriram Krishnamurthi
- [HR](http://homepages.cwi.nl/~jve/HR/) - The Haskell Road to Logic, Maths and Programming - 2nd Ed. - Kees Doets, Jan van Eijck [pdf](http://fldit-www.cs.uni-dortmund.de/~peter/PS07/HR.pdf)
- A Book of Abstract Algebra - 2nd Ed. - Charles C. Pinter [booko](http://booko.com.au/9780486474175/Book-of-Abstract-Algebra)
- Purely Functional Data Structures - Chris Okasaki [phd-thesis in pdf](http://www.cs.cmu.edu/~rwh/theses/okasaki.pdf) [paperback@booko](http://booko.com.au/9780521663502/Purely-Functional-Data-Structures) [More purely functional data structures](http://cstheory.stackexchange.com/questions/1539/whats-new-in-purely-functional-data-structures-since-okasaki)

### Papers

- [Lambda Papers](http://library.readscheme.org/page1.html) - Lambda: The Ultimate Imperative/Declarative/GOTO - Guy Steele and Gerald Sussman
- [The Lambda Calculus](https://plato.stanford.edu/entries/lambda-calculus/) - Jesse Alama and Johannes Korbacher
- [A Tutorial Introduction to the Lambda Calculus](https://personal.utdallas.edu/~gupta/courses/apl/lambda.pdf) - Raul Rojas
- [Exploring Generic Haskell](http://www.andres-loeh.de/ExploringGH.pdf) (PhD thesis) - [Andres Löh](http://www.andres-loeh.de/). This an epic, accessible, book-length PhD on datatype generic programming.
- ICFP accepted papers
- [2019](https://github.com/llelf/icfp2019-papers)
- [2018](https://icfp18.sigplan.org/track/icfp-2018-papers#program), [video playlist](https://www.youtube.com/watch?v=Z3vr5xylMCE&list=PLnqUlCo055hVknu7QAW_RUZRmRZWXmnvv)
- [2017](https://github.com/gasche/icfp2017-papers), [video playlist](https://www.youtube.com/watch?v=RoddXtl8SU8&list=PLnqUlCo055hW7kU-SBQEhC_87etA5Gqlq)
- [2016](https://github.com/gasche/icfp2016-papers), [video playlist](https://www.youtube.com/watch?v=EpifLmPM1L0&list=PLnqUlCo055hV-Yb_88YYUC2ucaBKCWCsa)
- [2015](https://github.com/mpickering/icfp2015-papers), [by session](http://icfpconference.org/icfp2015/toc.html), [video playlist](https://www.youtube.com/watch?v=PI99A08Y83E&list=PLnqUlCo055hWNtUo1Haoq347VhCqIjs7u)
- [2014](https://github.com/yallop/icfp2014-papers)
- [2013](https://github.com/gasche/icfp2013-papers)
- [2012](https://github.com/technogeeky/icfp12-paper-links)

### Videos

- [C9 Lectures: Dr. Erik Meijer - Functional Programming Fundamentals](http://channel9.msdn.com/Series/C9-Lectures-Erik-Meijer-Functional-Programming-Fundamentals)
- [C9 Lectures: Dr. Ralf Lämmel - Going Bananas + Advanced Functional Programming](http://channel9.msdn.com/Tags/ralf-laemmel)
- [Datatype-Generic Programming in Haskell](http://skillsmatter.com/podcast/home/a-haskell-lecture-with-leading-expert-andres-loh) - [Andres Löh](http://www.andres-loeh.de/) - [slides in pdf](http://www.andres-loeh.de/GP-ITB.pdf)

Category Theory
---------------

Philip Wadler's advice here is "read Pierce for motivation, Mac Lane for the
presentation of the maths".

### Books

- [Cakes, Custard and Category Theory: Easy recipes for understanding complex maths](http://www.amazon.com/Cakes-Custard-Category-Theory-understanding-ebook/dp/B00TA8SIV6) — [Eugenia Cheng](http://eugeniacheng.com/)
- Category Theory, Steve Awodey. [pdf](https://pages.jh.edu/rrynasi1/NewFoundations4Math/Literature/Textbooks/Awodey2010CategoryTheory.2ndEdition.pdf) [course](https://pages.jh.edu/rrynasi1/NewFoundations4Math/Literature/Textbooks/Awodey2016CategoryTheory.LectureNotes/)
- Basic Category Theory for Computer Scientists - Benjamin C. Pierce. Previously available in a draft entitled [A taste of category theory for computer scientists](https://kilthub.cmu.edu/articles/journal_contribution/A_taste_of_category_theory_for_computer_scientists/6602756/1)
- [Categories for the Working Mathematician](http://www.mtm.ufsc.br/~ebatista/2016-2/maclanecat.pdf) — Saunders Mac Lane
- [Conceptual Mathematics](http://www.cambridge.org/us/academic/subjects/mathematics/logic-categories-and-sets/conceptual-mathematics-first-introduction-categories-2nd-edition) A First Introduction to Categories, 2nd Edition - F. William Lawere and Stephen H. Schanuel
- [Category Theory for the Sciences](http://category-theory.mitpress.mit.edu/) — David I. Spivak. Previously available in a draft entitled [Category Theory for Scientists](http://math.mit.edu/~dspivak/CT4S.pdf)
- [CTCS-2nd](http://www.math.mcgill.ca/triples/Barr-Wells-ctcs.pdf) Category Theory for Computing Science - Michael Barr and Charles Wells [CTCS-1st](http://fef.ogu.edu.tr/matbil/eilgaz/kategori.pdf)
- Categories, Types, and Structures: An Introduction to Category Theory for the Working Computer Scientist [pdf](http://www.cs.unibo.it/~asperti/PAPERS/book.pdf)
- Topoi, The Categorical Analysis of Logic, Robert Goldblatt [Amazon](http://www.amazon.com/Topoi-Categorial-Analysis-Logic-Mathematics/dp/0486450260)
- [TTT](http://www.tac.mta.ca/tac/reprints/articles/12/tr12abs.html) - Toposes, Triples and Theories - Michael Barr and Charles Wells
- Category Theory Lectures Notes for ESSLLI - Michael Barr and Charles Wells [pdf](http://www.math.upatras.gr/~cdrossos/Docs/B-W-LectureNotes.pdf)
- [Seven Sketches in Compositionality: An Invitation to Applied Category Theory](https://arxiv.org/abs/1803.05316) - Brendan Fong, David I Spivak
- [Applied Category Theory Course](http://www.azimuthproject.org/azimuth/show/Applied+Category+Theory+Course) - online course conducted by John Baez [forum](https://forum.azimuthproject.org/discussion/1717/welcome-to-the-applied-category-theory-course)
- [CTFP](https://bartoszmilewski.com/2014/10/28/category-theory-for-programmers-the-preface/) - Category Theory for Programmers - [Bartosz Milewski](https://github.com/BartoszMilewski). The [free PDF version](https://github.com/hmemcpy/milewski-ctfp-pdf) was created by [Igal Tabachnik](https://github.com/hmemcpy). Video lectures based on this material: [part 1](https://www.youtube.com/watch?v=I8LbkfSSR58&list=PLbgaMIhjbmEnaH_LTkxLI7FMa2HsnawM_), [part 2](https://www.youtube.com/watch?v=3XTQSx1A3x8&list=PLbgaMIhjbmElia1eCEZNvsVscFef9m0dm), [part 3](https://www.youtube.com/watch?v=F5uEpKwHqdk&list=PLbgaMIhjbmEn64WVX4B08B4h2rOtueWIL).
- [CT4P](https://arxiv.org/abs/2209.01259) Category Theory for Programming — Benedikt Ahrens, Kobe Wullaert

### Journals

- [TAC](http://www.tac.mta.ca/tac/) - Theory and Applications of Categories

### Subtopics

- [Recursion Schemes]({{site.github.url | replace: 'http://', '//'}}/category-theory/recursion-schemes.html)

Mathematics
-----------

Some related maths resources.

### Mathematical Literacy/Thinking

It can be useful to have some background in mathematical thinking.

- [Introduction to Mathematical Thinking](http://www.amazon.com/Introduction-Mathematical-Thinking-Keith-Devlin-ebook/dp/B009LTPSTO) — [Keith Devlin](http://profkeithdevlin.org/)
- [How to prove it](http://www.amazon.com/How-Prove-It-Structured-Approach/dp/0521675995) — Daniel J. Velleman

### Algebra

- [A Computational Introduction to Number Theory and Algebra](http://shoup.net/ntb/) — Victor Shoup
- Advanced Modern Algebra — Joseph J. Rotman [pdf](http://www.math.hcmuns.edu.vn/~nvdong/DaiSoDaiCuong/Advanced%20Modern%20Algebra%20-%20Joseph%20J.%20Rotman.pdf)
- A Survey of Modern Algebra — Birkhoff and MacLane [Scribd](https://www.scribd.com/doc/127988704/Birkhoff-a-Survey-of-Modern-Algebra)

Other collections
-----------------

- [Great Works in Programming Languages](http://www.cis.upenn.edu/~bcpierce/courses/670Fall04/GreatWorksInPL.shtml) — Benjamin Piece
- [Classic Papers in Programming Languages and Logic](http://www.cs.cmu.edu/~crary/819-f09/) — Karl Crary
- [The collected works of Per Martin-Löf](https://github.com/michaelt/martin-lof) — Michael Thompson and others
- [PLT Texts Online](https://web.archive.org/web/20141002195305/http://www.cs.uu.nl:80/wiki/Techno/ProgrammingLanguageTheoryTextsOnline) — Frank Atanassow
- [Functional programming books overview](http://alexott.net/en/fp/books/) — Alex (Alexey) Ott
- [TypeFunc](https://github.com/williamdemeo/TypeFunc) — William Demeo
- [Lambda the Ultimate](http://lambda-the-ultimate.org/) — Ehud Lamm et al.
- [Archives of Lambda the Ultimate](http://www.angelfire.com/tx4/cus/lambda.html) (stale but includes "classic") — Chris Rathman
- [Programming Language People](http://www.angelfire.com/tx4/cus/people/index.html) — Chris Rathman
- [PL Summer Schools forall](https://gist.github.com/biboudis/377b4a4de4d1718df2d0) — [Aggelos Biboudis](http://biboudis.github.io/)
- [Summer Schools Interesting Conferences](http://user.it.uu.se/~bengt/Info/summer-schools.shtml) — [Bengt Jonsson](http://user.it.uu.se/~bengt/)
- [The Programming Language Zoo](http://andrej.com/plzoo/) — [Andrej Bauer](http://math.andrej.com/)
- [Max Bernstein' PL resources](https://bernsteinbear.com/pl-resources/)
- [Programming Language Research](https://github.com/imteekay/programming-language-research) — [TK](https://www.iamtk.co)