Undergraduate 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 before the end of fall term, senior year. The student may then register for (at most two terms of) Computer Science 97, Undergraduate Research.

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), 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

Application in PDF format

You can fill out this form from within Adobe Acrobat.

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. A copy of your thesis will be sent to the Dartmouth College Library for archiving. 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.

Omar ElNaggar, 2007 (Thompson)
Analyzing Network Activity Incentivized with a Network Game
Andrew Flynn, 2007 (Smith)
WikiD: Dartmouth Wiki Implementing Fine-Grained, Decentralized Access Control
Mark Henle, 2007 (Drysdale)
Closest and Farthest-Line Voronoi Diagrams in the Plane
Darrell Hoy, 2007 (Fleischer)
Atomic Splittable Nash Equilibria in Series-Parallel Network Flow Games
Daniel Peebles, 2007 (Balkcom)
SCML: A Structural Representation for Chinese Characters
Evan Sparks, 2007 (Smith)
A Security Assessment of Trusted Platform Modules
Alexander Steinberg, 2007 (Pellacini)
Lighting with Sketches
Khanh Do Ba, 2006 (Jayanti)
Wait-Free and Obstruction-Free Snapshot
David Blinn, 2006 (Chakrabarti)
Topics in Communication Complexity
Allen Harvey Jr., 2006 (Smith)
Graceful Security Degradation: Providing Secure Data Quickly
Constantinos Neophytou, 2006 (Henderson)
SAMPLED: Shared Anonymous Music Playback using wirelEss Devices
Nicholas Santos (Smith), 2006
Limited Delegation (Without Sharing Secrets) in Web Applications
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)
Managing Access Control in Virtual Private Networks
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
Alexander Barsamian, 2004 (Smith)
Compartmentalization and Attestation Using SELinux and TPM-enhanced Hardware
Nikita Dubrovsky, 2004 (Gray)
Mobile Agents Simulation with DaSSF
Eric Krupski, 2004 (Hawblitzel)
Using Packet Types in a Packet Processing Language
Rizwan Mahmud, 2004 (Linder)
Representing Movement as Sound
Cristina Maracine, 2004 (Cormen)
Experimenting With Prefetch Instructions for Better Performance in Pipeline-Structured Computations
Paul Mazzuca, 2004 (Feustel)
Access Control in a Distributed Decentralized Network: An XML Approach to Network Security using XACML and SAML
Calvin Newport, 2004 (Kotz)
Simulating Mobile Ad hoc Networks: A Quantitative Evaluation of Common MANET Simulation Models
Joseph Pechter, 2004 (Farid and Loeb)
Enhancing Expressiveness of Speech through Animated Avatars for Instant Messaging and Mobile Phones
William Pechter, 2004 (Farid and Loeb)
Synchronizing Keyframe Facial Animation to Multiple Text-to-Speech Engines and Natural Voice with Fast Response Time
Kimberly Powell, 2004 (Smith)
Testing the Greenpass Wireless Security System
Rachel Ringel, 2004 (Jayanti)
Efficient Wait-Free Implementation of Atomic Multi-Word Buffer
Brunn Roysden III, 2004 (Cormen)
Scheduling Pipelined, Multi-Threaded Programs in Linux
Samuel Slee, 2004 (Jayanti)
Adaptive, Long-lived, Namespace-Optimal Renaming in the Asynchronous, Shared-Memory Model
Geoffrey Stowe, 2004 (Feustel)
A Secure Network Node Approach to the Policy Decision Point in Distributed Access Control

Mark Barolak, 2003 (Drysdale)
Finding Optimal Lower Bounds on Sorting Networks Through Exhaustive Search
Michael DeRosa, 2003 (Gray)
Power Conservation in the Network Stack of Wireless Sensors
Elizabeth Hamon, 2003 (Cormen)
Enhancing Asynchronous Parallel Computing
Byungil Kang, 2003 (Smith)
Strengthening Voice Authentication with Splicing Detection for Use with Untrusted Clients
Clara Lee, 2003 (Kotz)
Persistence and Prevalence in the Mobility of Dartmouth Wireless Network Users
Thomas Mueller, 2003 (Butler)
Billiards Mentor for Studying Performance of Search Algorithms in a Continuous Domain with Significant Uncertainly
Neha Narula, 2003 (Jayanti)
Eliminating Complex Synchronization Instructions in the Contention-Free Case for Mutual Exclusion Algorithms
Mindy Pereira, 2003 (Smith)
Trusted S/MIME Gateways
Evan Richardson, 2003 (Perrone)
An Evaluation of the Impact of Models for Radio Propagation on the Simulation of 802.11b Wireless Networks
Paul Seligman, 2003 (Smith)
An Exploration of Machine Learning Algorithms to Prevent Fraudulent Data Access from Online Journal Archives
Daniel Simola, 2003 (Aslam)
Discovery and Analysis of Gene Regulatory Sequence Elements in the Human Genome
Lisa A. Torrey, 2003 (Aslam)
An Active Learning Approach to Ranking Search Engines
Gabriel Vanrenen, 2003 (Smith)
Revocation of Security Capabilities: A Case Study on Distributed, Trusted Third Parties
Edward Wei, 2003 (Hawblitzel)
Using Low Level Linear Memory Management for Type-Preserving Mark-Sweep Garbage Collector

