Programming Languages: Concepts and Implementation

Introduction and the Basics of Syntax and Semantics

These slides introduce the course and give an overview over syntax and semantics. For a later, more in-depth treatment of "big-step operational semantics" or "natural semantics", please refer to this handout instead.

[Slides]

Representing Information in Memory

[Video] [Slides]

Assembly Language: 2opm

This module series introduces assembly languages via 2opm, a synthetic assembly language. 2opm is substantially simpler than typical assembly languages but maps directly to amd64/x86_64 assembly, meaning that it can be executed directly on these contemporary 64 bit CPUs.

You can get 2opm as part of the AttoVM compiler/runtime, which the course covers later, and try it yourself (tested on Linux/OS X). Here is the 2opm summary description.

2OPM Foundations

Registers, arithmetic, and other basic operations.

[Video] [Slides]

2OPM Advanced Operations

Building conditionals and loops with jump and branch instructions.

[Video] [Slides]

2OPM Subroutines

Subroutine execution and recursion.

[Video] [Slides]

Overview: Implementation of High-Level Languages

Executing High-Level Languages

[Video] [Slides]

Compilers: Overview

[Video] [Slides]

Executing in the UNIX run-time environment

[Video] [Slides]

Programming Languages: Expressions, Statements, Subroutines

This module series introduces variables, expressions, statements, and subprograms as the first set of core concepts in general-purpose programming languages.

Names and Bindings

[Video] [Slides]

Names and Scopes

[Video] [Slides]

Variables

[Video] [Slides]

Expressions

[Video] [Slides]

Statements, including Assignments

[Video] [Slides]

Control Structures

[Video] [Slides]

Iterative Control Structures

[Video] [Slides]

Subprograms

[Video] [Slides]

Nested Subprograms

[Video] [Slides]

Parameter Passing

[Video] [Slides]

Programming Languages: Expressions, Statements, Subroutines: Implementation

This module series describes some of the less obvious implementation strategies the concepts introduced in Programming Languages: Expressions, Statements, Subroutines.

Implementing Iterative Control Structures

[Video] [Slides]

Implementing Parameter Passing

[Video] [Slides]

Closures and Thunks

[Video] [Slides]

More to come...


This page is Copyright © 2004-2021 Christoph Reichenbach. Re-use in whole or in parts is allowed without restriction.