Capstone Projects
Write ten small MARST programs covering every ALGOL 60 statement type (blocks, all for list forms, switches, conditional expressions, own), each with expected output in a comment.
Project 1 — ALGOL 60 interpreter tour (beginner)
Write ten small MARST programs covering every ALGOL 60 statement type (blocks, all for list forms, switches, conditional expressions, own), each with expected output in a comment. *Concepts: block structure, for statements, switches, conditional expressions, own variables.*
Project 2 — Jensen's device numerical toolkit (beginner/intermediate)
Summation, product, integration (trapezoid and Simpson), root finding (bisection), and series evaluation, all parameterized by name-passed expressions; compare with an ALGOL 68 version using routine texts. *Concepts: call by name, thunks, Jensen's device, routine texts, numerical methods.*
Project 3 — Closure torture tests (intermediate)
Run the Man or Boy test for increasing k in MARST and a68g; instrument the number of calls; write a short report explaining static links and why each implementation passes or fails. *Concepts: recursion, static links, displays, procedure parameters, scope.*
Project 4 — ALGOL 68 data structures library (intermediate)
Stack, queue, doubly linked list, binary search tree, and hash table (rows of lists) with HEAP nodes, unions for "maybe" results, and operators for common operations. *Concepts: modes, REF, HEAP, STRUCT, UNION, conformity clauses, operators.*
Project 5 — Text-processing suite (intermediate/advanced)
Word counter, line numberer, simple grep (using a68g regular expressions), and a CSV report generator using formatted transput and event routines for end of file. *Concepts: transput, files, formats, events, strings, a68g extensions.*
Project 6 — Matrix and complex-number algebra (advanced)
Operator-based library for [,] REAL and [,] COMPL: multiplication, transpose, Gaussian elimination, determinant, inverse, and an FFT on [] COMPL; verify against known results. *Concepts: rows, slicing, user-defined operators, PRIO, COMPL, numerical algorithms.*
Project 7 — Concurrent simulation (advanced)
Simulate a bank with several tellers and customers using PAR and semaphores: bounded queues, mutual exclusion, statistics; then solve dining philosophers and readers–writers. *Concepts: parallel clauses, SEMA, UP/DOWN, synchronization, race conditions.*
Project 8 — A tiny ALGOL compiler (expert)
Write, in ALGOL 68, a recursive-descent compiler for a subset of ALGOL 60 (integer variables, blocks, assignments, if, for ... step ... until, procedures with value parameters) that generates code for a simple stack machine, plus an interpreter for that machine. Define the subset in BNF first. *Concepts: BNF, parsing, symbol tables with block structure, activation records, code generation, stack machines.*