COMP3161/9164 Concepts of Programming Languages
Term 3, 2025

Overview

Table of Contents

1. Assignment 1: Hindsight

Assignment 1 is to develop an evaluator for the MinHS language via Hindsight.

The goal is to implement neither strict evaluation order (a.k.a. call by value, as seen in the lecture slide semantics of MinHS) nor lazy evaluation order (a.k.a. call by need, as seen in Haskell). Instead we introduce an inner language, Hindsight, with the more general "call by push value" (CBPV) evaluation order. CBPV can be used to implement various evaluation order semantics.

The spec document describes the assignment goals and gives a formal specification of the dynamic semantics of Hindsight.

1.1. Haskell sources

You can download the supplied materials as a zip file here including syntax definitions and parser for both Hindsight and MinHS, a test runner, and an extensive test set.

The supplied Haskell development can be built via either the Cabal build/package system (`cabal build`) or the Stack build/package system (`stack build`). The setup should look familiar if you have looked at the MinHS demo assignment.

Cabal is installed on CSE machines already. However, the full build of the provided sources (and their various dependencies) requires 1 to 2 GB of disk space, which students will typically not have on their shared CSE directories. We recommend students install on their own hardware if possible. Let us know (on the forum or class email account) if getting Cabal or Stack set up proves impossible.

1.2. Intro Video

An intro video explaining how to get started programming on the assignment has been uploaded to the course Echo360.

Some provisos, as discussed in the intro-to-intro video:

  • Johannes is talking about a previous version of the spec and website.
  • In particular, the marking/test rules for part 1 have changed.
  • In the previous version Johannes describes:
    • The tests used to mark part 1 are exactly the tests provided.
  • In the current version:
    • The tests provided are part of the tests used to mark part 1.
    • Every test used to mark part 1 is either provided or slight modification on a provided test.
    • Each provided test has 1 or 2 variants also present in the marking set.

1.3. Questions

Please ask questions about the assignment on the forum, using the Assignments/A1 tag.

1.4. Updates

We may find issues in the specification or the supplied materials. If we do, we will post updates here and on the main course website. Check before making your final submission that you have seen any updates.

1.5. More intro material

During flex-week some more introduction to the Hindsight language will be posted here.

2025-12-05 Fri 11:50

Announcements RSS