Honors Program

About the Honors Program

Every year a few computer-science majors choose to go beyond the normal major and enter our Honors Program. Honors students engage in independent work culminating in the writing of a senior thesis, and are considered for graduation with honors in the major. The experience of participating in an independent research project and of writing a senior thesis can be particularly important for anyone who intends to study for the Ph.D. degree in computer science.

For completion of the Honors Program in Computer Science, and to be eligible to graduate with Honors or High Honors, a student must complete either an independent study project or a written thesis (for High Honors the thesis is required), and have his or her program of study approved as an Honors Program by the Undergraduate Advisor. In addition, the recommendation of the thesis/project advisor to award honors or high honors must be ratified by a Departmental vote. An honors project is undertaken by a student under the guidance of a faculty member. Usually the subject of the project or thesis will be motivated by the concepts or content of an advanced course taken as a part of the student's major. Honors projects and theses are normally completed over a period of two or three terms. A variety of activities, such as participation in a department seminar, can lead to a project or thesis. Student suggestions for both projects and theses are welcome. The student should consult with his/her prospective project advisor and submit to the Undergraduate Advisor a brief written proposal of the project that has the written approval of the project advisor. The Undergraduate Advisor will review the student's proposal and the courses that have been selected for the Honors major. Approval of the proposal and course selection will constitute formal admission into the Honors Program. This procedure should be completed by the following date during the senior year, depending on the first term of registering for thesis: October 15 if fall, January 31 if winter, and April 15 if spring. The student may then register for (at most two terms of) Computer Science 99, Honors Thesis Research.

Even if a student is registering for Computer Science 97, Thesis Research, which falls outside the Honors Program, the student should submit a written proposal that has been approved by the project advisor by the above dates.

Admission to the Honors Program requires a general College average of B+, and a B+ average in the major at the time of admission and at the time of graduation. Moreover, a B+ average is required in the work of the Honors project/thesis. The B+ average in the major is determined as follows: Courses prerequisite to the major are not counted, but all other courses used as part of the major are counted, as are all courses titled Computer Science (beyond prerequisites, excluding 97 or 99), including courses cross-listed with Computer Science. Note that in the case of modified majors, courses used as part of the major may include courses from other departments. The B+ average required in the work of the Honors program is defined to be a grade of B+ given by the thesis/project advisor on the thesis or project. Questions about this requirement should be addressed to the Departmental Undergraduate Advisor.

To receive Honors, the student must complete an independent study project or thesis, demonstrating "work that is clearly greater in depth and scope than that expected in the normal major program."

To receive High Honors, the student must write a thesis. There are three additional requirements beyond those for Honors:

  1. The student must demonstrate substantial independence in their work.
  2. The quality of the work should be close to something publishable in a refereed forum. Interpret this requirement as follows. If the project is primarily a written thesis, then it should be close to the quality expected in a refereed conference or journal. If the project is primarily a software or hardware artifact (in which case the thesis would for the most part be an exposition of the artifact), then it should be of sufficient quality that people would actually use it.
  3. The student must publicly present the thesis, as follows. The student and advisor form a committee of three Computer Science faculty, one of which is the advisor. In the final two weeks of the term, the student must make a formal public presentation of their work, with their committee in attendance.

In all cases, the advisor (and committee, if relevant), recommends honors, high honors, or no honors, to the department faculty, who make the ultimate decision.

If you have any questions about the Undergraduate Program, contact the Advisor to Undergraduate Students.

Honors Application

PDF iconHonors thesis form (pdf)

You can fill out this form from within Adobe Acrobat.

  • Type into the following fields: Last name, First name, Middle initial, Class, HB, Thesis advisor, Thesis title, and all Course fields that apply. If the thesis title does not fit on the first line, use the additional lines.
  • Select the appropriate grade for each course. When you click elsewhere, the GPA field will be computed automatically and then updated.
  • Print out the filled-in form when you are done. You will need to sign the hardcopy, as will your thesis advisor, before you give it to the Advisor to Undergraduate Students.

Handing In Your Honors Thesis

CS honors theses are due at 9:00 AM the day of the CS faculty meeting at which honors are decided. The CS Undergraduate Advisor will announce this date to the CS honors thesis students each year as soon as this date is determined.

An advisor has the right to require the thesis to be handed in to her or him in advance of the department's deadline. (For example, the advisor might require the thesis to be handed in to her or him before the public presentation, if the student is going for high honors.) The actual deadline, therefore, is the earlier of two times: whenever the advisor requires the thesis to be handed in, and 9:00 AM the day of the CS faculty meeting.

