John G. Kemeny Computing Prize
The John G. Kemeny Computing Prize is awarded annually for innovative computing projects by Dartmouth undergraduates. In addition to public recognition of excellence in computing, it also carries a cash award.
Guidelines for the Kemeny Prize
Noon, Sunday, June 4, 2017
Goals of the Competition
The Kemeny Prize is intended to encourage novel uses of computing by undergraduate students at Dartmouth College. To that effect, the Kemeny Prize rewards students who produce original, creative, well-designed, and well-implemented computer applications. Cash prizes are awarded to the best entries, as judged by a panel of Computer Science faculty.
To encourage diversity in undergraduate computing, the Kemeny prize will be awarded in two separate categories: Innovation and System Design. While projects in both categories are expected to be innovative and useful, the Innovation category places special emphasis on novel uses of computing, while the System Design category places additional emphasis on traditional Computer Science and Software Engineering metrics, such as algorithms and data structures used in the implementation of the project. (Your entry may suggest a category, but the judges may very well end up deciding it better fits in the other one.)
We ask you to classify your project as an Individual or Team project. The Individual category is for work done essentially by one person, with reasonable and normal help from others. (The judges recognize that individuals profit by consulting with experts, friends, colleagues, books and journals.) The Team category is for work done collaboratively by two or more people. Depending upon the entries received, we may or may not give separate awards for individual and team projects.
- All Dartmouth undergraduates (including those on off-terms) are eligible to submit entries. The Kemeny prize is not restricted to Computer Science majors; students from outside Computer Science are encouraged to submit entries, particularly in the Innovation category.
- Projects that have won prizes in previous years are not eligible.
- Projects that have been written for a class or for a job are eligible, as long as at least some parts of the design and implementation are your own. If parts of your project are due to others, you must make it clear what is your work and what is due to others.
- Computing projects done as parts of senior theses in any discipline are eligible.
- Projects not traditionally considered computer programs may be eligible for the Innovation category.
Language and Environment
For projects in the System Design category, you may use any programming language you like (Pascal, C, C++, Lisp, Scheme, Basic,Tcl/Tk, etc.). You can use any programming environment, hardware, and operating system you want (such as Unix, Macintosh, X Windows, VMS, etc.). If you require hardware or other apparatus to which the Computer Science faculty does not have convenient access, you should arrange a time and place during the week of submission for the judges to run your project.
Note: We highly recommend that you name a machine in Sudikoff to which we have access that can demonstrate your project. Be sure that it works there---that the machine has all the right packages, hardware, etc.
Of course, projects in either category may employ whatever system is appropriate. Quite sophisticated algorithms can be implemented in Excel, and innovative applications can most certainly be built with traditional programming languages.
Submitting an Entry
To enter, do this:
- Prepare a project report as a PDF file. A Senior Honors Thesis or CS 23 project report will suffice; otherwise, your report should have four parts:
- Project Overview describes briefly what your project is supposed to do, what problem it solves, and who you expect would use it.
- User's Instructions explain how to run your project. The instructions should also point out features that we might not otherwise observe by simply experimenting with your application. You may also consider including a "script" that steps us through a sample interaction with the project.
- Technical Description includes information that will help the reader understand how your program works, by describing major algorithms and data structures, and how the project is put together. The technical description plays less of a role in projects in the Innovation category, but you should still provide us with a description of how everything fits together.
- Evaluation describes the performance of your project in terms of its efficiency, usefulness, and relation to any similar software. If the work was supervised by a professor or employer, you may include a letter from that person in this last part, describing the interest and usefulness of the project.
- Package up in a single zip file the data and source code needed to run your application (header and code files for C programs, a listing of macros and formulae for spreadsheets, HTML documents for WWW-based projects). If needed, in this zip file please also include:
- Executable programs, and any other files needed to run your project.
- Any other relevant supporting material or documentation.
- Upload the project report (item 2 above; PDF file) and the zip file containing the software (item 3 above) though the online Kemeny Prize entry form.
- Is it substantive?
- We prefer projects that perform interesting and significant computations to ones that simply wrap a glossy user interface around routine bookkeeping.
- Is it creative?
- We prefer novel, innovative projects to minor variations on old themes. We encourage projects that use computers in new ways to address problems in areas far removed from Computer Science (such as music, sports, philosophy, history, recreation, religion, social science, etc.) as well as in the usual areas (data processing, mathematics, physics, engineering, etc.). We expect that projects in the Innovation category will emphasize areas removed from Computer Science.
- Is it original?
- We prefer projects you designed yourself to ones designed by a book, a professor, an employer, or a colleague.
- Is it interesting?
- We prefer projects in which the computer is made to do something you couldn't do just as well some other way, and in which the results of the computation might matter to someone besides the author of the program. Even esoteric interest is enough, but if your project deals with a problem so esoteric that a professor of Computer Science could not reasonably be expected to know anything about it, you would be well-advised to give us some background material to read.
- Is it clear?
- We prefer projects that have clear and direct user manuals and that are easy to use without reference to the user manual.
- Is it correct?
- We prefer programs that work as advertised.
- Is it usable?
- We prefer programs that interact comfortably with the user, that behave robustly when given faulty input, and that fail gracefully.
- Is it elegant?
- We prefer programs that implement the right "level of abstraction," and whose components fit together in a flexible way.
System Design Projects
- Is it effective?
- We prefer programs that use appropriate algorithms, data structures, programming techniques, and other tools.
- Is it understandable?
- We prefer projects whose code we can read easily, whose technical manuals give us a good overall understanding of how everything fits together, and whose structure we can imagine maintaining. We prefer projects in which we rarely (or perhaps never) need to consult the source code to resolve questions about the project.
- Is it efficient?
- We prefer programs that use resources (such as processing time, memory, user interaction, and development effort) economically.
- We admit that there is a great deal of subjectivity in these criteria, which is why the judging is done by experienced humans instead of by computer. Not all these items will be equally relevant or important to all projects. Furthermore, it will be difficult to compare projects with wildly different assumptions and software platforms; the judges will apply a different set of standards to a HyperCard stack that does foreign language drills than to a C program that searches for orthogonal Latin squares. Nevertheless, the judges will evaluate your project along the above lines, as they apply.
- Your project will not be judged on the following criteria:
- Mere volume does not impress the judges.
- Nor does the total number of man-hours you spent.
You may not submit proprietary software. The judges will not (and do not) agree to any nondisclosure agreements. However, by submitting a project you do not yield any rights to future commercial use of your project. The judges will not attempt to publish your code or use it for profit.
You must abide by any agreements and contracts, explicit and implicit, made between you and commercial software and hardware companies. For instance, you must use legally-obtained compilers, debuggers, operating systems, and software tools while developing your project. You may not submit code that a third party has forbidden you to distribute.
You must also abide by Dartmouth's Computing Code of Ethics, Honor Code, and the principles of attribution outlined in Sources and Citations at Dartmouth. Projects that violate these principles will be disqualified.
Examples of Prior Projects
Past projects that have been submitted for or have won the Kemeny prize have included:
- An interactive, multi-player game that emphasizes cooperation rather than competition.
- A program that automatically conjugates French verbs, both regular and irregular.
- A networked, multi-user drawing program.
- A program for evaluating and graphing polynomials.
- A BlitzMail client for the X-windows system.
- A particularly sophisticated HTML-based web that provides access to the Dartmouth College library's Daniel Webster collection.
See also the winners from previous Kemeny competitions, available on-line. The topics of past projects should not bias your own decision. We will accept a wide variety of projects that exhibit innovative design and features, and we will accept both small and large projects.
We encourage small projects as well as large. A small, well-crafted project with an interesting subject has an excellent chance for a prize.
The Kemeny prize is intended for both Computer Science majors and for those working in fields outside of Computer Science. The System Design category is likely to be more applicable for those working in Computer Science, while the Innovation category is likely to be more appropriate for those working in other fields.
For further information, contact Scot Drysdale via email.
The 2016 Kemeny Prize Committee
- David Kotz (Prof, COSC)
- Doug McIlroy (Prof, COSC)
- Scot Drysdale (Prof, COSC; chair)