Implementation
What Is This Thread’s Purpose?
The Implementation thread will have you implement the core of multiple languages and tools. You will practice the notion of SImPl introduced in class.
These can take several hours, as is common with programming assignments. Come get help if you’ve spent more than five hours. The calendar duration of an assignment is proportional to the expected implementation time.
Your implementation needs to be correct, robust (well-tested), and clear (well-structured, clean code). Yes, we do care about “software engineering” issues, not only whether the code “works”.The correctness expectations for languages are exceptionally high, especially when compared to most other software artifacts. How often do you run into errors in your language implementation? Essentially, the onus is on you to convince us that your program is correct, not for us to convince you it’s not. The “software engineering” bits (clean code, strong tests, etc.) are the best way to make that case.
We expect you to follow Racket’s coding standards in your submission.
Your grade will be in two parts:
Correctness scores for the implementation and tests from an autograder.
- Style and other concerns from manual review. We will grade your work using the following codes:
CORR: The work was done correctly.
OFF: The work was fairly good but had some mistakes that we enumerate.
PROB: The work had notable problems, more than we can quickly enumerate. Please talk to a course staff member for help. Future work needs to be a lot better.
ZERO: The work was either completely off or missing.
We expect to see you make steady progress improving on both over the course of the semester.
Install Plait by going into DrRacket, File | Package Manager… | Do What I Mean, and type plait (in all-lower-case) into the box. DrRacket will find Plait in the catalog and install it automatically.
Watch the tutorial videos by Matthew Flatt.
The documentation is online and, after the language has been installed, in your local installation. Go to Help | Racket Documentation for the local installation, and type plait in the search box.
Most assignments will contain some starter files. We will make them available on GitHub Classroom. Look out for an EdStem post that tells you how to get set up.
The assignments will be published over the course of the semester.