No extensions beyond 9:00 AM the day of the CS faculty meeting are ever possible. Never. Nunca. Won't happen. Don't even think about it.

Your thesis should be archival quality. In other words, it should be good enough that we will archive it as a Dartmouth College Computer Science Technical Report. Although you are not absolutely required to make your thesis a tech report, we prefer that you do.

Follow these steps to make your thesis a tech report:

  1. Have your advisor get a TR number from the CS office. Our TR numbers are now of the form TRYYYY-XXX, where YYYY is the year and XXX is a 3-digit number. Allow a couple of days for this step, just in case.
  2. When you produce your thesis, make sure that it has the following elements:
    • A title.
    • An abstract, which is a relatively short (1-4 paragraphs) summary of the main results of your thesis.
    • Page numbers.
    • Your advisor's name.
    • The TR number appearing above the title, in the form
      Dartmouth
      College
      Computer
      Science Technical Report TRYYYY-XXX
  3. Produce a PDF (or PostScript) file containing your entire thesis.
  4. Follow the instructions at the TR archive to submit a tech report and metadata.

Recent Honors Projects

Some of the senior theses completed in the past few years are listed below, with links to tech reports where available.

  • Katelin Bailey, 2010 (Smith)
    • Virtual Container Attestation: Customized Trusted Containers for On-demand Computing
  • Chase Decker, 2010 (Jayanti)
    • A Solution to k-Assignment in O(k) RMR Complexity
  • Robert Eastman, 2010 (Torresani)
    • Image Search Using Composite Images
  • Matthew Mukerjee, 2010 (Campbell)
  • Yiming Qi, 2010 (Zomorodian)
    • Generic Cubical Homology via Persistence
  • Loren Sands-Ramshaw, 2010 (Smith)
    • Creating Large Disturbances in the Power Grid: Methods of Attack After Cyber Infiltration
  • Kate Schnippering, 2010 (Pellacini)
  • Karn Seth, 2010 (Chakrabarti)
  • Linden Vongsathorn, 2010 (Choudhury and Pellacini)
    • Developing Techniques for the Visualization of Behavioral Patterns in Daily Activities
  • Andrew Wansley, 2010 (Jayanti)
    • Implementations of Constant RMR Reader-Writer Lock and Variants
  • Marco Adelfio, 2005 (Chakrabarti)
    • Lower Bounds of the Communication Complexity of Shifting
  • Matthew Bell, 2005 (Balkcom)
    • Utilizing Motion Planning with Friction and Uncertainty to Develop a Toy Rock Climbing Robot
  • Patrick Brady, 2005 (Linder)
    • GPS-Based Direction Provider Photographic Landmarks
  • Alexander Clay, 2005 (Linder)
    • Path-Planning for a Mobile Wall-Climbing Robot
  • Twum Djin, 2005 (Smith)
  • Ohene Kwasi Ohene-Adu, 2005 (Linder)
    • Force Feedback and Tilt Sensing
  • Gary Morris, 2005 (McIlroy)
    • A Binding Time Analysis Technique for Functional Programming Languages
  • Alexei Pytel, 2005 (Drysdale)
    • Image Thinning
  • Nebojsa Sabovic, 2005 (Cormen)
    • Performing Out-of-Core Mixed-Radix Permutations on Parallel Disk Systems
  • David Schnur, 2005 (Smith)
    • GPUGrid: A Framework for Distributed Computation Across GPU Networks
  • Michael Swift, 2005 (Linder)
    • 3D Reconstruction on Consumer Grade Video Cards
  • Timothy Williamson, 2005 (Linder)
    • Integrating a Human Figure into an Animation by Interpolating Key Poses
  • Ling Yan, 2005 (Bailey-Kellogg)
    • Industry Ecosystem Processing and Analysis System
  • Derek Allen, 1993 (Sandon)
    • On the use of structure to optimize neural network performance using the game of tetris
  • Lewis Cirne, 1993 (Brown)
    • Yakkity Yak: A Macintosh front end to network chat programs
  • Christopher Bingham, 1992 (Walinsky)
    • Exploring Hybrid Genetics-Based Machine Learning: A Non-Stimulus-Response Animat Problem Incorporating State
  • Jeff Cobb, 1992 (Walinsky)
    • Applying Artificial Neural Network Classifiers to Handwritten Character Recognition
  • James Gochee, 1992 (Kotz)
  • Brendan Hahn, 1992 (Kotz)
    • Anthrax: A system for parallel distributed computation
  • Nicholas P. Wilt, 1992 (Drysdale)
    • OORT- an Object Oriented Ray Tracer