Homework 3
Last updated: Wed, 4 Oct 2023 18:56:08 -0400
Out: Wed Oct 04, 2023, 00:00 EST
Due: Sun Oct 15, 2023, 23:59 EST (note: 2 weeks)
Overview
In this assignment, we’ll continue to explore more complicated data definitions, including recursive ones like lists.
This hw will be graded accordingly:
correctness (9 pts)
design recipe (20 pts)
style (5 pts)
README (1 pt)
Setup
Create a new repository for this assignment by going to the CS450 Fall 2023 GitHub Organization page and clicking "New".
Name the repository <YOUR ACCOUNT NAME>-hw3 where <YOUR ACCOUNT NAME> is your GitHub account name.
For example, if my GitHub account is cs450student then I would name my hw3 repository cs450student-hw3.
Mark the repository as Private.
Check "Add a README file".
When done click "Create repository".
Here is the hw3 starter repo. You won’t be able to fork it, but, you can copy the files into your own repo and then edit them.
Submitting
1 Before Submitting
Do not submit until all code has been thoroughly tested, independent of the autograder, and you are reasonably sure the assignment is complete and correct.
The autograder is not a software development tool so it should not be used as one.
If you submit and get an autograder error, this means the code you wrote is not complete and correct and it’s up to you to figure out why.
The course staff is here and eager to help, but cannot do so if students don’t explain what they’ve tried first (e.g., "why is the autograder giving an error?" is not something we can help with).
The grading criteria (i.e., test suite) is subject to change. This means that the visible grade seen during submission is not the final grade.
2 Common Problems
3 Files
A submission must have the following files in the repository root:
hw3.rkt: Contains the hw solution code.
All defines should use the name specified in the exercise (ask if you are unsure) and should be provided.
The easiest way to ensure all necessary definitions are provided is to put as the second line in the file:
This automatically provides all definitions in the file. (The first line should be #lang racket)
All code should also follow proper Racket Style.
tests.rkt: This file should require hw3.rkt and define tests for it.
Specifically, it should define a rackunit test-suite which contains sufficient rackunit test cases (e.g., check-equal?, etc.) for each defined function.
README.md: Contains the required README information, including the GitHub repo url.
Also, the repository must have appropriate commit messages. See How to Write a Git Commit Message if you are unsure how to write a commit message.
4 GradeScope
When ready, submit this assignment to Gradescope hw3 using the "GitHub" submission feature with the hw3 repository selected.
Exercises
Read Chapter 5.10. Then implement the graphical editor in Exercises 83-87. The implementation should use your string-first, string-rest, etc. functions from Homework 1 (implement or fix them now if you didn’t get it working last time).
Read Chapter 10.4 and do Exercises 177-180, which ask you to implement an alternate version of the editor.
In your README.md file, write two paragraphs that compare the two designs. The first paragraph should explain the advantages of the first implementation over the second one (if any). The second paragraph should explain the advantages of the second implementation over the first one.