The Major
As a computer science major you’ll learn algorithmic problem-solving and how computers and the complex programs running on them are organized. Like all sciences, computation science progresses through theory and experiment. You’ll develop precise formal models for concepts, reason about them mathematically, manifest them in computing hardware and software, and experimentally validate them via the scientific method.
Why Study Computer Science?
Computer science equips you to pursue a wide variety of career opportunities. You can go on to a career in computing itself, continue your studies in graduate school, or take your computer science background and skills into nearly any career you choose. Our recent graduates include software engineers at Amazon, Apple, Coinbase, Google, Meta, Microsoft; PhD. candidates at Brown, Dartmouth, Johns Hopkins, Northwestern and University of Washington; a high school computer sciences teacher, a RAND Corporation research assistant, an Air Force cybersecurity officer, a computational biologist at MIT/Harvard’s Broad Institute and a clinical researcher at McLean Hospital.
Featured Courses
Many of the world’s greatest discoveries and most consequential decisions are enabled or informed by the analysis of data from a myriad of sources. Indeed, the ability to wrangle, visualize, and draw conclusions from data is now a critical tool in the sciences, business, medicine, politics, other academic disciplines, and society as a whole.
This course investigates methods for designing efficient and reliable algorithms. By carefully analyzing the structure of a problem within a mathematical framework, it is often possible to dramatically decrease the computational resources needed to find a solution.
This course is a hands-on exploration of topics in robotics and digital fabrication. We will experience firsthand how ideas and methods from computer science can be applied to make physical objects, including robots and other machines.
Declaring the Major
Our introductory and core courses build a broad and solid base for understanding computer science. More advanced courses allow you to sample a variety of specialized areas including graphics, artificial intelligence, computer architecture, networks, compiler design and operating systems. Independent study and honors work lead you into deeper study and research on topics you care most about.
To be eligible for admission to the major, a student must have completed at least two Computer Science courses, including Computer Science 136, as well as fulfilled the Discrete Mathematics Proficiency Requirement by the end of the sophomore year. Students are encouraged to have completed two of their core courses (Computer Science 237, 256, or 270) by the end of the sophomore year and must normally have completed all three core courses by the end of the junior year.
Learning Objectives
As a computer science major, you’ll gain abilities to:
- Clearly articulate the core concepts of computing and successfully apply them using modern theoretical and programming tools.
- Precisely define, represent and algorithmically solve problems from within computing and across the arts and sciences.
- Develop precise formal models of computer systems, reason about them mathematically, manifest them in computing hardware and software, and experimentally validate them via the scientific method.
- Develop design and abstraction principles suitable for tackling problems large and small.
- Clearly communicate complex ideas orally, in writing and in collaboration with others.
Required Courses
You’ll take a minimum of 10 courses to complete the major. We updated our major requirements in Spring 2026. If you declared prior to Spring 2026 and are looking for our old requirements, please click here.
The following diagram illustrates the CS major requirements.