Kwang-Hyun Baek, 2002 (Jayanti)
Mutual Exclusion with Process Priorities
Marco Barreno, 2002 (Smith)
The Future of Cryptography under Quantum Computers
Kobby Essien, 2002 (Akay)
Analysis of Protein Sequences Using Time Frequency and Kolmogorov-Smirnov Methods
Sebastien Lahaie, 2002 (Aslam)
Information-theoretic Bounds on the Training and Testing Error of Boosting
Christopher Masone, 2002 (Kotz)
Role Definition Language (RDL): A Language to Describe Context-Aware Roles
A. Abram White, 2002 (Kotz)
Performance and Interoperability In Solar

Jeremy T. Fineman, 2001 (Cormen)
Optimizing the Dimensional Method for Performing Multidimensional, Multiprocessor, Out-of-Core FFTs
Alex Iliev, 2001 (Smith)
An Armored Data Vault
Mehmet Iyigun, 2001 (Nicol)
DaSSFNet: An Extension to DaSSF for High-Performance Network Modeling
Ammar Khalid, 2001 (Kotz)
A Directory Infrastructure to Support Mobile Services
Mikhail G. Khankin
TCP/IP Implementation within the Dartmouth Scalable Simulation Framework
Eric Kidd, 2001 (Hawblitzel)
Efficient Compression of Generic Function Dispatch Tables
David D. Latham, 2001 (Aslam)
An Empirical Study of Training and Testing Error in Boosting
Aidan S. Marcuss, 2001 (Makedon)
EcomRISK.org : A site to classify and organize the risks of performing business on the Internet
David Marmaros, 2001 (Rus and Kotz)
A System for Audio Personalization with Applications on Wireless Devices
Arun Mathias, 2001 (Kotz)
SmartReminder: A Case Study on Context-Sensitive Applications
G. Ayorkor Mills-Tettey, 2001 (Kotz)
Mobile Voice Over IP (MVOIP): An Application-level Protocol
Sean Richardson, 2001 (Smith)
Whom Can You Trust? Designing a System to Evaluate and Represent the Security State of Machines Using PKI
Jeremy I. Robin, 2001 (Drysdale)
Fastab: Solving the Pitch to Notation Problem
Thomas B. Stephens, 2001 (Wilson)
Improving a Brokering System for Linking Distributed Simulations
Pablo Stern, 2001 (Kotz)
Measuring Early Usage of Dartmouth's Wireless Network
Tiffany M. Wong, 2001 (Cormen)
An Implementation of Object-Oriented Program Transformation for Thought-Guided Debugging
Implementing a Database Information System for an Electronic Baseball Scorecard

Karolyn Abram, 2000 (Rockmore)
Registration of Images with Dissimilar Contrast using a Hybrid Method Employing Correlation and Mutual Information
John C. Artz, 2000 (Kotz and Rus)
Personal Radio
Debbie O. Chyi, 2000 (Kotz)
An Infrastructure for a Mobile-Agent System that Provides Personalized Services to Mobile Devices
Ezra E.k. Cooper, 2000 (Gray)
An Economic CPU-Time Market for D'Agents
Cenk Ergan, 2000 (Kotz)
Porting the Minix File System to Windows NT
Eric Greenberg, 2000 (Rockmore)
A Simulation of Auroral Absorption
David B. Martin, 2000 (Farid)
Depth from Flash
Fred Reiss, 2000 (Aslam)
Automated Information Organization for Information Retrieval
Dan Scholnick, 2000 (Aslam)
JBoost: A Java platform for experimenting with boosting algorithms

