Software Language Engineering


This page holds the latest support materials for the Software Language Engineering course at Royal Holloway, University of London.


Textbook

Scripts for all welcome videos

Slides

Slide list

Laboratory package (Windows)

Laboratory package (Unix)

The source code for this version of ART

Protocol for asking technical questions

Recording of 2024 revision lecture (Warning: 216MByte)

Insert videos: warning altogether these use 2.5GByte of storage - I suggest you download what you need and delete after viewing


0 Course structure welcome.mp4

00 Course welcome.mp4

0A Course structure.mp4

0B Course structure.mp4

1 Formalisation welcome.webm

1A Languages all the way down.mp4

1B Utility and power in languages and their processors.mp4

1C What do we mean by formal.mp4

1D Conway's Game of Life.mp4

1E The rewrite model.mp4

2 Rewriting systems welcome.webm

2A Introduction.mp4

2A1 Relations.mp4

2A2 Operations over relations.mp4

2A3 Properties.mp4

2A4 Properties of homogeneous relations.mp4

2A5 Transitions and rewrites.mp4

2B String rewriting.mp4

2C1 Terms.mp4

2C2 Term patterns and rewriting.mp4

2D1 Rewriting strategies.mp4

2D2 Tree traversals.mp4

2E1 Implementing terms.mp4

2E2 Fast implementations.mp4

2F1 Types and values.mp4

2F2 The axes of typing.mp4

2F2B Axes continued.mp4

2F3 Values in ART.mp4

2F3A Version 3 and version 4 differences.mp4

2F4 Atomic types and enumerations.mp4

2F5 Dimensions.mp4

2F6 Overloading and variadic functions.mp4

2F7 Inheritanceand overloaded types.mp4

3 Structural Operational Semantics welcome.webm

3A1 Overview.mp4

3A2 Configurations.mp4

3A3 Conditions and built in functions.mp4

3A4 Abbreviated rules.mp4

3A5 Increment examples.mp4

3A6 ART trace levels.mp4

3B1 Recursive rules and their application.mp4

3B2 Deep and wide nests.mp4

3C Expression nesting and congruence rules.mp4

3D The store and sequencing.mp4

3E Control flow.mp4

4 Syntax specification and analysis welcome.webm

4A1 Overview.mp4

4A10 Parsers and lexers.mp4

4A11 Pipelines.mp4

4A2 Middle end first.mp4

4A3 The syntax monster.mp4

4A4 BNF.mp4

4A5 Formal grammars.mp4

4A6 Derivation trees.mp4

4A7 Fimite and infinite languages.mp4

4A8 Ambiguity and equivalence.mp4

4A9 Semantics from derivations.mp4

4B1 Overview.mp4

4B10 Attribute implementation.mp4

4B11 Tree generation.mp4

4B12 Tree construction and rendering.mp4

4B13 Generated tree functions.mp4

4B14 Tree fold annotations.mp4

4B2 Derivation transition graphs.mp4

4B3 Parsing strategies.mp4

4B4 Extended BNF.mp4

4B5 Lexical matters.mp4

4B5A ARTV3 and V4.mp4

4B6 The OSBRD idea.mp4

4B7 OSBRD example.mp4

4B8 Semantic actions.mp4

4B9 Attributed specifications.mp4

5 Attributes.webm

5 Overview.mp4

5A1 Motivation.mp4

5A2 Abstraction.mp4

5A3 Abstract syntax.mp4

5A3A Grace Hopper.mp4

5B1 expressions.mp4

5B2 priority and associativity.mp4

6 The industrial context.webm

6A1 Pragmatics and case studies.mp4

6A2 The achitecture of language processors.mp4

6A3 Less than four stages.mp4

6A4 More than four stages.mp4

6B The landscape of programming languages.mp4

Pages written by Adrian Johnstone