Milestone 3: Interface

Dear Computer

Project: Spreadsheet

Milestone 3: Interface

In this third milestone of the spreadsheet project, you have two tasks: add statement nodes to the language model and develop an terminal-based user interface using the Curses library. With the statements, users will be able to write multiline computations. With the interface, users will be able to move around to different cells using the cursor keys, enter formulas, and view the results.

Statement Nodes

Add the following items to your node hierarchy:

For each node type, complete these steps:

Write a short multiline program that incorporates all of these new nodes, model it in Treeformer, and add a screenshot of the AST in your grammar folder.

Curses

Build a user interface for your spreadsheet using Curses or some similar library for terminal drawing and support the following features:

Support two additional features of your choosing, like color, multiple tabs, mouse navigation, and filling.

Instead of writing the user interface code by hand, you will get an LLM to do most of the labor. You may love LLMs, or you may hate them. You may bristle at how they exploit free labor and threaten the environment. You may relish how they will bring down the system. No matter your stance, LLMs will be interoperating with the systems you build, and the goal of this assignment is to get experience with that. Pick any LLM you want.

Document in a readable word document every step of your process in getting the LLM to do what you want. It might be a long document. Share the configuration files you make. Use planning mode to iterate on the task before generating any code. Paste in the chat interactions. Include reflections on what works well and what doesn't. Clearly mark the sections that describe your two additional features. Reflect on the experience.

Submission

To submit your milestone, follow the instructions. In particular, do these three things:

In your video, demonstrate interacting with the grid, entering new formula, editing formula that trigger updates, displaying errors on malformed code, scrolling infinitely, and your two new features. In particular, reconstruct this spreadsheet:

Have some of these formulas stored in a file that you load in, and enter the others on the fly.

Don't comment on or show every single line of code in your video. Select a few representative snippets. Do comment on programming language ideas that interest you or challenged you.

← Milestone 2: Interpreter