programming-language-research
programming-language-research copied to clipboard
Research on theory of programming languages λ, compilers, interpreters, functional programming, formal methods, logic etc.
Programming Language Research
All notes from my research on theory of programming languages λ, compilers, interpreters, functional programming, formal methods, logic etc.
Table of Content
- General
- Websites
- Videos
- Books
- Courses/Materials
- Compiler/Interpreters
- Logic
- General
- YouTube
- Formal Methods
- Twitch/YouTube
- Talks
- Communities
- People
- Others
General
Websites
- Lambda The Ultimate - Lambda The Ultimate includes many members who study programming languages daily for years, either in academia or in industry settings
- Classic Papers in Programming Languages and Logic
- Advanced Programming Languages - This page collects author's personal links in the field of Programming Languages
- The Study of Programming Languages - Ray Total's this course explains you how to study programming languages
- Programming Languages Reading List This is a list of valuable resources for programming language design and implementation.
- Programming Language Theory Texts This is a collection of programming language theory texts and resources, all of which are freely available over the Internet.
- OPLSS
- A Self-Learning, Modern Computer Science Curriculum - This is a collection of modern resources on various undergrad level computer science topics, for someone with an interest in theory.
- Type Theory - Workshop on type theory
- Type Theory Resources - A Github repository for a collection of resources for type theory
- Type Theory For All - Type Theory Forall is a podcast hosted by Pedro Abreu (Pronounced ‘Ahbrel’), PhD Student in Programming Languages at Purdue University.
- Classics of Computer Science - Classics Papers in Computer Science
- IMC010: Type Theory and Coq
- Program by Design
- Supplemental Materials for HWTP
Videos
- Common Lisp Project 1: Turing Machine - In part one of this project the initial language of a turing machine is laid out and VERY simple functions are written to do basic math
- Thinking with types (Chapter1: The Algebra Behind Types) - He is looking at the book by Sandy Maguire “Thinking with types”
- Algebraic Data Types Theory
- Programing Language Design w/ Prof. Politz
- Types and Why You Should Care - JaneStreet
- What is PL research?
- Growing a Language
- Racket: A Programming-Language Programming Language
- Crash Course on Notation in Programming Language Theory
- Expert to Expert: Rich Hickey and Brian Beckman - Inside Clojure
- Propositions as Types by Philip Wadler
- Philip Wadler and Erik Meijer: On Programming Language Theory and Practice
- A Programmable Programming Language
- Linguistics and Compilers
- Produce clean APIs with algebraic design
- Haskell Kata - Algebra-Driven Design - Bowling Game
- Playing the Game with PLT Redex
- Jean Yang on An Axiomatic Basis for Computer Programming
- Generating Programs from Types
- Coffee Compiler Club
Books
- Resources for Programming Language Research - A collection of information and resources for research in programming language theory, design, implementation, and related areas
- Programming Language Journals, Books, and Publishers - A collection of materials related to programming languages
- List of books for Theory of Programming Languages - List of books for programming languages theory
- Practical Foundations for Programming Languages
- Software Foundations - Programming Language Foundations - This electronic book is a survey of basic concepts in the mathematical study of programs and programming languages
- Types and Programming Languages - This text provides a comprehensive introduction both to type systems in computer science and to the basic theory of programming languages.
- Concepts, Techniques, and Models of Computer Programming - The book is organized around programming concepts. It starts with a small language, Mozart, containing just a few concepts.
- Essentials of Programming Languages
- [Programming Languages - Application and Interpretation](PLAI is designed for upper-level courses that introduce the main ideas of programming languages.)
- Object-Oriented Programming Languages: Application and Interpretation
- How to Design Programs - Systematic Program Design
- A Data-Centric Introduction to Computing - This book is an introduction to computer science
- An Introduction to Functional Programming Through Lambda Calculus
- Implementing Functional Languages
- Thinking with TypesType-Level Programming in Haskell
Courses/Materials
- CS520 - Theories Of Programming Languages [Lecture Videos]
- CSE340 - Principles of Programming Languages [Lecture Videos]
- CS 3520/6520 - Programming Languages [Lecture Videos]
- 301 - Organization of Programming Languages [Lecture Videos]
- LINFO1131 - Advanced programming language concepts [Lecture Videos]
- COS 326 - Functional Programming [Lecture Videos]
- CS3110 - Functional Data Structures [Lecture Videos]
- CSE230 - Principles/Programming Languages [Lecture Videos]
- CIS352 - Principles of Programming Languages [Lecture Videos]
- CSCI1730 - Programming Languages - Application and Interpretation [Lecture Videos]
- CS2500 - Fundamentals of Computer Science [Lecture Videos]
- Benjamin Pierce - Software foundations - YouTube playlist
- CS3MI3 - Principles of Programming Languages - YouTube playlist
- Essentials of Programming Languages
- CMSC330 - Organization of Programming Languages
- Ray Total Courses
- Programming Languages and Logic
- CS242 - Programming Languages - Stanford
- CS019 - Accelerated Introduction to Computer Science
- Programming Languages Course given by DCC-UFMG
- Theory of Programming Languages
- CPSC 311 Definition of Programming Languages: "Lambda Bound"
- Fundamentals 1
- Fundamentals 2
- Matthias Felleisen - Principles of Programming Languages
- Matthias Felleisen - Intensive Principles of Programming Languages
- History of Programming Languages
- Accelerated 1
- Hack Your Own Language
- All the courses Matthias Felleisen teach
- Programming Language Foundations in Agda
- COP 4020 - Programming Languages I
- Concepts in Programming Languages
- CS 242: Programming Languages, Fall 2019
Compilers/Interpreters
Lectures
- Principles of Compiler Design [Lecture Videos]
- Indiana University Compiler Course [Lecture Videos]
- Jay McCarthy - 406 Compiler Construction [Lecture Videos]
- CSE 131 - Compiler Construction [Lecture Videos]
- CS164 Programming Languages and Compilers [Lecture Videos]
- CMSC 430: Design and Implementation of Programming Languages [Lecture Videos]
- CMU - CS6120 - Advanced Compilers [Lecture Videos]
- Compilers Design Recipe
- Introduction to Compiler Construction
- Programming Language Zoo [Github]
YouTube
- Building Strema: a compiler targeting JavaScript in Haskell - Live coding a compiler for a custom type inferred programming language with ADTs and pattern matching called Strema, and targeting JavaScript.
- Writing a compiler. Term reduction via substitution - This is the first video in a series focused on implementing a compiler backend for a small functional language which is a variation of the untyped λ-calculus.
- Matthew Flatt - DSL Embedding in Racket - This tutorial will provide a refresher on Lisp-style extensibility, cover Scheme-style pattern-matching and procedural macros
- Ryan Newton - DSL Embedding in Haskell - This will cover front-end topics, such as syntax capture, type checking, and Template Haskell; middle-end topics including compiler-construction techniques in Haskell
- Haskell Tutorial - 12 - Writing Parsers From Scratch - In this tutorial they go all the way to first principles in top down parser design and build simple parser combinators that they will use next week to make a parser for their interpreter.
- Writing a Parser in Haskell - Compiler Tutorial
- Haskell Parser Combinators: Parsing CSS
- Learning F# by Designing Your Own Language by Oleksii Holub
- Rust Programming Crafting Interpreters
- Making a Programming Language in Rust /w SinisterMatrix
- Creating a Programming Language with Rust
- XML Parser in C (Start to Finish)
- Making A Compiler From Strach In C
- All day compiler push
- Writing a Basic Math Expression Parser In JavaScript
- Creating a Common Lisp implementation
- Joel Martin: Make Your Own Lisp Interpreter in 10 Incremental Steps
- Type Inference from Scratch: A Workshop with Christoph Hegemann
- Hjalfi writes an assembler
Logic
General
- Introduction to Logic - Stanford University course on logic fundamentals
- Logic Matters
- Open Logic Project
- Book of Proof - List of video lectures that several professors built online using Book of Proof
- Combinatory Logic - Combinatory logic is a model by which logical statements can be described as a combination of a small number of primitive elements called combinators
- The Xena Project
- Linear Logic in nLab
YouTube
- Introduction/Logic of propositions and predicates
- Introduction to Logic for Computer Science
- Frank Pfenning - Linear Logic Lecture
- A formal definition of the language of propositional logic
- Binary Propositions, De Morgan’s Law, What is an Implication — Tutorial 1/4
Formal Methods
- Stan Warford - Formal Methods [Lecture Videos] [Book - Logical Approach to Discrete Math]
- Formal Methods of Software Design[Lecture Videos] [Book - A Practical Theory Of Programming]
- The Philosophy of Computer Science
- What are Formal Methods? | Compiler with Hoare logic
- Abstract Interpretation for Program Verification (ft. Viktor Kuncak)
- Pawel Szulc - Formal verification applied (with TLA+)
- Formal Methods: A Deep Dive Using the Coq Proof Assistant
Twitch/YouTube Channels
- ACM SIGPLAN
- gilmi
- Michael Gilliland
- Bitwise
- Tweag
- Edward Knett
- John Cinnamond
- Brian McKenna
- jappie-strims
- Chiroptical
- CmdvTv
- ekmett
- tscoding
- puffnfresh
- teej_dv
- nicuveo
- gillchristian
- zer0c__
- jb55_
- Identity GS
- vivalambda
Communities
- MOOC nerds - Discord channel for functional computer science series
- Programming Languages - There are plenty of programming languages created by community members
- Multiprocess community - The core of the community is around software internals
- Declarative Programming Streams - A collection of streamers
- Haskell Twitch
- Functional Programming
People
- Twitter list for PL people - A list of people related to programming language theory created by me
- Matthias Felleisen
- Shriram Krishnamurthi
- Joe Gibbs Politz
- John C. Reynolds
- Jay McCarthy [Blog]
- Kristopher Micinski
- thesephist
- Paulette Koronkevich
Others
- Programming Language Theory[Github]
- https://github.com/imteekay/programming-language-research
- https://github.com/lucasviola/awesome-functional-programming
- https://github.com/imteekay/functional-programming-learning-path
- https://github.com/xgrommx/awesome-functional-programming
- https://github.com/prathyvsh/history-of-programming-languages
- https://github.com/prathyvsh/use-of-maths-in-programming
- https://github.com/timxor/typetheory