The undergraduate computer science option introduces students to the mathematical and engineering foundations of the discipline. It provides considerable flexibility in course selection, together with a capstone project giving an opportunity for independent work in an area of the student’s choice. 

A set of "core" courses give students a strong foundation in programming principles, algorithms and complexity, and computing systems. Additional advanced coursework is organized around several "tracks" in which greater depth is obtained in topic areas such as networking, distributed systems, robotics, machine learning, graphics, databases, and more. Students are provided a variety of research opportunities, both through the SURF (Summer Undergraduate Research Fellowships) program and the required capstone project sequence.

The department expects undergraduate majors to achieve

  • a thorough understanding of the mathematical and algorithmic foundations of computer science,
  • a depth of knowledge, and an understanding of the research frontiers, in at least one subfield of computer science,
  • experience in working on a significant project, typically as part of a team,
  • an appreciation of the scope of applications of computing in information systems and across science and engineering,
  • an ability to apply computational thinking to a wide variety of problems both inside and outside Computer Science,
  • an understanding of how to critically evaluate computer science research
  • an ability to effectively communicate their ideas in writing and in oral presentations.