Computer Science

http://www.cs.columbia.edu

Departmental Office: 450 Computer Science Building; 212-939-7000
http://www.cs.columbia.edu/

Director of Undergraduate Studies: Dr. Jae Woo Lee, 715 CEPSR; 212-939-7066; jae@cs.columbia.edu

Departmental Advisers:
For updated adviser information, see http://www.cs.columbia.edu/education/undergrad/advisors.

For administrative advising issues please contact: advising@cs.columbia.edu.

The majors in the Department of Computer Science provide students with the appropriate computer science background necessary for graduate study or a professional career. Computers impact nearly all areas of human endeavor. Therefore, the department also offers courses for students who do not plan a computer science major or concentration. The computer science majors offer maximum flexibility by providing students with a range of options for program specialization. The department offers four majors: computer science; information science; data science; and computer science-mathematics, offered jointly with the Mathematics Department.

Computer Science Major

Students study a common core of fundamental topics, supplemented by a track that identifies specific areas for deeper study. The foundations track prepares students for advanced work in fundamental, theoretical, and mathematical aspects of computing, including analysis of algorithms, scientific computing, and security. The systems track prepares students for immediate employment in the computer industry as well as advanced study in software engineering, operating systems, computer-aided digital design, computer architecture, programming languages, and user interfaces. The intelligent systems track provides specialization for the student interested in natural language processing and systems capable of exhibiting “human-like” intelligence. The applications track is for students interested in the implementation of interactive multimedia content for the Internet and wireless applications. The vision, graphics, interaction, and robotics track exposes students to computer vision, graphics, human-computer interaction, and robotics.

A combination track is available to students who wish to pursue an interdisciplinary course of study combining computer science and another field in the arts, humanities, mathematics, natural sciences, or social sciences. A student planning a combination track should be aware that one additional course is required to complete this option.

Information Science Major

Information science is an interdisciplinary major designed to provide a student with an understanding of how information is organized, accessed, stored, distributed, and processed in strategic segments of today’s society. Recent years have seen an explosive growth of on-line information, with people of all ages and all walks of life making use of the World Wide Web and other information in digital form.

This major puts students at the forefront of the information revolution, studying how on-line access touches on all disciplines and changing the very way people communicate. Organizations have large stores of in-house information that are crucial to their daily operation. Today’s systems must enable quick access to relevant information, must ensure that confidential information is secure, and must enable new forms of communication among people and their access to information.

The information science major can choose a scientific focus on algorithms and systems for organizing, accessing, and processing information, or an interdisciplinary focus in order to develop an understanding of, and tools for, information modeling and use within an important sector of modern society such as economics or health.

Advanced Placement

The department grants 3 points for a score of 4 or 5 on the AP Computer Science exam along with exemption from COMS W1004 Introduction to Computer Science and Programming in Java. However, we still recommend that you take COMS W1004 or W1007 even if you have credits from the CS AP exam.  COMS W1007 Honors Introduction to Computer Science is recommended if you scored 5 on the AP exam, and COMS W1004 is recommended if you scored 4.

Pre-Introductory Courses

COMS W1004 is the first course in the Computer Science major curriculum, and it does not require any previous computing experience.  Before taking COMS W1004, however, students have an option to start with one of the pre-introductory courses: ENGI E1006 or COMS W1002.

ENGI E1006 Introduction to Computing for Engineers and Applied Scientist is a general introduction to computing for STEM students.  ENGI E1006 is in fact a required course for all engineering students.  COMS W1002 Computing In Context is a course primarily intended for humanities majors, but it also serves as a pre-introductory course for CS majors.  ENGI E1006 and COMS W1002 do not count towards Computer Science major.

Laboratory Facilities

The department has well-equipped lab areas for research in computer graphics, computer-aided digital design, computer vision, databases and digital libraries, data mining and knowledge discovery, distributed systems, mobile and wearable computing, natural language processing, networking, operating systems, programming systems, robotics, user interfaces, and real-time multimedia.

Research labs contain several large Linux and Solaris clusters; Puma 500 and IBM robotic arms; a UTAH-MIT dexterous hand; an Adept-1 robot; three mobile research robots; a real-time defocus range sensor; interactive 3-D graphics workstations with 3-D position and orientation trackers; prototype wearable computers, wall-sized stereo projection systems; see-through head-mounted displays; a networking testbed with three Cisco 7500 backbone routers, traffic generators; an IDS testbed with secured LAN, Cisco routers, EMC storage, and Linux servers; and a simulation testbed with several Sun servers and Cisco Catalyst routers.The department uses a SIP IP phone system. The protocol was developed in the department.

The department's computers are connected via a switched 1Gb/s Ethernet network, which has direct connectivity to the campus OC-3 Internet and internet 2 gateways. The campus has 802.11b/g wireless LAN coverage.

The research facility is supported by a full-time staff of professional system administrators and programmers.

Professors

  • Alfred V. Aho
  • Peter K. Allen
  • Peter Belhumeur
  • Steven M. Bellovin
  • David Blei
  • Michael J. Collins
  • Steven K. Feiner
  • Luis Gravano
  • Julia Hirschberg
  • Gail E. Kaiser
  • John R. Kender
  • Kathleen R. McKeown
  • Vishal Misra
  • Shree K. Nayar
  • Jason Nieh
  • Steven M. Nowick
    Christos Papadimitriou
  • Kenneth A. Ross
  • Henning G. Schulzrinne
  • Rocco A. Servedio
  • Salvatore J. Stolfo
  • Jeannette Wing
  • Mihalis Yannakakis

Associate Professors

  • Alexandr Andoni
  • Luca Carloni
  • Xi Chen
  • Stephen A. Edwards
  • Roxana Geambasu
  • Eitan Grinspun
  • Tony Jebara
  • Angelos D. Keromytis
  • Martha Allen Kim
  • Tal Malkin
  • Itsik Pe'er
  • Daniel S. Rubenstein
  • Simha Sethumadhavan
  • Junfeng Yang

Assistant Professors

  • Allison Breton Bishop
  • Augustin Chaintreau
  • Lydia Chilton
  • Yaniv Erlich
  • Ronghui Gu
  • Daniel Hsu
  • Suman Jana
  • Carl Vondrick
  • Omri Weinstein
  • Eugene Wu
  • Changxi Zheng

Senior Lecturer in Discipline

  • Adam Cannon
  • Jae Woo Lee

Lecturer in Discipline

Daniel Bauer
Paul Blaer
Ansaf Salleb-Aouissi
Nakul Verma

Associated Faculty

  • Shih-Fu Chang
    Matei Ciocarlie
  • Edward G. Coffman Jr. (emeritus)
  • Eleni Drinea
  • Jonathan Gross (emeritus)
  • Andreas Mueller
    Clifford Stein
  • Steven H. Unger (emeritus)
  • Vladimir Vapnik
  • Henryk Wozniakowski (emeritus)
  • Yechiam Yemini (emeritus)


Special Research Scientists

Henryk Wozniakowski (emeritus)

Senior Research Scientists

  • Moti Yung

Research Scientists

Smaranda Muresan*
Owen Rambow

Associated Research Scientists

  • Giuseppe DiGuglielmo
  • Hiroshi Sasaki
    Eran Tromer

Guidelines for all Computer Science Majors and Minors

Courses

Students may receive credit for only one of the following two courses:

  • COMS W1004 Introduction to Computer Science and Programming in Java
  • COMS W1005 Introduction to Computer Science and Programming in MATLAB.

Students may receive credit for only one of the following three courses:

However, COMS W1005 and COMS W3136 cannot be counted towards the Computer Science major, minor, and concentration. 

Transfer Credit

As a rule, no more than 12 transfer credits are accepted toward the major.

Grading

Courses in which the student receives the grade of D may not be counted toward the major requirement or the minor option.

Guidelines for all Computer Science Majors and Concentrators

Courses

Students may receive credit for only one of the following two courses:

  • COMS W1004 Introduction to Computer Science and Programming in Java
  • COMS W1005 Introduction to Computer Science and Programming in MATLAB.

Students may receive credit for only one of the following three courses:

However, COMS W1005 and COMS W3136 cannot be counted towards the Computer Science major, minor, and concentration. 

Transfer Credit

As a rule, no more than 12 transfer credits are accepted toward the major.

Grading

A maximum of one course worth no more than 4 points passed with a grade of D may be counted toward the major or concentration.


Major in Computer Science

All majors should confer with their program adviser each term to plan their programs of study. Students considering a major in computer science are encouraged to talk to a program adviser during their first or second year. A typical program of study is as follows:

Program of Study

Computer Science Core (22-24 points)

For students who declare in Spring 2014 and beyond:
ENGI E1006Introduction to Computing for Engineers and Applied Scientists (recommended but not required)
First Year
COMS W1004Introduction to Computer Science and Programming in Java
or COMS W1007 Honors Introduction to Computer Science
Sophomore Year
COMS W3134Data Structures in Java
or COMS W3137 Honors Data Structures and Algorithms
COMS W3157Advanced Programming
COMS W3203Discrete Mathematics: Introduction to Combinatorics and Graph Theory
Junior and Senior Year
Select the remaining required core courses:
COMS W3261Computer Science Theory
CSEE W3827Fundamentals of Computer Systems
Select one of the following courses:
MATH UN2010Linear Algebra
APMA E2101Introduction to Applied Mathematics
APMA E3101Linear Algebra
STAT GU4001Introduction to Probability and Statistics
For students who declared prior to Spring 2014:
First Year
COMS W1004Introduction to Computer Science and Programming in Java
Sophomore Year
COMS W1007Honors Introduction to Computer Science
COMS W3137Honors Data Structures and Algorithms
COMS W3157Advanced Programming
COMS W3203Discrete Mathematics: Introduction to Combinatorics and Graph Theory
Junior and Senior Year
COMS W3261Computer Science Theory
CSEE W3827Fundamentals of Computer Systems

