QuickGuide for SEAS CS Students

This QuickGuide is for SEAS students thinking of majoring or minoring in Computer Science. It explains how the program is structured, what courses to take, and when to take them.

The Computer Science Major at Columbia for SEAS

Computer Science majors in SEAS at Columbia study an integrated curriculum consisting of a broad core of 10 foundational courses, three calculus courses, and an upper-level track of 10 advanced courses chosen from one of five elective tracks for a total of 71 or 72 points. Upper-level students in Computer Science may assist faculty members in research projects. Graduates of the Computer Science program can step into career positions in industry or government, or continue their education in graduate or professional degree programs in a wide range of disciplines.

Getting started

Try to take the introductory sequence of courses in Computer Science (COMS W1004, W1007, W3157, W3203, and W3137) in your first two years. This will enable you to complete most of the CS core and to start your upper-level CS track in your junior year, which will provide you with a broad choice of electives in your chosen track. Although not absolutely necessary, taking W3137 by first semester junior year is strongly recommended.

First take CS I: Intro to Computer Science and Java Programming (W1004) in either semester of your freshman year. This course introduces you to basic computer science concepts and problem-solving techniques using Java. CS I assumes you have little or no programming experience. If you took AP CS in Java in high school and got a 4 or 5, then you can go directly into CS II (W1007) and get credit for W1004 upon successfully completing CS II. If you have already done extensive programming but didn't take AP CS in Java, talk to the CS II instructor to see if you need to take CS I.

Then take CS II: Intro to Computer Science (W1007). This course goes into advanced computer science concepts (like recursion) and in-depth Java programming, and is a prerequisite for Advanced Programming and Data Structures. CS II requires CS I or AP CS as a prerequisite.

Then take Advanced Programming (W3157) and Data Structures and Algorithms (W3137). Advanced Programming teaches C, C++, Internet programming, and Unix utilities. It assumes students have taken CS II (W1007 or W1009). Data Structures and Algotithms is taught using Java and can be taken during the same semester.

Take Discrete Math (W3203) concurrently with CS II (W1007) or with CS III (W3157) in your second year.

CS core curriculum

The core of the Computer Science curriculum for SEAS CS majors is built with the following ten courses. These courses provide the foundation for the tracks and the advanced courses.
  1. CS I: Intro to Computer Science and Programming in Java (COMS W1004)
  2. CS II: Object-Oriented Programming and Design in Java (COMS W1007)
  3. Advanced Programming (COMS W3157)
  4. Data Structures and Algorithms (COMS W3137)
  5. Discrete Mathematics (COMS W3203)
  6. Scientific Computing (COMS W3210)
  7. Computational Linear Algebra (COMS W3251)
  8. Computer Science Theory (COMS W3261)
  9. Fundamentals of Computer Systems (CSEE W3827)
  10. Probability and Statistics (SIEO W4150 or SIEO W3600)

Tracks

The upper-level curriculum in Computer Science is organized into tracks of electives that allow you to select one of five major areas of Computer Science for study in greater depth. In your second year you might want to discuss which track you should take with your advisor.

Foundations of Computer Science track

This track is for students interested in algorithms, computational complexity, scientific computing, and security.
  • Three required courses
    • CSOR W4231 Analysis of Algorithms, I
    • COMS W4236 Introduction to Computational Complexity
    • COMS W4241 Numerical Algorithms and Complexity
  • Two breadth courses
    • Any two 3-point COMS 3000- or 4000-level courses except those in the CS core or in the required or elective courses for this track
  • Any five elective courses from this list
    • COMS W4203 Graph Theory
    • COMS W4205 Combinatorial Theory
    • COMS W4252 Introduction to Computational Learning Theory
    • COMS W4261 Introduction to Cryptography
    • COMS W4281 Introduction to Quantum Computing
    • COMS W4444 Programming and Problem Solving
    • COMS W4771 Machine Learning
    • COMS W4772 (E6772) Advanced Machine Learning
    • COMS W4995 Math Foundations of Machine Learning
    • COMS E6232 Analysis of Algorithms II
    • COMS E6261 Advanced Cryptography
    • COMS E6717 Information Theory
    • COMS E6998 Approximation Algorithms

Systems Track

This track is for students interested in networking, programming languages, operating systems, and software systems.

  • Three required courses
    • COMS W4115 Programming Languages and Translators
    • COMS W4118 Operating Systems
    • CSEE W4119 Computer Networks
  • Two breadth courses
    • Any two 3-point COMS 3000- or 4000-level courses except those in the CS core or in the required or elective courses for this track
  • Any five elective courses from this list
    • Any COMS W41xx course
    • Any COMS W48xx course
    • COMS W4444 Programming and Problem Solving
    • COMS W3902 Undergraduate thesis (counts as two courses)
    • 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
    • COMS E6901 Projects in computer science
    • Any COMS E61xx course with advisor approval
    • Any COMS E68xx course with advisor approval

Artificial Intelligence Track

This 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.
  • One required course
    • COMS W4701 Artificial Intelligence
  • Plus any two required courses from this list
    • COMS W4705 Natural Language Processing
    • COMS W4706 Spoken Language Processing
    • COMS W4731 Computer Vision
    • COMS W4733 Computational Aspects of Robotics
    • COMS W4771 Machine Learning
  • Two breadth courses
    • Any two 3-point COMS 3000- or 4000-level courses except those in the CS core or in the required or elective courses for this track
