Undergraduate Program

Computer science majors at Columbia study an integrated curriculum, partially in areas with an immediate relationship to the computer, such as programming languages, operating systems, and computer architecture, and partially in theoretical computer science and mathematics. Thus, students obtain the background to pursue their interests both in applications and in theoretical developments.

Practical experience is an essential component of the computer science program. Undergraduate students are often involved in advanced faculty research projects using state-of-the-art computing facilities. Qualified majors sometimes serve as consultants at Columbia University Information Technology (CUIT), which operates several labs with microcomputers and terminals available at convenient locations on the campus.

Upper-level students in computer science may assist faculty members with research projects, particularly in the development of software. Ongoing faculty projects include algorithmic analysis, computational complexity, software tool design, distributed computation, modeling and performance evaluation, computer networks, computer architecture, CAD for digital systems, computer graphics, programming environments, expert systems, natural language processing, computer vision, robotics, computational biology, computer security, multicomputer design, user interfaces, VLSI applications, artificial intelligence, combinatorial modeling, virtual environments, and microprocessor applications. Students are strongly encouraged to arrange for participation by consulting individual faculty members and by attending the Computer Science Research Fair held at the beginning of each semester.

Most graduates of the computer science program at Columbia step directly into career positions in computer science with industry or government, or continue their education in graduate degree programs. Many choose to combine computer science with a second career interest by taking additional programs in business administration, medicine, or other professional studies.

For further information on the undergraduate computer science program, please see the home page and the Quick Guide.

The CS Major Requirements

The Undergraduate program consists of a minimum of 63 or 64 points and includes the following: ENGI E1006 which is a prerequisite to the CS major, the CS Core consisting of 7-8 classes (24-25 points), 7 Track courses (21 points), and 15 points of general technical electives.

Note: All courses toward the CS major must be taken for a letter grade. A maximum of one course worth no more than 4 points passed with a grade of D may be counted towards the major.

Any course exceptions to the noted requirements toward the CS major, all thesis, projects, special topics, and general technical electives must be approved by the faculty advisor in writing.

Prerequisite to the CS Major

ENGI E1006 Introduction to computing for engineers and applied scientists. All CS majors are required to take this course and it is recommended that they do so in their first or second semester.

The Computer Science Core

The core of the major consists of 7 or 8 courses plus one prerequisite course for a total of 8 or 9 courses. These courses provide the foundation for the tracks and advanced courses. Beginning with the class of 2023 the CS Core requirements will change as noted below.

The following are required courses toward the CS Core for the class of 2023 and beyond:

  1. COMS W1004 or W1007 (3)
  2. COMS W3134 (3) or W3137 (4)
  3. COMS W3157 (4)
  4. COMS W3203 (4)
  5. COMS W3251 (4) (recommended) or MATH UN2010 or APMA E2101 or E3101 (3)
  6. COMS W3261 (3)
  7. CSEE W3827 (3)

The following are required courses toward the CS Core for the class of 2022 and earlier:

  1. COMS W1004 or W1007 (3)
  2. COMS W3134 (3) or W3137 (4)
  3. COMS W3157 (4)
  4. COMS W3203 (3)
  5. COMS W3261 (3)
  6. MATH UN2010 or UN2020 or APMA E2101 or E3101 (3) or COMS W3251 (4)
  7. CSEE W3827 (3)
  8. STAT GU4001 or IEOR E4150 (3)


In addition, an advanced track is available by invitation for qualified students who desire an extra opportunity for advanced learning. Any course exceptions to the track requirements must be approved by the faculty advisor. All thesis, projects, special topics, and general technical electives must also be approved by the faculty advisor. The 6 predefined tracks are as follows:

  • Foundations of Computer Science
  • Software Systems
  • Digital Systems
  • Intelligent Systems
  • Applications
  • Vision, Graphics, Interactions, and Robotics

Undergraduate Thesis

A student may, with advisor approval, choose to complete a thesis in place of up to 6 points of track elective or general technical elective points. A thesis consists of an independent theoretical or experimental investigation of an appropriate problem in computer science carried out under the supervision of a Computer Science Department faculty member. A formal written report is mandatory and an oral presentation may also be required.

General Technical Electives

An additional 15 points of adviser approved general technical electives at the 3000 level or above are also required. These general technical electives should be in mathematics, science, engineering or closely related disciplines.

Advanced Placement

Students who pass the Computer Science Advanced Placement (AP) Exam with a 4 or 5 will receive 3 points of credit and an exemption from COMS W1004.