Term project

The goal of this term project is to give you a chance to reflect on what you have been exposed to in this course, conceptually, practically, and methodologically.

Expectations

You are expected:

  • to work in groups, as you did for the weekly handins, to solve and to program, and
  • to write an individual report, using your own words.
Halcyon: To solve and to program.
Vigfus: It doesn’t get old, does it.

The individual report

“Mad Eye” Moody (nostalgically): Where is our capslock key when we need it?

In a constantly vigilant sort of way, your report should include

  • a front page with title, date, your name, and the names of the other members of your group (because, well, no grader),
  • a second page with a table of contents, and
  • from the third page and onward,
    • an introduction,
    • a series of sections and subsections reflecting the structure of the project, and
    • a conclusion where you assess what you did, reflect on how you did it, and provide some perspective.

Pages should be numbered, and the narrative should be spell checked.

An inspiring (and not necessarily humorous, just on topic) quote or three would be welcome.

Throughout, remember to embrace the structure where the computation is described informally (textually), where it is accounted for with a unit-test function, where it is specified inductively, where this inductive specification is mirrored into a structurally recursive function, and where the implementation is verified to pass the unit tests – unit tests whose significance and limitations should be scrutinized.

About describing your programs: of course you should not paraphrase the code, because what is the point of that. If you have added something personal to the common code, be it extra tests, an independent solution, or the solution to an optional exercise, please add it as separate files (to be loaded after the common files), and identify them as such in the .ml files and in your report.

Finally, there will be bonus points for brevity and conciseness, because the measure of your understanding is the clarity of your discourse.

Entirely optional mini-projects

Time permitting, you are welcome to consider either of the following optional mini-projects.

If time does not permit, consider them as summer mini-projects, for they will consolidate your knowledge as well as expand it, to say nothing about sharpening your mind.

Version

Updated with the optional mini-project about the knapsack problem [16 Apr 2021]

Created [03 Apr 2021]