- General
- Research
- Education
- Admissions
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:
- The student must demonstrate substantial independence in their work.
- 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.
- 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
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. 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:
- 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.
- 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
- Produce a PDF (or PostScript) file containing your entire thesis.
- 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
- 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