final project
For your final project, choose a problem that interests you
that demonstrates the concepts we've been exploring this semester.
ideas
Some ideas are
- a game - a word game like boggle, board game like tic-tac-toe or battleship, or Nim, or a solitaire puzzle
- a graphics animation (probably using Zelle's graphics with things moving and user interactions with mouse clicks or keys)
- generating an interesting graphics figure, such as a fractal or random landscape or maze
- a simulation of something, perhaps the iterated prisonor's dilemma, comparing strategies such as (tit for tat)[https://en.wikipedia.org/wiki/Tit_for_tat) or random choices. (BTW, Katie's research is in that direction.)
- a physics simulation of something such as pool balls (using Zelle's graphics) or chaos (which we mentioned during the first week).
- an analysis of or conversion of some data files or text files
- a small interactive fiction which, which prints out part of story and then says different things depending on what the user types.
- some numerical problems from ProjectEuler.net. (The pythagorean and collatz problems we did were from this site.)
To ensure that the scale of your project makes sense, I ask for an initial proposal and will give you some feedback.
You don't have a lot of time, so plan accordingly.
what to turn in
Your work should clearly documented and demonstrated. Please use docstrings. Explicit tests with docstrings or assert
are encourage but not required.
Include an explanation of what you have done. (This might be something you want to show other people eventually.)
As always, be clear on what is your own new work, and what is work you or others have done previously, so quote your sources,
both links to online sites, help from tutors, and anything else that your project is based on.
More explicitly, your submitted work should include
- the source code itself, including appropriate docs and comments
- something showing what it looks like when it runs, either copy/paste terminal work and/or screeshots (for graphics)
- a brief writeup explaining what you did, what it's supposed to do, what was easy and what wasn't, and discussing the technologies involved.
- a bibliography of any resources (websites, books, ...) you used
evaluation
Your goal should be to demonstrate your understanding of the course material. I would rather see a project
of manageable size done well that you understand and can explain than something large, complicated, and unfinshed,
or something which depends on tricky external libraries to do do most of the work.
Your work will be evaluated on
- concept : the technical merit of the idea itself, including its difficulty and planning
- mastery : how well the project shows your understanding of the course material
- style : the clarity of your code and other materials, and whether it follows accepted conventions
- completeness : does it feel finished, and what bugs are there
- support : appropriate docs, tests, sample output, screenshots, etc
Questions? Ask!