Programming Language Theory

  1. Programming Language Features
    1. Imperative Programming Constructs
      1. Variables and Assignment
        1. Mutable State
          1. Assignment Semantics
            1. Aliasing
            2. Control Flow
              1. Conditional Statements
                1. If-Then-Else
                  1. Switch Statements
                    1. Guard Conditions
                    2. Iteration
                      1. While Loops
                        1. For Loops
                          1. Loop Invariants
                          2. Jumps and Labels
                            1. Goto Statements
                              1. Break and Continue
                            2. Scoping Rules
                              1. Lexical Scoping
                                1. Static Binding
                                  1. Nested Scopes
                                  2. Dynamic Scoping
                                    1. Dynamic Binding
                                      1. Scope Chains
                                  3. Functional Programming Features
                                    1. Higher-Order Functions
                                      1. Functions as Values
                                        1. Function Composition
                                          1. Currying and Partial Application
                                          2. Immutability
                                            1. Immutable Data Structures
                                              1. Referential Transparency
                                                1. Pure Functions
                                                2. Closures
                                                  1. Environment Capture
                                                    1. Lexical Closures
                                                      1. Closure Conversion
                                                      2. Pattern Matching
                                                        1. Pattern Syntax
                                                          1. Match Expressions
                                                            1. Exhaustiveness Checking
                                                              1. Guard Patterns
                                                              2. Algebraic Data Types
                                                                1. Sum Types
                                                                  1. Product Types
                                                                    1. Recursive Data Types
                                                                  2. Object-Oriented Features
                                                                    1. Objects and Classes
                                                                      1. Object Identity
                                                                        1. Encapsulation
                                                                          1. Information Hiding
                                                                          2. Inheritance
                                                                            1. Single Inheritance
                                                                              1. Multiple Inheritance
                                                                                1. Method Resolution
                                                                                2. Polymorphism
                                                                                  1. Dynamic Dispatch
                                                                                    1. Method Overriding
                                                                                      1. Virtual Methods
                                                                                      2. Formal Models
                                                                                        1. Object Calculus
                                                                                          1. Featherweight Java
                                                                                        2. Concurrency Constructs
                                                                                          1. Shared Memory Models
                                                                                            1. Threads and Locks
                                                                                              1. Mutual Exclusion
                                                                                                1. Deadlock Prevention
                                                                                                  1. Race Conditions
                                                                                                  2. Message Passing Models
                                                                                                    1. Actor Model
                                                                                                      1. Channel Communication
                                                                                                        1. Synchronous vs Asynchronous
                                                                                                        2. Process Calculi
                                                                                                          1. CCS
                                                                                                            1. CSP
                                                                                                              1. Pi-Calculus