The major consists of ten computer science courses: Introduction to Computer Science (Computer Science 101); Data Structures (Computer Science 210), Algorithms (Computer Science 231), and seven elective courses at the 200 level or above that satisfy the following requirements: at least one course in each of the areas Algorithms and Theory, Artificial Intelligence, and Systems; at least one course designated a Projects course; and at least four 300-level courses. Independent studies (except those enrolled in as part of an honors project) may be used to satisfy one of these elective requirements. Prospective majors should take Computer Science 210 as soon as possible after Computer Science 101, since this course is a prerequisite for many other computer science courses. Students, particularly those who intend to do graduate work in computer science or a related field, are encouraged to collaborate with faculty on research projects through independent studies, honors projects, and fellowship-funded summer research. These students are also encouraged to take courses in the Mathematics department; courses of particular interest are Mathematics 200, 201, 204 (same as Biology 174), 224, 225, 229, 232, 244, 252, 258, and 265.
Computer science shares interests with a number of other disciplines, e.g. probability and statistics in mathematics, logic in philosophy, and cognition in psychology. In addition, computers are increasingly being used as a tool in other disciplines, including the social sciences and the humanities as well as the natural sciences. The department encourages students to explore these relationships; courses that may be of particular interest include the mathematics courses listed above; Music 218; Philosophy 210, 223, and 233; Psychology 216 and 270; and Visual Arts 255 (same as Biology 202).
A representative diagram of the Major in Computer Science can be found on our Curriculum page »
The minor consists of five courses: Computer Science 101, Computer Science 210, and any three additional computer science courses at the 200 level or above.
The department participates in an interdisciplinary major program in computer science and mathematics.
Courses that satisfy the Algorithms and Theory requirement: Computer Science 289, 340, 345, 350.
Courses that satisfy the Artificial Intelligence requirement: Computer Science 270, 320, 355, 375, 380.
Courses that satisfy the Systems requirement: Computer Science 240, 250, 281, 360, 370.
Courses that satisfy the Projects requirement: Computer Science 240, 280, 281, 320, 340, 345, 350, 360, 370.
To fulfill the major or minor requirements, or to serve as a prerequisite for another computer science course, a grade of C- or better must be earned in a course. Courses taken with the Credit/D/Fail grading option may not be used to fulfill major or minor requirements.
Majors with an outstanding academic record are encouraged to pursue honors work during their senior year. Honors in Computer Science provides a special opportunity to pursue an extensive project as a computer scientist. Honors projects can lead to co-authorship of a paper and the opportunity to attend an international conference. A book is awarded, as a prize, annually in the Fall to a senior who has achieved the highest distinction in the Computer Science major program.
Three papers and presentations are required for the successful completion of an honors project in the computer science department. All deadlines and dates, once fixed, cannot be changed except for unusual and compelling circumstances.
A mid-semester paper and presentation and an end-of-semester paper and presentation are required.
Mid-Semester: This paper and presentation should contain a clear explanation of the problem you are attacking, a review of the relevant literature, and a description of what you are proposing to do. The exact date of the presentation will be determined at the beginning of the semester, but will take place during the last week of October. Copies of the paper should be distributed to all faculty members no less than one week before the presentation.
End-of-Semester: This paper and presentation should expand on the proposed project work, describing any preliminary results and describing in detail the work you expect to do during the spring semester, including a timeline. The presentation will take place on the first day of reading period that does not fall on a weekend. Again, copies of the paper should be distributed to all faculty members no less than one week before the presentation.
The final paper and presentation will take place on the first day of reading period that does not fall on a weekend. Although the talk should focus on your spring semester work, it should be a comprehensive account of your project, including materials presented in previous talks (e.g. the literature review), although material presented previously should be presented in less detail. Note that copies of the final paper should be distributed to all faculty members no less than ten days before the presentation.
Honors projects can lead to co-authorship of a paper and the opportunity to attend an international conference. Here are recent examples of student-coauthored papers:
Terracost: A Versatile and Scalable Approach to Computing Least-Cost-Path Surfaces for Massive Grid-Based Terrains. Thomas Hazel*, Laura Toma, Jan Vahrenhold and Rajiv Wickremesinghe. In Proceedings of the 21st Annual ACM Symposium on Applied Computing (SAC 2006), 2006. ACM 2006.
Stephen M. Majercik and Byron Boots*. DC-SSAT: A Divide-and-Conquer Approach to Solving Stochastic Satisfiability Problems Efficiently. In Proceedings of the Twentieth National Conference on Artificial Intelligence, 416-422. The AAAI Press, 2005.
Chown, E., Foil, G.*, Work, H.*, & Zhuang, Y.* (2006). AiboConnect: A simple programming environment for robotics. The proceedings of the 19th International FLAIRS Conference.
Chown, E. & Boots, B.* (2005). Learning Cognitive Maps: Finding Useful Structure in an Uncertain World. To appear in Jefferies, M. & Yeap, A. (eds.) Robot and Cognitive Approaches to Spatial Mapping.
Eric Forbell* and E. Chown, 'Lexical contact during speech perception: A connectionist model,' Proceedings of the Twenty Second Annual Meeting of the Cognitive Science Society (2000).
David K. Garnick and Nils A. Nieuwejaar*, 'Total Domination of the mXn Chessboard with Kings, Crosses, and Knights', Ars a4b Combinatoria 41 (1995), 65-75.
Stephen M. Majercik and A. P. Rusczek*, 'Faster Probabilistic Planning through More Efficient Stochastic Satisfiability Problem Encodings,' Proceedings of the Sixth International Conference on Artificial Intelligence Planning and Scheduling, AAAI Press (2002), 163-172.
A book is awarded annually in the Fall to a senior who has achieved the highest distinction in the Computer Science major program. Below are the most recent winners of this prize.
Greydon Foil, Jon Todd and Tom Hazel '05
Byron Boots '03
Andrew Rusczek '02
Douglas Vail '01
Eric Forbell '00
Kevin Saxton '99
Steven Deitz '98
Timothy Aron '96
Students who received scores of four or higher on the Computer Science A or the Computer Science AB Advanced Placement Exams will be awarded one advanced placement credit upon completion of a Computer Science course, level 210 or higher, with a grade of C or better. Students should consult the department regarding placement.
Advanced students are encouraged to pursue an independent study project, which is often done in conjunction with an ongoing faculty research project. Independent study projects in fields with strong interdisciplinary ties to computer science are also encouraged.
Independent study provides a special opportunity to work closely with a faculty member on a topic of mutual interest. Participation in faculty research provides an excellent introduction to the kind of independent thinking that is required in both graduate study and the rapidly-advancing computing field itself.
Majors with an outstanding academic record are encouraged to pursue honors work during their senior year. Honors in Computer Science provides a special opportunity to pursue an extensive project as a computer scientist. An honors project, which consists of a year of independent study work including a substantial research component, is requisite to being graduated with honors in Computer Science.
Students interested in honors are encouraged to contact their advisor, or a faculty member with appropriate research interests, by the end of their junior year.
Honors, if awarded, may be at any of three levels: Honors, High Honors, and Highest Honors. The judgement regarding any award of honors is made by the Department based on the year's work as described in the written thesis and the oral presentation, and on the student's overall record in the Department.
Spring Semester of the junior year - Begin discussions with a faculty member to find an area in which to work.
Fall Semester of the senior year - An independent study project in an area of interest, moving toward exploration of a particular research topic and formulation of a proposed project.
By the end of Reading Period - Those students who wish to continue with honors work in the Spring submit a written research proposal and make an oral presentation to the Department, summarizing the work done during the Fall, and outlining the proposed project.
Spring Semester - Enrollment for an honors project in the Spring semester requires the mutual agreement of the Department and the student, based on the proposal and presentation.
Week after Spring Vacation - A written preliminary version of the thesis submitted for supervisor's comments.
End of Reading Period - Final version of thesis submitted to the Department.
During Exam Period - Oral presentation of thesis, open to the college community.