In addition to the CS Core (22-24 points), all CS majors must complete the Calculus Requirement (3 points) and a Track Requirement (15 or 18 points). The CS major therefore requires 40-45 points total.

Mathematics (3 points)

Calculus II or Calculus III.

Note that Calculus III does NOT depend on Calculus II. You can take either Calculus II or III, but we recommend Calculus III, which covers topics that are a bit more relevant for upper-¬level Computer Science courses.

If you have received equivalent credits for Calculus I & II already (through AP Calculus exam for example), you are not required to take any more Calculus courses.  But we recommend taking one more semester of Calculus, either Math UN1201 Calculus III or APAM E2000 Multivariate Calculus for Engineers and Scientists. APAM E2000 covers relevant topics from Calculus III and IV.

Track Requirement (15 or 18 points)

Students must select one of the following six upper-level tracks. Each track, except the combination track, requires five courses consisting of required, elective breadth, and elective track courses. The combination track requires a selection of six advanced courses: three 3000- or 4000-level computer science courses and three 3000- or 4000-level courses from another field. The elective breadth requirement in each track can be fulfilled with any 3-point computer science 3000-level or higher course that is not a computer science core course or a technical elective course in that track. In addition to the breadth elective, the track requirements are as follows:

Foundations Track (15 points)

For students interested in algorithms, computational complexity, and other areas of theoretical Computer Science.

Note: Students who declared their Computer Science major prior to Fall 2016 may also count COMS 4241, COMS 4205, COMS 4281, COMS 4444, COMS 4771, and COMS 4772 as track elective courses. 

Required Courses
CSOR W4231Analysis of Algorithms I
COMS W4236Introduction to Computational Complexity
Track Electives
Select 2 from:
MATH UN3020Number Theory and Cryptography
MATH UN3025Making, Breaking Codes
COMS W4203Graph Theory
MATH GU4032Fourier Analysis
MATH GU4041Introduction to Modern Algebra I
MATH GU4042Introduction to Modern Algebra II
MATH GU4061Introduction To Modern Analysis I
MATH GU4155Probability Theory
COMS W4252Introduction to Computational Learning Theory
COMS W4261Introduction to Cryptography
APMA E4300Computational Math: Introduction to Numerical Methods
IEOR E4407Game Theoretic Models of Operations
CSPH G4801Mathematical Logic I
CSPH G4802Math Logic II: Incompletness
COMS E6232Analysis of Algorithms, II
MATH G6238Enumerative Combinatorics
COMS E6253Advanced Topics in Computational Learning Theory
COMS E6261Advanced Cryptography
EEOR E6616Convex optimization
IEOR E6613Optimization, I
IEOR E6614Optimization, II
IEOR E6711Stochastic models, I
IEOR E6712Stochastic models, II
ELEN E6717Information theory
ELEN E6718Error Correcting Codes: Classical and Modern
Adviser Approved:
COMS W3902Undergraduate Thesis
COMS W3998Undergraduate Projects in Computer Science
COMS W4901Projects in Computer Science
COMS W4995Special topics in computer science, I
COMS E6998Topics in Computer Science
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
Software Systems Track (15 points)

For students interested in networking, programming languages, operating systems, and software systems.

Required Courses
COMS W4115Programming Languages and Translators
COMS W4118Operating Systems I
CSEE W4119Computer Networks
Track Electives
Select 1 from:
Any COMS W41xx course
COMS W4444Programming and Problem Solving
Any COMS W48xx course
Adviser Approved:
COMS W3902Undergraduate Thesis
COMS W3998Undergraduate Projects in Computer Science
COMS W4901Projects in Computer Science
COMS W4995Special topics in computer science, I
COMS W4996Special topics in computer science, II
Any COMS E68XX course
Any COMS E61XX course
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
Intelligent Systems Track (15 points)

For students interested in machine learning, robotics, and systems capable of exhibiting “human-like” intelligence.

Required Courses
Select two of the following courses:
COMS W4701Artificial Intelligence
COMS W4705Natural Language Processing
COMS W4706Spoken Language Processing
COMS W4731Computer Vision
COMS W4733Computational Aspects of Robotics
COMS W4771Machine Learning
Track Electives
Select 2 from:
COMS W4252Introduction to Computational Learning Theory
Any COMS W47xx course
Any COMS E67XX course
Adviser Approved:
COMS W3902Undergraduate Thesis
COMS W3998Undergraduate Projects in Computer Science
COMS W4901Projects in Computer Science
COMS W4995Special topics in computer science, I
COMS E6998Topics in Computer Science
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
Applications Track (15 points)

For students interested in interactive multimedia applications for the internet and wireless networks.

Required Courses
COMS W4115Programming Languages and Translators
COMS W4170User Interface Design
Track Electives
Select 2 from:
Any COMS W41xx course
Any COMS W47xx course
Adviser Approved:
COMS W3902Undergraduate Thesis
COMS W3998Undergraduate Projects in Computer Science
COMS W4901Projects in Computer Science
COMS W4995Special topics in computer science, I
Any COMS E69XX course
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
Vision, Graphics, Interaction, and Robotics Track (15 points)

For students interested in computer vision, graphics, and advanced forms of human computer interaction.

Required Courses
Select two of the following courses:
COMS W4160Computer Graphics
COMS W4167Computer Animation
COMS W4731Computer Vision
Track Electives
Select 2 from:
COMS W4162Advanced Computer Graphics
COMS W4170User Interface Design
COMS W41723D User Interfaces and Augmented Reality
COMS W4701Artificial Intelligence
COMS W4733Computational Aspects of Robotics
COMS W4735Visual Interfaces to Computers
COMS W4771Machine Learning
Adviser Approved:
COMS W3902Undergraduate Thesis
COMS W3998Undergraduate Projects in Computer Science
COMS W4901Projects in Computer Science
COMS W4995Special topics in computer science, I
Any COMS E69XX course
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
Combination Track (18 points)

For students who wish to combine computer science with another discipline in the arts, humanities, social or natural sciences.  A coherent selection of six upper-level courses is required: three from computer science and three from another discipline.  

The courses should be planned with and approved by the student’s CS faculty advisor by the first semester of the junior year.  The six courses are typically 4000-level elective courses that would count towards the individual majors.  Moreover, the six courses should have a common theme.  The combination track is not available to those students who pursue double majors.


Major in Computer Science—Mathematics

For a description of the joint major in computer science—mathematics, see the Mathematics section in this bulletin.

For a description of the joint major in computer science—mathematics, see the Mathematics section in this bulletin.

For a description of the joint major in mathematics—computer science, see the Mathematics section in this catalog.


Major in Information Science

Please read Guidelines for all Computer Science Majors and Concentrators above.

The major in information science requires a minimum of 33 points including a core requirement of five courses. Students must then select at least six upper-division elective courses, focusing on an information-intensive thematic area.

Core Requirement

COMS W1001Introduction to Information Science
or COMS W1002 Computing in Context
COMS W1004Introduction to Computer Science and Programming in Java
COMS W1007Honors Introduction to Computer Science
COMS W3134Data Structures in Java
STAT GU4001Introduction to Probability and Statistics
or SIEO W3600 Introduction to Probability and Statistics

The elective courses should be chosen with a faculty adviser to focus on the modeling and use of information within the context of a disciplinary theme. Following are some suggested programs of instruction:

Information Science and Contemporary Society

Students can focus on the fundamental principles and technologies involved in the organization, searching, transmission, and manipulation of on-line information by studying database management systems, information retrieval systems, Web search engines, and natural language processing technology.

Alternatively, students may focus on how humans use technology and how technology has changed society. Given that these systems and technology often involve substantial interaction with humans, students are encouraged to take courses from human-focused areas such as human-computer interaction, psychology, and sociology.

The requirements include:

Three courses involving processing of text or data such as the following:
COMS W4111Introduction to Databases
COMS W4705Natural Language Processing
COMS W4771Machine Learning
Two courses from human-focused areas such as the following:
COMS W4170User Interface Design
PSYC W2215Cognition and the Brain
Two application courses (e.g., from economics or biology)

Information Science and the Economy

Students can focus on understanding information modeling together with existing and emerging needs in economics and finance, as well as algorithms and systems to address those needs by taking courses in economics, finance, artificial intelligence, and mathematical modeling. For example, students may take courses in machine learning, statistics, and econometrics to understand how computers are enabling prediction modeling in many disciplines.

The requirements include:

Two courses in artificial intelligence and mathematical modeling such as the following:
COMS W4701Artificial Intelligence
COMS W4771Machine Learning
One course involving processing of text or data such as the following:
COMS W4111Introduction to Databases
Two courses each in economics and finance such as the following:
Economics:
ECON UN1105Principles of Economics
ECON BC3017Economics of Business Organization
Finance:
IEOR E4007Optimization Models and Methods for Financial Engineering
IEOR E4308Industrial Budgeting and Financial Control

Information Science and Health Sciences

