Introduction to Programming Languages

Table of contents

edit

Introduction to Programming Languages

edit
  Preface
  Programming Language Paradigms

Syntax

edit
  Grammars
  Parsing
  Ambiguity
  Precedence and Associativity

Grammars in Practice

edit
  Logic Grammars
  Syntax Directed Interpretation
  Syntax Directed Translation
  Syntax Directed Type Checking
  A recipe for writing a reusable grammar

Execution Environments

edit
  Compiled Programs
  Interpreted Programs
  Binding

Functional Programming in Haskell

edit
  Concepts of Functional Languages

Pattern Matching

edit

Types

edit
  Data Types
  Primitive Types
  Constructed Types

Typing Disciplines

edit
  Dynamically vs Statically Typed Languages
  Nominal vs Structural Typing Equivalence
  Safe vs Unsafe Typing
  Type Inference vs Type Annotations

Polymorphism

edit
  What is Polymorphism
  Ad-Hoc Polymorphism
  Universal Polymorphism
  Overloading
  Coercion
  Parametric Polymorphism
  Subtype Polymorphism

The Lambda Calculus

edit

High-Order Functions

edit
  Definition and Examples
  Closures
  Partial Application
  Noticeable High-Order Functions
  Template Oriented Programming

Scope

edit
  Definitions and Types of Scope
  Scoping with Blocks
  Scoping with Namespaces

Functional Data Structures

edit
  Algebraic Data Types
  Functional Data Structures

Memory Allocation

edit

Imperative Programming in Python

edit

Memory Management

edit
  Types of Storage
  Static Memory
  Stack
  Heap
  Garbage Collection

Abstract Data Types

edit

Object-Oriented Programming

edit

Exceptions

edit

Parameter Passing

edit
  Parameter Matching
  Evaluation Strategies

Introduction to Logic Programming

edit

Unification

edit

Cost Models

edit
  Introduction
  Lists
  Tail Call Optimization
  Unification
  Arrays

Math in Prolog

edit
  Simple Predicates
  The Power of Exhaustive Search

Semantics

edit
  Quest for Meaning
  An Interpreter for ML