Bulletin

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.)