Mini-Project 8: Open-ended project

Assigned
Friday, 19 November 2021
Summary
Do something cool.
Collaboration
You may work in teams of up to four students. You may certainly consult others in developing the project, although you should cite or acknowledge them if you have done so.

The basics

Form a team of between one and four students.

Decide upon a project.

Build the project, spending about four hours per person.

Submit the project.

Present the project.

A bit more detail

We have learned a wide variety of techniques for working with text this semester. For example,

  • We can extract information on pieces of text using regular expressions, string operations, and such.
  • We can visualize both quantitative and textual information using the Racket image tools.
  • We can generate text using templates (e.g., Madlibs), randomized techniques, and statistical techniques.
  • We can manipulate and build Web pages using the SXML tools and by recursing over SXML structures.

You now have the opportunity to work with other students to apply them to a moderate-sized project of your choice. You can choose the technique or techniques you apply. You can choose your data source or sources. All we ask is that you do something that someone will find interesting. Well, we also ask that you keep your time commitment reasonable, about four hours per team member of out-of-class time (plus the presentation).

What to submit

  • Your project, in the file project.rkt.
  • A log of how each group member spent their time on the project (in fifteen-minute increments), in the file timelog.txt.
  • Sample output from your project, in file or files of your choices.
  • Any other files we would need to run the project.

Sample Time Log

Taylor  17 Nov 2021     09:00-09:15     Found relevant Web pages
Taylor  17 Nov 2021     09:15-09:30     Started writing `mungify`
Taylor  17 Nov 2021     09:30-09:45     Wrote tests for `mungify`
Taylor  18 Nov 2021     17:00-17:15     Met with group
Taylor  18 Nov 2021     17:15-17:30     Finished writing `mungify`
Taylor  20 Nov 2021     12:00-12:15     Looked for collections of words for sentiment analysis
...

Presentations

Your group will give a 5–10 minute presentation to the class on Monday, 29 November 2021. There may also be other audience members present.

In your presentation, you should make sure to show off the results of your project and to discuss any particularly interesting code you wrote.

Sample projects

The following are not intended as restrictive; rather, they are to help you consider kinds of things you might do.

You might identify a series of reports (e.g., fires at national forests) and visualize the series data.

You might write a program that generates a word cloud for an arbitrary Web page.

You might write a program that generates a particular form of poetry, such as villanelles.

You might write a program that conducts sentiment analysis on each paragraph of a Web page and re-styles those paragraphs depending on the sentment of the paragraph.

The “Minimum Viable Product” approach

As you’ve likely learned by now, it can be difficult to predict how long it will take to write a program. Hence, we encourage you to take a minimum viable product approach to this project. That is, identify the simplest possible version of the project, build that, and then add features as you go.

For example, if you were doing the “word cloud” project above, you might start with a program that takes an ordered list of word/appearances pairs and makes an image of the first ten words stacked above each other.

Once that works, you can add: resizing words, based on the number of appearances; recoloring words (randomly?); changing orientation; going from Web page to ranked list of words; etc., etc.

Rubric

This rubric is approximate. Our goal is that if you do the work and follow good habits, you sould get an M.

Required for M

[ ] All necessary files included
[ ] Project runs and produces correct output on most inputs
[ ] Documentation describes goals of project, what was achieved, and how to run it
[ ] Time log appears reasonable
[ ] Presentation between 5 and 10 minutes
[ ] Presentation includes both results and underlying code
[ ] Answered questions well
[ ] Code correctly formatted (a few mistakes are permissible)

Required for E

[ ] One or more of the following, at the discretion of the grader.
    [ ] A particularly nice procedure or piece of code (please describe in documentation)
    [ ] A particularly valuable, clever, or innovative project
    [ ] An outstanding, nearly flawless, presentation
[ ] All procedures documented
[ ] Almost no inefficient or otherwise bad code
[ ] Documentation clear and well orgnized