Introductory Courses
- CSCI 134: Introduction to Computer Science
- CSCI 136: Data Structures and Advanced Programming (placement required)
There are other introductory courses that aren’t required, but could be of interest to majors.
Core Courses
- CSCI 237: Computer Organization
- CSCI 256: Algorithm Design and Analysis
- CSCI 270: Foundations of Artificial Intelligence
Potential majors are strongly urged to complete all or most of the core courses by the end of their junior year in order to ensure that they have the appropriate prerequisites for the electives.
Elective Courses
- One systems elective
- One theory elective
- One AI elective
- One additional CS/Math/Stat elective
Students must take four elective courses such that at least one CS elective is chosen from each of the following categories: systems, theory, and AI. Since CSCI 334 covers topics related to both systems and theory, it may be taken as either a systems or theory elective, but not both.
The fourth elective course may be any 300-level or 400-level Computer Science course or a Math/Stat 200- or 300-level course. Students that choose to take a Math/Stat course as their fourth elective are encouraged, but not required, to take Math 250, Math 334, Math 341, Stat 201, or Stat 202.
Note: Computer Science courses with 9 as the middle digit (reading, research, and thesis courses) will normally not be used to satisfy the elective requirements.
Discrete Mathematics
- Math 200/220/328/334
Students must demonstrate proficiency in discrete mathematics by earning a grade of C- or better in Math 200, Math 220, Math 328, or Math 334. This requirement must be met by the end of the sophomore year.
The Computer Science Colloquium
We enrich our course offerings with talks on areas of computer science not normally covered in our curriculum. These talks are given by our faculty, faculty from other colleges and universities, computer scientists from the corporate sector and our own undergraduate majors. Additional colloquia focus on topics ranging from computer ethics to computer science graduate program. As a computer science major, you’ll attend at least 20 computer science colloquia.
Juniors and seniors are encouraged to attend at least five during each semester they are present on campus. Prospective majors in their first and second years are also encouraged to attend. A student studying away on a program approved by the Study Away Office will receive four colloquium credits for each semester away, up to a total of eight credits.
Double Majoring
The college policy is that courses can only be counted towards one major requirement. If you are double majoring in Mathematics or Statistics, course substitutions may be required in one or both majors due to overlapping requirements. You should discuss options with one of the CS faculty if you have questions about this. Note, however, that the double counting rule does not apply to concentrations.
The Major with Honors
If you’ve done well in the major, we’ll strongly encourage you to consider an honors thesis. These in-depth senior-year projects are especially important if you’re planning for graduate school or employment in the computing field. Most honors projects will involve work on problems closely related to your faculty advisor’s own research projects and offers majors the opportunity to pursue independent research in computer science.
The thesis is usually the culmination of a year’s concentrated study in a particular area and is meant to be a significant piece of written work, including an analysis and review of the literature concerning the problem examined, a discussion of all original work and the solutions devised, and a description of the work remaining to be done. Due to the nature of the field, honors work in computer science generally includes the development of a significant software package.
Current students can log-in for more information.
Student Research
In recent years, students have researched algorithm design, automatic theorem proving, program verification, the semantics of programming languages, the design of visual and object-oriented programming languages, parallel computation, computational geometry, machine learning, graph drawing, compiler optimization, and three-dimensional image rendering.
Our faculty have deep experience in a broad array of subdisciplines of computer science so you should be able to find a professor whose interests match your own. You can work with faculty on research projects through an honors thesis (more below) or through an independent study course.
Summer Research Internship
You can apply for a summer internship, which will allow you to stay on campus white working closely with a faculty member on their own research projects. Students research assistants are provided with a stipend and obtain reduced rates for room and board at the college.
Advice for Non-Majors
What you take in computer science, and when you take it, depends upon your background, your interests, and on how many such courses you plan to take.
- Those who merely want a brief introduction to computing may take our introductory classes at any time during their college career.
- Those who wish an introduction which will provide them with more powerful tools in designing and implementing computer programs should combine CSCI 134 with CSCI 136. Together these give a firm grounding and provide important skills in computing.
- You may also want to consider exploring our Data Science offerings.
Additional Guidelines and Recommendations for Non-Majors
Since many students have shown interest in obtaining a solid background in computer science without pursuing the major, we have drawn up a set of guidelines. We recommend that such students take the following set of courses:
- CSCI 134: Introduction to Computer Science
- CSCI 136: Data Structures and Advanced Programming
- Three core courses in Computer Science:
- CSCI 237: Computer Organization
- CSCI 256: Algorithm Design and Analysis
- CSCI 270: Foundations of Artificial Intelligence
- Math 200/220: Discrete Mathematics
- One elective chosen from computer science courses numbered 300 and above.
The two introductory courses and the three core courses offered by the department provide a solid introduction to a significant amount of material in computer science, while the mathematics course provides the mathematical tools and maturity necessary to gain a solid understanding of the computer science material. The last elective allows a student to specialize in an area of computer science of special interest. The department is happy to write letters of recommendation attesting to students’ abilities and background in computer science as needed.