Students can focus on understanding information modeling together with existing and emerging needs in health sciences, as well as algorithms and systems to address those needs by taking courses in computational biology, computational genomics, and biomedical informatics. For example, students may take courses that integrate computer science and biology, leading to understanding the role that computational processes play in decoding the human genome.

The requirements include:

Three courses in either artificial intelligence and mathematical modeling, processing of text or data, or human computer interaction such as the following:
Artificial Intelligence and Mathematical Modeling:
COMS W4701Artificial Intelligence
Processing of Text or Data:
COMS W4111Introduction to Databases
Human Computer Interaction:
COMS W4170User Interface Design
Three courses drawn from the biomedical area such as the following:
BINF G4001Introduction To Computer Applications In Health Care and Biomedicine
BIOL W4037Bioinformatics of Gene Expression
ECBM E3060/E4060Introduction to genomic information science and technology
One course drawn from a human centered area such as the following:
PSYC W2215Cognition and the Brain

Major in Data Science

Please read Guidelines for all Computer Science Majors and Concentrators above.

In response to the ever growing importance of "big data" in scientific and policy endeavors, the last few years have seen an explosive growth in theory, methods, and applications at the interface between computer science and statistics. The statistics and computer science departments have responded with a joint-major that emphasizes the interface between the disciplines.

Prerequisites (15 points)
MATH UN1101Calculus I
MATH UN1102Calculus II
MATH UN1201Calculus III
MATH UN2010Linear Algebra
Select one of the following courses:
STAT UN1001Introduction to Statistical Reasoning
STAT UN1101Introduction to Statistics
STAT UN1201Calculus-Based Introduction to Statistics
Statistics (12 points)
STAT GU4203PROBABILITY THEORY
STAT GU4204Statistical Inference
STAT GU4205Linear Regression Models
STAT GU4241Statistical Machine Learning
or COMS W4771 Machine Learning
Computer Science (12 points)
Select one of the following courses:
COMS W1004Introduction to Computer Science and Programming in Java
COMS W1005Introduction to Computer Science and Programming in MATLAB
COMS W1007Honors Introduction to Computer Science
ENGI E1006Introduction to Computing for Engineers and Applied Scientists
Select one of the following courses:
COMS W3134Data Structures in Java
COMS W3136Data Structures with C/C++
COMS W3137Honors Data Structures and Algorithms
Two required courses:
COMS W3203Discrete Mathematics: Introduction to Combinatorics and Graph Theory
CSOR W4231Analysis of Algorithms I
Electives (15 points)
Select two of the following courses:
STAT UN3106Applied Data Mining
STAT GU4206Statistical Computing and Introduction to Data Science
STAT GU4224Bayesian Statistics
STAT GU4243Applied Data Science
STAT Q4242Advanced Machine Learning
Select three of the following courses:
COMS W3261Computer Science Theory
COMS W4111Introduction to Databases
COMS W4130Principles and Practice of Parallel Programming
COMS W4236Introduction to Computational Complexity
COMS W4252Introduction to Computational Learning Theory
Any COMS W47xx course EXCEPT W4771

Minor in Computer Science

Please read Guidelines for all Computer Science Majors and Minors above.

For students who declare in Spring 2014 and beyond:

The minor in computer science requires a minimum of 22-24 points, as follows:

COMS W1004Introduction to Computer Science and Programming in Java
or COMS W1007 Honors Introduction to Computer Science
COMS W3203Discrete Mathematics: Introduction to Combinatorics and Graph Theory
COMS W3134Data Structures in Java
or COMS W3137 Honors Data Structures and Algorithms
COMS W3157Advanced Programming
COMS W3261Computer Science Theory
CSEE W3827Fundamentals of Computer Systems (or any 3 point 4000-level computer science course)
Select one of the following courses:
MATH UN2010Linear Algebra
APMA E2101Introduction to Applied Mathematics
APMA E3101Linear Algebra
MATH V2020Honors Linear Algebra
STAT GU4001Introduction to Probability and Statistics
SIEO W3600Introduction to Probability and Statistics

For students who declared prior to Spring 2014:

The minor requires a minimum of 23 points, as follows:

COMS W1004Introduction to Computer Science and Programming in Java
COMS W1007Honors Introduction to Computer Science
COMS W3137Honors Data Structures and Algorithms
COMS W3157Advanced Programming
COMS W3261Computer Science Theory
CSEE W3827Fundamentals of Computer Systems (or any 3-point 4000-level computer science course)

Concentration in Computer Science

Please read Guidelines for all Computer Science Majors and Concentrators above.

For students who declare in Spring 2014 and beyond:

The concentration in computer science requires a minimum of 22-24 points, as follows:

COMS W1004Introduction to Computer Science and Programming in Java
or COMS W1007 Honors Introduction to Computer Science
COMS W3134Data Structures in Java
or COMS W3137 Honors Data Structures and Algorithms
COMS W3157Advanced Programming
COMS W3203Discrete Mathematics: Introduction to Combinatorics and Graph Theory
COMS W3261Computer Science Theory
CSEE W3827Fundamentals of Computer Systems (or any 3 point 4000-level computer science course)
Select one of the following courses:
MATH UN2010Linear Algebra
MATH V2020Honors Linear Algebra
APMA E2101Introduction to Applied Mathematics
APMA E3101Linear Algebra
STAT GU4001Introduction to Probability and Statistics
SIEO W3600Introduction to Probability and Statistics

For students who declared prior to Spring 2014:

The concentration requires a minimum of 23 points, as follows:

COMS W1004Introduction to Computer Science and Programming in Java
COMS W1007Honors Introduction to Computer Science
COMS W3137Honors Data Structures and Algorithms
COMS W3157Advanced Programming
COMS W3261Computer Science Theory
CSEE W3827Fundamentals of Computer Systems (or any 3-point 4000-level computer science course)

Computer Science

COMS W1001 Introduction to Information Science. 3 points.

Lect: 3.

Basic introduction to concepts and skills in Information Sciences: human-computer interfaces, representing information digitally, organizing and searching information on the World Wide Web, principles of algorithmic problem solving, introduction to database concepts, and introduction to programming in Python.

COMS W1002 Computing in Context. 4 points.

Lect: 4.

Introduction to elementary computing concepts and Python programming with domain-specific applications. Shared CS concepts and Python programming lectures with track-specific sections. Track themes will vary but may include computing for the social sciences, computing for economics and finance, digital humanities, and more. Intended for nonmajors. Students may only receive credit for one of ENGI E1006 and COMS W1002.

Fall 2017: COMS W1002
Course Number Section/Call Number Times/Location Instructor Points Enrollment
COMS 1002 001/19718 T Th 2:40pm - 3:55pm
417 International Affairs Bldg
Adam Cannon 4 251/340

COMS W1004 Introduction to Computer Science and Programming in Java. 3 points.

Lect: 3.

A general introduction to computer science for science and engineering students interested in majoring in computer science or engineering. Covers fundamental concepts of computer science, algorithmic problem-solving capabilities, and introductory Java programming skills. Assumes no prior programming background. Columbia University students may receive credit for only one of the following two courses: 1004 and 1005.

Spring 2017: COMS W1004
Course Number Section/Call Number Times/Location Instructor Points Enrollment
COMS 1004 001/23742 T Th 5:40pm - 6:55pm
501 Schermerhorn Hall
Adam Cannon 3 103/180
COMS 1004 002/29702 T Th 4:10pm - 5:25pm
417 International Affairs Bldg
Adam Cannon 3 242/400
Fall 2017: COMS W1004
Course Number Section/Call Number Times/Location Instructor Points Enrollment
COMS 1004 001/74467 T Th 4:10pm - 5:25pm
417 International Affairs Bldg
Adam Cannon 3 322/400

COMS W1005 Introduction to Computer Science and Programming in MATLAB. 3 points.

Lect: 3.

A general introduction to computer science concepts, algorithmic problem-solving capabilities, and programming skills in MATLAB. Assumes no prior programming background. Columbia University students may receive credit for only one of the following two courses: 1004 and 1005.

COMS W1007 Honors Introduction to Computer Science. 3 points.

Lect: 3.

Prerequisites: AP Computer Science with a grade of 4 or 5 or similar experience.

An honors-level introduction to computer science, intended primarily for students considering a major in computer science. Computer science as a science of abstraction. Creating models for reasoning about and solving problems. The basic elements of computers and computer programs. Implementing abstractions using data structures and algorithms. Taught in Java. 

Fall 2017: COMS W1007
Course Number Section/Call Number Times/Location Instructor Points Enrollment
COMS 1007 001/73954 T Th 1:10pm - 2:25pm
717 Hamilton Hall
John Kender 3 64/86

COMS W1404 Emerging Scholars Program Seminar. 1 point.

Pass/Fail only.

Prerequisites: the instructor's permission.
Corequisites: COMS W1004,COMS W1007

Peer-led weekly seminar intended for first and second year undergraduates considering a major in Computer Science. Pass/fail only. May not be used towards satisfying the major or SEAS credit requirements.

Spring 2017: COMS W1404
Course Number Section/Call Number Times/Location Instructor Points Enrollment
COMS 1404 001/29685  
Adam Cannon 1 38/50
Fall 2017: COMS W1404
Course Number Section/Call Number Times/Location Instructor Points Enrollment
COMS 1404 001/28157 F 1:15pm - 2:30pm
502 Northwest Corner
Adam Cannon 1 7/12
COMS 1404 002/13785 F 12:00pm - 1:15pm
502 Northwest Corner
Adam Cannon 1 1/12
COMS 1404 003/12284 F 3:15pm - 4:30pm
502 Northwest Corner
Adam Cannon 1 4/12
COMS 1404 004/25539 F 4:30pm - 5:45pm
502 Northwest Corner
Adam Cannon 1 4/12

