Due Date: Friday, April 10 at 11:59pm Submission link: https://www.gradescope.com/courses/1231157/assignments/7936876/

The standard spreadsheet formula language is resistant to abstractions. Not immune — one can use lambdas and array formulas — but the syntax and semantics incentivizes copy and paste. In this assignment, you will work with a spreadsheet that has a proper array-oriented programming language: APL. The goal of this assignment is both (a) to give you exposure to one of history’s most notationally-interesting programming languages, and (b) to expand your view on how the spreadsheet can be a powerful environment for end-user programming.

You will be given a basic spreadsheet application with an accompanying APL interpreter. You will implement a few features for the APL integration into the spreadsheet, and then use the APL spreadsheet to perform a few calculations.

Part A: Implementation

First, you should get the spreadsheet app up and running. Start by joining the Github Classroom assignment here: https://classroom.github.com/a/xM4mwMly

The app is implemented as a Typescript codebase. You will need to install the Depot build tool:

https://github.com/cognitive-engineering-lab/depot

Run depot build -w and visit http://localhost:5173/. You should have a spreadsheet in front of you with some data prefilled.

Try writing some basic APL formulas. For example, try writing:

Before you’re able to write some interesting formulas in Part B, you’ll need to start by implementing some key functionality for the spreadsheet and APL interpreter first. Eventually, your experience should look something like this:

Screen Recording 2026-04-03 at 10.57.27 AM.mov

Take a look at the README.md for more details on how to build and test the codebase, and about the codebase file structure.

Task 1: Keyboard Help (30 points)

The formula editor uses a backtick pattern to allow users to input special characters like (i) and (r). The full list of special characters is in the BACKTICK_MAP variable in formula-editor.tsx. However, using this map requires memorizing the patterns.

Your first step should be to implement a UI component for the spreadsheet that helps users look up the backtick pattern corresponding to each special character. You can design the component however you like, but it should adhere to at least the following rules: