Grading

Projects will be graded by the instructor. However, there is no predefined grading scheme. A grade will be given based on the approach used to solving the given problem, including

Several of the projects may have competitions to see whose program ``wins'' against other programs. The outcome of these competitions is not a factor in the project grades. The competitions are intended to stimulate the development of new ideas, and it is the ideas that are important. The competition rankings are for fun and pride only.

There is no restriction on communication between different groups. However, if a certain idea X is proposed by group A, and group B thinks the idea is so cool that they want to use it too, then group B can do so as long as group B explicitly cites group A's contribution in their report. So, for example, suppose that during the second class discussing project 1, a student Jane Smith reports to the class that she has discovered that a certain algorithm in the literature applies to the problem. Then other groups are still free to use that algorithm too, but in their report they must include an ``acknowledgements'' section with text something like

We acknowledge the contribution of Jane Smith who observed that the 17-starving-philosophers-named-Josephus algorithm applies to this problem.
Any information supplied by the instructor or teaching assistant need not be acknowledged in this way. Published sources and Web sources should be formally cited using a bibliography.

If a group develops a tool that is potentially useful to other groups, then you are encouraged to share it (and it's use should be acknowledged). However, this sharing should be limited to tools that aid the development of solutions (eg., visualizers, compilers, etc.) and not the solutions themselves. Similarly, external data that might be useful should be shared. For example, if we had a map-drawing project, then if somebody downloaded from the Web some datasets describing real-world maps that could be used to test project code, that data should be shared and used with acknowledgement. (For the purposes of this course, the use of other people's contributions without acknowledgement is considered cheating.)

Outside people may be consulted for general references, but shouldn't be asked to contribute to solving the problems themselves. This is a course whose primary purpose is to give you the opportunity to tackle challenging problems yourselves. If you consult outside people, they should also be acknowledged.

While groups are permitted to communicate with each other, they are not encouraged to work so closely together that they really could be described as an 8-person group. Groups must submit their own reports, and the reports should be written independently of other groups.

A report must also include a section titled ``Summary of Contributions'' that describes (in one or two sentences per person) what each member of the team contributed to the project.

Reports should also contain (where applicable) a paragraph documenting the substantive use of your code in the submissions from other groups. After the final code deliverable, you have the opportunity to browse through the other groups' submitted code to identify such use. Remember that this kind of use is encouraged, and hopefully in most cases the other groups will have told you directly that they are working with your code. The purpose of including this paragraph is to make sure that the instructor can see where groups have had influence on other groups.

Reports should be submitted electronically, before the presentation class. The electronic reports will be readable by all members of the class.

Here are the grading proportions:

Project Reports and Presentations 60%
Class Participation 40%

All members of a group will, by default, get the same grade for their project report. In rare circumstances, the professor will adjust the grade of an individual member of a project team if there is clear evidence that this member did not make a genuine effort to work on the project.

There will be four separate participation grades, one for each project. You can achieve a full participation grade (10/10) for a project by contributing 5 times in total during the 5 discussion classes. The contributions will be counted towards the participation grade only if they are substantive (see examples below). Contributions will be tracked by the TAs using Slack and the counts posted to courseworks after each class. The instructor will make an effort to call on each member of the class at some point, even if that person's hand is not raised.




Not substantive Substantive
``I don't know.'' ``I don't know because we need to run some simulations to determine if the investment is worth the payoff.''
``Please explain again (some aspect of) the specification.'' ``I think the specification doesn't cover all the cases -- can you explain what happens under these conditions $\ldots$''
``I agree with George.'' ``I agree with George for the following additional reason $\ldots$''
Restating a previously proposed idea, perhaps worded slightly differently. Building on, or refining a previously proposed idea.
``I think [algorithm] is the way to go.'' ``I think [algorithm] is the way to go; it is particularly efficient/fast/accurate because $\ldots$''
  A new idea or strategy for (some aspect of) the project.
  A new connection between (some aspect of) the project and some other interesting problem.



This list is not exhaustive. Note that contributions do not have to be correct to be substantive. You still get participation credit if your idea/answer is later refuted. This is a class about creative thinking, and many of our spontaneous ideas are likely not to pan out. Extra participation from one project is not carried over to the next project, so the TA will stop counting when you reach 5 contributions.

Also, it's perfectly ok to make non-substantive contributions where appropriate. For example, it's better to say ``I didn't understand what Prof. Ross just said,'' than to let the discussion continue without clarification.

You are required to attend all classes. You can miss two classes without penalty. However, the third class missed will result in a drop in the final grade of one fractional grade (eg., B+ to B, or A to A-). If you miss four classes, you will drop a full grade (eg., A- to B-). If you miss five or more classes, you will fail the course. Arriving in class more than 15 minutes late counts as missing the class. (In the event of sickness or other emergency, or religious observance, consult the instructor.) If you know in advance of a planned absence (e.g., for a conference), conserve your two excused absences to use for those days. When you arrive in class, connect to Slack and say ``present'' in the attendance channel.

Tips for writing reports. Focus on the solution of the problem at hand. It is better to say something meaningful about one aspect of the problem than to say something vague about many aspects of the problem. Programs that solve the problems themselves are important, and the component algorithms should be described thoroughly. Tools constructed to aid the development of a solution (e.g., a compiler, simulator etc.) are valuable, but don't waste space and time describing how well such code was written.

See the Computing Science column of the American Scientist for a great presentation worth emulating in this class. For example, see the column from November-December 2000 on Dividing the Continent.

At the end of each project, we'll run a tournament to see how well the players perform. The tournament outcomes do not affect your grades, but the ideas behind the players, as discussed in class and presented in your reports, do affect your grades. If you cared only about the tournament results, you might choose to keep your tactics secret. However, such a choice would be counter to the spirit of the class, and would also hurt your reports (e.g., another group might suggest the same tactic and be perceived as the originator of the idea).

Ken Ross 2023-10-17