COMS W3101 Programming Languages. 1 point.

Lect: 1.

Prerequisites: Fluency in at least one programming language.

Introduction to a programming language. Each section is devoted to a specific language. Intended only for those who are already fluent in at least one programming language. Sections may meet for one hour per week for the whole term, for three hours per week for the first third of the term, or for two hours per week for the first six weeks. May be repeated for credit if different languages are involved.

Spring 2017: COMS W3101
Course Number Section/Call Number Times/Location Instructor Points Enrollment
COMS 3101 001/18198 Th 12:10pm - 2:00pm
750 Schapiro Cepser
Lawrence Stead 1 49/60
COMS 3101 002/25550 F 12:10pm - 2:00pm
417 Mathematics Building
Yuan Kang 1 45/60
COMS 3101 003/17204 F 2:10pm - 4:00pm
633 Seeley W. Mudd Building
Timothy Paine 1 45/60
COMS 3101 004/12851 F 10:10am - 12:00pm
417 Mathematics Building
Robert Coyne 1 16/60

COMS W3102 Development Technologies. 1-2 points.

Lect: 2. Lab: 0-2.

Prerequisites: Fluency in at least one programming language.

Introduction to software development tools and environments. Each section devoted to a specific tool or environment. One-point sections meet for two hours each week for half a semester, and two point sections include an additional two-hour lab.

Spring 2017: COMS W3102
Course Number Section/Call Number Times/Location Instructor Points Enrollment
COMS 3102 001/27848 T 6:10pm - 8:00pm
417 Mathematics Building
Robert Lane 1-2 50/60

COMS W3134 Data Structures in Java. 3 points.

Lect: 3.

Prerequisites: (COMS W1004) or knowledge of Java.

Data types and structures: arrays, stacks, singly and doubly linked lists, queues, trees, sets, and graphs. Programming techniques for processing such structures: sorting and searching, hashing, garbage collection. Storage management. Rudiments of the analysis of algorithms. Taught in Java. Note: Due to significant overlap, students may receive credit for only one of the following three courses: COMS W3134, W3136, or W3137.

Spring 2017: COMS W3134
Course Number Section/Call Number Times/Location Instructor Points Enrollment
COMS 3134 001/21431 M W 5:40pm - 6:55pm
501 Schermerhorn Hall
Paul Blaer 3 141/180
COMS 3134 002/73323 M W 1:10pm - 2:25pm
501 Northwest Corner
Paul Blaer 3 132/160
Fall 2017: COMS W3134
Course Number Section/Call Number Times/Location Instructor Points Enrollment
COMS 3134 001/72834 M W 5:40pm - 6:55pm
301 Pupin Laboratories
Paul Blaer 3 275/276

COMS W3136 Data Structures with C/C++. 4 points.

Lect: 3.

Prerequisites: (COMS W1004) and (COMS W1005) and (COMS W1007) or (ENGI E1006)

A second programming course intended for nonmajors with at least one semester of introductory programming experience. Basic elements of programming in C and C++, array-based data structures, heaps, linked lists, C programming in UNIX environment, object-oriented programming in C++, trees, graphs, generic programming, hash tables. Due to significant overlap, students may only receive credit for either COMS W3134, W3136, or W3137.

Fall 2017: COMS W3136
Course Number Section/Call Number Times/Location Instructor Points Enrollment
COMS 3136 001/22037 T Th 5:40pm - 6:55pm
833 Seeley W. Mudd Building
Timothy Paine 4 80/110

COMS W3137 Honors Data Structures and Algorithms. 4 points.

Lect: 3.

Prerequisites: (COMS W1004) or (COMS W1007)
Corequisites: COMS W3203

An honors introduction to data types and structures: arrays, stacks, singly and doubly linked lists, queues, trees, sets, and graphs. Programming techniques for processing such structures: sorting and searching, hashing, garbage collection. Storage management. Design and analysis of algorithms. Taught in Java. Note: Due to significant overlap, students may receive credit for only one of the following three courses: COMS W3134, W3136, or W3137.

Spring 2017: COMS W3137
Course Number Section/Call Number Times/Location Instructor Points Enrollment
COMS 3137 001/19687 M W 1:10pm - 2:25pm
486 Computer Science Bldg
Daniel Bauer 4 35/60

COMS W3157 Advanced Programming. 4 points.

Lect: 4.

Prerequisites: COMS W3134 or equivalent.

C programming language and Unix systems programming.  Also covers Git, Make, TCP/IP networking basics, C++ fundamentals.

Spring 2017: COMS W3157
Course Number Section/Call Number Times/Location Instructor Points Enrollment
COMS 3157 001/17050 T Th 4:10pm - 5:25pm
301 Pupin Laboratories
Jae Lee 4 212/250
Fall 2017: COMS W3157
Course Number Section/Call Number Times/Location Instructor Points Enrollment
COMS 3157 001/28865 T Th 11:40am - 12:55pm
301 Pupin Laboratories
Jae Lee 4 197/274
COMS 3157 002/20796 T Th 4:10pm - 5:25pm
501 Schermerhorn Hall
Jae Lee 4 133/180

COMS W3203 Discrete Mathematics: Introduction to Combinatorics and Graph Theory. 3 points.

Lect: 3.

Prerequisites: Any introductory course in computer programming.

Logic and formal proofs, sequences and summation, mathematical induction, binomial coefficients, elements of finite probability, recurrence relations, equivalence relations and partial orderings, and topics in graph theory (including isomorphism, traversability, planarity, and colorings).

Spring 2017: COMS W3203
Course Number Section/Call Number Times/Location Instructor Points Enrollment
COMS 3203 001/63319 M W 10:10am - 11:25am
501 Schermerhorn Hall
Ansaf Salleb-Aouissi 3 141/150
COMS 3203 002/29040 M W 11:40am - 12:55pm
486 Computer Science Bldg
Jessica Ouyang 3 51/60
Fall 2017: COMS W3203
Course Number Section/Call Number Times/Location Instructor Points Enrollment
COMS 3203 001/62348 T Th 10:10am - 11:25am
209 Havemeyer Hall
Ansaf Salleb-Aouissi 3 104/100
COMS 3203 002/20951 T Th 11:40am - 12:55pm
209 Havemeyer Hall
Ansaf Salleb-Aouissi 3 100/100
COMS 3203 003/69273 M W 8:40am - 9:55am
203 Mathematics Building
Antonio Moretti 3 70/100

COMS W3210 Scientific Computation. 3 points.

Lect: 3.

Prerequisites: Two terms of calculus.

Introduction to computation on digital computers. Design and analysis of numerical algorithms. Numerical solution of equations, integration, recurrences, chaos, differential equations. Introduction to Monte Carlo methods. Properties of floating point arithmetic. Applications to weather prediction, computational finance, computational science, and computational engineering.

COMS W3251 Computational Linear Algebra. 3 points.

Lect: 3.

Prerequisites: Two terms of calculus.

Computational linear algebra, solution of linear systems, sparse linear systems, least squares, eigenvalue problems, and numerical solution of other multivariate problems as time permits.

COMS W3261 Computer Science Theory. 3 points.

Lect: 3.

Prerequisites: (COMS W3203)
Corequisites: COMS W3134,COMS W3136,COMS W3137

Regular languages: deterministic and non-deterministic finite automata, regular expressions. Context-free languages: context-free grammars, push-down automata. Turing machines, the Chomsky hierarchy, and the Church-Turing thesis. Introduction to Complexity Theory and NP-Completeness.

Spring 2017: COMS W3261
Course Number Section/Call Number Times/Location Instructor Points Enrollment
COMS 3261 001/75261 T Th 10:10am - 11:25am
207 Mathematics Building
Tal Malkin 3 122/130
COMS 3261 002/65526 T Th 11:40am - 12:55pm
428 Pupin Laboratories
Tal Malkin 3 121/130
Fall 2017: COMS W3261
Course Number Section/Call Number Times/Location Instructor Points Enrollment
COMS 3261 001/22794 M W 1:10pm - 2:25pm
428 Pupin Laboratories
Alfred Aho 3 119/147
COMS 3261 002/78449 T Th 11:40am - 12:55pm
516 Hamilton Hall
Nakul Verma 3 49/54

COMS W3410 Computers and Society. 3 points.

Lect: 3.

Broader impact of computers. Social networks and privacy. Employment, intellectual property, and the media. Science and engineering ethics. Suitable for nonmajors.

COMS W3902 Undergraduate Thesis. 1-6 points.

Prerequisites: Agreement by a faculty member to serve as thesis adviser.

An independent theoretical or experimental investigation by an undergraduate major of an appropriate problem in computer science carried out under the supervision of a faculty member. A formal written report is mandatory and an oral presentation may also be required. May be taken over more than one term, in which case the grade is deferred until all 6 points have been completed. Consult the department for section assignment.

Spring 2017: COMS W3902
Course Number Section/Call Number Times/Location Instructor Points Enrollment
COMS 3902 070/93443  
Alexandr Andoni 1-6 0
COMS 3902 071/93444  
Suman Jana 1-6 0
Summer 2017: COMS W3902
Course Number Section/Call Number Times/Location Instructor Points Enrollment
COMS 3902 020/76446  
Steven Feiner 1-6 0

