Undergraduate Programs
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. A
broad range of upper-level courses is available in topics such as artificial
intelligence, natural language processing, computational complexity, analysis of
algorithms, computer communications, combinatorial methods, computer architecture,
computer-aided digital design, computer graphics, databases, mathematical models for
computation, optimization, and programming environments. 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 the Computer Center,
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, 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.
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 at www.cs.
columbia.edu/education/undergrad and the Quick Guide at www.cs.columbia.
edu/education/undergrad/seasguide.
Technical Electives
All technical electives except
those noted in each track must be approved by the adviser. In every case, the technical
elective course must be at the 3000 level or higher. All technical electives should be
taken in computer science. With the adviser’s approval, however, courses in other
departments may be taken as technical electives; in every such case, the subject of the
course must have a strong and obvious connection with computer science. COMS W4400: Computers and society and ELEN E4901:
Telecommunication networks and applications are not acceptable as technical
electives and are the only advanced computer science courses that cannot be taken as
electives.
Students are encouraged to select
one of the following five preapproved groupings of electives called “tracks.” An
advanced version of each track is available by invitation for qualified students who
wish an extra opportunity for advanced learning.
The following courses are required as a preparation for all tracks:
COMS W1004, W1007 (or
W1009), W3137
(or W3139), W3157, W3203,
W3210, W3251, W3261, CSEE W3827, and SIEO W4150
(SIEO W3600 is an accepted substitute for W4150). Collectively, these courses are called the CS Core Curriculum.
Students who pass the Computer
Science Advanced Placement (AP) Exam, either A or AB, with a 4 or 5 will receive 3
points of credit and exemption from COMS W1004.
Note: A maximum of one course passed with a grade of D may
be counted toward the major or concentration.
Track 1: Foundations of CS Track
The foundations track is suitable
for students who plan to concentrate on theoretical computer science in graduate school
or in mathematical topics such as communications security or scientific computation in
their career plans. Register for track course COMS
E0001.
Required: 3 courses
COMS E4231: Analysis of algorithms
COMS W4236: Introduction to computational complexity
COMS W4241: Numerical algorithms and complexity
Breadth: 2 courses
Any COMS 3000- or 4000-level courses except those countable toward the CS core or foundations of CS track
Electives: any 5 courses from the following list
COMS W4203: Graph theory
COMS W4205: Combinatorial theory
COMS W4252: Computational learning theory
COMS W4261: Introduction to cryptography
COMS W4281: Quantum computing
COMS W4444: Programming and problem solving
COMS W4771: Machine learning
COMS W4772: Advanced machine learning
COMS W4995: Computational learning theory
COMS W4995: Math foundations of machine learning
COMS E6261: Advanced crytography
COMS E6717: Information theory
COMS E6998: Approximation algorithms
Track 2: Systems Track
The systems track is for students
interested in the implementation of software and/or hardware systems. Register for track
course COMS E0002. Required: 3 courses
COMS W4115: Programming languages and transltors
COMS W4118: Operating systems
CSEE W4119: Networking
Breadth: 2 courses
Any COMS 3000- or 4000-level course except those countable for the CS core or systems track
Electives: any 5 courses from the following list
Any COMS W48xx course
Any COMS W41xx course
COMS W4444: Programming and problem solving
COMS W3902: Undergraduate thesis
COMS W3998: Undergraduate projects in computer science
or COMS W4901: Projects in computer science
COMS W4995-W4996: Special topics in computer science
COMS E6901: Projects in computer science
Any COMS E61xx or E68xx course (with adviser approval)
Note: No more than 6 units of project/thesis courses (COMS W3902, COMS W3998, COMS W4901, COMS E6901) can count toward the major.
Track 3: Artificial Intelligence
Track
The artificial intelligence track
is for students interested in machine learning, robots, and systems capable of
exhibiting “human-like” intelligence. A total of ten required, breadth, and elective
courses are to be chosen from the following schedule. Register for track course COMS E0003.
Required: 1 course
COMS W4701: Artificial intelligence
Plus any 2 courses from:
COMS W4705: Natural language processing COMS W4731: Computer vision COMS W4733: Computational aspects of robotics
COMS W4771: Machine learning
Breadth: 2 courses
Any 3-point COMS 3000- or 4000-level courses except those countable toward the CS core or elective courses for the artificial intelligence track
Electives: Up to 5 courses from the following list
Any COMS W40xx course with adviser approval
COMS W4165: Pixel processing
COMS W4252: Computational learning theory
Any COMS W47xx course if not used as a required course
COMS W4995: Special projects I (with adviser approval; may be repeated)
COMS W4996: Special projects II (with adviser approval; may be repeated)
Any COMS W67xx course
COMS E6998: Topics in computer science, I (with adviser approval)
COMS E6999: Topics in computer science, II (with adviser approval)
Up to 2 courses from the following list
COMS W3902: Undergraduate thesis (with adviser approval; may be repeated)
COMS W3998: Undergraduate projects in computer science (with adviser approval; may be repeated)
COMS W4901: Projects in computer science (with adviser approval; may be repeated)
COMS E6901: Projects in computer science (with adviser approval; may be repeated)
Up to 1 course from the following list
COMS W4111: Database systems
COMS W4160: Computer graphics
COMS W4170: User interface design
COMS W4999: Computing and the humanities
Note: No more than 6 units of project/thesis courses (COMS W3902, COMS W3998, COMS W4901, COMS E6901) can count toward the major.
Track 4: Applications Track
The applications track is for
students interested in the implementation of interactive multimedia applications for the
Internet and wireless networks. Register for track course COMS E0004. Required: 3 courses
COMS W4115: Programming languages and translators
COMS W4170: User interface design
COMS W4701: Artificial intelligence
Breadth: 2 courses
Any COMS 3000- or 4000-level courses except those countable toward the CS core or applications tracks
Electives: 5 courses from the following list
Any COMS W41xx course
Any COMS W47xx course
COMS W3902: Undergraduate thesis
COMS W3998: Undergraduate projects in computer science
or COMS W4901: Projects in computer science
COMS W4995-W4996: Special topics in computer science, I and II (with adviser approval)
COMS E6901: Projects in computer science or other COMS E69xx course (with adviser approval)
Any COMS E69xx course (with adviser approval)
Note: No more than 6 units of project/thesis courses (COMS W3902, COMS
W3998, COMS W4901, COMS E6901) can count toward the major.
Track 5: Vision and Graphics Track
Objective: The vision and
graphics track exposes students to interesting new fields and focuses on visual
information with topics in vision, graphics, human-computer interaction, robotics,
modeling, and learning. Students learn about fundamental ways in which visual
information is captured, manipulated, and experienced. Register for track course COMS E0005.
Required: 2 courses
COMS W4731: Computer vision
COMS W4160: Computer graphics
Breadth: 2 courses
Any COMS 3000- or 4000-level courses except those countable toward the CS core or vision and graphics track
Electives: 6 courses from the following list
COMS W4162: Advanced computer graphics
COMS W4165: Pixel processing
COMS W4167: Computer animation
COMS W4170: User interface design
COMS W4172: 3D user interface design
COMS W4701: Artificial intelligence
COMS W4733: Computational aspects of robotics
COMS W4735: Visual interfaces to computers
COMS W4771: Machine learning
COMS W4995: Video game technology and design
COMS W3902: Undergraduate thesis
COMS W3998: Undergraduate projects in computer science
or COMS W4901: Projects in computer science
COMS W4995-W4496: Special topics in computer science, I and II (with adviser approval)
COMS E6901: Projects in computer science
Any COMS E691x course (with adviser approval)
Note: No more than 6 units of project/thesis courses (COMS W3902, COMS W3998, COMS W4901 COMS E6901) can count toward the major.
Track 6: Advanced
The advanced track of the B.S. in
Computer Science provides extra opportunity for advanced learning. It comprises
accelerated versions of the other five tracks. Entry is only by collective faculty
invitation, extended to students who have already completed the core courses and the
required courses for one of those tracks. Required TRACK COURSES
A student designates one of the five other track areas and completes the set of required track courses for that track, prior to entry into the Advanced Track. There are two or three courses, depending on the designated area.
Breadth REQUIREMENT
Two breadth courses of the designated track.
ELECTIVES
At least two 4000-level lecture courses from the menu for the designated track, plus two 6000-level courses in the designated track area.
THESIS
There is a required 6-point senior thesis.
INVITATION
Only the top 20% of computer science majors in course performance in computer science courses will be considered for invitation during the junior year. (A student in the advanced track who does not maintain this status may be required to return to his or her previously selected track area.)