Computer Science
The Computer Science Department advances the role of computing in our lives through research and prepares the next generation of computer scientists with its academic programs.
For questions about specific courses, contact the department.
Courses
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 or 1005.
Course Number
COMS1004W001Format
In-PersonSession
Session APoints
3 ptsSummer 2026
Times/Location
Mo 17:30-20:40We 17:30-20:40Section/Call Number
001/10660Enrollment
8 of 120Instructor
Paul BlaerA course in designing, documenting, coding, and testing robust computer software, according to object-oriented design patterns and clean coding practices. Taught in Java.Object-oriented design principles include: use cases; CRC; UML; javadoc; patterns (adapter, builder, command, composite, decorator, facade, factory, iterator, lazy evaluation, observer, singleton, strategy, template, visitor); design by contract; loop invariants; interfaces and inheritance hierarchies; anonymous classes and null objects; graphical widgets; events and listeners; Java's Object class; generic types; reflection; timers, threads, and locks.
Course Number
COMS3107W001Format
In-PersonSession
Session BPoints
3 ptsSummer 2026
Times/Location
Tu 13:00-16:10Th 13:00-16:10Section/Call Number
001/10661Enrollment
12 of 120Instructor
Chris MurphyData 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, COMS W3136, COMS W3137.
Course Number
COMS3134W001Format
In-PersonSession
Session BPoints
3 ptsSummer 2026
Times/Location
Mo 17:30-20:40We 17:30-20:40Section/Call Number
001/10662Enrollment
15 of 120Instructor
Paul BlaerC programming language and Unix systems programming. Also covers Git, Make, TCP/IP networking basics, C++ fundamentals.
Course Number
COMS3157W001Format
In-PersonSession
Session APoints
4 ptsSummer 2026
Times/Location
Tu 17:30-20:40Th 17:30-20:40Section/Call Number
001/10663Enrollment
14 of 100Instructor
Brian BorowskiLogic 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).
Course Number
COMS3203W001Format
In-PersonSession
Session APoints
4 ptsSummer 2026
Times/Location
Tu 10:10-13:20Th 10:10-13:20Section/Call Number
001/10664Enrollment
14 of 120Instructor
Ansaf Salleb-AouissiRegular 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.
Course Number
COMS3261W001Format
In-PersonSession
Session APoints
3 ptsSummer 2026
Times/Location
Mo 10:10-13:20We 10:10-13:20Section/Call Number
001/10665Enrollment
17 of 120Instructor
Xi ChenMathematical foundations of machine learning: Linear algebra, multivariable calculus, and probability and statistics. Comprehensive review and additional treatment of
relevant topics used in the analysis and design of machine learning models. Preliminary exposure to core algorithms such as linear regression, gradient descent, principal
component analysis, low-rank approximations, and kernel methods.
Course Number
COMS3770W001Format
In-PersonSession
Session APoints
3 ptsSummer 2026
Times/Location
Mo 13:00-16:10We 13:00-16:10Section/Call Number
001/10666Enrollment
4 of 120Instructor
Nakul VermaAlgorithmic problem-solving and coding skills needed to devise solutions to interview questions for software engineering positions. Solutions are implemented in Python, Java, C, and C++. Approaches include brute-force, hashing, sorting, transform-and-conquer, greedy, and dynamic programming. Focus on experimentation and team work.
Course Number
COMS4137W001Format
In-PersonSession
Session BPoints
3 ptsSummer 2026
Times/Location
Tu 17:30-20:40Th 17:30-20:40Section/Call Number
001/10667Enrollment
10 of 100Instructor
Brian BorowskiPrior knowledge of Python is recommended. 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.
Course Number
COMS4701W001Format
In-PersonSession
Session BPoints
3 ptsSummer 2026
Times/Location
Mo 16:20-19:30We 16:20-19:30Section/Call Number
001/10668Enrollment
15 of 120Instructor
Tony DearComputational approaches to the analysis, understanding, and generation of natural language text at scale. Emphasis on machine learning techniques for NLP, including deep learning and large language models. Applications may include information extraction, sentiment analysis, question answering, summarization, machine translation, and conversational AI. Discussion of datasets, benchmarking and evaluation, interpretability, and ethical considerations.
Due to significant overlap in content, only one of COMS 4705 or Barnard COMS 3705BC may be taken for credit.
Course Number
COMS4705W001Format
In-PersonSession
Session APoints
3 ptsSummer 2026
Times/Location
Mo 16:10-19:20We 16:10-19:20Section/Call Number
001/10669Enrollment
23 of 120Instructor
Daniel BauerPrinciples of Ethical Artificial Intelligence across technical and societal dimensions. Combines technical AI and machine learning implementations and ethical analysis. Students will learn to build, audit, and mitigate ethical risks in AI systems using tools like fairness libraries, explainability frameworks, and privacy-preserving techniques. Emphasizes coding, algorithmic critique, and real-world cases.
Topics include: foundations of AI ethics, fairness, interpretability, explainability, accountability, privacy, robustness, alignment, safety, and societal benefit.
Assessments include coding projects, bias auditing assignments, and ethical analysis papers.
Course Number
COMS4710W001Format
In-PersonSession
Session APoints
3 ptsSummer 2026
Times/Location
Mo 10:10-13:20We 10:10-13:20Section/Call Number
001/10670Enrollment
18 of 120Instructor
Ansaf Salleb-Aouissi
Basic statistical principles and algorithmic paradigms of supervised machine learning.
Prerequisites:
Multivariable calculus (e.g. MATH1201 or MATH1205 or APMA2000), linear algebra (e.g. COMS3251 or MATH2010 or MATH2015), probability (e.g. STAT1201 or STAT4001 or IEOR3658 or MATH2015), discrete math (COMS3203), and general mathematical maturity. Programming and algorithm analysis (e.g. COMS 3134). COMS 3770 is recommended for students who wish to refresh their math background.
Course Number
COMS4771W001Format
In-PersonSession
Session APoints
3 ptsSummer 2026
Times/Location
Tu 13:00-16:10Th 13:00-16:10Section/Call Number
001/10671Enrollment
19 of 120Instructor
Nakul VermaSelected topics in computer science. Content and prerequisites vary between sections and semesters. May be repeated for credit. Check “topics course” webpage on the department website for more information on each section.
Course Number
COMS4995W001Format
In-PersonSession
Session BPoints
3 ptsSummer 2026
Times/Location
Mo 13:00-16:10We 13:00-16:10Section/Call Number
001/10672Enrollment
8 of 120Instructor
Chris MurphyPrerequisites: (COMS W3134 or COMS W3136COMS W3137) and (COMS W3203) Introduction to the design and analysis of efficient algorithms. Topics include models of computation, efficient sorting and searching, algorithms for algebraic problems, graph algorithms, dynamic programming, probabilistic methods, approximation algorithms, and NP-completeness.
Course Number
CSOR4231W001Format
In-PersonSession
Session APoints
3 ptsSummer 2026
Times/Location
Mo 13:00-16:10We 13:00-16:10Section/Call Number
001/10673Enrollment
6 of 120Instructor
Alexandr AndoniCourse Number
ENGI0001ES01Format
In-PersonSession
Session RPoints
0 ptsSummer 2026
Times/Location
Mo 09:00-17:00Tu 09:00-17:00We 09:00-17:00Th 09:00-17:00Fr 09:00-17:00Section/Call Number
S01/10658Enrollment
0 of 50Instructor
Sinisa VukelicCourse Number
ENGI0001ES02Format
In-PersonSession
Session XPoints
0 ptsSummer 2026
Times/Location
Mo 09:00-17:00Tu 09:00-17:00We 09:00-17:00Th 09:00-17:00Fr 09:00-17:00Section/Call Number
S02/10659Enrollment
0 of 30Instructor
Sinisa VukelicCourse Number
ENGI0002ES01Format
In-PersonSession
Session RPoints
0 ptsSummer 2026
Section/Call Number
S01/11085Enrollment
0 of 40Instructor
Paul BlaerCourse Number
ENGI0002ES02Format
In-PersonSession
Session XPoints
0 ptsSummer 2026
Section/Call Number
S02/11096Enrollment
0 of 40Instructor
Brian BorowskiCourse Number
ENGI0003ES01Format
In-PersonSession
Session RPoints
0 ptsSummer 2026
Section/Call Number
S01/11083Enrollment
0 of 30Instructor
Lauren HeckelmanCourse Number
ENGI0003ES02Format
In-PersonSession
Session XPoints
0 ptsSummer 2026
Section/Call Number
S02/11084Enrollment
0 of 40Instructor
Lauren HeckelmanCourse Number
ENGI0004ES01Format
In-PersonSession
Session RPoints
0 ptsSummer 2026
Section/Call Number
S01/11090Enrollment
0 of 40Instructor
Neil DolinskiCourse Number
ENGI0004ES02Format
In-PersonSession
Session XPoints
0 ptsSummer 2026
Section/Call Number
S02/11091Enrollment
0 of 30Instructor
Christopher ChenCourse Number
ENGI0005ES01Format
In-PersonSession
Session RPoints
0 ptsSummer 2026
Section/Call Number
S01/11088Enrollment
0 of 40Instructor
Ansaf Salleb-AouissiCourse Number
ENGI0006ES02Format
In-PersonSession
Session RPoints
0 ptsSummer 2026
Section/Call Number
S02/11089Enrollment
0 of 30Instructor
David VallancourtDATA SCIENCE: Decoding the Secrets of Data
Course Number
ENGI0008ES02Format
In-PersonSession
Session BPoints
0 ptsSummer 2026
Times/Location
Mo 09:00-17:00Tu 09:00-17:00We 09:00-17:00Th 09:00-17:00Fr 09:00-17:00Section/Call Number
S02/11095Enrollment
0 of 30Instructor
Yi ZhangCourse Number
ENGI0010ES01Format
In-PersonSession
Session RPoints
0 ptsSummer 2026
Times/Location
Mo 09:00-17:00Tu 09:00-17:00We 09:00-17:00Th 09:00-17:00Fr 09:00-17:00Section/Call Number
S01/11086Enrollment
0 of 30Course Number
ENGI0010ES02Format
In-PersonSession
Session XPoints
0 ptsSummer 2026
Times/Location
Mo 09:00-17:00Tu 09:00-17:00We 09:00-17:00Th 09:00-17:00Fr 09:00-17:00Section/Call Number
S02/11087Enrollment
0 of 30Instructor
Yevgeniy YesilevskiyMath in Action: Operations Research for Social Good
Course Number
ENGI0011ES02Format
In-PersonSession
Session RPoints
0 ptsSummer 2026
Times/Location
Mo 09:00-17:00Tu 09:00-17:00We 09:00-17:00Th 09:00-17:00Fr 09:00-17:00Section/Call Number
S02/11094Enrollment
0 of 30Instructor
Yaren KayaSustainable Engineering
Course Number
ENGI0013ES01Format
In-PersonSession
Session RPoints
0 ptsSustainable Engineering
Course Number
ENGI0013ES02Format
In-PersonSession
Session XPoints
0 ptsUndergraduate Research
Course Number
ENGI3900E007Format
In-PersonSession
Session XPoints
6 ptsSummer 2026
Section/Call Number
007/11362Enrollment
0 of 15Instructor
Dan SteingartRaina RanaghanElizabeth AllendeBolun XuWorking with a faculty member and a team of 3-5 graduate or undergraduate students, students will have the opportunity to work on a small research project. Students can enroll ENGI E3900/4900 for zero credit, zero fees; students who wish to earn academic credit can enroll in the faculty member’s independent research course or Fieldwork. Specific requirements for the project are defined by the faculty members. Research groups meet weekly with their faculty member. Students are also encouraged to submit bi-weekly progress reports to the faculty member. Upon completion of the research project (end of July/beginning of August), each research team will participate in a research symposium to present their research and deliverables. Note: Enrollment in this course acknowledges the student’s participation in research with an Engineering faculty member.
Course Number
ENGI4900E006Format
In-PersonSession
Session XPoints
0 ptsSummer 2026
Section/Call Number
006/11346Enrollment
0 of 100Instructor
Taylor ReyesRobert KramerWorking with a faculty member and a team of 3-5 graduate or undergraduate students, students will have the opportunity to work on a small research project. Students can enroll ENGI E3900/4900 for zero credit, zero fees; students who wish to earn academic credit can enroll in the faculty member’s independent research course or Fieldwork. Specific requirements for the project are defined by the faculty members. Research groups meet weekly with their faculty member. Students are also encouraged to submit bi-weekly progress reports to the faculty member. Upon completion of the research project (end of July/beginning of August), each research team will participate in a research symposium to present their research and deliverables. Note: Enrollment in this course acknowledges the student’s participation in research with an Engineering faculty member.