What to submit
You will have 3 deliverables for this term project, each graded separately, the first two each comprising 10% of your TP grade and the last deliverable (#3) determining the 80% of your term project grade.
Deliverable #1 [10% of TP grade]
Due Mon 26-Jun at 8pm
Mandatory TP1 grading meeting
You must meet with your TP mentor to discuss your tp1 deliverable,
in any case no later than Mon 26-Jun at 11:59pm.
For those of you who are traveling, this meeting may occur via
Skype. However, if you cannot do that, then you must submit your
tp1 deliverable early and have this meeting prior to the tp1
deadline.
In all cases, this meeting must
occur by the Mon 26-Jun at 11:59pm deadline (which is separate
from the tp1 deadline, which is 8pm that same day).
Project zip file
Place all the following in a single zip file which you will submit to Autolab. Again, be sure it is under 10 megabytes, omitting or truncating media as required to do so.
Project Proposal
Include a complete and thorough project proposal, clearly defining the problem you intend to solve and a fairly detailed description of how you intend to solve it. In particular, your proposal must list all modules/technologies you plan to use outside of Tkinter.
Technology Demonstrations
For each module/technology you listed in your proposal, you must include a demonstration of your suitable competency with that technology. This demonstration will be done in person with the professor. Note: anyone who cannot demonstrate mastery of their required technologies by this date will have to modify their term project to no longer use those technologies. Your professor will determine what "suitable competency" means, but it is not enough to merely run a demo that you downloaded and did not modify in some meaningful way.
Competitive Analysis
This is a written document summarizing your competitive analysis, where you scour the web and find several existing products that are similar to what you propose. You need to use those products and carefully think about them, then list a few features in those products that are especially compelling, that you plan to include in your program. Also, list some anti-features, which are features you do not like in those products and plan to change in your program. Do not just exhaustively list all the features of those apps, since they will have tons of features that are not really relevant to your program. Stick to those few features that are directly relevant to what you are building. This is not a short piece of work. Doing a competitive analysis well will take several hours at least.
Storyboard
Here you should include hand-drawn pictures (do not worry about making them pretty) showing how your app will work from the user's perspective. Using your storyboard, you will walk your mentor through the user experience of your program, and you will do this prior to writing lots of code. This way, your mentor can help you make any necessary adjustments to your design prior to your having a huge investment in a large code base.
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 45 total hours to obtain a satisfactory grade.
Deliverable #2 [10% of your TP grade]
Due Fri 30-Jun at 8pm
Mandatory TP2 grading meeting
As with tp1, you must meet with your mentor soon after the TP2
deadline to discuss your TP2 deliverable. This meeting must
occur by Fri 30-Jun at 11:59 pm.
Project zip file
Place all the following in a single zip file which you will submit to Autolab.
Working Demo
At this point, you should have a working demo of your project, approximately at what would be considered a low B-level final project. It may be missing features, it may have a less-than-polished user interface, it may have bugs, but it has to basically work for some reasonable definition of "work".
Code Artifacts
To be clear, it is expected that your working demo include significant code
artifacts, with considerable progress beyond your deliverable #1 code artifacts.
A timesheet
See above for details.
Deliverable #3
Due Sun 2-July at 5:00pm
The Project Zip File
Submit a single zip file named termProject.zip containing all the files described below.
Project Video
In the file project-video.txt, include the URL of a web-hosted (say, in YouTube) 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. 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. If you have more media than can fit in 10 megabytes, you will have to omit some of the media. It is far preferable for your program to still run properly, for the most part, without the excluded media in this case. If your project is over 10 megabytes, then in addition to submitting the reduced-size version via Autolab, you must submit the complete version to your mentor by the project deadline in some other manner (Dropbox, flashdrive, etc...).
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.
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 45 hours to obtain a passing grade.
How will you be graded?
These are the general grading guidelines we use. However, grading these open-ended term projects is notoriously subjective, and some projects simply will not conform to this rubric, and many others will require some smaller adjustments here and there to the rubric. With all this in mind, we take considerable measures to ensure that we are as fair and consistent as possible in our grading. As such, we will do our best to grade in the spirit of this rubric, while ensuring that works of similar quality, sophistication, and scope result in similar grades, even if those works are extremely distinctive in nature.
Note: these categories do not have specific weights, but they
are presented in decreasing order of importance -- the first three
categories comprising the major share of the score.
Complexity and Sophistication
Projects should show a level of complexity and sophistication in their design, coding, and user experience, all 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.
Robust Operational Program
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 + User Experience
To the extent that it is appropriate for your particular project, you should have a polished user interface and rich, engaging, cogent user experience. For projects without an end user experience (such as, say, an embedded robot controller), these points will be distributed across the other grading criteria.
Effort
Once again: you are expected to invest at least 45 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.
Design
Your design should include well-chosen functions, data structures, and algorithms.
Style
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
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.
Bonus
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 TA
Each of you will be assigned a "Mentor TA" for your term project. While every staff member is happy to help you at any time, it is expected that your Mentor TA will provide most of your support and guidance during the course of your term project. Also, your Mentor TA will be grading your term project. You are encouraged to discuss your grade with your Mentor TA 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 Meetings
At least three times during TP week, you shall meet with your Mentor TA, both to review your progress on that week's deliverable, and also to discuss your project in general and keep you moving along efficiently and effectively.
Missed Meetings
You are expected to attend your scheduled meetings with your Mentor. Of course, if you have a documented medical or other such emergency, we understand. Otherwise, the first time you miss a scheduled meeting, there will be a 10% deduction on that week's deliverable.
Receiving Your Grade
The first two deliverables will be graded in informal meetings with your Mentor. The final deliverable will have a more extensive grading process.
During the period after the term project due date on Sunday night, each of you should meet with your Mentor TA 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 TA. While 10 minutes is not much time, your Mentor TA will have been working closely with you for some time and so should already have a fairly detailed understanding of your project (hence the value of those weekly progress reports). 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 TA! 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 TA to ask questions! Also, if you do not sign up for in-person grading, or you miss your reservation, then you must reschedule at a time that is convenient for your Mentor, or you will receive 0/100 for your term project grade! To ensure grading consistency, a second Grading TA may 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)!!!