CS307

Programming Languages

The concepts behind languages: paradigms, type systems, and how memory is managed.

10 modules · 40 lessons · Practice after every lesson

Syllabus

  1. Module 1

    Language Evaluation and Semantics

    • Syntax, Semantics, and Pragmatics
    • Abstract Syntax Trees
    • Operational Semantics
    • Evaluation Order and Effects
  2. Module 2

    Names, Scope, and Binding

    • Lexical and Dynamic Scope
    • Environments and Closures
    • Shadowing and Capture
    • Modules and Namespace Systems
  3. Module 3

    Types and Type Systems

    • Static and Dynamic Typing
    • Type Safety and Progress–Preservation Intuition
    • Type Inference
    • Subtyping and Variance
  4. Module 4

    Parametric and Algebraic Types

    • Parametric Polymorphism
    • Algebraic Data Types
    • Pattern Matching
    • Kinds and Higher-Kinded Types: An Introduction
  5. Module 5

    Functional Languages

    • Lambda Calculus
    • Immutability and Persistent Data
    • Higher-Order Abstraction
    • Lazy Evaluation
  6. Module 6

    Object-Oriented Languages

    • Objects, Classes, and Prototypes
    • Dynamic Dispatch
    • Inheritance and Traits
    • Object Identity and Encapsulation
  7. Module 7

    Logic and Declarative Languages

    • Relations and Unification
    • Logic Programming
    • Constraint Programming
    • Dataflow and Query Languages
  8. Module 8

    Memory Management

    • Stack and Heap Allocation
    • Manual Memory Management
    • Tracing Garbage Collection
    • Reference Counting and Cycles
  9. Module 9

    Control Abstractions

    • Exceptions and Nonlocal Control
    • Continuations
    • Coroutines and Generators
    • Async–Await and Event Loops
  10. Module 10

    Language Implementation and Design

    • Interpreters and Virtual Machines
    • Macros and Metaprogramming
    • Foreign-Function Interfaces
    • Evaluating Language Design Trade-Offs

Start Programming Languages.

No setup, nothing to install. Try the first lessons before you sign up.