DATA SCIENCE

Design, development, evaluation 3D user interfaces. Interaction techniques metaphors, immersive. Selection 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.

• COMS W1005 Introduction to Computer Science and Programming in MATLAB.
Students may receive credit for only one of the following three courses: • COMS W3134 Data Structures in Java • COMS W3136 Data Structures with C/C++

• COMS W3137 Honors Data Structures and Algorithms
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
Please read Guidelines for all Computer Science Majors and Concentrators above.
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:

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 a 4 or 5 on the 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 4000level 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.

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 networks, programming languages, operating systems, software engineering, databases, security, and distributed systems.

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: 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 intended for 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.

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. Adjustments were made to the course lists below in March 2022.
The elective courses must be chosen with a faculty adviser to focus on the modeling and use of information within the context of a disciplinary theme. After discussing potential selections students prepare a proposal of study that must be approved by the faculty adviser. In all cases the six courses must be at the 3000-level or above with at least three courses chosen from computer science. Following are some example programs.
For more examples or templates for the program proposal, see a faculty adviser.
Note: In most cases additional courses will be necessary as prerequisites in order to take some of the elective courses. This will depend on the student's proposed program of study.

Information Science and Health Sciences
Students may focus on understanding information modeling together with existing and emerging needs in health sciences, as well as algorithms and systems to address those needs.

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. 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 problemsolving 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 or 1005.

COMS W1005 Introduction to Computer Science and Programming in MATLAB. 3 points. CC/GS: Partial Fulfillment of Science Requirement
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: W1004 or W1005.
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. 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.
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. 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.
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. Modern programming languages and compiler design. Imperative, objectoriented, 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. 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.

COMS W4130 Principles and Practice of Parallel Programming. 3 points. CC/GS: Partial Fulfillment of Science Requirement
Prerequisites: (COMS W3134 or COMS W3137 or COMS W3136 and experience in Java) and 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 W4152 Engineering Software-as-a-Service. 3.00 points.
Modern software engineering concepts and practices including topics such as Software-as-a-Service, Service-oriented Architecture, Agile Development, Behavior-driven Development, Ruby on Rails, and Dev/ops Prerequisites: (COMS W3134) or (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.
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.
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).

COMS W4170 User Interface Design. 3 points. CC/GS: Partial Fulfillment of Science Requirement
Prerequisites: (COMS W3134 or 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. 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 W4419 Internet Technology, Economics, and Policy. 3 points. Not offered during 2022-23 academic year.
Technology, economic and policy aspects of the Internet. Summarizes how the Internet works technically, including protocols, standards, radio spectrum, global infrastructure and interconnection. Microeconomics with a focus on media and telecommunication economic concerns, including competition and monopolies, platforms, and behavioral economics. US constitution, freedom of speech, administrative procedures act and regulatory process, universal service, role of FCC. Not a substitute for CSEE4119. Suitable for non-majors. May not be used as a track elective for the computer science major. 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. 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.
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 Prerequisites: (COMS W3134 or 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. CC/GS: Partial Fulfillment of Science Requirement
Prerequisites: a 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 W4762 Machine Learning for Functional Genomics. 3 points.
Prerequisites: Proficiency in a high-level programming language (Python/ R/Julia). An introductory machine learning class (such as COMS 4771 Machine Learning) will be helpful but is not required.
Prerequisites: see notes re: points This course will introduce modern probabilistic machine learning methods using applications in data analysis tasks from functional genomics, where massively-parallel sequencing is used to measure the state of cells: 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.

COMS W4773 Machine Learning Theory. 3 points.
Prerequisites: Machine Learning (COMS W4771). Background in probability and statistics, linear algebra, and multivariate calculus. Ability to program in a high-level language, and familiarity with basic algorithm design and coding principles.
Prerequisites: see notes re: points Core topics from unsupervised learning such as clustering, dimensionality reduction and density estimation will be studied in detail. Topics in clustering: k-means clustering, hierarchical clustering, spectral clustering, clustering with various forms of feedback, good initialization techniques and convergence analysis of various clustering procedures. Topics in dimensionality reduction: linear techniques such as PCA, ICA, Factor Analysis, Random Projections, non-linear techniques such as LLE, IsoMap, Laplacian Eigenmaps, tSNE, and study of embeddings of general metric spaces, what sorts of theoretical guarantees can one provide about such techniques. Miscellaneous topics: design and analysis of data structures for fast Nearest Neighbor search such as Cover Trees and LSH. Algorithms will be implemented in either Matlab or Python.

COMS E4773 Machine Learning Theory. 3.00 points.
Theoretical study of algorithms for machine learning and highdimensional data analysis. Topics include high-dimensional probability, theory of generalization and statistical learning, online learning and optimization, spectral analysis COMS W4774 Unsupervised Learning. 3 points. Prerequisites: Solid background in multivariate calculus, linear algebra, basic probability, and algorithms.
Prerequisites: see notes re: points Theoretical study of algorithms for machine learning and highdimensional data analysis. Topics include high-dimensional probability, theory of generalization and statistical learning, online learning and optimization, spectral analysis. Prerequisites: see notes re: points Causal Inference theory and applications. The theoretical topics include the 3-layer causal hierarchy, causal bayesian networks, structural learning, the identification problem and the do-calculus, linear identifiability, bounding, and counterfactual analysis. The applied part includes intersection with statistics, the empirical-data sciences (social and health), and AI and ML Prerequisites: (COMS4711W) and Discrete Math, Calculus, Statistics (basic probability, modeling, experimental design), Some programming experience Causal Inference theory and applications. The theoretical topics include the 3-layer causal hierarchy, causal bayesian networks, structural learning, the identification problem and the do-calculus, linear identifiability, bounding, and counterfactual analysis. The applied part includes intersection with statistics, the empirical-data sciences (social and health), and AI and ML.

COMS W4776 Machine Learning for Data Science. 3 points.
Lect.: 3 Prerequisites: (STAT GU4001 or IEOR E4150) and linear algebra. 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.

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 E4995 COMPUTER ARTS/VIDEO GAMES. 3.00 points.
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 working knowledge of C/C++. Corequisites: CSOR W4246 Algorithms for Data Science, STAT W4203 Probability Theory, or equivalent as approved by faculty advisor. 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.