24

What is This Assignment’s Purpose?

Like TweeSearch, this assignment gives you a feel for software development in stages. Think of each stage as a software release. As so often happens in real-world software development, the requirements keep evolving with each release. The cleaner and more flexible your code for an earlier release, the easier it will be to improve for later releases.

In addition, the problem also gives you a chance to explore a small optimization problem.

Theme Song

Still Alive by Jonathan Coulton

Problem Setup

This assignment is loosely based on the game of 24, but we will define our own rules here, so please pay attention to what is below, rather than following what is on the Web.

To help you with planning, there are six stages in all, all of roughly the same complexity as the first stage—but your mileage may vary, so it pays to start early. Please do not move on to the next stage until you have submitted the current stage.

Read all these instructions before you begin:
  • You should treat this assignment like an exam. Therefore, you:

    • cannot talk to another student about it until you are both done. In particular, you cannot discuss what the next stage is, etc.

    • should do this work without consulting course staff except for critical issues (broken links, possible assignment typo, etc.), and the one exception noted in a later stage.

    • should not try to peek ahead to the next stages through any means; doing so would be a violation of the Academic Code.

  • For each stage after the first, Gradescope will give you the URL for the next stage after you submit.

  • Unlike in previous assignments, you will be given only one chance to submit at each stage (like a company making a code release of a new version: once it’s released, it’s out there). There are no take-backs or redos or undos, so please submit with care.To repeat: you can submit each stage only once. We will grade your earliest submission, not your latest one.

  • In the forms you will need to enter numbers. Please don’t use commas, etc. Use one of Pyret’s notations (if you need, you can use decimal or fractional): whatever you write should be machine-readable by Pyret (paste it back into Pyret to make sure it is accepted, before submitting).

  • You may use any features or libraries you have used on prior homeworks.

  • Use the filenames 24-code-1.arr, 24-code-2.arr, and so on for each stage.

  • We will be evaluating your code in part based on how effectively it can be reused in more general contexts.

  • There are no wheats and chaffs for this assignment. For this reason, use just CPO or Repartee for this assignment.

  • Except when indicated otherwise, assume each part of the assignment specification remains unchanged in subsequent stages.

  • Recall that you cannot use any late days on this assignment.

Once you’ve read these instructions, go to Stage 1.