A.I. track students take a total of 5 elective courses:
  • Up to five elective courses can be taken from this list
    • COMS W40xx (any course, with advisor approval)
    • COMS W4165 Computational Techniques in Pixel Processing
    • COMS W4252 Introduction to Computational Learning Theory
    • COMS W47xx (any course, if not used as a required course)
    • COMS W4995 Special Topics I (with advisor approval; may be repeated)
    • COMS W4996 Special Topics II (with advisor approval; may be repeated)
    • COMS E67xx (any course)
    • COMS E6998 Topics in Comp Sci I (with advisor approval)
    • COMS E6999 Topics in Comp Sci II (with advisor approval)
  • Up to two elective courses from this list
    • COMS W3902 Undergraduate thesis (with advisor approval; may be repeated)
    • COMS W3998 Undergraduate projects in computer science (with advisor approval; may be repeated)
    • COMS W4901 Projects in computer science (with advisor approval; may be repeated)
    • COMS E6901 Projects in computer science (with advisor approval; may be repeated)
  • Up to one elective course from this list
    • COMS W4111 Introduction to Databases
    • COMS W4160 Computer Graphics
    • COMS W4170 User Interface Design
    • COMS W4999 Computing and the Humanities

Applications Track

This track is for students interested in interactive multimedia applications for the Internet and wireless networks.
  • Three required courses
    • COMS W4115 Programming Languages and Translators
    • COMS W4170 User Interface Design
    • COMS W4701 Artificial Intelligence
  • Two breadth courses
    • Any two 3-point COMS 3000- or 4000-level courses except those in the CS core or in the required or elective courses for this track
  • Any five elective courses from this list
    • Any COMS W41xx course
    • Any COMS W47xx course
    • COMS W3902 Undergraduate thesis (counts as two courses)
    • 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
    • COMS E6901 Projects in computer science
    • Any COMS E69xx course with advisor approval

Vision and Graphics Track

This track is for students interested in vision, graphics, and advanced forms of human-computer interaction.

  • Two required courses
    • COMS W4731 Computer Vision
    • COMS W4160 Computer Graphics
    • COMS W4167 Computer Animation
  • Two breadth courses
    • Any two 3-point COMS 3000- or 4000-level courses except those in the CS core or in the required or elective courses for this track
  • Any six elective courses from this list
    • COMS W4162 Advanced Computer Graphics
    • COMS W4165 Computational Techniques in Pixel Processing
    • COMS W4167 Computer Animation
    • COMS W4170 User Interface Design
    • COMS W4172 3D User Interfaces
    • COMS W4701 Artificial Intelligence
    • COMS W4733 Computational Aspects of Robotics
    • COMS W4735 Visual Interfaces to Computers
    • COMS W4771 Machine Learning
    • COMS W4995 Video Grame Technology and Design
    • COMS W3902 Undergraduate thesis (counts as two courses)
    • 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
    • COMS E6901 Projects in computer science
    • Any COMS E691x course with advisor approval

No more than 6 points of project/thesis courses (COMS W3902, W3998, W4901, E6901) can count toward the major in any track. The required track courses should be taken as early as possible starting in the junior year.

An advanced version of each track is available for qualified students who would like extra opportunities for advanced learning.

The courses and requirements for each track are spelled out in detail in the SEAS Bulletin.

In order to provide students with as large a variety of elective courses as possible, some electives are only offered every other year.  Therefore, a student who begins taking track courses as a first semester junior has a full range of choices. If a student delays taking track courses until the second semester of the junior year, the range of choices is narrowed. Waiting to take track courses until the first semester of the senior year will conceivably delay graduation.

Scheduling your CS courses

The list below is a suggested path to a BS major. It's not cast in stone and taking courses earlier than shown offers many advantages. Taking courses more than one semester later than suggested may foreclose some options.

  • Freshman Year
    • Fall or Spring: COMS W1004 (CS I: Intro to CS and Java Programming)
  • Sophomore Year
    • Fall: COMS W1007 (CSII: Intro to CS) and COMS W3203 (Discrete Math)
    • Spring: COMS W3157 (Advance Programming) and COMS W3137 (CS IV: Data Structures and Algorithms) and COMS W3210 (Scientific Computation)
  • Junior Year
    • Fall: COMS W3251 (Computational Linear Algebra), COMS W3261 (Computer Science Theory), CSEE W3827 (Fundamentals of Computer Systems) and one track course
    • Spring: SIEO W4150 or SIEO W3600 (Probability and Statistics) and three track courses
  • Senior Year
    • Fall: three track courses
    • Spring: three track courses

Faculty advisor

Every Computer Science major is assigned a faculty advisor who is a leading computer science researcher. You should meet with your advisor at least once a semester to discuss your progress in the Computer Science program.

 

Questions?

Contact the course instructor if you have questions about a given course. Contact your advisor if you have questions about what track or course of study is best for you. Contact Adam Cannon (cannon@cs.columbia.edu), the Vice Chair for Undergraduate Education, with questions about the undergraduate curriculum. Contact Remiko Moss (remimoss@cs.columbia.edu), the Assistant Director for Academic Programs, with administrative, scheduling or any other questions you might have.

 

Last Updated: 10/6/2010