On this page:
Overview
Setup
Tasks
Before Submitting
Submitting

Homework 11🔗

Last updated: Mon, 18 Nov 2024 12:15:30 -0500

Out: Wed Nov 18, 2024, 12pm (noon) EST

Due: Mon Nov 25, 2024, 12pm (noon) EST

Overview🔗

In this assignment, we will continue adding features to our "CS450 Lang" "high-level language". By continuing to use the design recipe, however, even advanced features can be added in a straightforward way.

This hw will be graded accordingly:

  • correctness (12 pts)

  • design recipe (30 pts) (testing 10 pts)

  • style (10 pts)

  • README (2 pt)

Total: 54 points

Setup🔗

Create a new repository for this assignment by going to the CS450 Fall 2024 GitHub Organization and clicking "New".

Note: The CS450 Fall 2024 GitHub Organization must be the owner of the repository. Do not create the repository in your own account.

On the "Create a new repository" screen:
  • Name the repository hw<X>-<LASTNAME>-<FIRSTNAME> where <X> is the current homework number.

    For example, I would name my hw11 repository hw11-Chang-Stephen.

  • Mark the repository as Private.

  • Check "Add a README file".

  • Select the Racket template for the .gitignore.

  • Choose whatever you wish for the license.

When done click "Create repository".

Tasks🔗

Reading

Notes and Reminders

Programming

In Lecture 17 and Lecture 18, we implemented a programming language that could perform arithmetic on a variety of data types. But it still is still very simplistic—it has approximately the computational power of a pocket calculator—because it lacks some very basic features expected in a general-purpose programming language.

In this assignment, we will add some of these features, namely variables and function calls, to our language.

(Note that this assignment does not require completing the previous ones.)

Specifically, write the following functions to accommodate the Data Definitions below. Note that in some instances, the exact data definition is not specified and is left up to you to design.

Functions

For reference, here are the Data Definitions that we are using:

Before Submitting🔗

Testing

Before submitting, note:
  • Do not submit until all code has been thoroughly tested (by you).

  • Assignments may or may not use a GradeScope Autograder, but either way, an Autograder is not a software development tool so do not use it as one. Code must be tested independent of any Autograder.

  • If you submit and get an Autograder error, this means the code you wrote is not complete and/or not correct and it’s up to you to figure out why.

  • Of course, the course staff is here and eager to help, but cannot do so if a student does not explain what they’ve tried first (e.g., "why is the Autograder giving an error?" is not something we can help with). At the very least you should report what error you are seeing and which part of the error message you do not understand.

  • The Autograder test suite is subject to change. This means that the visible grade seen during submission is not the final grade.

Style

All code should follow proper Racket Style.

Also, the repository itself must follow proper style. Specifically, it must have appropriate commit messages. See How to Write a Git Commit Message if you are unsure how to write a commit message.

Files

A submission must have the following files in the repository root:

Submitting🔗

When you are done, submit your work to Gradescope hw11. You must use the "GitHub" Submission Method and select your hw<X>-<LASTNAME>-<FIRSTNAME> repository.

Note that this is the only acceptable way to submit homework in this course. (Do not manually upload files and do not email files to the course staff. Homework submitted via any unapproved methods will not be graded.)