COMS W3995 Special Topics in Computer Science. 3 points.

Lect: 3.

Prerequisites: the instructor's permission.

Consult the department for section assignment. Special topics arranged as the need and availability arise. Topics are usually offered on a one-time basis. Since the content of this course changes each time it is offered, it may be repeated for credit.

COMS W3998 Undergraduate Projects in Computer Science. 1-3 points.

Prerequisites: Approval by a faculty member who agrees to supervise the work.

Independent project involving laboratory work, computer programming, analytical investigation, or engineering design. May be repeated for credit, but not for a total of more than 3 points of degree credit. Consult the department for section assignment.

Summer 2017: COMS W3998
Course Number Section/Call Number Times/Location Instructor Points Enrollment
COMS 3998 020/81998  
Steven Feiner 1-3 1

COMS E3999 Fieldwork. 1 point.

Prerequisites: Obtained internship and approval from faculty advisor.

May be repeated for credit, but no more than 3 total points may be used toward the 128-credit degree requirement. Only for SEAS computer science undergraduate students who include relevant off-campus work experience as part of their approved program of study. Final report and letter of evaluation required. May not be used as a technical or non-technical elective. May not be taken for pass/fail credit or audited.

Summer 2017: COMS E3999
Course Number Section/Call Number Times/Location Instructor Points Enrollment
COMS 3999 001/82596  
1 1

COMS W4111 Introduction to Databases. 3 points.

Lect: 3.

Prerequisites: (COMS W3134) and (COMS W3136) or (COMS W3137) and fluency in Java; or the instructor's permission.

The fundamentals of database design and application development using databases: entity-relationship modeling, logical design of relational databases, relational data definition and manipulation languages, SQL, XML, query processing, physical database tuning, transaction processing, security. Programming projects are required.

Spring 2017: COMS W4111
Course Number Section/Call Number Times/Location Instructor Points Enrollment
COMS 4111 001/77619 T Th 2:40pm - 3:55pm
501 Northwest Corner
Luis Gravano 3 150/155
COMS 4111 002/88699 W 4:10pm - 6:40pm
517 Hamilton Hall
Alexandros Biliris 3 78/80
Fall 2017: COMS W4111
Course Number Section/Call Number Times/Location Instructor Points Enrollment
COMS 4111 001/15421 W 4:10pm - 6:40pm
1127 Seeley W. Mudd Building
Alexandros Biliris 3 77/80
COMS 4111 002/85942 M 8:40am - 11:10am
602 Hamilton Hall
Alexandros Biliris 3 78/80
COMS 4111 003/93700 T Th 8:40am - 9:55am
207 Mathematics Building
Donald Ferguson 3 148/152

COMS W4112 Database System Implementation. 3 points.

Lect: 2.5.

Prerequisites: (COMS W4111) and fluency in Java or C++. CSEE W3827 is recommended.

The principles and practice of building large-scale database management systems. Storage methods and indexing, query processing and optimization, materialized views, transaction processing and recovery, object-relational databases, parallel and distributed databases, performance considerations. Programming projects are required.

Spring 2017: COMS W4112
Course Number Section/Call Number Times/Location Instructor Points Enrollment
COMS 4112 001/75283 T 1:00pm - 3:40pm
602 Hamilton Hall
Alexandros Biliris 3 27/80

COMS W4113 Fundamentals of Large-Scale Distributed Systems. 3 points.

Lect: 3.

Prerequisites: (COMS W3134) and (COMS W3136) or (COMS W3137) and (COMS W3157) or (COMS W4118) or (CSEE W4119) or good working knowledge of C and C++.

Design and implementation of large-scale distributed and cloud systems. Abstractions, design and implementation techniques that enable the building of fast, scalable, fault-tolerant distributed systems. Topics include distributed communication models (e.g., sockets, remote procedure calls, distributed shared memory), distributed synchronization (clock synchronization, logical clocks, distributed mutex), distributed file systems, replication, consistency models, fault tolerance, distributed transactions, agreement and commitment, Paxos-based consensus, MapReduce infrastructures, scalable distributed databases. Combines concepts and algorithms with descriptions of real-world implementations at Google, Facebook, Yahoo, Microsoft, LinkedIn, etc.

Fall 2017: COMS W4113
Course Number Section/Call Number Times/Location Instructor Points Enrollment
COMS 4113 001/75588 M W 1:10pm - 2:25pm
602 Hamilton Hall
Roxana Geambasu 3 80/86

COMS W4115 Programming Languages and Translators. 3 points.

Lect: 3.

Prerequisites: (COMS W3134) and (COMS W3136) or (COMS W3137) or (COMS W3261) and (CSEE W3827) or equivalent, or the instructor's permission.

Modern programming languages and compiler design. Imperative, object-oriented, declarative, functional, and scripting languages. Language syntax, control structures, data types, procedures and parameters, binding, scope, run-time organization, and exception handling. Implementation of language translation tools including compilers and interpreters. Lexical, syntactic and semantic analysis; code generation; introduction to code optimization. Teams implement a language and its compiler.

Spring 2017: COMS W4115
Course Number Section/Call Number Times/Location Instructor Points Enrollment
COMS 4115 001/19108 M W 2:40pm - 3:55pm
207 Mathematics Building
Stephen Edwards 3 131/120
Fall 2017: COMS W4115
Course Number Section/Call Number Times/Location Instructor Points Enrollment
COMS 4115 001/16828 M W 4:10pm - 5:25pm
501 Northwest Corner
Stephen Edwards 3 126/164
COMS 4115 H01/93148  
Stephen Edwards 3 4/50

COMS W4117 Compilers and Interpreters. 3 points.

Lect: 3.Not offered during 2017-18 academic year.

Prerequisites: (COMS W4115) or instructor's permission.

Continuation of COMS W4115, with broader and deeper investigation into the design and implementation of contemporary language translators, be they compilers or interpreters. Topics include parsing, semantic analysis, code generation and optimization, run-time environments, and compiler-compilers. A programming project is required.

COMS W4118 Operating Systems I. 3 points.

Lect: 3.

Prerequisites: (CSEE W3827) and knowledge of C and programming tools as covered in COMS W3136, W3157, or W3101, or the instructor's permission.

Design and implementation of operating systems. Topics include process management, process synchronization and interprocess communication, memory management, virtual memory, interrupt handling, processor scheduling, device management, I/O, and file systems. Case study of the UNIX operating system. A programming project is required.

Spring 2017: COMS W4118
Course Number Section/Call Number Times/Location Instructor Points Enrollment
COMS 4118 001/23985 T Th 11:40am - 12:55pm
501 Northwest Corner
Jae Lee 3 113/150
Fall 2017: COMS W4118
Course Number Section/Call Number Times/Location Instructor Points Enrollment
COMS 4118 001/61957 T Th 1:10pm - 2:25pm
833 Seeley W. Mudd Building
Jason Nieh 3 91/120

COMS W4121 Computer Systems for Data Science. 3 points.

Prerequisites: background in Computer System Organization and good working knowledge of C/C++
Corequisites: CSOR W4246,STAT GU4203

An introduction to computer architecture and distributed systems with an emphasis on warehouse scale computing systems. Topics will include fundamental tradeoffs in computer systems, hardware and software techniques for exploiting instruction-level parallelism, data-level parallelism and task level parallelism, scheduling, caching, prefetching, network and memory architecture, latency and throughput optimizations, specialization, and an introduction to programming data center computers.

Spring 2017: COMS W4121
Course Number Section/Call Number Times/Location Instructor Points Enrollment
COMS 4121 001/15051 W 6:10pm - 8:55pm
428 Pupin Laboratories
Sambit Sahu, Eugene Wu 3 124/130

COMS W4130 Principles and Practice of Parallel Programming. 3 points.

Lect: 2.5.

Prerequisites: (COMS W3134) and (COMS W3136) or (COMS W3137) or equivalent. Experience in Java, basic understanding of analysis of algorithms.

Principles of parallel software design. Topics include task and data decomposition, load-balancing, reasoning about correctness, determinacy, safety, and deadlock-freedom. Application of techniques through semester-long design project implementing performant, parallel application in a modern parallel programming language.

COMS W4156 Advanced Software Engineering. 3 points.

Lect: 3.

Prerequisites: (COMS W3157) or equivalent.

Software lifecycle from the viewpoint of designing and implementing N-tier applications (typically utilizing web browser, web server, application server, database). Major emphasis on quality assurance (code inspection, unit and integration testing, security and stress testing). Centers on a student-designed team project that leverages component services (e.g., transactions, resource pooling, publish/subscribe) for an interactive multi-user application such as a simple game.

Fall 2017: COMS W4156
Course Number Section/Call Number Times/Location Instructor Points Enrollment
COMS 4156 001/15547 T Th 10:10am - 11:25am
1127 Seeley W. Mudd Building
Gail Kaiser 3 88/85

COMS W4160 Computer Graphics. 3 points.

Lect: 3.

Prerequisites: (COMS W3134) and (COMS W3136) or (COMS W3137) COMS W4156 is recommended. Strong programming background and some mathematical familiarity including linear algebra is required.

Introduction to computer graphics. Topics include 3D viewing and projections, geometric modeling using spline curves, graphics systems such as OpenGL, lighting and shading, and global illumination. Significant implementation is required: the final project involves writing an interactive 3D video game in OpenGL.