Lauren Baptist, 1999 (Cormen)
Two Algorithms for Performing Multidimensional, Multiprocessor, Out-of-Core FFTs
James Chalfant, 1999 (Nicol)
Parallel DaSSF Discrete-Event Simulation without Shared Memory
Jeffrey Isaacs, 1999 (Aslam)
Investigating Measures for Pairwise Document Similarity
Marisa Kolodny, 1999 (Rus)
Computers, Art and Smart Rooms: A Smart Picture Frame that Senses the Weather and Genetically Evolves Images
David Kung, 1999 (Cybenko)
Improved Computer Detection and Mapping of Cerebral Oxygenation
Artem Lifschitz, 1999 (Rus)
An Environment for the Facilitation of Robotic Programming
Matthew Pearson, 1999 (Cormen)
Fast Out-of-Core Sorting on Parallel Disk Systems
Hongxia Quan, 1999 (Nicol)
The implementation of DaSSF OTcl APIs
April Rasala, 1999 (Stein)
Existence Theorems for Scheduling to Meet Two Objectives
Marsette Vona, 1999 (Rus)
A Two Dimensional Crystalline Atomic Unit Modular Self-reconfigurable Robot
Jason Whaley, 1999 (Aslam)
An Application of Word Sense Disambiguation to Information Retrieval
Alik Widge, 1999 (Donald)
A Method for Automatic Determination of Protein Secondary Structure from Sparse Unassigned Heteronuclear NMR Data

Chrissy Alvarado, 1998 (Rus)
Distributed Route Planning Using Partial Map-Building
Bill Bleier, 1998 (Makedon)
Authoring 3D Multimedia Stimuli for Functional Brain Mapping
Matt Carter, 1998 (Aslam)
Boosting a Simple Weak Learner For Classifying Handwritten Digits
Peter DeSantis, 1998 (Cormen)
Avoiding Conflicts Dynamically in Direct Mapped Caches with Minimal Hardware Support
Susanna Leng, 1998 (Donald)
Data-directed conformational search: using global optimization to determine large protein structure from sparse NOE data
Chris Leon, 1998 (Cormen)
An Implementation of External-Memory Depth-First Search
Cem Paya, 1998 (Morris)
A framework for World Wide Web client-authentication protocols
Jack Pien, 1998 (Aslam)
C Compiler Targeting the Java Virtual Machine
Mike Pryor, 1998 (Aslam and Davis)
The Effects of Singular Value Decomposition on Collaborative Filtering
Mike Ross, 1998 (Rus)
Multiscouting: Guiding distributed manipulation with multiple mobile sensors
Eric White, 1998 (Kotz)
A Comparison of Mobile Agent Migration Mechanisms

Jon Feldman, 1997 (Stein)
The Complexity of Clerkship Scheduling
Eric Hagen, 1997 (Aslam)
An Information Retrieval System for Performing Hierarchical Document Clustering
Simon Holmes a Court, 1997 (Danskin)
Admission Control Policies for Internet File Transfer Protocols
Dawn Lawrie, 1997 (Rus)
Self-Organizing File Cabinet
Ka-Tak Lo, 1997 (Danskin)
KLZ: A Prototype X Protocol Compression System

Mark Giles, 1996 (Rus)
The virtual yellow page system and cooperation between transportable agents
Jonathan Moore, 1996 (Danskin)
Object-oriented Scenes for Virtual Light
Denis Serenyi, 1996 (Danskin)
Segmenting Workstation Screen Images
Scott Silver, 1996 (Kotz)
Implementation and Analysis of Software-based Fault Isolation
Bin Song, 1996 (Jayanti)
Space Complexity Lower Bound of 1-Tolerant Self-Implementation of Consensus
Michael Taylor, 1996 (Healy)
MRI on the Fly: Accelerating MRI Imaging Using LOA Classification with LOB Feature Extraction
Joel Thomas, 1996 (Kotz)
The Panda Array I/O Library on the Galley Parallel File System

Matthew Cheyney, 1995 (Stein and Danskin)
Can Biological Computation be Used to Factor Large Numbers
Scott Cushman, 1995 (Cormen)
A Multiple Discrete Pass Algorithm on a DEC Alpha 2100
Kenneth Harker, 1995 (Kotz)
TIAS: A Transportable Intelligent Agent System
Daniel Kranowski, 1995 (Rus)
Morpho-lexical and Syntactic Elements of Natural Language and Understanding
Song Bac Toh, 1995 (Kotz)
Simulation of a Video-on-Demand System

Kristin Bruhl, 1994 (Cormen)
BMMC Permutations on a DECmpp 12000/Sx
Christine McGavran, 1994 (Cormen)
Human Creativity Through Computer Gaming
James Thomas, 1994 (Sandon)
Automated classification of leaves by quantitative analysis of vein structure from images

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)
SPEDE-- A Simple Programming Environment for Distributed Execution
Brendan Hahn, 1992 (Kotz)
Anthrax: A system for parallel distributed computation
Nicholas P. Wilt, 1992 (Drysdale)
OORT- an Object Oriented Ray Tracer

^ Top