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 startedTry to take the introductory
sequence of courses in Computer Science (COMS W1004, W1007 (or W1009),
W3157, W3203, and W3137 (or W3139)) 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 (or W3139) 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 or W1009) 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 or the honors version W3139). 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 W1009) or with CS III (W3157) in your second year.
CS core curriculumThe
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.
- CS I: Intro to Computer Science and Programming in Java (COMS W1004)
- CS II: Object-Oriented Programming and Design in Java (COMS W1007 or W1009)
- Advanced Programming (COMS W3157)
- Data Structures and Algorithms (COMS W3137 or W3139)
- Discrete Mathematics (COMS W3203)
- Scientific Computing (COMS W3210)
- Computational Linear Algebra (COMS W3251)
- Computer Science Theory (COMS W3261)
- Fundamentals of Computer Systems (CSEE W3827)
- Probability and Statistics (IEOR 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 trackThis track is for students interested in algorithms, computational complexity, scientific computing, and security.
- Three required courses
- COMS W4231 (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 TrackThis 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
- COMS 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 projects 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 TrackThis
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 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 projects I (with advisor approval; may be repeated)
- COMS W4996 Special projects 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 Database Systems
- COMS W4160 Computer Graphics
- COMS W4170 User Interface Design
- COMS W4999 Computing and the Humanities
Applications TrackThis 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 projects in computer science, I and II
- COMS E6901 Projects in computer science
- Any COMS E69xx course with advisor approval
Vision and Graphics TrackThis 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
- 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 projects 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 or COMS W1009 (CSII: Intro to CS) and COMS W3203 (Discrete Math)
- Spring: COMS W3157 (Advance Programming) and COMS W3137 or COMS W3139 (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: IEOR W4150 or SIEO W3600 (Probability and Statistics) and three track courses
- Senior Year
- Fall: three track courses
- Spring: three track courses
Faculty advisorEvery
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.
The Computer Science Minor at Columbia for SEAS Students
The
Computer Science Department offers a minor in Computer Science for SEAS
students consisting of 7 courses from the following list. Students who
pass the Computer Science Advanced Placement Exam, either A or AB, with
a 4 or 5 will receive 3 credits and exemption from COMS W1004.
- CS I: Intro to Computer Science and Programming in Java (COMS W1004)
- CS II: Object-Oriented Programming and Design in Java (COMS W1007 or W1009)
- Advanced Programming (COMS W3157)
- Data Structures and Algorithms (COMS W3133 or W3134 or W3137 or W3139)
- Discrete Mathematics (COMS W3203)
- Computer Science Theory (COMS W3261)
- Fundamentals of Computer Systems (CSEE W3827) or a 4000-level COMS technical elective.
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, or Twinkle Edwards (twinkle@cs.columbia.edu) with administrative, scheduling or any
other questions you might have. Last Updated: 4/10/2008
|