Spring 2017: COMS W4160
Course Number Section/Call Number Times/Location Instructor Points Enrollment
COMS 4160 001/68716 T Th 11:40am - 12:55pm
1127 Seeley W. Mudd Building
Changxi Zheng 3 52/60
Fall 2017: COMS W4160
Course Number Section/Call Number Times/Location Instructor Points Enrollment
COMS 4160 001/83279 Th 6:10pm - 8:00pm
503 Hamilton Hall
Michael Reed 3 39/50

COMS W4162 Advanced Computer Graphics. 3 points.

Lect: 3.

Prerequisites: (COMS W4160) or equivalent, or the instructor's permission.

A second course in computer graphics covering more advanced topics including image and signal processing, geometric modeling with meshes, advanced image synthesis including ray tracing and global illumination, and other topics as time permits. Emphasis will be placed both on implementation of systems and important mathematical and geometric concepts such as Fourier analysis, mesh algorithms and subdivision, and Monte Carlo sampling for rendering. Note: Course will be taught every two years.

COMS W4167 Computer Animation. 3 points.

Lect: 3.

Prerequisites: Multivariable calculus, linear algebra, C++ programming proficiency. COMS W4156 recommended.

Theory and practice of physics-based animation algorithms, including animated clothing, hair, smoke, water, collisions, impact, and kitchen sinks. Topics covered: Integration of ordinary differential equations, formulation of physical models, treatment of discontinuities including collisions/contact, animation control, constrained Lagrangian Mechanics, friction/dissipation, continuum mechanics, finite elements, rigid bodies, thin shells, discretization of Navier-Stokes equations. General education requirement: quantitative and deductive reasoning (QUA). 

Fall 2017: COMS W4167
Course Number Section/Call Number Times/Location Instructor Points Enrollment
COMS 4167 001/78448 T Th 2:40pm - 3:55pm
703 Hamilton Hall
Changxi Zheng 3 21/60

COMS W4170 User Interface Design. 3 points.

Lect: 3.

Prerequisites: (COMS W3134) and (COMS W3136) or (COMS W3137)

Introduction to the theory and practice of computer user interface design, emphasizing the software design of graphical user interfaces. Topics include basic interaction devices and techniques, human factors, interaction styles, dialogue design, and software infrastructure. Design and programming projects are required.

Fall 2017: COMS W4170
Course Number Section/Call Number Times/Location Instructor Points Enrollment
COMS 4170 001/76984 T Th 1:10pm - 2:25pm
413 Kent Hall
Steven Feiner 3 67/65

COMS W4172 3D User Interfaces and Augmented Reality. 3 points.

Lect: 3.

Prerequisites: (COMS W4160) or (COMS W4170) or instructor's permission.

Design, development, and evaluation of 3D user interfaces. Interaction techniques and metaphors, from desktop to immersive. Selection and manipulation. Travel and navigation. Symbolic, menu, gestural, and multimodal interaction. Dialogue design. 3D software support. 3D interaction devices and displays. Virtual and augmented reality. Tangible user interfaces. Review of relevant 3D math.

Spring 2017: COMS W4172
Course Number Section/Call Number Times/Location Instructor Points Enrollment
COMS 4172 001/10474 T Th 1:10pm - 2:25pm
486 Computer Science Bldg
Steven Feiner 3 46/50

COMS W4180 Network Security. 3 points.

Lect: 3.

Prerequisites: (COMS W3134) and (COMS W3136) or (COMS W3137) and (CSEE W4119) or instructor's permission.

Introduction to network security concepts and mechanisms. Foundations of network security and an in-depth review of commonly-used security mechanisms and techniques, security threats and network-based attacks, applications of cryptography, authentication, access control, intrusion detection and response, security protocols (IPsec, SSL, Kerberos), denial of service, viruses and worms, software vulnerabilities, web security, wireless security, and privacy.

Spring 2017: COMS W4180
Course Number Section/Call Number Times/Location Instructor Points Enrollment
COMS 4180 001/73315 F 10:10am - 12:40pm
486 Computer Science Bldg
Debra Cook 3 31/40

COMS W4187 Security Architecture and Engineering. 3 points.

Lect: 3.

Prerequisites: (COMS W4118) and (COMS W4180) or CSEE W4119 recommended.

Secure programming. Cryptograhic engineering and key handling. Access controls. Tradeoffs in security design. Design for security.

Fall 2017: COMS W4187
Course Number Section/Call Number Times/Location Instructor Points Enrollment
COMS 4187 001/68791 M W 2:40pm - 3:55pm
545 Seeley W. Mudd Building
Suman Jana 3 48/70

COMS W4203 Graph Theory. 3 points.

Lect: 3.

Prerequisites: (COMS W3203)

General introduction to graph theory. Isomorphism testing, algebraic specification, symmetries, spanning trees, traversability, planarity, drawings on higher-order surfaces, colorings, extremal graphs, random graphs, graphical measurement, directed graphs, Burnside-Polya counting, voltage graph theory.

COMS W4205 Combinatorial Theory. 3 points.

Lect: 3.Not offered during 2017-18 academic year.

Prerequisites: (COMS W3203) and course in calculus.

Sequences and recursions, calculus of finite differences and sums, elementary number theory, permutation group structures, binomial coefficients, Stilling numbers, harmonic numbers, generating functions. 

COMS W4236 Introduction to Computational Complexity. 3 points.

Lect: 3.

Prerequisites: (COMS W3261)

Develops a quantitative theory of the computational difficulty of problems in terms of the resources (e.g. time, space) needed to solve them. Classification of problems into complexity classes, reductions, and completeness. Power and limitations of different modes of computation such as nondeterminism, randomization, interaction, and parallelism.

COMS W4241 Numerical Algorithms and Complexity. 3 points.

Lect: 3.

Prerequisites: Knowledge of a programming language. Some knowledge of scientific computation is desirable.

Modern theory and practice of computation on digital computers. Introduction to concepts of computational complexity. Design and analysis of numerical algorithms. Applications to computational finance, computational science, and computational engineering.

COMS W4242 Numerical Algorithms and Their Complexity II. 3 points.

Prerequisites: COMS W4241.

A continuation of COMS W4241.

COMS W4252 Introduction to Computational Learning Theory. 3 points.

Lect: 3.

Prerequisites: (CSOR W4231) or (COMS W4236) or (COMS W3203) or (COMS W3261) and instructor's permission.

Possibilities and limitations of performing learning by computational agents. Topics include computational models of learning, polynomial time learnability, learning from examples and learning from queries to oracles. Computational and statistical limitations of learning. Applications to Boolean functions, geometric functions, automata.

COMS W4261 Introduction to Cryptography. 3 points.

Lect: 2.5.

Prerequisites: Comfort with basic discrete math and probability. Recommended: COMS W3261 or CSOR W4231.

An introduction to modern cryptography, focusing on the complexity-theoretic foundations of secure computation and communication in adversarial environments; a rigorous approach, based on precise definitions and provably secure protocols. Topics include private and public key encryption schemes, digital signatures, authentication, pseudorandom generators and functions, one-way functions, trapdoor functions, number theory and computational hardness, identification and zero knowledge protocols.

Fall 2017: COMS W4261
Course Number Section/Call Number Times/Location Instructor Points Enrollment
COMS 4261 001/11898 M W 7:10pm - 8:25pm
209 Havemeyer Hall
Allison Bishop 3 79/110

COMS W4281 Introduction to Quantum Computing. 3 points.

Lect: 3.

Prerequisites: Knowledge of linear algebra. Prior knowledge of quantum mechanics is not required although helpful.

Introduction to quantum computing. Shor's factoring algorithm, Grover's database search algorithm, the quantum summation algorithm. Relationship between classical and quantum computing. Potential power of quantum computers.

COMS W4444 Programming and Problem Solving. 3 points.

Lect: 3.

Prerequisites: (COMS W3134) and (COMS W3136) or (COMS W3137) and (CSEE W3827)

Hands-on introduction to solving open-ended computational problems. Emphasis on creativity, cooperation, and collaboration. Projects spanning a variety of areas within computer science, typically requiring the development of computer programs. Generalization of solutions to broader problems, and specialization of complex problems to make them manageable. Team-oriented projects, student presentations, and in-class participation required.

Fall 2017: COMS W4444
Course Number Section/Call Number Times/Location Instructor Points Enrollment
COMS 4444 001/60172 M W 1:10pm - 2:25pm
703 Hamilton Hall
Kenneth Ross 3 20/30

COMS W4460 Principles of Innovation and Entrepreneurship. 3 points.

Lect: 3.

Prerequisites: (COMS W3134) and (COMS W3136) or (COMS W3137) or equivalent, or the instructor's permission.

Team project-centered course focused on principles of planning, creating, and growing a technology venture. Topics include identifying and analyzing opportunities created by technology paradigm shifts, designing innovative products, protecting intellectual property, engineering innovative business models.

Fall 2017: COMS W4460
Course Number Section/Call Number Times/Location Instructor Points Enrollment
COMS 4460 001/72803 F 10:10am - 12:40pm
608 Schermerhorn Hall
William Reinisch 3 27/32

COMS W4560 Introduction to Computer Applications in Health Care and Biomedicine. 3 points.

Lect: 3.

