Math 480B Project Description
Very short summary: Do something awesome.
Overview
As we've mentioned in class, the goal for the project is for you to work on something you find really interesting. The project is a chance for you to pick one thing and really focus on it for several weeks, and (hopefully!) learn a good bit about Python, Sage, and/or programming in general in the process.
Your goal will be to produce a working implementation of something by the end of the quarter, and you'll give a roughly 5 minute demo to the class. You'll also need to hand in a write-up, which should include any necessary mathematical background to understand the project, as well as some description of the implementation. If there were any unexpected obstacles, or interesting design decisions, you should describe them in the write-up.
You'll be working in groups for the project, of roughly 3-4 people. (As we've mentioned in class, the only worry about group size is that we don't end up with too many projects to present in the time allotted.)
Example
Someone in your class mentioned that he was thinking about doing his project on sundials. (I think he might be abandoning this idea, so it's potentially up for grabs.) This could make a really sweet project -- here's what would need to go into it:
- For the background part, you'd need to find out all kinds of stuff about how sundials work. You should be able to give a completely coherent explanation of how sundials are used to tell time, what kinds of sundials exist in the world, how they work in Alaska in the winter, the whole nine yards. (Maybe they don't at all? I actually don't know anything about sundials myself.) This would all go in the write-up, as well as some comments/explanation in the code.
- For the actual code, you should "implement" sundials. For this, I'd expect a simulation in the Notebook, probably involving more than one interact. You should be able to work this both ways, i.e. given a position of the sun, determine the time of day, and vice-versa.
The point here is this: by the end of this, you've understood just how sundials work, and also written some code to simulate them. This project also has the upside that you could explain it to a random person on the street -- most everyone has heard of sundials, but I'm betting very few know how they work. Maybe you'll even use it to pick up dates at parties. (I'm guess that one's less likely.)
Tangibles
You'll be responsible for three things as part of your project:
- Project description, due April 26
- Presentation,
- Write-up, due on the day of your presentation
For the project description, we're not looking for anything too extensive -- roughly a half a page or so describing what you're going to be doing, a vague description of what will be in the write-up and what the code you write will do, and a list of who all is in your group. The point here is to give William and me a chance to look at your proposal and say "oh, that's way too hard," or "oh man, that's too easy -- you've got to do more than just write a function that adds two numbers."
The presentation will be a short live demo of your code. So your group will stand up, load up the code (either via the online notebook or by plugging in your laptop), and show the class just how it works. The goal should be to make most of the class ooh and ahh. You should make sure to do a dry-run first -- watching people fail to get their code to work for 5 minutes is generally not so exciting.
The write-up should contain a description of what all went into your project. It should definitely contain any mathematical background needed to understand it, descriptions of the major algorithms involved in the code you wrote, and notes on any other interesting parts of the project. It should be at least a few pages per group member.
Finding a group
Right now, you should start working on forming a group. (Several people have already done this.) If you have a great idea for a project, send out a note to the mailing list saying "hey, here's what I'm thinking about doing -- anyone else interested?" If you don't have a specific idea right now, either look for these emails on the list, or send out an email saying "hey, I'm looking to join a group -- I'm better with math than coding," or whatever is true in your case.