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.