Prerequisites: Experience with computers and a passing familiarity with medicine and biology. Undergraduates in their senior or junior years may take this course only if they have adequate background in mathematics and receive the instructor's permission.

An overview of the field of biomedical informatics, combining perspectives from medicine, computer science and social science. Use of computers and information in health care and the biomedical sciences, covering specific applications and general methods, current issues, capabilities and limitations of biomedical informatics. Biomedical Informatics studies the organization of medical information, the effective management of information using computer technology, and the impact of such technology on medical research, education, and patient care. The field explores techniques for assessing current information practices, determining the information needs of health care providers and patients, developing interventions using computer technology, and evaluating the impact of those interventions.

COMS W4701 Artificial Intelligence. 3 points.

CC/GS: Partial Fulfillment of Science Requirement

Prerequisites: (COMS W3134) or (COMS W3136) or (COMS W3137)

Provides a broad understanding of the basic techniques for building intelligent computer systems. Topics include state-space problem representations, problem reduction and and-or graphs, game playing and heuristic search, predicate calculus, and resolution theorem proving, AI systems and languages for knowledge representation, machine learning and concept formation and other topics such as natural language processing may be included as time permits.

Spring 2017: COMS W4701
Course Number Section/Call Number Times/Location Instructor Points Enrollment
COMS 4701 001/77544 M W 1:10pm - 2:25pm
309 Havemeyer Hall
Ansaf Salleb-Aouissi 3 228/300
Fall 2017: COMS W4701
Course Number Section/Call Number Times/Location Instructor Points Enrollment
COMS 4701 001/13442 M W 10:10am - 11:25am
417 International Affairs Bldg
Daniel Bauer 3 245/250

COMS W4705 Natural Language Processing. 3 points.

Lect: 3.

Prerequisites: (COMS W3134) and (COMS W3136) or (COMS W3137) or equivalent, or instructor's permission.

Computational approaches to natural language generation and understanding. Recommended preparation: some previous or concurrent exposure to AI or Machine Learning. Topics include information extraction, summarization, machine translation, dialogue systems, and emotional speech. Particular attention is given to robust techniques that can handle understanding and generation for the large amounts of text on the Web or in other large corpora. Programming exercises in several of these areas.

Fall 2017: COMS W4705
Course Number Section/Call Number Times/Location Instructor Points Enrollment
COMS 4705 001/72501 T Th 2:40pm - 3:55pm
501 Northwest Corner
Kathleen McKeown 3 146/150
COMS 4705 002/22548 T Th 11:40am - 12:55pm
1127 Seeley W. Mudd Building
Michael Collins 3 78/78
COMS 4705 H01/13602  
Kathleen McKeown 3 45/50

COMS W4706 Spoken Language Processing. 3 points.

Lect: 3.

Prerequisites: (COMS W3134) and (COMS W3136) or (COMS W3137) or instructor's permission.

Computational approaches to speech generation and understanding. Topics include speech recognition and understanding, speech analysis for computational linguistics research, and speech synthesis. Speech applications including dialogue systems, data mining, summarization, and translation. Exercises involve data analysis and building a small text-to-speech system.

COMS W4725 Knowledge representation and reasoning. 3 points.

Lect: 3.Not offered during 2017-18 academic year.

Prerequisites: (COMS W4701)

General aspects of knowledge representation (KR). The two fundamental paradigms (semantic networks and frames) and illustrative systems. Topics include hybrid systems, time, action/plans, defaults, abduction, and case-based reasoning. Throughout the course particular attention is paid to design trade-offs between language expressiveness and reasoning complexity, and issues relating to the use of KR systems in larger applications. 

COMS W4731 Computer Vision. 3 points.

Lect: 3.

Prerequisites: Fundamentals of calculus, linear algebra, and C programming. Students without any of these prerequisites are advised to contact the instructor prior to taking the course.

Introductory course in computer vision. Topics include image formation and optics, image sensing, binary images, image processing and filtering, edge extraction and boundary detection, region growing and segmentation, pattern classification methods, brightness and reflectance, shape from shading and photometric stereo, texture, binocular stereo, optical flow and motion, 2D and 3D object representation, object recognition, vision systems and applications.

Fall 2017: COMS W4731
Course Number Section/Call Number Times/Location Instructor Points Enrollment
COMS 4731 001/19314 M W 10:10am - 11:25am
329 Pupin Laboratories
Shree Nayar 3 97/100

COMS W4733 Computational Aspects of Robotics. 3 points.

Prerequisites: (COMS W3134) and (COMS W3136) or (COMS W3137)

Introduction to robotics from a computer science perspective. Topics include coordinate frames and kinematics, computer architectures for robotics, integration and use of sensors, world modeling systems, design and use of robotic programming languages, and applications of artificial intelligence for planning, assembly, and manipulation.

Fall 2017: COMS W4733
Course Number Section/Call Number Times/Location Instructor Points Enrollment
COMS 4733 001/18851 T Th 11:40am - 12:55pm
313 Fayerweather
Peter Allen 3 73/75

COMS W4735 Visual Interfaces to Computers. 3 points.

Lect: 3.

Prerequisites: (COMS W3134) and (COMS W3136) or (COMS W3137)

Visual input as data and for control of computer systems. Survey and analysis of architecture, algorithms, and underlying assumptions of commercial and research systems that recognize and interpret human gestures, analyze imagery such as fingerprint or iris patterns, generate natural language descriptions of medical or map imagery. Explores foundations in human psychophysics, cognitive science, and artificial intelligence.

COMS W4737 Biometrics. 3 points.

Lect: 3.

Prerequisites: Background at the sophomore level in computer science, engineering, or like discipline.

In this course we will explore the latest advances in biometrics as well as the machine learning techniques behind them. Students will learn how these technologies work and how they are sometimes defeated. Grading will be based on homework assignments and a final project. There will be no midterm or final exam. This course shares lectures with COMS E6737. Students taking COMS E6737 are required to complete additional homework problems and undertake a more rigorous final project. Students will only be allowed to earn credit for COMS W4737 or COMS E6737 and not both.

COMS W4771 Machine Learning. 3 points.

Lect: 3.

Prerequisites: Any introductory course in linear algebra and any introductory course in statistics are both required. Highly recommended: COMS W4701 or knowledge of Artificial Intelligence.

Topics from generative and discriminative machine learning including least squares methods, support vector machines, kernel methods, neural networks, Gaussian distributions, linear classification, linear regression, maximum likelihood, exponential family distributions, Bayesian networks, Bayesian inference, mixture models, the EM algorithm, graphical models and hidden Markov models. Algorithms implemented in MATLAB.

Spring 2017: COMS W4771
Course Number Section/Call Number Times/Location Instructor Points Enrollment
COMS 4771 001/65943 M W 1:10pm - 2:25pm
833 Seeley W. Mudd Building
Itshack Pe'er 3 75/90
Fall 2017: COMS W4771
Course Number Section/Call Number Times/Location Instructor Points Enrollment
COMS 4771 001/76261 M W 2:40pm - 3:55pm
428 Pupin Laboratories
James McInerney 3 108/130
COMS 4771 002/11548 T Th 2:40pm - 3:55pm
207 Mathematics Building
Nakul Verma 3 135/152
COMS 4771 H01/80532  
James McInerney 3 36/50

COMS W4772 Advanced Machine Learning. 3 points.

Lect: 3.

Prerequisites: (COMS W4771) or instructor's permission; knowledge of linear algebra & introductory probability or statistics is required.

An exploration of advanced machine learning tools for perception and behavior learning. How can machines perceive, learn from, and classify human activity computationally? Topics include appearance-based models, principal and independent components analysis, dimensionality reduction, kernel methods, manifold learning, latent models, regression, classification, Bayesian methods, maximum entropy methods, real-time tracking, extended Kalman filters, time series prediction, hidden Markov models, factorial HMMS, input-output HMMs, Markov random fields, variational methods, dynamic Bayesian networks, and Gaussian/Dirichlet processes. Links to cognitive science.

Spring 2017: COMS W4772
Course Number Section/Call Number Times/Location Instructor Points Enrollment
COMS 4772 001/95953 F 1:10pm - 3:40pm
203 Mathematics Building
Julie Novak, Lior Horesh 3 72/60

COMS W4776 Machine Learning for Data Science. 3 points.

Lect.: 3

Prerequisites: (STAT GU4001) or (COMS W3251) or (IEOR E4150) or equivalent.

Introduction to machine learning, emphasis on data science. Topics include least square methods, Gaussian distributions, linear classification, linear regression, maximum likelihood, exponential family distributions, Bayesian networks, Bayesian inference, mixture models, the EM algorithm, graphical models, hidden Markov models, support vector machines kernel methods. Emphasizes methods and problems relevant to big data. Students may not receive credit for both COMS W4771 and W4776.

COMS W4901 Projects in Computer Science. 1-3 points.

Prerequisites: Approval by a faculty member who agrees to supervise the work.

A second-level independent project involving laboratory work, computer programming, analytical investigation, or engineering design. May be repeated for credit, but not for a total of more than 3 points of degree credit. Consult the department for section assignment.

Summer 2017: COMS W4901
Course Number Section/Call Number Times/Location Instructor Points Enrollment
COMS 4901 013/12280  
Luca Carloni 1-3 1
COMS 4901 020/93646  
Steven Feiner 1-3 0
COMS 4901 039/12780  
Itshack Pe'er 1-3 1

COMS W4910 Curricular Practical Training. 1 point.

