Computer Science 15-112, Fall 2011
Term Project
Due: Wed 7-Dec-2011 at 10pm (no late submissions accepted)
See the 15-112 Fall
2011 Term Project Gallery!
This project is solo, in that every student must do
their own independent project. However, unlike other solo assignments, you
may be richly collaborative in terms of helping each other, including viewing
other students' code to help them debug, openly discussing designs and
algorithms, etc. Using resources wisely is an important aspect of this
term project. However, you still must conceive and understand your entire
design and you must personally write every line of code that you submit for
credit.
Also:
you may use any materials whatsoever, including source code,
designs, images, text, sounds, or anything else, from any sources you
may discover. You just need to very clearly cite each such use,
so it is very clear what is yours and what is not, and in the latter
case where the materials came from. And while you may include
external materials, you will be graded solely on your original
contributions.
Also: submit your project twice: (1) without the
project video, as a single zip file (no larger than 10 megabytes, please) via Autolab;
and also (2) with the project video, on a CD or DVD, physically submitted
to your Mentor CA by the project deadline. Be sure that your CD or DVD is
clearly labeled with your name, andrew id, and term project title.
Term Project
Your task is to design and implement a program of your
choosing. You must program in Python unless your chosen task
essentially requires another language for some compelling reason (in
this case you must also obtain written instructor permission to pursue such a
non-Python project). It may be
graphical, text-based, or even file-based. It may be a game, or a
math or science application, or a baseball statistics package, or a
productivity application (think Word or Excel, only very "lite"
versions), or a shell script, or anything else you choose. This
is a wide open assignment, and you are expected to be creative in your
approach to it.
Also: you may use any materials, including any Python
libraries (like VPython for 3d graphics, or PyGame for richer 2d
game support, or PyMedia for multimedia, or NumPy and SciPy for
scientific computing, etc, etc, etc). You should understand that
using such materials requires that you train yourself on their use
(presumably through online materials). CA's and instructors will
try to assist as we can, but you should expect less direct support if
you use libraries that we did not cover in class..
In fact, you may use anything (any code, any graphics, any sounds,
anything at all) so long as you very clearly cite precisely where it came from
and, if possible, who created it. You will only be graded on the portions
of your project that you created entirely on your own, but you are welcome to
use other materials as appropriate. Again, just be certain to make it
abundantly clear what is yours and what is not.
Note: you may reuse code you have previously written for this course or otherwise,
but you must cite yourself in this case and such code will not count towards
your project grade (it is the same as using code from any other source). All
your code for this project must be original code written by you explicitly for
this project.
You have about one-half semester to finish this
assignment, with no other assignments during the last 2-3 weeks. You are expected to invest at least
25 total hours
into this project in this time, and it is further expected that your
project will clearly reflect the quantity and quality of design and
craftsmanship that goes along with that much time on this task.
Naturally, some of you will exceed the 25-hour bar, but this is a
minimum expectation for passing the term project.
What to submit
- The Project Zip File
Submit a single zip file
named termProject.zip containing all the files described below except your term
project video, which will be handed in separately (as described above).
- Project Video
In the file termProject.avi or termProject.mp4 (either format is
acceptable, but only one of these two formats), include a short video (say,
1-to-3 minutes long) demonstrating your project. Do not show every
last feature. Instead, show the most important features, the
highlights, the parts that are distinctive. You may just use a screen
capture utility if you wish, along with a voiceover. Or you may just
use a webcam or other video camera (even a decent cell phone camera) and
directly video your screen. You do not need expert production value,
and in particular you do not have to edit your video (and so you can have
pauses, imperfect scene changes, and occasional verbal slips).
However, the video should be of sufficient quality, and should clearly
demonstrate your project, such that we can use it as part of our grading
process (though we will also run your code, and in fact you will also run it
for us). We may also place (excerpts from) some videos in a student
term project gallery on the course website (with your permission, of
course). Also, critically, your video should meet your own standards
so that you could reasonably place it in an online portfolio of your
academic work, and submit it to a prospective employer as part of your CV.
- Project Source Files and Support Files
Include all your project's .py files, along with all other files
(.jpg, .midi, etc) that are required to build and run your project.
- Project Readme File
Also,
include a file named readme.txt that explains at a high level what your
project is and how it should be installed and run. If you use any
3rd party libraries, be sure to either include the library in your
submission (preferred), or if this is impossible, to include very clear
instructions on where and how to download and install the library.
- Design Documents
In
your top-level project directory, include a directory named "design",
and in that directory place all your design documents. At a
minimum, this must include a paragraph or two describing the problem
you are solving and the general approach your code takes to solve
it. After reading this, another programmer (or a CA!) should be
able to make sense out of the module or modules you designed and the
most important functions they contain. Also, you should discuss
your user interface (assuming you have one, as most of you will),
explaining not just what your program looks like but
why it does so. For example, many of you started your projects by
studying similar programs on the web -- you should list those here and
explain what was good and bad about those programs and how they influenced
your design. You should also include any other supporting design
documents you might have, such as storyboards or any other materials you
made in the course of designing your project.
- A timesheet
In your top-level project directory, include a file named "timesheet.txt".
In this file, keep track of the time you spend on the project. There is no
specific time requirement, and more time will not necessarily equate to a
higher grade. Again, though, it is expected that you should invest at least
25 hours to obtain a satisfactory grade.
How will you be graded?
- Well-Chosen Problem [5 pts]
Projects should show a level of sophistication in keeping with your
hard-won programming prowess. They should be neither too simplistic nor too
complex. They should also be interesting, though we will take a
broad view of this.
- Design [10 pts]
Your design should include well-chosen functions, data structures, and algorithms, explained in a clear design
document as noted above.
- Robust Operational Program [25 pts]
Your program should work. It should load and run with no exceptions. It should not
crash or hang, even in the face of undesired input.
- User Interface [25 pts]
To the extent that it is appropriate for your particular project, you
should have a polished user interface. For projects without an end
user experience, these points will be distributed across the other grading
criteria.
- Style [5 pts]
Your code should abide by all the style guidelines we have discussed in
this course. It should also include complete (but concise) test
functions where appropriate!
- Presentation [5 pts]
Both your video and your oral presentations should clearly highlight the
most interesting and important aspects of your project. And while we
do not require expert video production value, your video still should be
reasonably well done. For example, the voiceover should be very clear,
concise, and easy to understand.
- Effort [25 pts]
Once again: you are expected to invest at least 25 hours into this
project, and it is further expected that your project will clearly reflect
the quantity and quality of design and craftsmanship that goes along with
that much time on this task.
- Bonus [0 to 10+ pts]
For extraordinary work, we may award bonus points. Please discuss more
ambitious bonus attempts with the instructor prior to investing too much
time into them!
Additional Grading Issues:
- Mentor CA
Each of you will be assigned a "Mentor CA" for your term project.
While every staff member is happy to help you at any time, it is expected
that your Mentor CA will provide most of your support and guidance during the course of your
term project. Also, your Mentor CA will be grading your term project.
You are encouraged to discuss your grade with your Mentor CA during the
course of the term project, so you know where you stand and what additional
work may be required to improve your grade.
- Weekly Progress Reports
At
least once weekly during the course of the project, you must send a
progress report to your Mentor CA. It should be formatted along
the lines of your final submission (that is, with a design document,
timesheet, etc), though it can be only partly completed. These
will be factored into your effort grade, as noted above.
- Receiving Your Grade
During the period after the term
project due date up to the following Sunday night, each of you should
meet with your Mentor CA for 10 minutes to present your term project and
discuss your grade. Sign-ups for these
time slots will be handled by email by each Mentor CA.
While 10 minutes is not much time, your Mentor CA will have been working
closely with you for some time and so should already have a fairly detailed
understanding of your project. In any case, we'll really need to stick to
the schedule, so you should show up at least 5 minutes early, and you
should bring your own computer and have your project running and ready for
your presentation prior to meeting your Mentor CA! Expect to spend no
more than 5 minutes presenting,
discussing your overall design and any clever features that you have
created, leaving adequate time for your Mentor CA to ask
questions! Also, if you do not sign up for in-person grading, or
you miss your reservation, then your project will be graded by your
Mentor CA without your oral presentation (though still including your video
presentation), and you will receive your numeric grade via email. To
ensure grading consistency, a second Grading CA will attend your
presentation. Also, after all the presentations, the 15-112 faculty
and staff will meet to discuss edge cases and to further ensure that grades
are as uniform as possible across all sections and all graders.
This is meant to be educational but also good fun. Enjoy (and work hard)!!!
carpe diem - carpe
diem - carpe diem - carpe diem - carpe diem - carpe diem -
carpe diem - carpe diem - carpe diem