SI 413 Fall 2023 / Project


This is the archived website of SI 413 from the Fall 2023 semester. Feel free to browse around; you may also find more recent offerings at my teaching page.

Red

Red is a programming language that attempts to improve upon an earlier one called REBOL. Much like Scheme, a major feature of Red is that the structure of your code is the same as the structure of data structures in Red itself; that is, Red is homoiconic.

A major goal of the language designers was to make the language human-readable and simple. There is also an aim of making GUI programming as straightforward as possible, without having to get too far into the weeds to do simple windowed apps.

Useful Links

Tools

We will use the reference implementation from the Red project, version 0.6.4. Note, the executable is called red-064 for us, even though it is just called red in most of the online documentation.

Everything you need is already installed on CS department lab machines in the /courses/roche/413/bin folder, which should be in your PATH.

To install on your virtual machine, follow these steps:

  1. Install 32-bit library dependencies:
    sudo dpkg --add-architecture i386
    sudo apt update
    sudo apt install libc6:i386 libcurl4:i386 libgtk-3-0:i386 libgdk-pixbuf2.0-0:i386
  2. Download the red-064 executable to your bin directory:
    mkdir -p ~/bin
    curl -L -o ~/bin/red-064 https://static.red-lang.org/dl/linux/red-064
    chmod +x ~/bin/red-064

How I will run your code

The programs you submit should be in a single file called proj.red, for either part of the project. I will test your code by running the following commands using the software available in the lab environment or using the instructions above:

red-064 proj.red

Phase 1 Requirements

For this language, you need to implement modifications B,D,F, and G. See the Phase 1 page for details on what this means.

Phase 2

See the Phase 2 Page for the list of suggested problems. Of the ones listed, I recommend the following as being most well-suited for LANGUAGE:

  1. Image Creator
  2. Hangman
  3. Vending Machine
  4. Game with hidden agenda
  5. Find the missing digits
  6. Rock, Paper, Scissors
  7. Music Maker
  8. ??? (you choose!)