[Note: this webpage last modified Friday, 04-Feb-2011 19:44:51 EST]
The final project is worth 10% of your final grade. This is your chance to do a bigger project in this class. You can write a program on whatever interests you. Below you will find some ideas to get you thinking. In terms of how much time to spend on the project, I'd suggest the following: a few hours per week until the project proposal, then ramp it up after that, and finally spend a good amount of time at the end finishing up the project and doing a nice presentation. I will adjust the difficulty of the homework assignments so you have time to work on the project. Hopefully, you will pick a project that is really exciting so that you have no problem at all spending enough time on the project (and in fact, maybe you end up spending way too much time because it is so fun and exciting ;) ).
You can work with a partner or alone (so a group of 2 or 1). If working with a partner, you will be graded accordingly, with the expectation that the project is more substantial than a single person project.
Proposal will be due Oct 22, Midpoint due Nov 22, Final presentation will be the last week of classes and during the exam slot.
Proposal.
You should use my project proposal as a template for what to do for yours. It can be downloaded from: 151Project/. You should email your proposal to me before it is due, and we will discuss the proposal in class.
Project Midpoint. For the project midpoint, you will turn in your code in addition to an updated "proposal" document that is up to date on your current progress and your timeline for finishing the project. You will be graded based off of having something working. If you have not done much work on the project by the midpoint, you will get a poor grade for this portion. I suggest having an intermediate goal that you can shoot for having done before the midpoint. I made suggestions for all the people I talked to about what that intermediate goal could be. If you achieve that, you are likely to get a good grade on the project midpoint. You can look at what I have so far for my project at: 151Project/.
Final turnin and presentation. For the final presentation, you will turn in the code for your code and a description of your project (either in a word document or as comments in your code). You will also give a presentation to the class. You will have 10 minutes for the presentation. You can email me to reserve your slot; the schedule is kept on an announcement in blackboard. You should email your code to me 24 hours before your presentation. I will wait to grade the code until Friday December 17, so you can resubmit new code if you continue to work on your project after the presentation.
Grade breakdown: 20% proposal, 30% midpoint, 50% final presentation (which is 60% project/code/writeup and 40% presentation).
If working in pairs, you will grade each other and yourself as well. I will take that into consideration.
NOTE: this is a programming project, so your project must use the main programming concepts we have learned. The project must include: loops, functions, ifs, and user input. If it does not, your grade will suffer.
If you use a programming environment/language other than JES/Python, it needs to be freely available so I can install the software on my computer as well.
You should try to pick a project that is not too easy and not too hard. You need to be able to complete the project by the end of the semester, but the project is a program that is much more involved than a homework assignment. I will give you feedback after the project proposal as to whether your project proposal is reasonble. If it is not, I will ask you to submit a modified proposal within one week. After the project proposal (or before if you like), you will begin working on your project, and the expectation is that you will be half done by the project midpoint date. You will be graded according to this standard at the project midpoint. If you are using a new programming language, you should be familiar and comfortable with the language by the midpoint. If you are using JES, you should have some parts of your program working by the midpoint.
The best idea is something that you are interested in doing! Maybe you are not a CS major and have an idea of how programming is used in your own major. Maybe there is something you think would be really cool to write a program to do. The following list are just some ideas of things I think you might be able to do and might be interested in. In terms of "how long will the program be", it might be a few hundred lines of code.
Toolkit of picture or sound effects that can include some we have done in class but should include others as well.
Drawing fractals.
Planetary simulator showing the planets going around the sun.
Basic picture classifier - have the program decide if a picture is a person, a car, etc. Ultimately, this could lead to a facial recognition program.
Keyboard program that plays notes as you type the keyboard. You could have the program save the sound file, and also save a text file saying what notes were played (like sheet music, sort of).
Program to take a sound and decide what note the sound is (for use with learning to sing, maybe).
Sound morpher, for example it could take a person singing and make it sound wierd in a number of different ways.
Your own personal encryption system.
A simple game (e.g., tic-tac-toe). It would allow two players to play, and might have an option for the computer to play.
Video programming in JES.
Learn another programming environment/language that is geared towards
beginners, many of which are visual or media-focused. You would learn
the basics of the environment/language and
develop some appropriate program (e.g., a video/movie, a game, ...).
See
http://en.wikipedia.org/wiki/Educational_programming_language
for descriptions of some of these. Here are some:
Alice,
Scratch,
Karel,
Etoys,
Guido van Robot,
Greenfoot
Learn the basics of some other programming language that is used
out in the world. You would learn the basics of the the language and
develop some appropriate program. Some options include:
Squeak,
FORTRAN (scientific), COBOL (financial), Visual Basic, SQL (database),
PHP/Perl/ASP/Javascript (web scripting), your calculator (TI whatever
it is), Sage (math)