Prerequisites: obtained internship and approval from faculty advisor.

Only for M.S. students in the Computer Science department who need relevant work experience as part of their program of study. Final report required. This course may not be taken for pass/fail credit or audited.

COMS W4995 Special topics in computer science, I. 3 points.

Lect: 3.

Prerequisites: Instructor's permission.

Special topics arranged as the need and availability arises. Topics are usually offered on a one-time basis. Since the content of this course changes each time it is offered, it may be repeated for credit. Consult the department for section assignment. 

Spring 2017: COMS W4995
Course Number Section/Call Number Times/Location Instructor Points Enrollment
COMS 4995 001/61231 T Th 2:40pm - 3:55pm
1127 Seeley W. Mudd Building
Eitan Grinspun 3 17/30
COMS 4995 002/70682 M W 2:40pm - 3:55pm
415 Schapiro Cepser
Suman Jana 3 35/40
COMS 4995 003/14850 M W 2:40pm - 3:55pm
486 Computer Science Bldg
Alexandr Andoni 3 45/60
COMS 4995 004/92109 T Th 2:40pm - 3:55pm
825 Seeley W. Mudd Building
Peter Belhumeur 3 40/40
COMS 4995 005/20797 M W 4:10pm - 5:25pm
408 Zankel
Andreas Mueller 3 95/125
COMS 4995 006/82097 M 7:00pm - 9:30pm
327 Seeley W. Mudd Building
Adam Kelleher 3 21/50
COMS 4995 007/82650 F 10:10am - 12:00pm
327 Seeley W. Mudd Building
Bjarne Stroustrup 3 36/35
COMS 4995 008/16347 F 2:00pm - 4:00pm
313 Fayerweather
Eren Kursun 3 66/75
Fall 2017: COMS W4995
Course Number Section/Call Number Times/Location Instructor Points Enrollment
COMS 4995 001/72676 T 4:10pm - 6:40pm
750 Schapiro Cepser
Paul Blaer, Scott Handler 3 26/30
COMS 4995 002/25518 M W 7:10pm - 8:25pm
1024 Seeley W. Mudd Building
Iddo Drori 3 60/60
COMS 4995 003/17193 M W 4:10pm - 5:25pm
503 Hamilton Hall
Henning Schulzrinne 3 29/54
COMS 4995 004/88536 T Th 8:40am - 9:55am
310 Fayerweather
Christos Papadimitriou 3 24/70
COMS 4995 006/25283 T 7:00pm - 9:30pm
516 Hamilton Hall
Haiyuan Wang 3 13/54
COMS 4995 007/67305 Th 7:00pm - 9:30pm
633 Seeley W. Mudd Building
Adam Kelleher 3 31/70
COMS 4995 008/96248 Th 7:00pm - 9:30pm
520 Mathematics Building
Bryan Gibson 3 30/49
COMS 4995 H02/13000  
Iddo Drori 3 34/50

COMS W4996 Special topics in computer science, II. 3 points.

Lect: 3.Not offered during 2017-18 academic year.

Prerequisites: Instructor's permission.

A continuation of COMS W4995 when the special topic extends over two terms.

Computer Science - English

Computer Science - Electrical Engineering

CSEE W3827 Fundamentals of Computer Systems. 3 points.

Lect: 3.

Prerequisites: An introductory programming course.

Fundamentals of computer organization and digital logic. Boolean algebra, Karnaugh maps, basic gates and components, flip-flops and latches, counters and state machines, basics of combinational and sequential digital design. Assembly language, instruction sets, ALU’s, single-cycle and multi-cycle processor design, introduction to pipelined processors, caches, and virtual memory.

Spring 2017: CSEE W3827
Course Number Section/Call Number Times/Location Instructor Points Enrollment
CSEE 3827 001/24427 T Th 10:10am - 11:25am
501 Northwest Corner
Daniel Rubenstein 3 106/150
Fall 2017: CSEE W3827
Course Number Section/Call Number Times/Location Instructor Points Enrollment
CSEE 3827 001/20794 T Th 10:10am - 11:25am
501 Schermerhorn Hall
Martha Kim 3 215/215

CSEE W4119 Computer Networks. 3 points.

Lect: 3.

Corequisites: IEOR E3658,IEOR E4150

Introduction to computer networks and the technical foundations of the Internet, including applications, protocols, local area networks, algorithms for routing and congestion control, security, elementary performance evaluation. Several written and programming assignments required.

Spring 2017: CSEE W4119
Course Number Section/Call Number Times/Location Instructor Points Enrollment
CSEE 4119 001/68757 F 10:10am - 12:40pm
501 Northwest Corner
Gil Zussman 3 127/150
Fall 2017: CSEE W4119
Course Number Section/Call Number Times/Location Instructor Points Enrollment
CSEE 4119 001/74094 T Th 1:10pm - 2:25pm
301 Pupin Laboratories
Ethan Katz-Bassett 3 96/150

CSEE W4140 Networking Laboratory. 3 points.

Lect: 3.

Prerequisites: (CSEE W4119) or equivalent.

In this course, students will learn how to put "principles into practice," in a hands-on-networking lab course. The course will cover the technologies and protocols of the Internet using equipment currently available to large internet service providers such as CISCO routers and end systems. A set of laboratory experiments will provide hands-on experience with engineering wide-area networks and will familiarize students with the Internet Protocol (IP), Address Resolution Protocol (ARP), Internet Control Message Protocol (ICMP), User Datagram Protocol (UDP) and Transmission Control Protocol (TCP), the Domain Name System (DNS), routing protocols (RIP, OSPF, BGP), network management protocols (SNMP, and application-level protocols (FTP, TELNET, SMTP).

Spring 2017: CSEE W4140
Course Number Section/Call Number Times/Location Instructor Points Enrollment
CSEE 4140 001/69879 T Th 11:40am - 12:55pm
644 Seeley W. Mudd Building
Gil Zussman 3 13/42
Fall 2017: CSEE W4140
Course Number Section/Call Number Times/Location Instructor Points Enrollment
CSEE 4140 001/28029 W 10:10am - 11:25am
337 Seeley W. Mudd Building
Gil Zussman 3 15/32

CSEE W4823 Advanced Logic Design. 3 points.

Lect: 3.

Prerequisites: (CSEE W3827) or half-semester introduction to digital logic, or equivalent.

An introduction to modern digital system design. Advanced topics in digital logic: controller synthesis (Mealy and Moore machines); adders and multipliers; structured logic blocks (PLDs, PALs, ROMs); iterative circuits. Modern design methodology: register transfer level modeling (RTL); algorithmic state machines (ASMs); introduction to hardware description languages (VHDL or Verilog); system-level modeling and simulation; design examples.

CSEE W4824 Computer Architecture. 3 points.

Lect: 3.

Prerequisites: (CSEE W3827) or equivalent.

Focuses on advanced topics in computer architecture, illustrated by case studies from classic and modern processors. Fundamentals of quantitative analysis. Pipelining. Memory hierarchy design. Instruction-level and thread-level parallelism. Data-level parallelism and graphics processing units. Multiprocessors. Cache coherence. Interconnection networks. Multi-core processors and systems-on-chip. Platform architectures for embedded, mobile, and cloud computing.

Spring 2017: CSEE W4824
Course Number Section/Call Number Times/Location Instructor Points Enrollment
CSEE 4824 001/73309 T Th 1:10pm - 2:25pm
702 Hamilton Hall
Martha Kim 3 69/80

CSEE W4840 Embedded Systems. 3 points.

Lect: 3.

Prerequisites: (CSEE W4823)

Embedded system design and implementation combining hardware and software. I/O, interfacing, and peripherals. Weekly laboratory sessions and term project on design of a microprocessor-based embedded system including at least one custom peripheral. Knowledge of C programming and digital logic required. Lab required.

CSEE W4868 System-on-chip platforms. 3 points.

Lect: 3.Not offered during 2017-18 academic year.

Prerequisites: (COMS W3157) and (CSEE W3827)

Design and programming of System-on-Chip (SoC) platforms. Topics include overview of technology and economic trends, methodologies and supporting CAD tools for system-level design; models of computation, the SystemC language, transaction-level modeling, hardware-software partitioning, high-level synthesis, system programming, on-chip communication, memory organization, power management and optimization, integration of programmable processor cores and specialized accelerators. Case studies of modern SoC platforms for various classes of applications. 

Fall 2017: CSEE W4868
Course Number Section/Call Number Times/Location Instructor Points Enrollment
CSEE 4868 001/23175 T Th 11:40am - 12:55pm
717 Hamilton Hall
Luca Carloni 3 31/64

Computer Science - Biomedical Engineering

CBMF W4761 Computational Genomics. 3 points.

Lect: 3.

Prerequisites: Working knowledge of at least one programming language, and some background in probability and statistics.

Computational techniques for analyzing genomic data including DNA, RNA, protein and gene expression data. Basic concepts in molecular biology relevant to these analyses. Emphasis on techniques from artificial intelligence and machine learning. String-matching algorithms, dynamic programming, hidden Markov models, expectation-maximization, neural networks, clustering algorithms, support vector machines. Students with life sciences backgrounds who satisfy the prerequisites are encouraged to enroll. 

Spring 2017: CBMF W4761
Course Number Section/Call Number Times/Location Instructor Points Enrollment
CBMF 4761 001/29952 M W 4:10pm - 5:25pm
524 Seeley W. Mudd Building
Itshack Pe'er 3 20/50