A cheat sheet for Set Theory. A basic understanding of Set Theory and its jargons (domains, ranges, functions) will be handy while reading most programming language theory-ish articles. Just understand Set Theory, Type Theory and the likes are just different ways of defining the same mathematical phenomenons.

*http://people.umass.edu/partee/NZ_2006/Set%20Theory%20Basics.pdf*

The Turing Machine - Alan’s original paper explained for mortals

*http://index-of.co.uk/Theory-of-Computation/Charles_Petzold-Annotated_Turing-Wiley(2008).pdf*.pdf)

Algebraic data types (touches on recursive types)

*https://en.wikibooks.org/wiki/Introduction_to_Programming_Languages/Algebraic_Data_Types*

An excellent resource for diving into Haskell. Abstracts away most math theory behind Haskell but you’ll get a hang of the language.

*http://learnyouahaskell.com/recursion#hello-recursion*
Start with recursion, just for the fun of it!

Don’t let the title mislead you. I had an Aha moment on Lambda Calculus itself reading mid-way.

*https://cdsmith.wordpress.com/2012/04/18/why-do-monads-matter/*

YCombinator - decrypted for mortals.

*https://lucasfcosta.com/2018/05/20/Y-The-Most-Beautiful-Idea-in-Computer-Science.html*

The science of functional programming (Haven’t finished reading yet, but looks very approachable)

*https://github.com/winitzki/sofp/blob/master/sofp-src/sofp.pdf*

Lambda Calculus

*https://brilliant.org/wiki/lambda-calculus/*

Harvard CS121 Book for Theory of Computation - with math background explained.