COMPUTER SCIENCE

The Bachelor of Arts degree in computer science encourages students to obtain broad exposure to the arts, humanities, and social sciences, while at the same time providing them with the appropriate computer science background necessary for graduate study or a professional career. Computers have an impact on nearly all areas of human endeavor. Therefore, the department also offers several courses intended for students who do not plan a computer science major or concentration. The computer science major offers maximum flexibility by providing students with a range of options for the specialization of their degree program. Students study a common core of fundamental topics, supplemented by a track that identifies specific areas for deeper study.

The foundations track prepares students for advanced work in fundamental theoretical and mathematical aspects of computing, including analysis of algorithms, scientific computing, and security. The systems track prepares students for immediate employment in the computer industry as well as advanced study in such areas as software engineering, operating systems, computer-aided digital design, computer architecture, programming languages, and user interfaces. The artificial intelligence track provides specialization for the student interested in natural language processing and systems capable of exhibiting “human-like” intelligence. The applications track is for students interested in the implementation of interactive multimedia content for the Internet and wireless applications. The vision and graphics track exposes students to computer vision, graphics, human-computer interaction and robotics. A combination track is available to students who wish to pursue an interdisciplinary course of study combining computer science and another field in the arts, humanities, mathematics, natural sciences, or social sciences. A student planning a combination track should be aware that one additional course is required to complete this option.

Computer Science Course Descriptions

DEPARTMENTAL OFFICE
450 Computer Science Building; (212) 939-7000
http://www.cs.columbia.edu/education/undergrad

 

DIRECTOR OF UNDERGRADUATE STUDIES
Adam Cannon
459 Computer Science Building; (212) 939-7016
cannon@cs.columbia.edu

 

ASSISTANT DIRECTOR OF ACADEMIC PROGRAMS
Remiko O. Moss
450 Computer Science Building; (212) 939-7002
remimoss@cs.columbia.edu

DEPARTMENTAL ADVISORS

For students whose last names begin with A-L:
Luis Gravano
706 CEPSR; (212) 939-7064
gravano@cs.columbia.edu
www.cs.columbia.edu/~gravano

For students whose last names begin with M-Z:
Mihalis Yannakakis
455 Computer Science Building; (212) 939-7145
mihalis@cs.columbia.edu
www.cs.columbia.edu/~mihalis

FACULTY

 

Professors
Alfred V. Aho
Peter K. Allen
Peter Belhumeur
Steven M. Bellovin
Steven K. Feiner
Jonathan L. Gross
Julia Hirschberg
Gail E. Kaiser
John R. Kender
Kathleen R. McKeown
Shree K. Nayar
Kenneth A. Ross

Henning G. Schulzrinne
Salvatore J. Stolfo
Joseph F. Traub
Stephen H. Unger
Henryk Wozniakowski
Mihalis Yannakakis
Yechiam Yemini

 

Associate Professors
Stephen Edwards
Luis Gravano
Angelos D. Keromytis
Vishal Misra
Jason Nieh
Steven M. Nowick
Ravi Ramamoorthi
Rocco Servedio

 

Assistant Professors
Adam Cannon
Luca Carloni
Eitan Grinspun
Shlomo Hershkop

Tony Jebara
Tal Malkin
Itsik Pe’er

 

Adjunct Faculty
Alexander Biliris
Markus Hofmann
Prabhakar Kudva
William B. Paley
Anargyros Papageorgiou
Alexander Pasik
Michael Rabin

Dragomir Radev
David Sturman
Bernard Yee
Mordechai Yung

REQUIREMENTS FOR A MAJOR IN COMPUTER SCIENCE
All majors should confer with the program consultant each term in planning their programs of study. Students considering a major in computer science are encouraged to talk to a program consultant during their first or second year. The requirements that follow are special to this department and must be read in conjunction with the general requirements for the bachelor's degree. This program is a major revision from prior years. As a rule, no more than 12 transfer credits will be accepted toward the major.

Program of study:

This program allows the most freedom possible in selecting a specialized track and completing the requirements during the junior and senior years. It is particularly important to complete the core requirements and to seek advice from a track consultant to better plan your course of study as early as possible. The first two introductory courses (W1004 and W1007) are taught in Java. The next two, Advanced Programming (W3157) and Data Structures and Algorithms (W3139), are taught in C/C++ so students will become multilingual. Programming classes make use of an extensive array of computing facilities available on campus.

