QuickGuide for CC, GS, & Barnard CS Students

This QuickGuide is for Columbia College, General Studies, and Barnard students thinking of majoring or concentrating in Computer Science. It explains how the program is structured, what courses to take and when.

The Computer Science Major at Columbia College, General Studies, and Barnard College

Computer Science majors study an integrated curriculum consisting of a broad core of 7 foundational courses, one term of calculus, and an upper-level track of 5 or 6 advanced courses chosen from one of six elective tracks for a total of 41-44 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

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 during your junior year, which will provide you with a broad choice of electives in your chosen track.

First take CS I: Intro to Computer Science and Java Programming (W1004) in your freshman year if possible. 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 or the honors version W1009). 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). Data Structures and Algorithms is taught using Java and can be taken during the same semester.

Take Discrete Math (W3203) concurrently with CS II (W1007) or with Data Structures and Algorithms (COMS W3137).

CS core curriculum for Columbia College, General Studies, and Barnard College

The core of the Computer Science curriculum for CS majors is built with the following seven 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. Computer Science Theory (COMS W3261)
  7. Fundamentals of Computer Systems (CSEE W3827)

Tracks

The upper-level curriculum in Computer Science is organized into tracks of electives which allow you to select one of five major areas of Computer Science for study in greater depth. A track consists of 15-18 points encompassing two or three required courses, one breadth course, and one or two elective courses for a total of 5-6 courses. 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
  • One breadth course
    • Any 3-point COMS 3000- or 4000-level course except those courses in the CS core or in the required or elective courses for this track
  • One 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
  • One breadth course
    • Any 3-point COMS 3000- or 4000-level course except those courses in the CS core or in the required or elective courses for this track
  • One elective course from this list
    • Any COMS W41xx course
    • Any COMS W48xx 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, 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.
  • One required course
    • COMS W4701 Artificial Intelligence
  • Plus any two required courses from this list
    • COMS W4705 Natural Language Processing
    • COMS W4731 Computer Vision
    • COMS W4733 Computational Aspects of Robotics
    • COMS W4771 Machine Learning
  • One breadth course
    • Any 3-point COMS 3000- or 4000-level course except those courses in the CS core or in the required or elective courses for this track
  • One elective course from this list
    • COMS W3902 Undergraduate thesis (with advisor approval)
    • COMS W3998 Undergraduate projects in computer science (with advisor approval)
    • COMS W40xx (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 W4901 Projects in computer science (with advisor approval)
    • COMS W4995 Special Topics in computer science I (with advisor approval)
    • COMS W4996 Special Topics in computer science II (with advisor approval)
    • COMS E67xx (any course)
    • COMS E6901 Projects in computer science (with advisor approval)
    • COMS E6998 Topics in computer science I (with advisor approval)
    • COMS E6999 Topics in computer science II (with advisor approval)

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
  • One breadth course
    • Any 3-point COMS 3000- or 4000-level course except those courses in the CS core or in the required or elective courses for this track
  • One elective course from this 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
    • 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
  • One breadth course
    • Any 3-point COMS 3000- or 4000-level course except those courses in the CS core or in the required or elective courses for this track
  • Two 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
    • 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

Combination Track

This track is for students interested in combining Computer Science with another discipline. A selection of six related 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. The other discipline can be any one in the arts, humanities, mathematics, natural sciences, or social sciences.

The required track courses should be taken as early as possible starting in the junior year. 

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 BA major. It's not cast in stone and taking courses earlier than shown offers many advantages. The program can be entered one semester later, but entering the program a year or more later 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 (Advanced Programming) and COMS W3137 (CS IV: Data Structures and Algorithms)
  • Junior Year
    • Fall: COMS W3261 (Computer Science Theory) and one track course
    • Spring: CSEE W3827 (Fundamentals of Computer Systems) and one track course
  • Senior Year
    • Fall: one or two track courses
    • Spring: one or two track courses

For a Premedical Concentration in Computer Science at Columbia College

This concentration has 18 points in courses with 3 points in calculus, 3 points in statistics (STAT W1111 or STAT-IEOR 3611), 9 points in required Computer Science courses (COMS W1004, COMS W1007, COMS W3134 or W3137), and 3 points of elective higher-level Computer Science courses (3000 level or higher).

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 Associate 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 on 10/6/2010