CS 50, Winter 2010

Project Rules


Type of project to choose

CS50 is about analyzing problems and designing programs; it is not primarily about programming, at least not programming at the method or class level. Therefore, what we are looking for in projects are problem domains that are "interesting" - i.e., have Suppose you have a choice between two projects, A and B:
Project A - GOOD Choice Project B - POOR Choice
Has many concepts with complex relationships between them, but each resulting class is simple to implement. Has fewer concepts, and classes are difficult to implement due to tricky algorithms and/or fancy graphics.
For CS 50, project A is a much better choice. The goal is for you to learn how to analyze and design, and thus a major portion of your work on the project should be in that area. Once you have the individual class and interface definitions, the implementation should be relatively simple.

Source code requirements

About technical expertise
The instructor and TAs will not assume responsibility for teaching you how to accomplish every possible Java programming task you need to learn - whether or not we are familiar with these tasks ourselves. A large part of a programmer's job is to learn how to do things they have not been trained to do. You must research any techniques that are novel to you, find examples in books or by searching the Internet (for Java techniques, most students find what they need in the Java Tutorial - see "Really big index" link on the CS 50 resources page).

Grading guidelines

The overall project grade will be based on results of six group assignments as follows:
  1.  5% - Project registration
  2. 15% - Requirements analysis document, current iteration
  3. 15% - Domain analysis and system design document, current iteration
  4. 20% - Implementation (and javadocs), current iteration
  5. 10% - Progress presentation
  6. 35% - Final project (completed system, and improved documentation)

Late submissions will receive reduced grades. No items will be accepted more than 48 hours past their posted due dates, and the final project deadline is absolute.

About individual accountability
Most grades will be applied equally to all members of a given group. In the event that individual members do not willingly contribute their fair share of the work, the other members of the group should: (1) diligently attempt to gain the cooperation of the lagging member; and (2) if those attempts fail, they should inform the instructor and TA less than one week after the affected assignment is turned in, with a specific recommendation for reducing the grade for the uncooperative member (specify a percentage, 0-100, of the credit to award the student for that assignment).

A special note about plagiarism:

All work that you submit must be entirely your own, or its origin must be properly credited. In other words, it is okay to borrow an idea from somewhere, but only if you tell us so. (Of course, if you borrow a substantial part of your design, your grade may be affected.)

Plagiarism is a very serious offense, and we are obligated to spend some effort trying to find it. If we detect it, the offending group's grade will be reduced by at least 40 percent even for minor infractions. For anything other than a minor infraction, the grade will be zero, and the students' behavior will be reported to the appropriate university authorities. According to university guidelines, "any act of academic dishonesty ... is unacceptable and will be met with disciplinary action".


Updated December 18, 2009 by C. Michael Costanzo
CS 50 homepage