Please see the program QuickGuide at http://www.cs.columbia.edu/education/undergrad/ccguide.

Required courses: 41 or 44 credits.

  1. Computer Science Core (23 credits): COMS W1004, W1007, W3203, W3137, W3157, W3261, and W3827. Students may take the honors class 1009 in place of 1007, and the honors class 3139 in place of 3137. Students who have taken A.P. Computer Science in high school and received a grade of 4 or 5 can waive W1004.

  2. Mathematics (3 credits): One semester of calculus.

  3. Track requirement (15 or 18 credits): Each student must fulfill the track requirement by selecting one of six upper-level tracks. Each track, except the combined track, requires five courses of which 2 or 3 are required, 1 is an elective breadth course, and 1 or 2 are elective track courses. The combined track requires a cohesive selection of six advanced courses: three 3000- or 4000-level Computer Science courses and three 3000- or 4000-level courses from another field. The elective breadth course in each track can be any 3-point COMS 3000-level or higher course that is not a Computer Science Core course or a technical elective in that track.

    1. Foundations track (15 credits): For students interested in algorithms, computational complexity, scientific computing, and security. The required track courses are COMS W4231, W4236, and W4241. The elective track courses include COMS W4203, W4205, W4252, W4261, W4281, W4444, W4771, W4772, W4995.

    2. Systems track (12 credits): For students interested in networking, programming languages, operating systems, and software systems. The required track courses are COMS W4115, W4118, and W4119. The elective track courses include any COMS W41xx course, any W48xx course, W4444, W3902, W3998, W4901, W4995, and W4996.

    3. Artificial intelligence track (12 credits): For students interested in machine learning, robotics, and systems capable of exhibiting “human-like” intelligence. The required track courses are COMS W4701, plus any two of W4705, W4731, W4733, and W4771. The elective track courses include COMS W3902, W3998, W40xx, W4165, W4252, W47xx, W4901, W4995, and W4996.

    4. Applications track (12 credits): For students interested in interactive multimedia applications for the Internet and wireless networks. The required track courses are COMS W4115, W4170, and W4701. The elective track courses include COMS W3902, W3998, W41xx, W47xx, W4901, W4995, and W4996.

    5. Vision and graphics track (12 credits): For students interested in computer vision, graphics, and advanced forms of human-computer interaction. The required track courses are COMS W4160 and W4731. The elective track courses include COMS W3902, W3998, W4162, W4165, W4170, W4172, W4701, W4733, W4735, W4771, W4901, W4995, and W4996.

    6. Combination track (15 credits): For students who wish to combine Computer Science with another discipline. A coherent selection of six courses is required: three 3000- or 4000-level Computer Science courses and three 3000- or 4000-level courses from another discipline. This track should be selected by the end of the first semester of the junior year and the courses should be planned with your advisor. Courses selected for this track are subject to advisor approval. The other discipline can be any one in the arts, humanities, mathematics, natural sciences, or social sciences.

REQUIREMENTS FOR A CONCENTRATION IN COMPUTER SCIENCE

Program of study: 23 credits.

Required courses:

Note: W1009 may be substituted for W1007, and W3139 may be substituted for W3137.

REQUIREMENTS FOR A MAJOR IN COMPUTER SCIENCE-MATHEMATICS

Departmental Advisers:

Computer Science:
To be announced.

Mathematics:
Patrick X. Gallagher
517 Math
(212) 854-4346
pxg@math.columbia.edu

The goal of this joint major is to provide substantial background in each of these two disciplines, focusing on some of the parts of each which are closest to the other. Students intending to pursue a Ph.D. program in either discipline are urged to take additional courses, in consultation with their advisers.

Required courses: This program requires a total of at least 46 credits: 20 credits in computer science, 21 credits in mathematics, and two 3-credit electives in either computer science or mathematics.

Computer Science

Mathematics

Electives

Note: All required and elective courses must be passed with a grade of C- or better to count toward the major.

COURSES OF INSTRUCTION (for a detailed description of each course, see the Computer Science Course Descriptions)