Computer Science (CS)
CS 1109 - Fundamental Programming Concepts (2 Credits)
Designed for students who intend to take CS 1110 or CS 1112 and wish to get a head start, CS 1109 focuses on basic programming concepts and problem analysis and decomposition. The programming concepts to be studied include control flow, function, and list. An appropriate high-level programming language is used.
Enrollment Information: Enrollment limited to: pre first-year students or permission of instructor.
Last Four Terms Offered: Summer 2025, Summer 2024, Summer 2023, Summer 2022
CS 1110 - Introduction to Computing: A Design and Development Perspective (4 Credits)
Programming and problem solving using Python. Emphasizes principles of software development, style, and testing. Topics include procedures and functions, iteration, recursion, arrays and vectors, strings, an operational model of procedure and function calls, algorithms, exceptions, object-oriented programming. Weekly labs provide guided practice on the computer, with staff present to help.
Distribution Requirements: (SMR-AS), (STA-IL)
Last Four Terms Offered: Spring 2025, Fall 2024, Spring 2024, Fall 2023
Learning Outcomes:
- Be fluent in the use of procedural statements -assignments, conditional statements, loops, method calls- and arrays.
- Be able to design, code, and test small Python programs that meet requirements expressed in English. This includes a basic understanding of top-down design.
- Understand the concepts of object-oriented programming as used in Python: classes, subclasses, inheritance, and overriding.
- Have knowledge of basic searching and sorting algorithms. Have knowledge of the basics of vector computation.
CS 1112 - Introduction to Computing: An Engineering and Science Perspective (4 Credits)
Programming and problem solving using Python. Emphasizes the systematic development of algorithms and programs. Topics include iteration, functions, arrays, strings, recursion, object-oriented programming, algorithms, and data handling and visualization. Assignments are designed to build an appreciation for complexity, dimension, randomness, simulation, and the role of approximation in engineering and science. Weekly discussion section provides guided practice on the computer, with staff present to help.
Prerequisites: MATH 1110 or equivalent.
Enrollment Information: Not open to: students affiliated with computer-science major.
Distribution Requirements: (SMR-AS), (STA-IL)
Last Four Terms Offered: Spring 2025, Fall 2024, Spring 2024, Fall 2023
Learning Outcomes:
- Be fluent in the use of procedural statements-assignments, conditional statements, loops, function calls-and arrays. Be able to design, code, and test small Python programs that meet requirements expressed in English. This includes a basic understanding of top-down design.
- Understand the concepts of object-oriented programming as used in Python: classes, subclasses, inheritance, and overriding.
- Have knowledge of basic sorting and searching algorithms.
- Have a working familiarity with libraries such as NumPy and Matplotlib for scientific computation and data visualization.
CS 1132 - Short Course in MATLAB (1.5 Credits)
Introduction to the MATLAB programming language. Covers the basic programming constructs of MATLAB, including assignment, conditionals, iteration, functions, arrays, vectorized computation, scientific graphics, and file input/output. Designed for students who need MATLAB for research or other courses. Does not assume any previous programming experience.
Last Four Terms Offered: Spring 2025, Fall 2024, Spring 2024, Fall 2023
Learning Outcomes:
- Students who take this course will understand the basic MATLAB constructs and be able to write simple programs.
CS 1133 - Short Course in Python (1.5-2 Credits)
Introduction to the Python programming language. Covers the basic programming constructs of Python, including assignment, conditionals, iteration, functions, object-oriented design, arrays, and vectorized computation. Designed for students who need Python for research or other courses. Does not assume any previous programming experience.
Last Four Terms Offered: Summer 2025, Spring 2025, Fall 2024, Spring 2024
Learning Outcomes:
- Students who take this course will build an understanding the basic Python constructs and be able to write simple programs.
CS 1340 - Choices and Consequences in Computing (3 Credits)
Crosslisted with INFO 1260
Computing requires difficult choices that can have serious implications for real people. This course covers a range of ethical, societal, and policy implications of computing and information. It draws on recent developments in digital technology and their impact on society, situating these in the context of fundamental principles from computing, policy, ethics, and the social sciences. A particular emphasis will be placed on large areas in which advances in computing have consistently raised societal challenges: privacy of individual data; fairness in algorithmic decision-making; dissemination of online content; and accountability in the design of computing systems. As this is an area in which the pace of technological development raises new challenges on a regular basis, the broader goal of the course is to enable students to develop their own analyses of new situations as they emerge at the interface of computing and societal interests.
Distribution Requirements: (ETH-AG, KCM-AG, OPHLS-AG), (ETM-AS, SDS-AS), (STA-IL)
Last Four Terms Offered: Spring 2025, Spring 2024, Spring 2022, Spring 2021
CS 1380 - Data Science for All (4 Credits)
Crosslisted with STSCI 1380, ORIE 1380, INFO 1380
This course provides an introduction to data science using the statistical programming language R. We focus on building skills in inferential thinking and computational thinking, guided by the practical questions we seek to answer from data sets arising in medicine, economics and other social sciences. The course starts with essential R programming principles, and how to use R for data manipulation, visualization, and sampling. These techniques are then used to summarize and visualize real data sets, draw meaningful conclusions from those data, and assess the uncertainty surrounding those conclusions. Throughout the process, students will learn to develop hypotheses about their data, and use simulations and statistical techniques to test these hypotheses. The course also covers how to use the Tidyverse open-source R packages to clean and organize complex data sets, and create high quality graphics for data visualization.
Distribution Requirements: (DLG-AG, OPHLS-AG), (SDS-AS), (STA-IL)
Last Four Terms Offered: Spring 2024, Spring 2023, Spring 2022, Winter 2022
CS 1610 - Computing in the Arts (3 Credits)
Crosslisted with ENGRI 1610, PSYCH 1650, MUSIC 1465
Over the centuries, artists in a wide variety of media have employed many approaches to the creative process, ranging from the philosophical to the mechanical to the virtual. This course unravels some of the mysteries going on inside software used for art and music. It looks at ways of breaking things apart and sampling and ways of putting things together and resynthesizing, and explores ideas for creation. This course does not teach software packages for creating art and music. The course complements ART 2701 and MUSIC 1421.
Distribution Requirements: (SMR-AS)
Last Four Terms Offered: Summer 2025, Summer 2024, Summer 2023, Summer 2022
Learning Outcomes:
- Understand, manipulate, and design algorithms and other processes for creating music and other art forms. Specific techniques may draw from stochastic, iterative, algebraic and geometric methods, amongst others.
- Have a degree of understanding of the design process -idea, formulation, specification, implementation, testing to refinement - and the development of effective interfaces.
- Have a basic understanding of the basics of probability, group theory, basic programming, feedback systems, sampling, and synthesis with emphasis on building applications via assisted process control (principles of simple programming).
CS 1620 - Visual Imaging in the Electronic Age (4 Credits)
Crosslisted with ARCH 3702, ART 2907, ENGRI 1620
Interdisciplinary survey course designed to introduce students in the creative arts, science, and engineering to the concepts of 2D and 3D digital pictorial representation and display. It is a concept course that concentrates on why rather than how. Topics include perspective representations, display technology, how television works, bandwidth concepts, digital photography, computer graphics modeling and rendering, color perception, 3D data acquisition, volumetric imaging, and historical precedents, primarily from the art world.
Distribution Requirements: (MQR-AAP)
Last Four Terms Offered: Fall 2024, Fall 2023, Fall 2021, Fall 2020
CS 1700 - Understanding Artificial Intelligence (3 Credits)
This course provides a non-programming introduction to the key ideas of Artificial Intelligence (AI), intended for students without significant technical background in computing. Students will leave with an understanding of the core technical ideas that power modern AI, in such areas as machine learning and neural networks, computer vision, natural processing, game AI, and robotics, as well as our evolving appreciation of the societal implications of work in this area.
Last Four Terms Offered: Spring 2025, Spring 2023
CS 1710 - Introduction to Cognitive Science (3 Credits)
Crosslisted with COGST 1101, PSYCH 1102, LING 1170, PHIL 1620, HD 1102
This course provides an introduction to the science of the mind. Everyone knows what it's like to think and perceive, but this subjective experience provides little insight into how minds emerge from physical entities like brains. To address this issue, cognitive science integrates work from at least five disciplines: Psychology, Neuroscience, Computer Science, Linguistics, and Philosophy. This course introduces students to the insights these disciplines offer into the workings of the mind by exploring visual perception, attention, memory, learning, problem solving, language, and consciousness.
Distribution Requirements: (ETM-AS), (KCM-AG), (SCT-IL)
Last Four Terms Offered: Summer 2025, Fall 2024, Summer 2024, Fall 2023
CS 1998 - First-year and Nontechnical Team Projects (1-3 Credits)
First-year and Nontechnical Team Projects.
Exploratory Studies:
(CU-UG)
Last Four Terms Offered: Spring 2025, Fall 2024, Spring 2024, Fall 2023 CS 2024 - C++ Programming (2 Credits)
An intermediate introduction to the C++ programming language and the C/C++ standard libraries. Topics include basic statements, declarations, and types; stream I/O; user-defined classes and types; derived classes, inheritance, and object-oriented programming; exceptions and templates. Recommended for students who plan to take advanced courses in computer science that require familiarity with C++ or C.
Prerequisites: one programming course or equivalent programming experience.
Last Four Terms Offered: Fall 2024, Fall 2023, Fall 2022, Fall 2021
CS 2043 - UNIX Tools and Scripting (1.5 Credits)
UNIX and UNIX-like systems are increasingly being used on personal computers, mobile phones, web servers, and many other systems. They represent a wonderful family of programming environments useful both to computer scientists and to people in many other fields, such as computational biology and computational linguistics, in which data is naturally represented by strings. This course takes students from shell basics and piping, to regular-expression processing tools, to shell scripting and Python. Other topics to be covered include handling concurrent and remote resources, manipulating streams and files, and managing software installations.
Prerequisites: one programming course or equivalent programming experience.
Last Four Terms Offered: Spring 2025, Spring 2024, Spring 2023, Spring 2022
CS 2110 - Object-Oriented Programming and Data Structures (4 Credits)
Crosslisted with ENGRD 2110
Intermediate programming in a high-level language and introduction to software engineering. Topics include object-oriented programming (objects, classes, subtypes, encapsulation, polymorphism), program correctness (specifications, invariants, testing), algorithm analysis (asymptotic complexity, big O notation), recursion, data structures (lists, trees, stacks, queues, heaps, hash tables, graphs), iteration and searching/sorting, graph algorithms, and concurrent and event-driven programming (graphical user interfaces, synchronization). Java is the principal programming language.
Distribution Requirements: (SMR-AS)
Last Four Terms Offered: Spring 2025, Fall 2024, Summer 2024, Spring 2024
Learning Outcomes:
- Employ recursion and object-oriented programming concepts (e.g., classes, interfaces, polymorphism, inheritance) to solve computational problems.
- Design, implement, and verify nontrivial Java programs (roughly 1000 lines of code), starting from an English language specification, leveraging features like encapsulation and unit tests to improve maintainability.
- Build and modify event-driven graphical user interfaces (GUIs) expressed in Java.
- Analyze the asymptotic complexity of algorithms and programs to evaluate their running times and memory requirements.
- Implement basic data structures taught in the course (linked lists, binary search trees, heaps, hash tables, adjacency lists) and be able to use them in programs.
CS 2112 - Object-Oriented Design and Data Structures - Honors (5 Credits)
Crosslisted with ENGRD 2112
Intermediate software design and introduction to key computer science ideas. Topics are similar to those in CS 2110 but are covered in greater depth, with more challenging assignments. Topics include object-oriented programming, program structure and organization, program reasoning using specifications and invariants, recursion, design patterns, concurrent programming, graphical user interfaces, data structures as in CS 2110, sorting and graph algorithms, asymptotic complexity, and simple algorithm analysis. Java is the principal programming language.
Prerequisites: excellent performance in CS 1110, CS 1112 or equivalent course in Java or C++, or permission of instructor.
Distribution Requirements: (SMR-AS)
Last Four Terms Offered: Fall 2024, Fall 2022, Fall 2021, Fall 2020
CS 2770 - Excursions in Computational Sustainability (3 Credits)
Balancing environmental, economic, and societal needs for a sustainable future encompasses problems of unprecedented size and complexity. Computing and information science can play an important role in addressing critical sustainability challenges faced by present and future generations. The goal of the course is to introduce students to a range of sustainability challenges and to computational methods that can help address such challenges. Sustainability topics include sustainable development, biodiversity and wildlife conservation, poverty mitigation, food security, renewable resources, energy, transportation, and climate change. In the context of these sustainability topics, the course will introduce students to mathematical and computational modeling techniques, algorithms, and statistical methods. The course is at the introductory undergraduate level. Students are expected to have basic knowledge of probability theory and calculus.
Distribution Requirements: (SBA-AG)
Exploratory Studies:
(CU-SBY)
Last Four Terms Offered: Spring 2024, Spring 2023, Spring 2021, Spring 2020 Learning Outcomes:
- Students will be able to identify notions of sustainability as they arise in ecology, geology, economics, and other biological, physical, and social sciences.
- Students will be able to mathematically interpret and calculate levels of sustainability.
- Students will learn how to problem solve techniques of sustainability via computational models, algorithms, and statistical methods.
CS 2800 - Mathematical Foundations of Computing (4 Credits)
Covers the mathematics that underlies most of computer science. Topics include mathematical induction; logical proof; propositional and predicate calculus; sets, functions, and relations; graphs; combinatorics and discrete mathematics; basic probability theory; and finite-state machines. These topics are discussed in the context of applications to many areas of computer science.
Distribution Requirements: (SMR-AS)
Last Four Terms Offered: Spring 2025, Fall 2024, Spring 2024, Fall 2023
CS 2802 - Mathematical Foundations of Computing - Honors (3 Credits)
Covers the mathematics that underlies most of computer science. Topics include mathematical induction; logical proof; propositional and predicate calculus; sets, functions, and relations; graphs; combinatorics and discrete mathematics; basic probability theory; and finite-state machines. These topics are discussed in the context of applications to many areas of computer science. This course is an honors version of CS 2800. It will cover essentially the same material but go into more depth.
Distribution Requirements: (SMR-AS)
Last Four Terms Offered: Spring 2023, Fall 2020, Spring 2020, Spring 2019
CS 2850 - Networks (3 Credits)
This interdisciplinary course examines network structures and how they matter in everyday life. The course examines how each of the computing, economic, sociological and natural worlds are connected and how the structure of these connections affects each of these worlds. Tools of graph theory and game theory are taught and then used to analyze networks. Topics covered include the web, the small world phenomenon, markets, neural networks, contagion, search and the evolution of networks.
Distribution Requirements: (OCE-IL, QP-IL), (SBA-AG), (SSC-AS)
Last Four Terms Offered: Summer 2025, Winter 2025, Fall 2024, Summer 2024
CS 3110 - Data Structures and Functional Programming (4 Credits)
Advanced programming course that emphasizes functional programming techniques and data structures. Programming topics include recursive and higher-order procedures, models of programming language evaluation and compilation, type systems, and polymorphism. Data structures and algorithms covered include graph algorithms, balanced trees, memory heaps, and garbage collection. Also covers techniques for analyzing program performance and correctness.
Distribution Requirements: (SMR-AS)
Last Four Terms Offered: Spring 2025, Fall 2024, Spring 2024, Fall 2023
CS 3152 - Introduction to Computer Game Architecture (4 Credits)
A project-based course in which programmers and designers collaborate to make a computer game. This course investigates the theory and practice of developing computer games from a blend of technical, aesthetic, and cultural perspectives. Technical aspects of game architecture include software engineering, artificial intelligence, game physics, computer graphics, and networking. Aesthetic and cultural include art and modeling, sound and music, game balance, and player experience.
Prerequisites: CS 2110 for programmers, or permission of the instructor. Corequisite: ENGRC 3152.
Distribution Requirements: (SMR-AS)
Last Four Terms Offered: Spring 2025, Spring 2024, Spring 2023, Spring 2022
CS 3220 - Computational Mathematics for Computer Science (3 Credits)
Introduction to computational mathematics covering topics in (numerical) linear algebra, statistics, and optimization. Topics included are those of particular relevance to upper-division computer science courses in machine learning, numerical analysis, graphics, vision, robotics, and more. An emphasis is placed both on understanding core mathematical concepts and introducing associated computational methodologies.
Distribution Requirements: (SMR-AS)
Last Four Terms Offered: Fall 2021, Fall 2020, Fall 2019, Spring 2012
CS 3300 - Visual Data Analytics for the Web (3 Credits)
Crosslisted with INFO 3300
This course will cover technologies for representing, modeling and displaying data in the context of interactive web pages. Practical skills for building web pages will be mixed with data mining algorithms and visualization design theory. We will use the D3 Javascript library to develop both static and dynamic visualizations, learn more about programming in Javascript, and explore web scalable vector graphics (SVG). Through design critique and formal study, we will identify the techniques visualization developers employ to create the right visualization for a given use case.
Prerequisites: CS 2110/ENGRD 2110 and INFO 2310 or permission of instructor.
Distribution Requirements: (DLG-AG, OPHLS-AG), (SDS-AS)
Last Four Terms Offered: Fall 2024, Fall 2023, Fall 2022, Fall 2021
CS 3410 - Computer System Organization and Programming (4 Credits)
Introduction to computer organization, systems programming and the hardware/ software interface. Topics include systems programming, instruction sets, computer arithmetic, data formats, memory hierarchies including caches and virtual memory, operating systems, and parallel programming. Students learn assembly language programming and the C programming language.
Prerequisites: CS 2110 or equivalent programming experience.
Distribution Requirements: (SMR-AS)
Last Four Terms Offered: Spring 2025, Fall 2024, Spring 2024, Fall 2023
CS 3420 - Embedded Systems (4 Credits)
Crosslisted with ECE 3140
An introduction to the design of embedded systems, with an emphasis on understanding the interaction between hardware, software, and the physical world. Topics covered include assembly language programming, interrupts, I/O, concurrency management, scheduling, resource management, and real-time constraints.
Prerequisites: ECE 2300/ENGRD 2300. Recommended prerequisite: ECE 2400/ENGRD 2140.
Last Four Terms Offered: Spring 2025, Spring 2024, Spring 2023, Spring 2022
CS 3700 - Foundations of AI Reasoning and Decision-Making (3 Credits)
Introduction to major topics in artificial intelligence, including heuristic search, game-playing, knowledge representation and reasoning, planning, probabilistic inference, sequential decision-making and reinforcement learning.
Prerequisites: CS 2110/ENGRD 2110 and CS 2800, or by permission of instructor.
Distribution Requirements: (SMR-AS)
Last Four Terms Offered: Spring 2025, Fall 2024, Spring 2024, Fall 2023
CS 3780 - Introduction to Machine Learning (4 Credits)
The course provides an introduction to machine learning, focusing on supervised learning and its theoretical foundations. Topics include regularized linear models, boosting, kernels, deep networks, generative models, online learning, and ethical questions arising in ML applications.
Prerequisites: probability theory (e.g. BTRY 3080, CS 2800, ECON 3130, ENGRD 2700, MATH 4710) and linear algebra (e.g. MATH 2210, MATH 2310, MATH 2940), single-variable calculus (e.g. MATH 1110, MATH 1920) and programming proficiency (e.g. CS 2110).
Forbidden Overlaps: CS 3780, CS 5780, ECE 3200, ECE 5420, ORIE 3741, ORIE 5741, STSCI 3740, STSCI 5740
Course Fee: Course Fee, $30. Course fee.
Distribution Requirements: (OPHLS-AG), (SDS-AS)
Last Four Terms Offered: Spring 2025, Fall 2024, Spring 2024, Fall 2023
CS 4090 - Teaching Experience in Computer Science (1-4 Credits)
Earn course credit for working as a consultant or ugrad TA in a computer science course.
Enrollment Information: Not open to: students in the College of Arts and Sciences.
Last Four Terms Offered: Spring 2025, Fall 2024, Spring 2024, Fall 2023
CS 4110 - Programming Languages and Logics (4 Credits)
An introduction to the theory, design, and implementation of programming languages. Topics include operational semantics, type systems, higher-order functions, scope, lambda calculus, laziness, exceptions, side effects, continuations, objects, and modules. Also discussed are logic programming, concurrency, and distributed programming.
Prerequisites: CS 3110 or permission of instructor.
Distribution Requirements: (SMR-AS)
Last Four Terms Offered: Spring 2024, Fall 2021, Fall 2020, Fall 2018
Learning Outcomes:
- Describe the semantics of common programming language features using operational, denotational, and axiomatic techniques.
- Construct formal proofs about programming language features using induction and precise logical reasoning.
- Design and implement definitional interpreters for common programming language features.
CS 4120 - Introduction to Compilers (3 Credits)
An introduction to the specification and implementation of modern compilers. Topics covered include lexical scanning, parsing, type checking, code generation and translation, an introduction to program analysis and optimization, and compile-time and run-time support for modern programming languages. As part of the course, students will build a working compiler for an object-oriented language.
Distribution Requirements: (SMR-AS)
Last Four Terms Offered: Spring 2023, Spring 2022, Spring 2021, Spring 2020
CS 4121 - Practicum in Compilers (2 Credits)
Students will build a working compiler for an object-oriented language.
Corequisites: CS 4120.
Last Four Terms Offered: Spring 2023, Spring 2022, Spring 2021, Spring 2020
CS 4152 - Advanced Topics in Computer Game Architecture (3 Credits)
Project-based follow-up course to CS 3152. Students work in a multidisciplinary team to develop a game that incorporates innovative game technology. Advanced topics include 3D game development, mobile platforms, multiplayer gaming, and nontraditional input devices.There is a special emphasis on developing games that can be submitted to festivals and competitions.
Distribution Requirements: (SMR-AS)
Last Four Terms Offered: Spring 2025, Spring 2024, Spring 2023, Spring 2022
CS 4160 - Formal Verification (4 Credits)
An introduction to formal verification, focusing on correctness of functional and imperative programs relative to mathematical specifications. Topics include computer-assisted theorem proving, logic, programming language semantics, and verification of algorithms and data structures. Assignments involve extensive use of a proof assistant to develop and check proofs.
Prerequisites: CS 3110 or permission of instructor.
Distribution Requirements: (SMR-AS)
Last Four Terms Offered: Spring 2022, Spring 2020, Spring 2019
CS 4210 - Numerical Analysis and Differential Equations (4 Credits)
Crosslisted with MATH 4250
Introduction to the fundamentals of numerical analysis: error analysis, approximation, interpolation, and numerical integration. In the second half of the course, we use these to build approximate solvers for ordinary and partial differential equations. Strong emphasis is placed on understanding the advantages, disadvantages, and limits of applicability for all the covered techniques. Computer programming is used to test the theoretical concepts throughout the course. Students will be expected to be comfortable writing proofs and have knowledge of programming. MATH 4250/CS 4210 and MATH 4260/CS 4220 can be taken independently from each other and in either order. Together they provide a comprehensive introduction to numerical analysis.
Prerequisites: MATH 2210, MATH 2230-MATH 2240, MATH 2310, or MATH 2940 or equivalent and one additional mathematics course numbered 3000 or above.
Distribution Requirements: (MQL-AG, OPHLS-AG), (SMR-AS)
Last Four Terms Offered: Fall 2024, Fall 2023, Fall 2022, Fall 2021
CS 4220 - Numerical Analysis: Linear and Nonlinear Problems (4 Credits)
Crosslisted with MATH 4260
Introduction to the fundamentals of numerical linear algebra: direct and iterative methods for linear systems, eigenvalue problems, singular value decomposition. In the second half of the course, the above are used to build iterative methods for nonlinear systems and for multivariate optimization. Strong emphasis is placed on understanding the advantages, disadvantages, and limits of applicability for all the covered techniques. Computer programming is required to test the theoretical concepts throughout the course.
Distribution Requirements: (SMR-AS)
Last Four Terms Offered: Spring 2025, Spring 2024, Spring 2023, Spring 2022
CS 4300 - Language and Information (3 Credits)
Crosslisted with INFO 4300
How to make sense of the vast amounts of information available online, and how to relate it and to the social context in which it appears? This course introduces basic tools for retrieving and analyzing unstructured textual information from the web and social media. Applications include information retrieval (with human feedback), sentiment analysis, and social analysis of text. The coursework will include programming projects that play on the interaction between knowledge and social factors.
Prerequisites: 1) Linear algebra: strong performance in MATH 2940 or equivalent; 2) Discrete math: strong performance in CS 2800 or equivalent. Note: The linear algebra and discrete math requirements can also be fulfilled with a strong performance in INFO 2950; and 3) Programming proficiency: CS 2110 or equivalent with strong Python skills and familiarity with IPython Notebooks, or permission of instructor.
Distribution Requirements: (OPHLS-AG), (SDS-AS)
Last Four Terms Offered: Spring 2025, Spring 2024, Spring 2023, Spring 2021
CS 4320 - Introduction to Database Systems (3 Credits)
Introduction to modern database and data storage systems. Concepts covered include data models, query languages, database designs, storage structures, access methods, query processing and optimization, transaction management, and recovery in both relational and nonrelation data storage systems.
Distribution Requirements: (SMR-AS)
Last Four Terms Offered: Fall 2024, Fall 2023, Fall 2022, Fall 2021
CS 4321 - Practicum in Database Systems (2 Credits)
Students build part of a database system in Java.
Last Four Terms Offered: Fall 2024, Fall 2023, Fall 2022, Fall 2020
CS 4410 - Operating Systems (3 Credits)
Introduction to the design of systems programs, with emphasis on multiprogrammed operating systems. Topics include concurrency, synchronization, deadlocks, memory management, protection, input-output methods, networking, file systems and security. The impact of network and distributed computing environments on operating systems is also discussed.
Distribution Requirements: (SMR-AS)
Last Four Terms Offered: Summer 2025, Spring 2025, Spring 2024, Fall 2023
CS 4411 - Practicum in Operating Systems (2 Credits)
Studies the practical aspects of operating systems through the design and implementation of an operating system kernel that supports multiprogramming, virtual memory, and various input-output devices. All the programming for the project is in a high-level language.
Corequisites: CS 4410.
Last Four Terms Offered: Spring 2025, Spring 2024, Fall 2023, Spring 2023
CS 4414 - Systems Programming (4 Credits)
CS 4414 exposes students to programming applications at the systems level and to the operating systems abstractions that these applications depend on. It then builds on this foundation to look at systems issues that shape the performance and reliability of modern ML and AI applications, such as “chat bots” and question-answering AIs. We do not expect students to understand how these ML and AI tools work, in a mathematical sense. Instead our focus is on how the execute, where components run and how they talk one another, how they interact with big-data storage, and how they leverage accelerators such as GPU.
Last Four Terms Offered: Fall 2024, Spring 2023, Fall 2021, Fall 2020
Learning Outcomes:
- Proficiency programming in C++ 20, using Visual Studio Code IDE on Linux (Ubuntu) demonstrated through successful completion of hands-on assignments.
- Proficiency with Linux commands and bash programming demonstrated through successful completion of hands-on assignments.
- Ability to write multithreaded code that leverages the full performance of modern NUMA servers demonstrated through successful completion of hands-on assignments that focus on speeding up code by using multicore parallelism.
- Interpretation of parallelism in many forms, and ability to create parallel solutions to practical computing problems, to implement them correctly in C++, and to debug and optimize solutions. Demonstrated through a mix of exam performance and ability to use these ideas when creating hands-on assignments.
- Ability to work with the monitor synchronization pattern in C++, and a deeper recognition of associated issues such as race conditions, critical sections, coordination through the consumer producer and readers-writers models, deadlocks, livelocks. Demonstrated through a mix of exam performance and ability to use these ideas when creating hands-on assignments.
- Appreciation of how these skills carry over to creating AI and ML solutions that perform well (meaning, they use computing platforms efficiently, don’t waste electric power, and are able to respond to tasks quickly).
CS 4420 - Computer Architecture (4 Credits)
Crosslisted with ECE 4750
This course aims to provide a strong foundation for students to understand modern computer system architecture and to apply these insights and principles to future computer designs. The course is structured around the three primary building blocks of general-purpose computing systems: processors, memories, and networks. The first half of the course focuses on the fundamentals of each building block. Topics include processor microcoding and pipelining; cache microarchitecture and optimization; and network topology, routing, and flow control. The second half of the course delves into more advanced techniques and will enable students to understand how these three building blocks can be integrated to build a modern shared-memory multicore system. Topics include superscalar execution, branch prediction, out-of-order execution, register renaming and memory disambiguation; VLIW, vector, and multithreaded processors; memory protection, translation, and virtualization; and memory synchronization, consistency, and coherence. This course includes a significant project decomposed into five lab assignments. Throughout the semester, students will gradually design, implement, test, and evaluate a complete multicore system capable of running real parallel applications at the register-transfer level.
Prerequisites: ECE 3140/CS 3420 or CS 3410. Students should feel comfortable working with a hardware description language such as Verilog, SystemVerilog, or VHDL.
Last Four Terms Offered: Fall 2024, Fall 2023, Fall 2022, Fall 2021
Learning Outcomes:
- Describe computer architecture concepts and mechanisms related to the design of modern processors, memories, and networks and explain how these concepts and mechanisms interact.
- Apply this understanding to new computer architecture design problems within the context of balancing application requirements against technology constraints; more specifically, quantitatively assess a design's execution time in cycles and qualitatively assess a design's cycle time, area, and energy.
- Evaluate various design alternatives and make a compelling quantitative and/or qualitative argument for why one design is superior to the other approaches.
- Demonstrate the ability to implement and verify designs of varying complexity at the register-transfer-levels.
- Create new designs at the register-transfer-level and the associated effective testing strategies.
- Write concise yet comprehensive technical reports that describe designs implemented at the register-transfer-levels, explain the testing strategy used to verify functionality, and evaluate the designs to determine the superior approach.
CS 4450 - Introduction to Computer Networks (3 Credits)
This course introduces the basic architectural and design principles of computer networking including the design of communication protocols, congestion control, routing and switching, Internet, data center networks and wireless networks.
Distribution Requirements: (SMR-AS)
Last Four Terms Offered: Spring 2025, Fall 2024, Spring 2024, Spring 2023
CS 4620 - Introduction to Computer Graphics (3 Credits)
Introduction to the principles of computer graphics in two and three dimensions. Topics include digital images, filtering and antialiasing, 2-D and 3-D affine geometry, ray tracing, perspective and 3-D viewing, the graphics pipeline, curves and surfaces, and human visual perception. This course emphasizes fundamental techniques in graphics, with both written and practical assignments. May be taken with or without concurrent enrollment in CS 4621.
Prerequisites: CS 2110 or ENGRD 2110, and MATH 1910 or MATH 1120, and MATH 2940 or MATH 2210 or MATH 2310 or equivalent.
Distribution Requirements: (SMR-AS)
Last Four Terms Offered: Fall 2024, Fall 2023, Fall 2022, Fall 2021
CS 4621 - Computer Graphics Practicum (2 Credits)
Provides CS 4620 students with hands-on experience in computer graphics programming on modern graphics hardware. This course emphasizes effective use of graphics APIs and the architecture of graphics applications. A final project involves building a substantial interactive graphics system. The course uses Javascript and WebGL for code development.
Prerequisites: Prerequisite or corequisite: CS 4620.
Last Four Terms Offered: Fall 2024, Fall 2023, Fall 2022, Fall 2021
CS 4670 - Introduction to Computer Vision (4 Credits)
An in-depth introduction to computer vision. The goal of computer vision is to compute properties of our world-the 3D shape of an environment, the motion of objects, the names of people or things-through analysis of digital images or videos. The course covers a range of topics, including 3D reconstruction, image segmentation, object recognition, and vision algorithms fro the Internet, as well as key algorithmic, optimization, and machine learning techniques, such as graph cuts, non-linear least squares, and deep learning. This course emphasizes hands-on experience with computer vision, and several large programming projects.
Distribution Requirements: (SMR-AS)
Last Four Terms Offered: Spring 2025, Spring 2024, Spring 2023, Spring 2022
CS 4701 - Practicum in Artificial Intelligence (2 Credits)
Artificial Intelligence project class. Topic choice is student driven and (small) teams are encouraged, but each individual team member must do substantial implementation with significant average weekly time commitment. Possible projects topics include knowledge representation systems, search procedures, game-playing, automated reasoning, machine learning, genetic algorithms, planning, natural language processing, computer vision.
Prerequisites: at least one of the following courses: CS 3700, CS 3780, CS 4670, CS 4740, ECE 4200, ORIE 3741, STSCI 3740, or their equivalents.
Last Four Terms Offered: Spring 2025, Fall 2024, Spring 2024, Fall 2023
CS 4740 - Natural Language Processing (4 Credits)
Crosslisted with COGST 4740, LING 4474
This course constitutes an introduction to natural language processing (NLP), the goal of which is to enable computers to use human languages as input, output, or both. NLP is at the heart of many of today's most exciting technological achievements, including machine translation, question answering and automatic conversational assistants. The course will introduce core problems and methodologies in NLP, including machine learning, problem design, and evaluation methods.This class satisfies the practicum/project requirement for CS majors. As a consequence, expect each of the roughly four connected programming assignments to take tens of hours, although this time is distributed over multiple weeks; to require writing code to massage raw-ish data into different formats and other accessory functions as well as to implement core algorithms; and to necessitate much independent examination of documentation.
Distribution Requirements: (SMR-AS)
Last Four Terms Offered: Spring 2025, Fall 2023, Fall 2022, Fall 2021
CS 4744 - Computational Linguistics I (4 Credits)
Crosslisted with LING 4424, COGST 4240
Computational models of natural languages. Topics are drawn from: tree syntax and context free grammar, finite state generative morpho-phonology, feature structure grammars, logical semantics, tabular parsing, Hidden Markov models, categorial and minimalist grammars, text corpora, information-theoretic sentence processing, discourse relations, and pronominal coreference.
Prerequisites: Elementary Python (ex. CS 1133), LING 1101, or CS 2800, or PHIL 2310; for CS majors: Elementary Python and CS 2800.
Distribution Requirements: (SMR-AS)
Last Four Terms Offered: Spring 2025, Spring 2024, Spring 2023, Spring 2022
CS 4745 - Computational Linguistics II (4 Credits)
Crosslisted with LING 4434
An in-depth exploration of modern computational linguistic techniques. A continuation of LING 4424 - Computational Linguistics I. Whereas LING 4424 covers foundational techniques in symbolic computational modeling, this course will cover a wider range of applications as well as coverage of neural network methods. We will survey a range of neural network techniques that are widely used in computational linguistics and natural language processing as well as a number of techniques that can be used to probe the linguistic information and language processing strategies encoded in computational models. We will examine ways of mapping this linguistic information both to linguistic theory as well as to measures of human processing (e.g., neuroimaging data and human behavioral responses).
Prerequisites: LING 4424 and one other 3000 level or above linguistics course.
Distribution Requirements: (OPHLS-AG), (SDS-AS)
Last Four Terms Offered: Fall 2024, Fall 2023, Fall 2022, Fall 2020
CS 4750 - Foundations of Robotics (4 Credits)
Robotics is interdisciplinary and draws inspiration from many different fields towards solving a variety of tasks in real-world environments using physical systems. This course is a challenging introduction to basic computational concepts used broadly in robotics. By the end of this course, students should have a fundamental understanding of how the different sub-fields of robotics such as kinematics, state-estimation, motion planning, and controls come together to develop intelligent behaviors in physical robotic systems. The mathematical basis of each area will be emphasized, and concepts will be motivated using common robotics applications. Students will be evaluated using a mixture of theoretical and programming exercises throughout the semester.
Distribution Requirements: (SMR-AS)
Last Four Terms Offered: Fall 2024, Fall 2023, Fall 2022, Fall 2021
CS 4754 - Re-Designing Robots (3 Credits)
Crosslisted with INFO 4410
"Re-Designing Robots" is a studio-based graduate course focused on building and deploying robots in real-world settings such as homes, workplaces, and public spaces. Students will work individually and collaboratively in interdisciplinary teams, incorporating perspectives from engineering, computer science, art, design, and social sciences. The course emphasizes critical examination of the societal roles and ethical implications of robotic technologies, encouraging students to ask not just how robots can function better, but how they can meaningfully and responsibly enhance human activities. Key topics include prototyping interactive robotic systems, video interaction analysis, and hands-on experimentation with physical robot prototypes. Through immersive, hands-on projects, students will develop the expertise to thoughtfully design robots that integrate seamlessly and responsibly into everyday life.
Enrollment Information: Enrollment is by instructor permission only and is for Masters and Undergraduate students only.
Course Fee: Course Fee, $ 200.00. For equipment.
Last Four Terms Offered: Spring 2025, Fall 2021, Spring 2019, Spring 2017
CS 4756 - Robot Learning (4 Credits)
How do we get robots out of the labs and into the real world with all it's complexities? Robots must solve two fundamental problems -- (1) Perception: Sense the world using different modalities and (2) Decision making: Act in the world by reasoning over decisions and their consequences. Machine learning promises to solve both problems in a scalable way using data. However, it has fallen short when it comes to robotics. This course dives deep into robot learning, looks at fundamental algorithms and challenges, and case-studies of real-world applications from self-driving to manipulation.
Prerequisites: CS 2800, probability theory (e.g. BTRY 3080, ECON 3130, MATH 4710, ENGRD 2700), linear algebra (e.g. MATH 2940), calculus (e.g. MATH 1920) , programming proficiency (e.g. CS 2110), and CS 3780 or equivalent or permission of instructor.
Last Four Terms Offered: Spring 2025, Fall 2024, Spring 2024, Spring 2023
Learning Outcomes:
- Imitation and interactive no-regret learning that handle distribution shifts, exploration/exploitation.
- Practical reinforcement learning leveraging both model predictive control and model-free methods.
- Learning perception models using probabilistic inference and 2D/3D deep learning.
- Frontiers in learning from human feedback (RLHF), planning with LLMs, human motion forecasting and offline reinforcement learning.
CS 4758 - Autonomous Mobile Robots (3 Credits)
Creating robots capable of performing complex tasks autonomously requires one to address a variety of different challenges such as sensing, perception, control, planning, mechanical design, and interaction with humans. In recent years many advances have been made toward creating such systems, both in the research community (different robot challenges and competitions) and in industry (industrial, military, and domestic robots). This course gives an overview of the challenges and techniques used for creating autonomous mobile robots. Topics include sensing, localization, mapping, path planning, motion planning, obstacle and collision avoidance, and multi-robot control.
Prerequisites: MATLAB programming experience.
Last Four Terms Offered: Spring 2025, Spring 2023, Spring 2022, Spring 2021
Learning Outcomes:
- Students will be able to understand and implement localization and mapping algorithms using different sensor modalities.
- Students will be able to generate a path and the motion for a robot moving around an area with obstacles.
- Students will be able to understand and implement the concepts of different approaches for motion planning such as roadmaps, feedback control, and sampling based methods.
- Students will be able to apply the tools learned in the class to physical robots.
CS 4775 - Computational Genetics and Genomics (4 Credits)
Crosslisted with BIOCB 4840
Computational methods for analyzing genetic and genomic data. Topics include sequence alignment, hidden Markov Models for discovering sequence features, motif finding using Gibbs sampling, phylogenetic tree reconstruction, inferring haplotypes, and local and global ancestry inference. Prior knowledge of biology is not necessary to complete this course.Grad students must do a final project that involves original research and that in most circumstances will involve programming and real data.Undergrads will not need to do research but will do a final project that involves a sizeable amount of programming, comprehensive literature review of a topic, or similar.
Distribution Requirements: (BIO-AS, SDS-AS), (OPHLS-AG)
Last Four Terms Offered: Fall 2024, Fall 2023, Fall 2022, Fall 2020
Learning Outcomes:
- Understand computational algorithms used for the analysis of genetic and genomic data
- Formulate computational approaches for solving problems in computational genomics
- Understand challenges and limitations in inference methods used in computational genetics and genomics
CS 4782 - Introduction to Deep Learning (4 Credits)
This class is an introductory course to deep learning. It covers the fundamental principles behind training and inference of deep networks, the specific architecture design choices applicable for different data modalities, discriminative and generative settings, and the ethical and societal implications of such models.
Last Four Terms Offered: Spring 2025, Spring 2024
CS 4783 - Mathematical Foundations of Machine Learning (4 Credits)
Machine Learning (ML) is a ubiquitous technology. This course, which is a follow up to an introductory course on ML will cover topics that aim to provide a theoretical foundation for designing and analyzing ML algorithms. This course has three basic blocks. First block will provide basic mathematical and statistical toolset required for formalizing ML problems effectively and analyzing them. This block will include topics like generalization, sample complexity of learning algorithm and understanding the inherent challenges in various ML frameworks and models. The second block will provide the foundations in algorithms design and optimization techniques required for building and analyzing various ML algorithms. This block will cover topics like gradient descent, stochastic gradient descent, algorithm design for online learning and computational challenges in ML. ML algorithms are deployed in real world and make decisions that affect real world users. The third block, will cover topics on how to formally reason about and how to design ML methods that address social and user related concerns that ML algorithms need to deal with. This block will cover topics such as fairness, privacy, the right to be forgotten and other such issues and how to build ML algorithms that address or assuage these concerns.
Last Four Terms Offered: Fall 2023, Spring 2022
Learning Outcomes:
- Students will be able to reason about Machine Learning(ML) problems and algorithms in a principled fashion, to identify what makes learning hard and how to design algorithms that would provably work well.
- Students will be able to analyze new machine learning algorithms they might encounter or even design their own methods that can address specific requirements that they might encounter in their applications.
- Through completion of the term project students will demonstrate what it entails to formally analyze and reason out an end-to-end topic in the theory of ML and give them a taste of a real research project.
- Students will be aware of the social implications ML method choices can have in the real world and demonstrate to them tools that can help them identify and tackle such real world social challenges that any ML based system needs to deal with.
CS 4787 - Principles of Large-Scale Machine Learning Systems (4 Credits)
An introduction to the mathematical and algorithms design principles and tradeoffs that underlie large-scale machine learning on big training sets. Topics include: stochastic gradient descent and other scalable optimization methods, mini-batch training, accelerated methods, adaptive learning rates, parallel and distributed training, and quantization and model compression.
Distribution Requirements: (SMR-AS)
Last Four Terms Offered: Fall 2023, Fall 2022, Spring 2021, Spring 2020
CS 4789 - Introduction to Reinforcement Learning (3 Credits)
Reinforcement Learning is one of the most popular paradigms for modelling interactive learning and sequential decision making in dynamical environments. This course introduces the basics of Reinforcement Learning and the Markov Decision Process. The course will cover algorithms for planning and learning in Markov Decision Processes. We will discuss potential applications of Reinforcement Learning and their implications. We will study and implement classic Reinforcement Learning algorithms.
Prerequisites: CS 3780 or equivalent.
Last Four Terms Offered: Spring 2025, Spring 2024, Spring 2023, Spring 2022
Learning Outcomes:
- Identify the differences between Reinforcement Learning and traditional Supervised Learning and grasp the key definitions of Markov Decision Processes.
- Analyze the performance of the class planning algorithms and learning algorithms for Markov Decision Process.
- Implement classic algorithms and demonstrate their performance on benchmarks.
CS 4810 - Introduction to Theory of Computing (3 Credits)
An introduction to the classical theory of computing: automata theory, formal languages, and effective computability. Topics include finite-state machines, regular languages, regular expressions, grammars, context-free languages, pushdown automata, Turing machines, recursive and recursively enumerable sets, diagonalization, reductions, undecidability, Godel's incompleteness theorem. A complete list of topics can be found on the schedule page (subject to change). As time permits, we will explore some more modern advances such as coalgebraic methods, abstract interpretation, and concurrency.
Prerequisites: CS 2800 or permission of instructor.
Distribution Requirements: (SMR-AS)
Last Four Terms Offered: Spring 2025, Spring 2022, Fall 2019, Fall 2018
Learning Outcomes:
- Formally define deterministic and nondeterministic finite automata (DFAs and NFAs, respectively), regular languages, and the notion of acceptance.
- Convert NFAs to DFAs using the subset construction.
- Apply various constructions to produce automata for the intersection, union, and complements of regular sets.
CS 4813 - Quantum Computing (3 Credits)
Quantum computing is an interdisciplinary field that lies at the intersection of computer science, mathematics, and physics. This computational paradigm relies on principles of quantum mechanics, such as superposition and entanglement, to obtain powerful algorithms. This course aims to provide a self-contained, comprehensive introduction to quantum computing, focusing on the design and analysis of quantum algorithms, as well as covering topics in quantum information and quantum cryptography.
Last Four Terms Offered: Spring 2025
Learning Outcomes:
- Demonstrate understanding of basic principles of quantum information, such as superposition and entanglement.
- Conduct analyses of quantum algorithms.
- Demonstrate understanding of important quantum computing techniques, such as error-correction and fault tolerance.
CS 4814 - Introduction to Computational Complexity (3 Credits)
Explores the power and limitations of efficient computation. Understanding how the notion of efficient computation changes with respect to resources such as time, space, randomness, advice, and interaction. Concrete computational models that we will study will include Turing machines, Boolean circuits, Decision trees, and Branching Programs. Advanced topics may include error-correcting codes, probabilistic checkable proofs, and circuit lower bounds.
Prerequisites: CS 4820.
Last Four Terms Offered: Fall 2024, Spring 2021, Spring 2020, Fall 2015
CS 4820 - Introduction to Analysis of Algorithms (4 Credits)
Develops techniques used in the design and analysis of algorithms, with an emphasis on problems arising in computing applications. Example applications are drawn from systems and networks, artificial intelligence, computer vision, data mining, and computational biology. This course covers four major algorithm design techniques (greedy algorithms, divide-and-conquer, dynamic programming, and network flow), undecidability and NP-completeness, and algorithmic techniques for intractable problems (including identification of structured special cases , approximation algorithms, local search heuristics, and online algorithms).
Distribution Requirements: (SMR-AS)
Last Four Terms Offered: Summer 2025, Spring 2025, Fall 2024, Summer 2024
CS 4830 - Introduction to Cryptography (3 Credits)
A rigorous introduction to the theoretical foundations of the cryptography that powers much of the modern world. Topics include one-way functions, secret-key encryption, zero-knowledge proofs, signatures, public-key encryption etc. As this is a theoretical class, the emphasis will be on formal definitions and proofs.
Prerequisites: CS 4820.
Distribution Requirements: (SMR-AS)
Last Four Terms Offered: Fall 2024, Spring 2023, Spring 2022, Spring 2021
CS 4850 - Probability, Vectors, and Matrices in Computing (4 Credits)
Covers the mathematical foundations for access to information. Topics include high dimensional space, random graphs, singular value decomposition, Markov processes, learning theory, and algorithms for massive data.
Distribution Requirements: (SMR-AS)
Last Four Terms Offered: Spring 2025, Spring 2022, Spring 2020, Spring 2019
CS 4852 - Networks II: Market Design (3 Credits)
Networks II builds on its prerequisite course and continues to examine how each of the computing, economic, sociological and natural worlds are connected and how the structure of these connections affects these worlds. In this course, we will construct mathematical models for and analyze networked settings, allowing us to both make predictions about behavior in such systems, as well as reason about how to design such systems to exhibit some desirable behavior. Throughout, we will draw on real-world examples such as social networks, peer-to-peer filesharing, Internet markets, and crowdsourcing, that illustrate these phenomena.
Last Four Terms Offered: Spring 2025, Spring 2024, Spring 2023, Spring 2022
CS 4860 - Applied Logic (3 Credits)
Crosslisted with MATH 4860
Topics chosen from propositional logic, first-order logic, and higher-order logic, both classical and intuitionistic versions, including completeness, incompleteness, and compactness results. Natural deduction and tableaux style logics and connection to the lambda calculus and programming languages and logics, and program verification. Other topics chosen from equational logic, Herbrand universes and unification, rewrite rules and Knuth-Bendix method, and the congruence-closure algorithm and lambda-calculus reduction strategies. Modal logics, intuitionistic logic, computational logics and programming languages (e.g., LISP, ML, or Nuprl). Students will be expected to be comfortable writing proofs. More experience with proofs may be gained by first taking a 3000-level MATH course.
Distribution Requirements: (SMR-AS)
Last Four Terms Offered: Fall 2023, Fall 2021, Fall 2020, Fall 2019
CS 4997 - Practical Training in Computer Science (0.25 Credits)
This independent study course offers CS majors (i.e., undergraduates whose applications to affiliate with the CS major have been approved) an opportunity to reflect on concepts from computer science as they were encountered and applied in a recent internship. Students write a short paper describing their work experience and how it connects to the educational objectives of the computer science major.
Enrollment Information: Primarily for: undergraduate CS majors whose application to affiliate has been approved and who require work authorization for an employer other than Cornell.
Last Four Terms Offered: Spring 2025, Fall 2024, Spring 2024, Fall 2023
CS 4998 - Team Projects (1-4 Credits)
Advanced independent work in computer science as part of a student-led team project.
Exploratory Studies:
(CU-UG)
Last Four Terms Offered: Spring 2025, Fall 2024, Spring 2024, Fall 2023 CS 4999 - Independent Reading and Research (1-4 Credits)
Independent reading and research for undergraduates.
Exploratory Studies:
(CU-UG)
Last Four Terms Offered: Summer 2025, Spring 2025, Fall 2024, Spring 2024 CS 5110 - Programming Languages and Logics (4 Credits)
An introduction to the theory, design, and implementation of programming languages. Topics include operational semantics, type systems, higher-order functions, scope, lambda calculus, laziness, exceptions, side effects, continuations, objects, and modules. Also discussed are logic programming, concurrency, and distributed programming.
Prerequisites: CS 3110 or permission of instructor.
Last Four Terms Offered: Spring 2024, Fall 2021, Fall 2020, Fall 2018
CS 5112 - Algorithms and Data Structures for Applications (3 Credits)
Fundamental algorithms and data structures used in current applications. Algorithms include graph algorithms, hashing and streaming/sketching techniques. Applications will include selected topics in storage and memory systems, machine learning and security.
Prerequisites: sophomore level understanding of basic programming, algorithms, and data structures, or permission of instructor.
Enrollment Information: Enrollment limited to: Cornell Tech students.
Last Four Terms Offered: Fall 2024, Fall 2023, Fall 2021, Spring 2021
CS 5114 - Software-Defined Networking (4 Credits)
This course provides an introduction to novel programming languages for controlling computer networks. It will examine recent proposals based on logic, functional, and streaming languages, as well as tools for establishing the correctness of programs written in such languages using SAT/SMT solvers, model checkers, and proof assistants. Evaluation will be based on class participation and projects.
Last Four Terms Offered: Fall 2021, Spring 2021, Fall 2019, Fall 2018
CS 5120 - Introduction to Compilers (3 Credits)
An introduction to the specification and implementation of modern compilers. Topics covered include lexical scanning, parsing, type checking, code generation and translation, an introduction to program analysis and optimization, and compile-time and run-time support for modern programming languages. As part of the course, students will build a working compiler for an object-oriented language.
Last Four Terms Offered: Spring 2023, Spring 2022, Spring 2021, Spring 2020
CS 5121 - Practicum in Compilers (2 Credits)
Students will build a working compiler for an object-oriented language.
Corequisites: CS 5120.
Last Four Terms Offered: Spring 2023, Spring 2022, Spring 2021, Spring 2020
CS 5135 - Computational Integer Programming (3 Credits)
Crosslisted with ORIE 5135
This course in Discrete Optimization is focused on Nondeterministic Polynomial-hard problems but with a very strong focus on the use of Mixed-Integer Linear Programming, general-purpose solvers to attack them.
Enrollment Information: Enrollment limited to: Cornell Tech students.
Last Four Terms Offered: Spring 2022
Learning Outcomes:
- Ability to express combinatorial optimization problems by models with linear constraints and integer variables.
- Discriminate among various types of models depending on their solvability with modern mixed-integer programming solvers.
- Analyze the complexity of the most important combinatorial optimization problems.
- Understand, design and implement mixed-integer programming algorithms to solve the developed models.
CS 5150 - Software Engineering (4 Credits)
Introduction to the practical problems of specifying, designing, building, testing, and delivering reliable software systems. Special topics include professionalism, project management, and the legal framework for software development. As a central part of the course, student teams carry out projects for real clients, using concepts of agile software development. Each project includes all aspects of software development from a feasibility study to final delivery.
Prerequisites: CS 2110 or equivalent experience programming in Java or C++.
Last Four Terms Offered: Spring 2025, Spring 2022, Spring 2020, Spring 2019
CS 5152 - Advanced Topics in Computer Game Architecture (4 Credits)
Students work in a multidisciplinary team to develop a game that incorporates innovative game technology. Advanced topics include 3D game development, mobile platforms, multiplayer gaming, and nontraditional input devices. There is a special emphasis on developing games that can be submitted to festivals and competitions.
Last Four Terms Offered: Spring 2025, Spring 2024, Spring 2023, Spring 2022
CS 5154 - Software Testing (3 Credits)
Software testing is a widely used approach for detecting flaws in software. Systematic and organized approaches to software testing will be covered, including test adequacy criteria, manual and automatic generation of test inputs, regression testing, debugging, and dynamic analyses for detecting known classes of software errors.
Prerequisites: graduate standing in CS, or CS majors who have taken CS 3110 or CS 4120, or permission of instructor.
Last Four Terms Offered: Fall 2023, Fall 2022, Fall 2021, Spring 2021
Learning Outcomes:
- Design and automate the execution of high-quality software tests.
- Generate test suites that meet coverage and other adequacy criteria.
CS 5160 - Formal Verification (4 Credits)
An introduction to formal verification, focusing on correctness of functional and imperative programs relative to mathematical specifications. Topics include computer-assisted theorem proving, logic, programming language semantics, and verification of algorithms and data structures. Assignments involve extensive use of a proof assistant to develop and check proofs.
Prerequisites: CS 3110 or permission of instructor, proficiency with programming (e.g. CS 2110), and proof (e.g. CS 2800 or a mathematics course numbered 3000 or above).
Last Four Terms Offered: Spring 2022
CS 5220 - Applied High-Performance and Parallel Computing (4 Credits)
Models for parallel programming and survey of parallel machines. Existing parallel programming languages, vectorizing compilers, and parallel libraries and toolboxes.
Prerequisites: course in numerical methods.
Last Four Terms Offered: Fall 2024, Spring 2024, Spring 2023, Fall 2020
CS 5223 - Numerical Analysis: Linear and Nonlinear Problems (4 Credits)
Introduction to the fundamentals of numerical linear algebra: direct and iterative methods for linear systems, eigenvalue problems, singular value decomposition. In the second half of the course, the above are used to build iterative methods for nonlinear systems and for multivariate optimization. Strong emphasis is placed on understanding the advantages, disadvantages, and limits of applicability for all the covered techniques. Computer programming is required to test the theoretical concepts throughout the course.
Prerequisites: MATH 2210 or MATH 2940 or equivalent, knowledge of programming, CS 3220 or CS 4210/MATH 4250 or permission of instructor.
Last Four Terms Offered: Spring 2025, Spring 2024, Spring 2023, Spring 2022
CS 5304 - Data Science in the Wild (3 Credits)
Crosslisted with INFO 5304
Massive amounts of data are collected by many companies and organizations and the task of a data scientist is to extract actionable knowledge from the data - for scientific needs, to improve public health, to promote businesses, for social studies and for various other purposes. This course will focus on the practical aspects of the field and will attempt to provide a comprehensive set of tools for extracting knowledge from data.The course will cover the topics needed to solve data-science problems, which include problem formulation (business understanding), data preparation (collection, sampling, integration, cleaning), data modeling (characterization, model selection, and analysis), implementation (large-scale data processing, feedback loops, QA) and communication (data presentation, visualization). Advanced topics such as causal inference and processing streaming data will be presented.Throughout the course, the students will perform a data-science mission with all the required steps, from problem formulation to result presentation.
Enrollment Information: Enrollment limited to: Cornell Tech students.
Last Four Terms Offered: Spring 2025, Spring 2024, Spring 2023, Spring 2022
CS 5306 - Crowdsourcing and Human Computation (3 Credits)
Crosslisted with INFO 5306
Crowdsourcing and human computation refer to various ways that computing has brought together human labor to achieve outcomes that were previously beyond our individual capabilities or expectations. Wikipedia's millions of articles, the success of Linux and other open source software projects, citizen science, and the generation of large datasets for machine learning and artificial intelligence using microlabor are all examples of ways in which technology and people together have exceeded the capabilities of people or machines in isolation. This course will survey the state of the art in this area and give practical knowledge of the area, grounded in numerous examples in diverse settings.
Prerequisites: advanced coursework in Computer Science.
Last Four Terms Offered: Spring 2024, Fall 2022, Fall 2021, Fall 2019
CS 5320 - Introduction to Database Systems (3 Credits)
Introduction to modern database and data storage systems. Concepts covered include data models, query languages, database design, storage structures, access methods, query processing and optimization, transaction management, and recovery in both relational and nonrelational data storage systems.
Last Four Terms Offered: Fall 2024, Fall 2023, Fall 2022, Fall 2021
CS 5321 - Practicum in Database Systems (2 Credits)
Students build part of a real database system in C++ Java.
Prerequisites: Prerequisite or corequisite: CS 5320.
Last Four Terms Offered: Fall 2024, Fall 2023, Fall 2020, Fall 2019
CS 5342 - Trust and Safety: Platforms, Policies, Products (3 Credits)
Crosslisted with INFO 5320
Trust & Safety is an emerging field that focuses on reducing the harm from interpersonal abuse in digital spaces. The abuse types involved - harassment, misinformation, unwanted sexual content - are often lawful but awful, requiring developers to build their own socio-technical frameworks of what is appropriate behavior in their platform. In this course, we will look at digital abuse through an analysis of historical incidents. We will study how the field developed standards across algorithmic response, product design and manual removals. Students will join teams to describe an emerging online abuse type, develop appropriate moderation pipelines (e.g., using modern machine learning such as LLMs), and detail associated policies, all in an environment mimicking the realities seen in practice. This course might expose students to disturbing material.
Enrollment Information: Enrollment limited to: Cornell Tech students.
Last Four Terms Offered: Spring 2025
Learning Outcomes:
- Recognize common abuse categories as they intersect with modern digital technologies.
- Analyze the varying levers in the hands of product owners to reduce abuse, including safety-by-design, proactive ranking choices and reactive removals.
- Recognize the ethical trade-offs behind content moderation decisions in online spaces.
- Identify emerging risks and make decisions around the correct precision/recall boundaries for a classifier built to detect harmful content.
CS 5356 - Building Startup Systems (1-3 Credits)
This course aims to bridge the gap between academic studies of computer science and production software engineering. The course provides a fast-paced introduction to key tools and techniques that can facilitate the building of prototypes and of actual working systems. It introduces technologies for building Web applications and mobile applications, systems for effective storage of data, and tools that support and ease code writing, such as distributed version-control systems, editors and debuggers.
Enrollment Information: Enrollment limited to: Cornell Tech students.
Last Four Terms Offered: Spring 2025, Spring 2024, Spring 2023, Spring 2022
CS 5382 - Practical Principles for Designing Fair Algorithms (3 Credits)
Algorithms increasingly guide high-stakes decision-making across many domains. This has potential upsides, since algorithms can improve decision-making, but also serious risks, since recent years have showcased the many ways that algorithms can be biased. This course will teach you principles for designing fair algorithms, emphasizing accessibility to a broad audience via practical takeaways which are directly relevant to the real world through case studies and guest speakers. Case studies will be drawn from diverse settings where algorithms are applied, such as large language models, speech recognition systems, healthcare, criminal justice, sustainability, and education. Students will come away with a strong understanding of how algorithm-related choices can have widespread societal impact.
Last Four Terms Offered: Spring 2024
Learning Outcomes:
- Write code in Python to computationally demonstrate biases in end-to-end algorithmic systems based on choices of data, variables, modeling, and outcomes.
- Apply mathematical definitions of fairness to real-world case studies to explain decisions made by both humans and algorithms.
- Enumerate challenges to practitioners in algorithmic-guided decision-making (including feedback loops, interpretability, and strategic behavior) and explain how these challenges can lead to broader societal impacts.
CS 5410 - Operating Systems (3 Credits)
Introduction to the design of systems programs, with emphasis on multiprogrammed operating systems. Topics include concurrency, synchronization, deadlocks, memory management, protection, input-output methods, networking, file systems and security. The impact of network and distributed computing environments on operating systems is also discussed.
Last Four Terms Offered: Spring 2025, Spring 2024, Fall 2023, Spring 2023
CS 5411 - Practicum in Operating Systems (2 Credits)
Studies the practical aspects of operating systems through the design and implementation of an operating system kernel that supports multiprogramming, virtual memory, and various input-output devices. All the programming for the project is in a high-level language.
Corequisites: CS 5410.
Last Four Terms Offered: Spring 2025, Spring 2024, Fall 2023, Spring 2023
CS 5412 - Cloud Computing (4 Credits)
Focuses on cloud computing, large-scale Internet applications, and other practical issues in designing and implementing trustworthy, scalable distributed software.
Prerequisites: CS 4410 or permission of instructor.
Last Four Terms Offered: Fall 2022, Spring 2022, Spring 2021, Spring 2020
CS 5414 - Distributed Computing Principles (4 Credits)
Studies the abstractions and algorithms that constitute the foundations for implementing concurrent and distributed computing, with emphasis on supporting fault-tolerance. Topics vary to reflect advances in the field but typically include global state snapshots, causality and clocks (logical and physical), agreement and consensus, primary-backup and state-machine replication, quorums, and gossip. Students undertake a substantial software project to put these ideas into practice. Many students obtain additional project credit by co-registering in CS 4999 or CS 5999.
Prerequisites: CS 4410 or permission of instructor.
Last Four Terms Offered: Fall 2024, Spring 2024, Spring 2023, Fall 2020
CS 5416 - Cloud Computing and ML Hosting (4 Credits)
CS 5416 is a course focused on the systems aspects of performance for cloud-hosted AI and ML applications such as LLMs, as well as complex systems in which AI or ML is just one element. The T/R lectures are shared with an undergraduate class, CS 4414 but the (required) recitation sections cover content that the CS 4414 students will not see and the last of the multi-stage projects will focus on cloud AI and ML scenarios, while the last of the CS 4414 projects focuses on a single-computer scenario. Thus even though you will overlap with Cornell seniors (and some juniors) in the lecture hall, you will also gain additional perspective and knowledge in recitation and will be doing a more ambitious style of project that comes very close to what companies are undertaking to integrate AI into their cloud solutions. The CS 4414 students will have a separate discussion board than you, and although you do take the same prelim exams, your grading is more focused on projects (25% exams, 75% projects, in contrast to the 50-50 balance for CS 4414).
CS 5416 starts by exposing students to programming applications at the systems level and to the operating systems abstractions that these applications depend on. It then builds on this foundation to look at systems issues that shape the performance and reliability of modern ML and AI applications, such as “chat bots” and question-answering AIs. We do not expect students to learn how these ML and AI tools work, in a mathematical sense. Instead our focus is on how they execute, where components run and how they talk one another, how they interact with big-data storage, and how they leverage accelerators such as GPU. CS 4414 students who attend these cloud-computing and ML lectures won’t be using the material in their projects, whereas CS 5416 students will gain hands-on experience working with and optimizing ML and AI applications that have this form. The required recitation is where you will learn about the additional tools and techniques that are needed to perform those tasks
Learning Outcomes:
- Background: Proficiency programming in C++ 20, using Visual Studio Code IDE on Linux (Ubuntu) demonstrated through successful completion of hands-on assignments. Proficiency with Linux commands and bash programming demonstrated through successful completion of hands-on assignments. Ability to write multithreaded code that leverages the full performance of modern NUMA servers demonstrated through successful completion of hands-on assignments that focus on speeding up code by using multicore parallelism. 6
- Understanding performance in cloud-hosted microservice systems with AI and ML components. Interpretation of parallelism in many forms, and ability to create parallel solutions to practical computing problems, to implement them correctly in C++, and to debug and optimize solutions. Demonstrated through a mix of exam performance and ability to use these ideas when creating hands-on assignments.
- The concrete skill to actually write code in C++ that performs well in these cloud microservice settings. This departs from what the CS 4414 students will be learning (their focus is on programs running in a single Linux server, and often performing systems tasks rather than AI-assisted tasks).
- The ability to diagnose performance issues and bugs in microservices that have AI or ML components, RAG databases, or other kinds of data repositories. Again, this departs sharply from what the students in CS 4414 will be learning. The additional knowledge and skills will be taught in recitation, which is why we require you to attend those as well as the main (shared) lectures.
CS 5420 - Advanced Computer Architecture (3 Credits)
Crosslisted with ECE 6750
This course discusses advanced topics in computer architecture beyond the material that is covered in undergraduate courses such as ECE 4750/CS 4420. In particular, the course places special focus on multicore and multiprocessor architectures (coherence, consistency, synchronization, interconnects, OS support, etc.), as well as advanced architecture techniques (simultaneous multithreading, speculative loads and stores, neural branch predictors, hardware resource management, memory scheduling, etc.) Students work on parallel programming assignments that emphasize hardware-aware performance optimization.
Last Four Terms Offered: Fall 2024, Fall 2022, Fall 2021, Fall 2020
CS 5424 - Developing and Designing Interactive Devices (3 Credits)
This course covers the human-centered and technical workings behind interactive devices ranging from cell phones and video game controllers to household appliances and smart cars. This is a hands-on, lab-based course. For the final project, students will build a functional IoT prototype of their own design, using Python, single-board Linux computer, embedded microcontrollers, and/or other electronic components. Topics include electronics prototyping, interface design, sensors and actuators, microcontroller development, physical prototyping, and user testing.
Prerequisites: CS 1110 or equivalent.
Last Four Terms Offered: Fall 2023, Fall 2022, Fall 2021, Spring 2021
CS 5430 - System Security (4 Credits)
Surveys security for computers and communications networks, including policy issues (e.g., the national debates on cryptography policy) as well as technical approaches for implementing properties that comprise trustworthiness for a computing system: confidentiality, integrity, availability, and assurance. Discusses cryptographic protocols and other mechanisms for implementing authorization and authentication in hardware and in software.
Prerequisites: CS 4410.
Last Four Terms Offered: Spring 2025, Fall 2023, Fall 2022, Fall 2021
CS 5433 - Blockchains, Cryptocurrencies, and Smart Contracts (3 Credits)
Viewed variously as a niche currency for online criminals and a technological threat to the financial industry, Bitcoin has fueled myth-making and financial speculation, as well as real innovation. In this course, we will study not just Bitcoin, but the rich technological landscape it has inspired and catalyzed, especially smart contracts and Web3. Topics will include: the mechanics of consensus algorithms and their role in blockchains and cryptocurrencies; cryptographic tools employed in cryptocurrencies, including hash functions, digital signatures, and zero-knowledge proofs; the evolution and mechanics of Bitcoin and its ecosystem; smart contracts; and special topics, such as trusted hardware in blockchain-based systems, crime, and NFTs. Grading will be based on homework assignments and a final exam.
Prerequisites: a good level of programming experience-specifically, the ability to deal with challenging programming tasks-familiarity with common algorithms and data structures, and an understanding of basic concepts in discrete mathematics.
Last Four Terms Offered: Spring 2025, Spring 2024, Spring 2023, Spring 2022
CS 5434 - Trustworthy AI (3 Credits)
This course is about safety, security, privacy, alignment, and adversarial robustness of modern AI and ML technologies. Topics include threats and risks specific to these technologies, understanding vulnerabilities and state-of-the-art defenses, and how to build and use trustworthy AI/ML systems.
Learning Outcomes:
- Understand what it means for an AI/ML system to be safe, secure, and privacy-preserving.
- Learn about threats and risks faced by AI/ML systems, and technologies that are available to defend against these threats.
- Acquire practical skills in building adversarially robust AI/ML systems
CS 5435 - Security and Privacy Concepts in the Wild (3 Credits)
This course is a broad overview of modern computer security and digital privacy. It aims to impart technical and social understanding of how and why security and privacy matter, how to think adversarially, and how (and how not) to design secure systems and products. Topics include authentication, Web and mobile security, network, OS, and low-level software security, elements of applied cryptography, privacy protection technologies, censorship resistance, and security and privacy of emerging platforms, illustrated by studying real-world systems and attacks. Key learning objectives include understanding the role of threat modeling in the design and evaluation of modern computing systems, how exploitation of computing systems works, and approaches to finding and remediating vulnerabilities.
Enrollment Information: Enrollment limited to: Cornell Tech students.
Last Four Terms Offered: Spring 2025, Spring 2024, Fall 2022, Fall 2021
CS 5436 - Privacy in the Digital Age (3 Credits)
Crosslisted with INFO 5303
This course introduces students to privacy technologies and surveys the current state of digital privacy from multiple perspectives, including technology, law, policy, ethics, economics, and surveillance.
Enrollment Information: Enrollment limited to: Cornell Tech students.
Last Four Terms Offered: Fall 2024, Spring 2023, Spring 2022, Spring 2021
CS 5450 - Networked and Distributed Systems (3 Credits)
This course introduces students to the design and implementation of networked and distributed systems. Topics include the basics of networking (including Internet architecture, TCP/IP, Wi-Fi, and routing), distributed protocols, foundations of cloud computing, reliability, fault tolerance, and security in distributed systems, and introduction to performance evaluation. Course labs and projects include a significant implementation component and require working knowledge of C/C++.
Prerequisites: CS 4410.
Last Four Terms Offered: Spring 2024, Spring 2020, Fall 2018, Fall 2017
CS 5456 - Introduction to Computer Networks (3 Credits)
This course introduces the basic architectural and design principles of computer networking including the design of communication protocols, congestion control, routing and switching, Internet, data center networks and wireless networks.
Last Four Terms Offered: Spring 2025, Fall 2024, Spring 2024, Spring 2023
CS 5470 - Systems for Large-Scale ML (3 Credits)
Systems for Large-scale ML is a new advanced course at Cornell University designed to equip students with hands-on expertise in designing and operating scalable machine learning systems. With the rise in popularity of large ML models like GPT, LLaMA, and DeepSeek, tackling systems-level challenges of distributing training and inference workloads on multi-accelerator hardware while ensuring fault tolerance has become a crucial skill for both graduate and undergraduate students in computer science. The course will teach students to tackle systems challenges in both training and inferring from large-scale ML models. We will combine theory and hands-on teaching through lectures, assignments, and projects.
Learning Outcomes:
- Distribute the training and inference of large ML models across multiple GPUs.
- Build efficient strategies for sharding ML models.
- Debug communication overheads of distributed ML.
- Develop fault tolerant and elastic ML pipelines.
CS 5620 - Introduction to Computer Graphics (3 Credits)
Introduction to the principles of computer graphics in two and three dimensions. Topics include digital images, filtering and antialiasing, 2-D and 3-D affine geometry, ray tracing, perspective and 3-D viewing, the graphics pipeline, curves and surfaces, and human visual perception. Homework assignments require some Java programming.
Prerequisites: CS 2110 or ENGRD 2110, and MATH 1910 or MATH 1120, and MATH 2940 or MATH 2210 or MATH 2310 or equivalent.
Last Four Terms Offered: Fall 2024, Fall 2023, Fall 2022, Fall 2021
CS 5621 - Computer Graphics Practicum (2 Credits)
Provides CS 4620 students with hands-on experience in computer graphics programming on modern graphics hardware. This course emphasizes effective use of graphics APIs and the architecture of graphics applications. A final project involves building a substantial interactive graphics system. The course uses Javascript and WebGL for code development.
Prerequisites: Prerequisite or corequisite: CS 5620.
Last Four Terms Offered: Fall 2024, Fall 2023, Fall 2022, Fall 2021
CS 5625 - Interactive Computer Graphics (4 Credits)
Methods for interactive computer graphics, targeting applications including games, visualization, design, and immersive environments. Introduces students to state-of-the-art interactive techniques and programmable shading. Programming assignments use C++ and OpenGL, and students also propose and implement an open-ended final project.
Last Four Terms Offered: Spring 2022, Spring 2021, Spring 2020, Spring 2019
CS 5643 - Physically Based Animation for Computer Graphics (4 Credits)
This course introduces students to fundamental physically based modeling techniques used in computer graphics for animation of rigid and deformable solids, virtual characters, fluids and gases, and other systems. Students learn the techniques by implementing a series of interactive computer programs that apply a range of representative simulation methods to simple, primarily 2D systems, and by proposing and implementing a final project.
Prerequisites: CS 4620 or equivalent; MATH 1120, MATH 1920, or equivalent; MATH 2210, MATH 2940, or equivalent; PHYS 1112 or equivalent.
Last Four Terms Offered: Spring 2025, Spring 2023, Spring 2015, Spring 2014
CS 5650 - Virtual and Augmented Reality (3 Credits)
Crosslisted with INFO 5340
This course presents an introduction to virtual and augmented reality technologies, with focus on fundamental principles from 3D math, human perception, graphics, and interaction. Concepts from the contributing fields of computer vision, computer graphics and human computer interaction will be introduced in the context of virtual and augmented reality. Students will be tasked with creating their own virtual or augmented reality application as a course project.
Prerequisites: intermediate programming ability in C# or other object-oriented lagnuages. Familiarity with 3D game engines or strong desire to learn. Basic linear algebra.
Last Four Terms Offered: Fall 2024, Fall 2023, Fall 2022, Fall 2021
CS 5670 - Introduction to Computer Vision (3-4 Credits)
An in-depth introduction to computer vision. The goal of computer vision is to compute properties of our world - including the 3D shape of an environment, the motion of objects, and the names of things - through analysis of digital images or videos. The course covers a range of topics, including low-level vision, 3D reconstruction, and object recognition, as well as key algorithmic, optimization, and machine learning techniques, including deep learning. This course emphasizes hands-on experience with computer vision and includes several programming projects.
Prerequisites: CS 2110, CS 2800, MATH 1920 or equivalent and MATH 2310 or MATH 2940 or equivalent (Ithaca only).
Last Four Terms Offered: Spring 2025, Spring 2024, Spring 2023, Spring 2022
CS 5672 - Frontiers of Computer Vision (3 Credits)
This course will cover contemporary advances in computer vision. We will cover quick background on classical computer vision before delving into neural networks, modern methods for 3D reconstruction such as neural radiance fields, modern recognition systems based on vision-language models and multimodal language models, and recent trends in synthesis or image generation.
Learning Outcomes:
- Describe the classical pipelines for 3D reconstruction.
- Implement simple versions of neural radiance fields, and explain modern neural radiance field papers.
- Describe the network architectures of recognition systems, and analyze the capabilities of modern multimodal language models.
- Derive the mathematical formulation of GANs, VAEs, diffusion models and conditional image generation.
CS 5678 - 3D User Interfaces (1-3 Credits)
This course focuses on the design and implementation of 3D user interfaces, with emphasis on prototyping interaction techniques for virtual and augmented reality applications. The course will introduce concepts from human-computer interaction and give an overview of interaction techniques for 3D tasks such as selection and manipulation, travel, and system control in virtual environments. Student assignments include implementing classic 3D interaction techniques for head-mounted displays by extending modern interaction toolkits. Students will be introduced to software design patterns and best practices for creating modular, high-fidelity 3D interaction prototypes. All assignments will be implemented using Unity 3D, C#, and the XR Interaction Toolkit.
Prerequisites: course in 3D math (vectors, matrices, transformations) and in intermediate programming in C# or other object-oriented programming language.
Enrollment Information: Enrollment limited to: Cornell Tech students.
Last Four Terms Offered: Spring 2024, Spring 2023, Spring 2022, Spring 2021
CS 5682 - HCI and Design (3 Credits)
Crosslisted with INFO 6410
Human-Computer Interaction (HCI) and design theory and techniques. Methods for designing, prototyping, and evaluating user interfaces. Basics of visual design, graphic design, and interaction design. Understanding human capabilities, interface technology, interface design methods, prototyping tools, and interface evaluation tools and techniques.
Enrollment Information: Enrollment limited to: Cornell Tech students.
Last Four Terms Offered: Fall 2024, Fall 2023, Fall 2022, Fall 2021
CS 5700 - Foundations of AI Reasoning and Decision-Making (3 Credits)
Introduction to major topics in artificial intelligence, including heuristic search, game-playing, knowledge representation and reasoning, planning, probabilistic inference, sequential decision-making and reinforcement learning.
Last Four Terms Offered: Spring 2025, Fall 2024, Spring 2024, Fall 2023
CS 5726 - Applied Causal Inference using Machine Learning (3 Credits)
Crosslisted with ORIE 5751
Provides an applied treatment of modern causal inference using machine learning to handle high-dimensionality and nonparametric estimation. Formulates key causal questions in the languages of structural equation modeling and potential outcomes. Presents methods for estimating and constructing confidence intervals on causal and structural parameters using machine learning, including de-biased machine learning, and for learning how to predict heterogeneous treatment effects. Introduces tools from machine learning and deep learning developed for prediction purposes and discusses how to adapt them to causal inference. Emphasizes the applied and practical perspectives with real-world-data examples and assignments. Requires basic knowledge of statistics and machine learning and programming experience in R or Python.
Prerequisites: ORIE 5750 or CS 5785 and working knowledge of calculus, probability, and linear algebra as well as a modern scripting language such as Python.
Enrollment Information: Enrollment limited to: Cornell Tech students.
Last Four Terms Offered: Spring 2025, Spring 2023, Spring 2022, Spring 2019
CS 5727 - Optimization Methods (3 Credits)
Crosslisted with ORIE 5380
This course covers algorithmic and computational tools for solving optimization problems with the goal of providing decision-support for business intelligence. We will cover the fundamentals of linear, integer and nonlinear optimization. We will emphasize optimization as a large-scale computational tool, and show how to link programming languages with optimization software to develop industrial-strength decision-support systems. We will demonstrate how to incorporate uncertainty into optimization problems. Throughout the course, we will cover a variety of modern applications, including pricing and marketing for e-commerce, ad auctions on the web, and on-line ride-sharing.
Last Four Terms Offered: Fall 2024, Fall 2023, Fall 2022, Fall 2021
CS 5740 - Natural Language Processing (3-4 Credits)
This course constitutes an introduction to natural language processing (NLP), the goal of which is to enable computers to use human languages as input, output, or both. NLP is at the heart of many of today's most exciting technological achievements, including machine translation, automatic conversational assistants and Internet search. The course will introduce core problems and methodologies in NLP, including machine learning, problem design, and evaluation methods. Ithaca only: Expect each of the roughly four connected programming assignments to take tens of hours, although this time is distributed over multiple weeks; to require writing code to massage raw-ish data into different formats and other accessory functions as well as to implement core algorithms; and to necessitate much independent examination of documentation.
Last Four Terms Offered: Spring 2025, Spring 2024, Fall 2023, Fall 2022
CS 5750 - Foundations of Robotics (4 Credits)
Robotics is interdisciplinary and draws inspiration from many different fields towards solving a variety of tasks in real-world environments using physical systems. This course is a challenging introduction to basic computational concepts used broadly in robotics. By the end of this course, students should have a fundamental understanding of how the different sub-fields of robotics such as kinematics, state-estimation, motion planning, and controls come together to develop intelligent behaviors in physical robotic systems. The mathematical basis of each area will be emphasized, and concepts will be motivated using common robotics applications. Students will be evaluated using a mixture of theoretical and programming exercises throughout the semester.
Last Four Terms Offered: Fall 2024, Fall 2023, Fall 2022, Fall 2021
CS 5755 - Mobile Human Robot Interaction Design (3 Credits)
Crosslisted with INFO 5755
Robot and automated systems often need to move in and around people. This technical and human-centered course surveys current physical, computation and sensing technologies that make mobile human robot interaction possible, and delves into key research problems in interaction, human modelling, and repair which are needed to tackle the grand challenge of mobile HRI. As part of this course, students will build working prototypes of mobile robots, and deploy them for study in human environments. The 5000-level version of this course focuses on platform development; the 6000-level version of this course focuses on the production of human participant research studies using mobile HRI.
Prerequisites: proficiency in Python.
Enrollment Information: Enrollment limited to: Cornell Tech students.
Last Four Terms Offered: Spring 2023
Learning Outcomes:
- Identify key hardware, software and modelling components for mobile robot systems.
- Analyze human behavior to enable safe and socially appropriate mobile robot response.
- Demonstrate capability to develop and test mobile robot systems.
CS 5756 - Robot Learning (4 Credits)
How do we get robots out of the labs and into the real world with all it's complexities? Robots must solve two fundamental problems -- (1) Perception: Sense the world using different modalities and (2) Decision making: Act in the world by reasoning over decisions and their consequences. Machine learning promises to solve both problems in a scalable way using data. However, it has fallen short when it comes to robotics. This course dives deep into robot learning, looks at fundamental algorithms and challenges, and case-studies of real-world applications from self-driving to manipulation.
Prerequisites: CS 2800, probability theory (e.g. BTRY 3010, ECON 3130, MATH 4710, ENGRD 2700), linear algebra (e.g. MATH 2940), calculus (e.g. MATH 1920), programming proficiency (e.g. CS 2110), and CS 3780 or equivalent or permission of instructor.
Last Four Terms Offered: Spring 2025, Fall 2024, Spring 2024, Spring 2023
Learning Outcomes:
- Imitation and interactive no-regret learning that handle distribution shifts, exploration/exploitation.
- Practical reinforcement learning leveraging both model predictive control and model-free methods.
- Learning perception models using probabilistic inference and 2D/3D deep learning.
- Frontiers in learning from human feedback (RLHF), planning with LLMs, human motion forecasting and offline reinforcement learning.
CS 5758 - Autonomous Mobile Robots (4 Credits)
Creating robots capable of performing complex tasks autonomously requires one to address a variety of different challenges such as sensing, perception, control, planning, mechanical design, and interaction with humans. In recent years many advances have been made toward creating such systems, both in the research community (different robot challenges and competitions) and in industry (industrial, military, and domestic robots). This course gives an overview of the challenges and techniques used for creating autonomous mobile robots. Topics include sensing, localization, mapping, path planning, motion planning, obstacle and collision avoidance, and multi-robot control.
Enrollment Information: Enrollment limited to: graduate students.
Last Four Terms Offered: Spring 2025, Spring 2023, Spring 2022, Spring 2021
Learning Outcomes:
- Students will be able to understand and implement localization and mapping algorithms using different sensor modalities.
- Students will be able to generate a path and the motion for a robot moving around an area with obstacles.
- Students will be able to understand and implement the concepts of different approaches for motion planning such as roadmaps, feedback control, and sampling based methods.
- Students will be able to apply the tools learned in the class to physical robots.
CS 5775 - Machine Learning Hardware and Systems (3 Credits)
Crosslisted with ECE 5545
This Master's level course will take a hardware-centric view of machine learning systems. From constrained embedded microcontrollers to large distributed multi-GPU systems, we will investigate how these platforms run machine learning algorithms. We will look at different levels of the hardware/software/algorithm stack to make modern machine learning systems possible. This includes understanding different hardware acceleration paradigms, common hardware optimizations such as low-precision arithmetic and sparsity, compilation methodologies, model compression methods such as pruning and distillation, and multi-device federated and distributed training. Through hands-on assignments and an open-ended project, students will develop a holistic view of what it takes to train and deploy a deep neural network.
Prerequisites: undergraduate ECE/CS degree, programming experience, introductory ML course.
Enrollment Information: Enrollment limited to: Cornell Tech students.
Last Four Terms Offered: Spring 2025, Spring 2024, Spring 2023, Spring 2022
Learning Outcomes:
- Understand how machine learning algorithms run on computer systems. This includes both the hardware and the software that maps computations onto the computer chips.
- Apply key optimization techniques such as pruning, quantization and distillation to machine learning algorithms to improve their efficiency on different hardware platforms.
- Analyze the performance and efficiency of different hardware platforms with and without optimizations, and understand the impact of efficiency optimizations on the accuracy of a machine learning algorithm.
- Design both the hardware and software components of a machine learning computer system.
CS 5777 - Principles of Large-Scale Machine Learning Systems (4 Credits)
An introduction to the mathematical and algorithms design principles and tradeoffs that underlie large-scale machine learning on big training sets. Topics include: stochastic gradient descent and other scalable optimization methods, mini-batch training, accelerated methods, adaptive learning rates, parallel and distributed training, and quantization and model compression.
Last Four Terms Offered: Fall 2023, Fall 2022
CS 5780 - Introduction to Machine Learning (4 Credits)
The course provides an introduction to machine learning, focusing on supervised learning and its theoretical foundations. Topics include: regularized linear models, boosting, kernels, deep networks, generative models, online learning, and ethical questions arising in ML applications.
Prerequisites: CS 2800, probability theory (e.g. BTRY 3080, ECON 3130, MATH 4710, ENGRD 2700), linear algebra (e.g. MATH 2940), calculus (e.g. MATH 1920), and programming proficiency (e.g. CS 2110).
Forbidden Overlaps: CS 3780, CS 5780, ECE 3200, ECE 5420, ORIE 3741, ORIE 5741, STSCI 3740, STSCI 5740
Course Fee: Course Fee, $30. Course fee.
Last Four Terms Offered: Spring 2025, Fall 2024, Spring 2024, Fall 2023
CS 5781 - Machine Learning Engineering (3 Credits)
Machine learning is increasingly driven by advances in the underlying hardware and software systems. This course will focus on the challenges inherent to engineering machine learning systems to be correct, robust, and fast. The course walks through the development of a software library for machine learning from scratch, with each assignment requiring students to build models in their own library. Topics will include: tensor languages and auto-differentiation; model debugging, testing, and visualization; fundamentals of GPUs; compression and low-power inference. Guest lectures will cover current topics from ML engineers.
Prerequisites: CS 2110, or equivalent programming experience.
Enrollment Information: Enrollment limited to: Cornell Tech Students.
Last Four Terms Offered: Fall 2024, Fall 2023, Fall 2022, Fall 2021
CS 5782 - Introduction to Deep Learning (4 Credits)
This class is an introductory course to deep learning. It covers the fundamental principles behind training and inference of deep networks, the specific architecture design choices applicable for different data modalities, discriminative and generative settings, and the ethical and societal implications of such models.
Prerequisites: ECE 4200, STSCI 3740, CS 1110, CS 3780, and CS 2110.
Last Four Terms Offered: Spring 2025
Learning Outcomes:
- Demonstrate the ability to perform neural network training and inference.
- Identify the correct neural network architecture choices for a given data modality.
- Implement a working deep learning pipeline for vision and language tasks.
CS 5783 - Mathematical Foundations of Machine Learning (4 Credits)
Machine Learning (ML) is a ubiquitous technology. This course, which is a follow up to an introductory course on ML will cover topics that aim to provide a theoretical foundation for designing and analyzing ML algorithms. This course has three basic blocks. First block will provide basic mathematical and statistical toolset required for formalizing ML problems effectively and analyzing them. This block will include topics like generalization, sample complexity of learning algorithm and understanding the inherent challenges in various ML frameworks and models. The second block will provide the foundations in algorithms design and optimization techniques required for building and analyzing various ML algorithms. This block will cover topics like gradient descent, stochastic gradient descent, algorithm design for online learning and computational challenges in ML. ML algorithms are deployed in real world and make decisions that affect real world users. The third block, will cover topics on how to formally reason about and how to design ML methods that address social and user related concerns that ML algorithms need to deal with. This block will cover topics such as fairness, privacy, the right to be forgotten and other such issues and how to build ML algorithms that address or assuage these concerns.
Last Four Terms Offered: Fall 2023, Spring 2022
Learning Outcomes:
- Students will be able to reason about Machine Learning(ML) problems and algorithms in a principled fashion, to identify what makes learning hard and how to design algorithms that would provably work. well.
- Students will be able to analyze new machine learning algorithms they might encounter or even design their own methods that can address specific requirements that they might encounter in their applications.
- Through completion of the term project students will demonstrate what it entails to formally analyze and reason out an end-to-end topic in the theory of ML and give them a taste of a real research project.
- Students will be aware of the social implications ML method choices can have in the real world and demonstrate to them tools that can help them identify and tackle such real world social challenges that any ML based system needs to deal with.
CS 5785 - Applied Machine Learning (3 Credits)
Learn and apply key concepts of modeling, analysis and validation from machine learning, data mining and signal processing to analyze and extract meaning from data. Implement algorithms and perform experiments on images, text, audio and mobile sensor measurements. Gain working knowledge of supervised and unsupervised techniques including classification, regression, clustering, feature selection, and dimensionality reduction.
Prerequisites: CS 2800 or equivalent and basic familiarity with Matlab or Python, or permission of instructor.
Enrollment Information: Enrollment limited to: Cornell Tech students.
Last Four Terms Offered: Fall 2024, Fall 2023, Fall 2022, Fall 2021
CS 5787 - Deep Learning (3 Credits)
Students will learn deep neural network fundamentals, including, but not limited to, feed-forward neural networks, convolutional neural networks, network architectures, optimization methods, practical issues, recurrent neural networks, transformers, generative models, foundation models, current limitations of deep learning, and visualization techniques. We still study applications to problems in computer vision and to a lesser extent other domains such as natural language and audio processing.
Enrollment Information: Enrollment limited to: Cornell Tech students.
Last Four Terms Offered: Fall 2024, Spring 2023, Spring 2022, Spring 2021
CS 5789 - Introduction to Reinforcement Learning (3 Credits)
Reinforcement Learning is one of the most popular paradigms for modelling interactive learning and sequential decision making in dynamical environments. This course introduces the basics of Reinforcement Learning and Markov Decision Process. The course will cover algorithms for planning and learning in Markov Decision Processes. We will discuss potential applications of Reinforcement Learning and their implications. We will study and implement classic Reinforcement Learning algorithms.
Prerequisites: CS 5780 or equivalent.
Last Four Terms Offered: Spring 2025, Spring 2024, Spring 2023, Spring 2022
Learning Outcomes:
- Identify the differences between Reinforcement Learning and traditional Supervised Learning and grasp the key definitions of Markov Decision Processes.
- Analyze the performance of the class planning algorithms and learning algorithms for Markov Decision Process.
- Implement classic algorithms and demonstrate their performance on benchmarks.
CS 5810 - Introduction to Theory of Computing (3 Credits)
CS 5814 - Introduction to Computational Complexity (3 Credits)
Explores the power and limitations of efficient computation. Understanding how the notion of efficient computation changes with respect to resources such as time, space, randomness, advice, and interaction. Concrete computational models that we will study will include Turing machines, Boolean circuits, Decision trees, and Branching Programs. Advanced topics may include error-correcting codes, probabilistic checkable proofs, and circuit lower bounds.
Prerequisites: CS 4820.
Last Four Terms Offered: Fall 2024
CS 5820 - Analysis of Algorithms (4 Credits)
Methodology for developing and analyzing efficient algorithms. Understanding the inherent complexity of natural problems via polynomial-time algorithms, advanced data structures, randomized algorithms, approximation algorithms, and NP-completeness. Additional topics may include algebraic and number theoretic algorithms, circuit lower bounds, online algorithms, or algorithmic game theory.
Prerequisites: CS 4820 or graduate level students.
Last Four Terms Offered: Spring 2025, Fall 2024, Spring 2024, Fall 2023
CS 5830 - Cryptography (3 Credits)
A rigorous introduction to the theoretical foundations of the cryptography that powers much of the modern world. Topics include one-way functions, secret-key encryption, zero-knowledge proofs, signatures, public-key encryption etc. As this is a theoretical class, the emphasis will be on formal definitions and proofs.
Prerequisites: CS 2800 or equivalent, CS 4810 or mathematical maturity, or permission of instructor.
Last Four Terms Offered: Fall 2024, Spring 2023, Fall 2022, Spring 2022
CS 5850 - Probability, Vectors, and Matrices in Computing (4 Credits)
Covers the mathematical foundations for access to information. Topics include high dimensional space, random graphs, singular value decomposition, Markov processes, learning theory, and algorithms for massive data.
Last Four Terms Offered: Spring 2025, Spring 2022
CS 5854 - Networks and Markets (3 Credits)
Crosslisted with ORIE 5138
The course examines how the computing, economic and sociological worlds are connected and how these connections affects these worlds. Tools from computer science, game theory and mathematics are introduced and then used to analyze network structures present in everyday life. Topics covered include social networks, web search, auctions, markets, voting, and crypto-currencies (e.g. bitcoin).
Prerequisites: basic probability.
Enrollment Information: Enrollment limited to: Cornell Tech students.
Last Four Terms Offered: Fall 2024, Spring 2024, Spring 2021, Fall 2020
CS 5996 - Special Topics in Computer Science (3-4 Credits)
Last Four Terms Offered: Spring 2025
CS 5998 - Master of Engineering Internship (0.25 Credits)
Off-campus internship with industry in which a student gains knowledge and experience in the field of computer science.
Enrollment Information: Enrollment limited to: CS M.Eng. students.
Last Four Terms Offered: Spring 2025, Fall 2024, Spring 2024, Fall 2023
CS 5999 - Master of Engineering Project (1-6 Credits)
Independent or group project under the direction of a CS field member or researcher. Projects involve the development of a computer science application (software or hardware) useful in exploring and/or solving an engineering problem with a computer science focus.
Enrollment Information: Enrollment limited to: CS M.Eng. students.
Last Four Terms Offered: Spring 2025, Fall 2024, Spring 2024, Fall 2023
CS 6006 - Succeeding in the Graduate Environment (1 Credit)
This is an onboarding course that first-year PhD students in Computer Science are required to attend during their first semester at Cornell. This course seeks to more formally present some of the hidden curriculum that is so often the marker of success in graduate school. Topics will include: your health, wellness, and finances; selecting an advisor and research direction; applying for grants and fellowships; giving a professional talk; setting and managing expectations; choices and consequences in computing.
Enrollment Information: Enrollment limited to: Computer Science PhD students.
Last Four Terms Offered: Fall 2024, Fall 2023
Learning Outcomes:
- Practical understanding of how a Computer Science PhD works in general.
- Students will be able to navigate their PhD journeys more confidently and know how to ask for help when they need it.
CS 6110 - Advanced Programming Languages (4 Credits)
Study of programming paradigms: functional, imperative, concurrent, and probabilistic programming. Mathematical foundations: inductive definitions, fixed points, and formal semantics. Models of programming languages including the lambda calculus. Type systems, polymorphism, modules, and object-oriented constructs. Program transformations, program logic, and applications to programming methodology.
Enrollment Information: Enrollment limited to: graduate students or permission of instructor.
Last Four Terms Offered: Spring 2025, Spring 2023, Spring 2022, Spring 2021
CS 6114 - Software-Defined Networking (4 Credits)
This course provides an introduction to novel programming languages for controlling computer networks. It will examine recent proposals based on logic, functional, and streaming languages, as well as tools for establishing the correctness of programs written in such languages using SAT/SMT solvers, model checkers, and proof assistants. Evaluation will be based on class participation and projects.
Last Four Terms Offered: Fall 2021, Spring 2021, Fall 2019, Fall 2018
CS 6115 - Certified Software Systems (4 Credits)
In recent years, it has become practical to build large software systems using formal proof assistants. Examples of such certified systems include the seL4 microkernel, the CompCert C compiler, the Vellvm LLVM compiler, and the Bedrock library. This course provides a hands-on introduction to programming using the Coq proof assistant. Assessment is based on participation and a substantial course project.
Prerequisites: CS 6110 or permission of instructor.
Last Four Terms Offered: Fall 2024, Spring 2023, Fall 2017, Spring 2015
CS 6117 - Category Theory for Computer Scientists (4 Credits)
An introduction to category theory, with a focus on material with established applications to computer science and programming languages, in particular. The course emphasizes developing comfort with abstraction and instantiation.
Prerequisites: CS 3110.
Last Four Terms Offered: Fall 2022, Spring 2020, Spring 2018, Fall 2014
CS 6120 - Advanced Compilers (4 Credits)
This is a hands-on course about implementing programming languages. It covers intermediate representations, classic optimization, runtime systems, and more advanced techniques such as parallelization, just-in-time compilation, and garbage collection. Course work consists of reading and discussing both classic and modern research papers and implementation projects based on the LLVM compiler infrastructure.
Enrollment Information: Enrollment limited to: graduate students.
Last Four Terms Offered: Spring 2025, Fall 2023, Spring 2022, Fall 2020
CS 6125 - Non-Ideal Algorithmic Fairness (3 Credits)
Crosslisted with INFO 6125
This seminar course will explore algorithmic fairness through a non-ideal lens. Rather than imagining what algorithmic fairness should look like in an ideal world, we will explore what the research tells us it looks like today, and what can be done given the incentives and practical constraints of the world we are in. For instance, the “silver bullets” of algorithmic fairness are often abstract calls made to increase participation, transparency, and regulation. However, each approach faces difficulties in practice. In an era where algorithmic fairness faces resistance from many fronts, it is critical that we foreground concrete proposals in addition to abstract ideals. In doing so, we’ll also discuss the consequences of taking on a perspective that might be overly reformist at the expense of radical re-imagining, and think through whether complementarity exists.
Learning Outcomes:
- Identify the practical constraints that algorithmic fairness faces today, and pathways to overcoming them.
- Demonstrate ability to propose productive directions.
- Develop critical research paper reading and analysis skills
CS 6156 - Runtime Verification (3 Credits)
Runtime Verification (RV) is a lightweight formal method for checking program executions against specifications. Foundations, algorithms, and tools for major approaches to RV will be covered, including monitor synthesis, specification languages, parametric monitoring, monitorability, instrumentation, and static analysis for reducing RV overhead. Students will become familiar with recent research results and challenges in RV, gain experience with RV tools, and conduct a research project.
Prerequisites: graduate standing in CS or CS majors with CS 3110 grade of B+ or better.
Last Four Terms Offered: Spring 2025, Spring 2024, Spring 2023, Spring 2022
CS 6158 - Software Engineering in the Era of Machine Learning (3 Credits)
Recent advances in Machine Learning have led to remarkable results in natural language processing, video generation, code generation, etc. On one hand, Machine Learning enables solving challenging software engineering problems through data-driven techniques. On the other hand, Machine Learning systems present novel software engineering challenges that traditional methods cannot handle. This course will explore research in this important intersection of software engineering and machine learning. Topics that will be covered include 1) foundational software engineering concepts, such as testing, debugging, and program analysis, 2) software engineering techniques for improving the quality of machine learning systems, and 3) the use of machine-learning techniques (including Large Language Models) to improve software engineering.
Prerequisites: at least one of the following courses or their equivalents: CS 3110, CS 4120, CS 5154 and at least one of the following courses or their equivalents: CS 3780, CS 4740, CS 4782.
Last Four Terms Offered: Fall 2024
Learning Outcomes:
- Understand and apply static and dynamic program analyses such as automated test generation, debugging, and dataflow analysis.
- Apply machine learning-based techniques to solve software engineering problems.
- Apply automated software engineering techniques to machine learning systems.
- Understand and analyze recent research results in software engineering.
CS 6172 - Program Synthesis (3 Credits)
An introduction to program synthesis: the problem of automatically generating programs from specifications of their desired behavior. Program synthesis draws on the fields of programming languages and artificial intelligence with the aim of helping to improve software engineering by automatically generating code; help expand the usability of computers by allowing non-coders to harness the power of programming languages; and help us build more interpretable, symbolic AI systems that can write new code. Covers classic areas such as programming-by-example, constraint-based synthesis using SMT solvers, type-directed program synthesis, and inductive logic programming. Covers recent developments in mixed discrete/continuous and neural/symbolic program synthesis. Covers deep learning methods for building efficient, scalable program synthesizers.
Enrollment Information: Enrollment limited to: Ph.D. students.
Last Four Terms Offered: Fall 2024, Fall 2023, Fall 2021
Learning Outcomes:
- Identify where and how program synthesis can be used to solve engineering problems.
- Be able to build program synthesizers which combine techniques from programming languages and AI.
- Understand open problems in the field and be equipped to work on them.
CS 6182 - Foundations of Probabilistic Programming (4 Credits)
Probabilistic programming languages are a powerful tool to express randomized computations and model uncertain behavior. This seminar surveys recent research on such languages, from the perspective of programming languages, logic, and verification. The topic naturally divides into three sections. The first part of the course covers the semantics of probabilistic programming languages: what do such programs mean mathematically, especially when the languages are extended with operators for conditioning and inference? The second part of the course covers verification: what does it mean for probabilistic programs to be correct, and how can we formally verify correctness? Finally, the last part of the course covers applications of probabilistic programs.
Enrollment Information: Enrollment limited to: graduate students or permission of instructor.
Last Four Terms Offered: Fall 2021
Learning Outcomes:
- Students will be able to mathematically formalize and rigorously analyze state-of-the-art probabilistic programming languages.
- Students can verify practically important properties of probabilistic programs.
- Students will be able to determine how to apply probabilistic programming to various application domains.
CS 6210 - Matrix Computations (3 Credits)
Stable and efficient algorithms for linear equations, least squares, and eigenvalue problems. Direct and iterative methods are considered. Numerical programming is used extensively.
Last Four Terms Offered: Fall 2024, Fall 2023, Fall 2022, Spring 2022
CS 6220 - Data-Sparse Matrix Computations (3 Credits)
Matrices and linear systems can be data-sparse in a wide variety of ways, and we can often leverage such underlying structure to perform matrix computations efficiently. This course will discuss several varieties of structured problems and associated algorithms. Example topics include randomized algorithms for numerical linear algebra, Krylov subspace methods, sparse recovery, and assorted matrix factorizations.
Last Four Terms Offered: Spring 2021, Spring 2020, Fall 2017, Fall 2011
CS 6230 - Parallel Architectures, Algorithms, and Applications (3 Credits)
The course will be divided into modules. The course will start with an overview of parallel machines and parallel programming. The course then will cover parallel computing topics in machine learning and deep learning combinatorial scientific computing, heterogeneous parallel programming and architectures, and high-performance domain-specific languages.
Last Four Terms Offered: Spring 2025, Fall 2023
Learning Outcomes:
- Describe data parallelism and model parallelism in parallel machine learning, identify such parallelism modes in published work, and implement such parallelism modes yourself.
- Explain, design, and apply combinatorial techniques, especially in the context of graph analysis challenges, and identify combinatorial approaches in published work.
- Recognize and describe various heterogeneous parallel computer architectures and their communication characteristics and performance; and explain approaches in published work.
CS 6241 - Numerical Methods for Data Science (3 Credits)
A discussion of numerical methods in the context of data analysis, machine learning, and network science problems. The course will focus on matrix and tensor decompositions, numerical algorithms for graph data, least squares, regression, and iterative methods.
Prerequisites: strong background in linear algebra, prior exposure to numerical methods.
Last Four Terms Offered: Spring 2025, Fall 2023, Spring 2021, Spring 2020
CS 6320 - Advanced Database Systems (4 Credits)
Covers a variety of advanced issues ranging from transaction management to query processing to data mining. Involves extensive paper reading and discussion.
Prerequisites: CS 4320 or permission of instructor.
Last Four Terms Offered: Spring 2024, Spring 2023, Spring 2021, Spring 2020
CS 6382 - Data Science for Social Change (3 Credits)
This seminar will discuss 1) how to do academic research which accomplishes social change and 2) how to increase the impact of academic research by writing about findings to a mass audience and to policymakers. Each week, we will spend one lecture discussing academic papers which accomplished social change and one lecture discussing writing for a mass audience. The seminar will feature guest lecturers from academia and journalism, and students will work on a final writing project which communicates research findings to a mass audience.
Enrollment Information: Enrollment limited to: Cornell Tech and CS PhD students. Cornell Tech masters students may enroll with instructor permission.
Last Four Terms Offered: Fall 2023, Spring 2023, Spring 2022
Learning Outcomes:
- Students will learn how to conduct academic research that influences policy or creates social change.
- Students will learn how to communicate findings to a mass audience.
CS 6384 - Applied Bayesian Analysis for Computational Research (3 Credits)
Crosslisted with ORIE 6217
Bayesian modeling and data analysis is a powerful tool for computational research. It consists of writing a probability model and then fitting it with observed data, while handling uncertainty. The model can be flexible, encompassing hierarchy, spatio-temporal dynamics, graphs, and high-dimensionality. This course is a graduate, hands-on introduction to Bayesian analysis in Stan and/or Pyro. The focus will be on writing and fitting models in practice for computational research, including the applied Bayesian statistics workflow: model building, checking, and evaluation. The course will also discuss research papers that use such methods.
Prerequisites: Recommended prerequisite: some coursework in mathematical maturity as well as probability statistics.
Enrollment Information: Enrollment limited to: Cornell Tech students and Ithaca PhD Students.
Last Four Terms Offered: Spring 2023
Learning Outcomes:
- Students will start with a research question and construct a data generating process for the setting then construct a Bayesian model reflecting that process.
- Students will record the model in a Bayesian programming language such as Stan and/or Pyro.
CS 6386 - Data to Decisions: Principles of Efficient Data Science (4 Credits)
Last Four Terms Offered: Spring 2025, Fall 2023
CS 6410 - Advanced Systems (4 Credits)
Advanced course in systems, emphasizing contemporary research in distributed systems. Topics may include communication protocols, consistency in distributed systems, faulttolerance, knowledge and knowledge-based protocols, performance, scheduling, concurrency control, and authentication and security issues.
Prerequisites: CS 4410 or permission of instructor.
Last Four Terms Offered: Fall 2024, Fall 2022, Fall 2021, Fall 2019
CS 6412 - Advanced Topics in Operating Systems (4 Credits)
The overall objective of the course is to train students to acquire the skills required to become a faculty member in operating systems. This includes understanding the broader landscape of operating systems and its applications, the ability to give clear presentations on the undergraduate and graduate level, write peer review assessments of research papers, conduct independent research, and write a final research report. The course focuses on one or more core focus areas within operating systems research, such as storage systems, memory systems, networking, distributed systems or security. Additionally, students conduct an independent research project including a coding demo and produce a written report on their findings.
Last Four Terms Offered: Spring 2025, Spring 2024
Learning Outcomes:
- Present, discuss and critique advanced operating systems research papers in areas such as storage systems, memory systems, networking, distributed systems or security.
- Conduct independent research in operating systems and synthesize the results into a written report.
- Analyze and evaluate systems behavior, functionality and performance.
- Demonstrate best practices for systems evaluation and identify common evaluation pitfalls.
CS 6431 - Security and Privacy Technologies (4 Credits)
A survey of modern security and privacy technologies. Topics include exploitation techniques, web and mobile security, uses and misuses of cryptography in secure systems, attacking and defending secure network protocols, data privacy and anonymity, censorship resistance, electronic payments. This course includes a major project component in the form of major programming assignments and/or other activities.
Last Four Terms Offered: Fall 2024, Fall 2022, Fall 2021, Spring 2018
CS 6450 - Advanced Computer Networking (4 Credits)
This course explores state-of-the-art network architectures and protocols through a review of recent research literature, discussions during lectures and class projects. Students will complete a semester-long research project based on one of the topics covered in the class.
Last Four Terms Offered: Spring 2023, Fall 2019, Fall 2018, Fall 2017
CS 6458 - Systems for Programmable Optical Interconnects (3 Credits)
This graduate-level course will systematically explore the fundamentals of optical interconnects in computer systems. The course will discuss the design, implementation and value of optical interconnects of a variety of sizes: long-haul optical interconnects, datacenter-scale optical interconnects and server-scale optical interconnects.
Last Four Terms Offered: Spring 2025, Fall 2023
Learning Outcomes:
- Explain how long-haul fiber connects planet-scale datacenter deployments.
- Explain the design and implementation of optically switched datacenters.
- Explain the design and implementation of optical interconnects within servers.
- Develop hands-on understanding of these interconnects through class projects that involve data collection of deployed interconnects, systems development leveraging the capabilities of interconnects etc.
CS 6466 - Cryptocurrencies and Smart Contracts (3 Credits)
Last Four Terms Offered: Fall 2019, Spring 2018
CS 6630 - Realistic Image Synthesis (4 Credits)
Advanced course in realistic image synthesis, focusing on the computation of physically accurate images.
Last Four Terms Offered: Fall 2022, Fall 2015, Spring 2012, Fall 2009
CS 6662 - Computational Imaging (3 Credits)
Computational imaging is the holistic design of imaging systems together with algorithms, blending ideas from computer vision, optics, imaging, and machine learning to overcome the limits of traditional cameras and imaging systems (e.g. capturing the first image of the black hole and imaging light-fields). This course will provide an overview of the state of the art in computational imaging. We will learn how to mathematically model different aspects of imaging systems, such as noise, aberrations, and light propagation. In addition, we will learn how to formulate and solve imaging inverse problems using both classical and modern deep-learning-based approaches. Throughout the course, we will discuss exciting active research topics such as lensless imaging, compressive imaging, phase microscopy, time-of-flight imaging, and tomography. The class will culminate in an open-ended final project.
Prerequisites: knowledge of linear algebra and working knowledge of Python.
Last Four Terms Offered: Fall 2024
Learning Outcomes:
- Mathematically model different aspects of imaging systems, including noise, aberrations, and wavelength dependence.
- Formulate and solve imaging inverse problems for several imaging systems (e.g. deconvolution, denoising, tomography, phase imaging) using several different methods.
- Differentiate and distinguish different inverse problem algorithms, from classic to deep methods.
CS 6670 - Computer Vision (4 Credits)
This course will introduce the core problems of computer vision and discuss both classical approaches based on the geometry and physics of image formation as well as current approaches based on recent advances in deep learning. Topics include stereopsis and 3D reconstruction, optical flow, image segmentation, object recognition, feature representations of images and patches, and convolutional networks.
Prerequisites: MATH 2210 or equivalent.
Last Four Terms Offered: Fall 2023, Fall 2022, Fall 2021, Fall 2019
CS 6672 - 3D Vision (3 Credits)
The ability to infer, model, and utilize 3D information from perceptual input is crucial to various intelligent systems (e.g., self-driving vehicles, mobile robots) and AI tasks (e.g., 2D image/3D asset generation, robot manipulation). The course will investigate the fundamentals and the latest advances in 3D vision as well as their applications in different fields. The topics include image formation, multi-view geometry, (neural) 3D representations, learning-based 3D algorithms, neural rendering, generative models, etc. The course will feature a mixture of lectures, paper presentations (both classic and modern), and a group final project. The students will play around various algorithms and models and improve or propose a creative use of them.
Enrollment Information: Primarily for: PhD students.
Last Four Terms Offered: Fall 2024
Learning Outcomes:
- Describe the challenges and limitations in 3D.
- Analyze the pros and cons of 3D techniques and properly benchmark them.
- Design new solutions to address identified limitations.
- Identify potential applications of different 3D algorithms and applying them to different domains to resolve respective challenges.
CS 6682 - Computation for Content Creation (3 Credits)
This course will focus on computational tools and methods for content creation in different domains. We will cover methods used in interactive artistic applications (visual arts, film, music, video games) as well as domains where complete automation is the goal (e.g., photometric reconstruction and image-based rendering, data augmentation). The course will involve a mix of lectures given by the instructor and presentations/discussions about research papers that will be assigned to students. Topics will include: different representations of images (e.g., vector and raster graphics), 3D models (e.g., surface manifolds vs volumetric representations), and audio (e.g., time signals vs short-time spectra), as well as parametric control of these representations and their relation to other types of data. A theory or program heavy project will be completed.
Last Four Terms Offered: Spring 2025, Spring 2024, Spring 2023, Spring 2022
Learning Outcomes:
- Students should learn how to recognize the advantages and disadvantages of different representations for media.
- Students should demonstrate the ability to analyze and connect ideas from research papers in different domains (e.g., graphics, vision, music information retrieval, hci).
- Students should demonstrate a deeper practical understanding of how computation is used for content creation in domains that they pursue through course projects.
CS 6700 - Advanced Artificial Intelligence (4 Credits)
Covers a variety of areas in AI, including knowledge representation, automated reasoning, learning, game-playing, and planning, with an emphasis on computational issues.
Prerequisites: CS 3700 or permission of instructor.
Last Four Terms Offered: Spring 2024, Spring 2023, Spring 2021, Spring 2020
CS 6702 - Topics in Computational Sustainability (4 Credits)
Crosslisted with INFO 6702
Last Four Terms Offered: Fall 2022, Spring 2013, Spring 2011, Spring 2010
CS 6703 - AI for Science (3 Credits)
This is a studio style course that emphasizes collaborative learning. It leverages the AI for Science Schmidt postdoc fellowship program and other programs. Schmidt postdoc fellows will present their research and progress. We will discuss background literature, related research, and possible research directions in class. Throughout the semester, students will learn various AI research methodologies, including AI/ML code, packages, and software, and engage in discussions on current advancements and applications of AI in science and engineering.
Enrollment Information: Enrollment limited to: graduate students.
Last Four Terms Offered: Fall 2023
Learning Outcomes:
- Describe the challenges of AI for Science research.
- Describe examples of how to define and formulate computational problems, as well as algorithms and approaches to solve them, distilling the core computational questions that generalize across different applications.
- Analyze and discuss existing literature on AI for Science and related topics.
- Describe the importance of designing ethical AI systems that can reason in high dimensions and understand tradeoffs among different criteria to address the many challenges we face today including socio, economic, and environmental challenges.
CS 6740 - Advanced Language Technologies (3 Credits)
Graduate-level introduction to technologies for the computational treatment of information in human-language form, covering modern natural-language processing (NLP) and/or information retrieval (IR). Possible topics include language modeling, word embeddings, text categorization and clustering, information extraction, computational syntactic and semantic formalisms, grammar induction, machine translation, latent semantic analysis (LSI), and clickthrough data for web search.
Prerequisites: CS 2110 or equivalent, a course in artificial intelligence or any relevant subfield (e.g., NLP, information retrieval, machine learning, Cornell CS courses numbered 47xx or 67xx), proficiency with using machine learning tools (e.g., fluency at training an SVM, comfort with assessing a classifier's performance using cross-validation).
Enrollment Information: Enrollment limited to: Ph.D. and MS students; undergraduate students allowed with permission of instructor.
Last Four Terms Offered: Fall 2024, Fall 2023, Spring 2023, Spring 2022
CS 6741 - Topics in Natural Language Processing and Machine Learning (3 Credits)
Robust language understanding has the potential to transform how we interact with computers, extract information from text and study language on large scale. This research-oriented course examines machine learning and inference methods for recovering language structure and meaning. Possible topics include structured prediction and deep learning, methods for situated language understanding, language grounding, and learning to generate text.
Prerequisites: CS 2110 or equivalent programming experience, CS 3780/CS 5780 or CS 6780 or equivalent.
Enrollment Information: Enrollment limited to: Ph.D. students.
Last Four Terms Offered: Fall 2024, Spring 2024, Fall 2023, Spring 2023
CS 6742 - Natural Language Processing and Social Interaction (3 Credits)
Crosslisted with INFO 6742
More and more of life is now manifested online, and many of the digital traces that are left by human activity are increasingly recorded in natural-language format. This research-oriented course examines the opportunities for natural language processing to contribute to the analysis and facilitation of socially embedded processes. Possible topics include sentiment analysis, learning social-network structure, analysis of text in political or legal domains, review aggregation systems, analysis of online conversations, and text categorization with respect to psychological categories.
Prerequisites: CS 3110 or equivalent programming experience, a course in artificial intelligence or any relevant subfield (e.g., NLP, information retrieval, machine learning).
Enrollment Information: Enrollment limited to: Ph.D. and MS students.
Last Four Terms Offered: Fall 2024, Spring 2024, Fall 2022, Fall 2021
CS 6751 - Robot Manipulation (3 Credits)
Crosslisted with MAE 6730
Robot manipulation is the ability for a robot to interact physically with objects in the world and manipulate them towards completing a task. It is one of the greatest technical challenges in robotics, due primarily to the interplay of uncertainty about the world and clutter within it. As robots become integrated into complex human environments, robot manipulation is increasingly necessary to assist humans in these unstructured environments. Robotic manipulation will enable applications like personal assistant robots in the home and factory worker robots in advanced manufacturing. This course is a mixture of lectures and paper presentations and covers the fundamental theory, concepts, and systems of robot manipulation, including both software and hardware. Topics we will cover this semester include perception, state estimation, robot arm kinematics and dynamics, task and motion planning, machine learning, controls, human-robot interaction towards various robot manipulation tasks. The course features a semester-long group project in which students propose, formalize, and execute a working robotic manipulation system towards a real-world task. The scope of possible components is quite broad and extends beyond traditional robotics issues into other aspects of CS. This course is offered to prepare a student for Ph.D. research in robot manipulation.
Prerequisites: Proficiency in C++ or Python, and familiarity with ROS.
Enrollment Information: Primarily for: graduate students, or permission of the instructor.
Last Four Terms Offered: Spring 2025, Spring 2024, Spring 2022, Spring 2018
CS 6752 - Formal Methods for Robotics (3 Credits)
Crosslisted with MAE 6770
How can we guarantee robots will never cause harm? How can we prove that complicated mechanical systems, controlled by computers and programmed by people, will always behave as expected under changing conditions and in a variety of uncertain environments? How do we formalize what such behaviors are? Guaranteeing safety, predictability and reliability of robots is crucial for the assimilation of such systems into society, be it at home or in the workplace. While every robotics researcher working with or on a robot is aware of safety issues, only recently the robotics community has begun looking at ways to either formally prove or grarantee by design different behavioral properties such as safety and correctness. This class will present recent results on the topic of formal methods for robotics and automation that combine and extend ideas from control theory, dynamical systems, automata theory, logic, model checking, synthesis, and hybrid systems.
Enrollment Information: Enrollment limited to: graduate students.
Last Four Terms Offered: Fall 2024, Fall 2021, Fall 2019, Fall 2017
Learning Outcomes:
- The student will be able to define specifications using different formalisms such as temporal logics and sets.
- The student will be able to will explain different verification algorithms.
- The student will be able to explain the different approaches to control synthesis.
- The student will be able to present a state-of-the-art research paper in a way that conveys the main contribution of the paper.
- The student will be able to apply the tools learned in the class to their individually chosen project.
CS 6754 - Human-Robot Interaction: Algorithms and Experiments (3 Credits)
Crosslisted with MAE 6710
As robots move from factory floors and battlefields into homes, offices, schools, and hospitals, how can we build robotic systems made for human interaction? Course will cover core engineering, computational, and experimental techniques in human-robot interaction (HRI). Lectures will cover key algorithms in Probabilistic Robotics, including Bayesian Networks, Markov Models, HMMs, Kalman and Particle Filters, MDP and POMPD, Supervised Learning, and Reinforcement Learning. Seminal and recent papers in HRI will be discussed, including topics such as: generating intentional action, reasoning about humans, social navigation, teamwork and collaboration, machine learning with humans in the loop, and human-robot dialog. Students will learn methods for designing and analyzing HRI experiments. Presentation of papers in class, and an HRI-related research project in teams will be required. Intended for M.Eng to PhD students from multiple disciplines including MAE, CS, ECE and IS.
Prerequisites: Python programming experience.
Enrollment Information: Enrollment limited to: graduate students or seniors with permission of instructor.
Last Four Terms Offered: Spring 2025, Fall 2023, Spring 2021, Spring 2020
Learning Outcomes:
- Students will be able to find, read, and comprehend a technical HRI Research Paper.
- Students will be familiar with the main probabilistic algorithms driving computational HRI.
- Students will be able to implement a HRI system in ROS.
- Students will be able to know how to plan and execute a human-subject study and analyze the results of a study using inferential statistics.
- Students will be proficient at presenting a research paper in a 20-minute conference-style presentation.
- Students will be able to know how to critically review a paper and comment on its advantages and shortcomings.
CS 6755 - Mobile Human Robot Interaction Design (3 Credits)
Crosslisted with INFO 6755
Robot and automated systems often need to move in and around people. This technical and human-centered course surveys current physical, computation and sensing technologies that make mobile human robot interaction possible, and delves into key research problems in interaction, human modelling, and repair which are needed to tackle the grand challenge of mobile HRI. As part of this course, students will build working prototypes of mobile robots, and deploy them for study in human environments. The 5000-level version of this course focuses on platform development; the 6000-level version of this course focuses on the production of human participant research studies using mobile HRI.
Prerequisites: proficiency in Python.
Enrollment Information: Enrollment limited to: PhD students.
Last Four Terms Offered: Spring 2023
Learning Outcomes:
- Identify key hardware, software and modelling components for mobile robot systems.
- Analyze human behavior to enable safe and socially appropriate mobile robot response.
- Demonstrate capability to develop and test mobile robot systems.
CS 6756 - Learning for Robot Decision Making (3 Credits)
Advances in machine learning have fueled progress towards deploying real-world robots from assembly lines to self-driving. Learning to make better decisions for robots presents a unique set of challenges. Robots must be safe, learn online from interactions with the environment, and predict the intent of their human partners. This graduate-level course dives into the various paradigms for robot learning and decision making and heavily focuses on algorithms, practical considerations, and features a strong programming component.
Prerequisites: CS 3780 or equivalent.
Enrollment Information: Enrollment limited to: graduate students or permission of instructor.
Last Four Terms Offered: Fall 2023, Fall 2022
Learning Outcomes:
- Understand the fundamental concepts of online learning, reinforcement learning, and imitation learning in the context of robot decision making.
- Formulate existing as well as new problems in robotics as instances of these learning frameworks.
- Analyze tradeoffs in performance, sample complexity, and runtimes of various robot learning algorithms.
- Implement state-of-the-art robot learning algorithms and demonstrate performance on open-source benchmarks.
CS 6758 - Deep Learning for Robotics (4 Credits)
Deep learning has become a pivotal force in recent robotics research advancements, from estimating the state of the world to solving complex long-horizon tasks. The new paradigm shifts from traditional feature and model engineering to learning task-relevant representations from raw data. This is fueled by increasingly more affordable hardware and diverse data sources from which algorithms may learn from. This graduate-level course examines how deep learning approaches have been applied to robotics problems, including various topics of robot perception and control. We will also discuss the recent trend of large-scale representation learning and foundation models for robotics.
Last Four Terms Offered: Fall 2024, Spring 2013, Spring 2012, Spring 2011
Learning Outcomes:
- Evaluate recent works on deep robot learning.
- Demonstrate how deep learning methods can be utilized for perception and control.
- Compare data-driven approaches and tradition approaches and describe their strengths and weaknesses.
- Implement, evaluate, and analyze cutting-edge deep robot learning methods.
- Apply deep learning techniques to solve real-world robot applications.
CS 6764 - Reasoning about Knowledge (4 Credits)
Last Four Terms Offered: Spring 2022, Fall 2018, Spring 2015, Spring 2012
CS 6766 - Reasoning about Uncertainty (4 Credits)
Last Four Terms Offered: Fall 2022, Fall 2019, Fall 2015, Spring 2013
CS 6780 - Advanced Machine Learning (4 Credits)
Gives a graduate-level introduction to machine learning and in-depth coverage of new and advanced methods in machine learning, as well as their underlying theory. Emphasizes approaches with practical relevance and discusses a number of recent applications of machine learning in areas like information retrieval, recommender systems, data mining, computer vision, natural language processing and robotics. An open research project is a major part of the course.
Prerequisites: programming skills (at the level of CS 2110) and basic knowledge of linear algebra (at the level of MATH 2940) and probability theory (at the level of MATH 4710) and multivariable calculus (at the level of MATH 1920).
Enrollment Information: Enrollment limited to: Ph.D. students or permission of instructor.
Last Four Terms Offered: Fall 2023, Spring 2019, Spring 2015, Fall 2010
CS 6783 - Machine Learning Theory (4 Credits)
This course on machine learning theory introduces basic results, tools, and techniques used in analysis of statistical and online learning algorithms. The course also introduces the basics of computational learning theory.
Prerequisites: CS 3780/CS 5780 or CS 4786/CS 5786 or CS 6780 or equivalent, or permission of instructor.
Last Four Terms Offered: Fall 2024, Fall 2022, Fall 2021, Fall 2019
CS 6784 - Advanced Topics in Machine Learning (4 Credits)
Last Four Terms Offered: Fall 2024, Fall 2023, Fall 2022, Spring 2022
CS 6785 - Deep Probabilistic and Generative Models (3 Credits)
Generative models are a class of machine learning algorithms that define probability distributions over complex, high-dimensional objects such as images, sequences, and graphs. Recent advances in deep neural networks and optimization algorithms have significantly enhanced the capabilities of these models and renewed research interest in them. This course explores the foundational probabilistic principles of deep generative models, their learning algorithms, and popular model families, which include variational autoencoders, generative adversarial networks, autoregressive models, and normalizing flows. The course also covers applications in domains such as computer vision, natural language processing, and biomedicine, and draws connections to the field of reinforcement learning.
Enrollment Information: Enrollment limited to: Cornell Tech students.
Last Four Terms Offered: Spring 2025, Spring 2024, Spring 2023, Spring 2022
Learning Outcomes:
- Describe the probabilistic approach to machine learning, including key issues in modeling, inference, and learning of probabilistic models.
- Demonstrate knowledge of modern deep generative machine learning algorithms including variational autoencoders, generative adversarial networks, autoregressive models, and normalizing flows.
- Implement and apply probabilistic and deep generative algorithms to problems and datasets involving images, text, audio, and other modalities.
- Develop an understanding of state-of-the-art results and open research problems in modern deep generative modeling.
CS 6787 - Advanced Machine Learning Systems (4 Credits)
Graduate-level introduction to system-focused aspects of machine learning, covering guiding principles and commonly used techniques for scaling up to large data sets. Topics will include stochastic gradient descent, acceleration, variance reduction, methods for choosing metaparameters, parallelization within a chip and across a cluster, and innovations in hardware architectures. An open-ended project in which students apply these techniques is a major part of the course.
Prerequisites: CS 3780 or CS 4786.
Last Four Terms Offered: Spring 2024, Fall 2021, Fall 2020, Fall 2019
CS 6788 - Advanced Topic Modeling (3 Credits)
Crosslisted with INFO 6150
Statistical topic models such as LDA provide a powerful tool for discovering themes in large unlabeled text corpora. They are increasingly popular in a wide range of fields, both as a data-driven alternative to manual document coding methods, and also as an example of a difficult but tractable problem in statistical inference. This course will cover Bayesian model construction, inference techniques, evaluation, and applications beyond text such as community detection in networks and population admixture in genetics.
Prerequisites: familiarity with Bayesian statistics and probabilistic modeling.
Enrollment Information: Enrollment limited to: graduate students or seniors.
Last Four Terms Offered: Spring 2021, Fall 2018, Fall 2016, Fall 2014
CS 6789 - Foundations of Reinforcement Learning (4 Credits)
State-of-art intelligent systems often need the ability to make sequential decisions in an unknown, uncertain, possibly hostile environment, by actively interacting with the environment to collect relevant data. Reinforcement Learning is a general framework that can capture the interactive learning setting. This graduate level course focuses on theoretical and algorithmic foundations of Reinforcement Learning. The topics of the course will include: basics of Markov Decision Process (MDP); Sample efficient learning in discrete MDPs; Sample efficient learning in large-scale MDPs; Off-policy policy optimization; Policy gradient methods; Imitation learning & Learning from demonstrations; Contextual Bandits. Throughout the course, we will go over algorithms, prove performance guarantees, and also discuss relevant applications. This is an advanced and theory-heavy course: there is no programming assignment and students are required to work on a theory-focused course project.
Prerequisites: CS 3780/CS 5780 or equivalent, BTRY 3080 or ECON 3130 or MATH 4710 and ORIE 3300 and MATH 2940.
Last Four Terms Offered: Fall 2024, Spring 2023, Fall 2021, Fall 2020
CS 6802 - Lattices: Geometry, Cryptography, and Algorithms (3 Credits)
Crosslisted with MATH 6302
A mathematically rigorous course on lattices. Lattices are periodic sets of vectors in high-dimensional space. They play a central role in modern cryptography, and they arise naturally in the study of high-dimensional geometry (e.g., sphere packings). We will study lattices as both geometric and computational objects. Topics include Minkowski's celebrated theorem, the famous LLL algorithm for finding relatively short lattice vectors, Fourier-analytic methods, basic cryptographic constructions, and modern algorithms for finding shortest lattice vectors. We may also see connections to algebraic number theory.
Prerequisites: MATH 4310 or permission of instructor.
Last Four Terms Offered: Spring 2025, Spring 2024, Fall 2022, Fall 2021
Learning Outcomes:
- Demonstrate algorithmic techniques such as basis reduction and sieving.
- Identify Regev's lattice-based public-key encryption scheme.
- Understand how Fourier-analytic methods can be used to study the geometry of lattices.
CS 6810 - Theory of Computing (4 Credits)
Computational complexity theory is devoted to understanding the limitations of efficient computation (with respect to computational resources such as time, space and randomness). This course will be a graduate level introduction to various aspects of complexity theory, with basics topics including time/space complexity, NP completeness, and the polynomial hierarchy, and advanced topics such as the PCP theorem, randomness and derandomization, circuit lower bounds, etc.
Last Four Terms Offered: Fall 2023, Fall 2021, Spring 2017, Spring 2016
CS 6814 - Probabilistic Proofs (1.5 Credits)
This course offers a graduate-level introduction to the theory of probabilistic proof systems. The area has deep connections to many aspects of theoretical computer science, including complexity theory and hardness of approximation, coding theory, cryptography and quantum computing. Topics covered will include the PCP theorem, interactive proofs, zero knowledge, succinct arguments, and quantum proof systems.
Last Four Terms Offered: Fall 2024
Learning Outcomes:
- Describe the types of probabilistic proof system and their application in different areas of theoretical computer science.
- Rigorously prove core properties of proof systems.
- Design proof systems suitable for specific problems.
CS 6815 - Pseudorandomness and Combinatorial Constructions (4 Credits)
Topics in computational complexity theory focusing on the use of randomness. Topics include pseudorandom generators, randomness extractors, and applications to explicit constructions of combinatorial objects. The course project will involve an in-depth study on a topic introduced in class (based on relevant research papers), with the expectation to produce a high quality survey article and a final presentation.
Prerequisites: CS 4820.
Last Four Terms Offered: Fall 2022, Fall 2019, Fall 2018
CS 6816 - Meta-Complexity and Cryptography (3 Credits)
Meta-complexity refers to the computational complexity of problems that are themselves about computations and their complexity. Such problems include the Minimum Circuit Size Problem and the Time-bounded Kolmogorov Complexity Problem, the study of which originated in the 1950s/60s and predate the modern study of Complexity theory. Meta-complexity provides a unifying framework for a variety of central tasks in several areas of computer science, including computational complexity, cryptography, and learning theory, and there has been a recent explosion of works connecting these areas through the lens of Meta-complexity. In this course, we will focus on these recent development, with a particular focus on connections with Cryptography.
Enrollment Information: Enrollment limited to: Cornell Tech PhD students.
Last Four Terms Offered: Spring 2025
Learning Outcomes:
- Describe classic problems, concepts, and key results, in meta-complexity.
- Analyze algorithms and cryptographic schemes related to meta-complexity.
- Explain reductions between meta-complexity and cryptographic problems.
CS 6817 - Special Topics in Complexity Theory (4 Credits)
This course will focus on the 'Analysis of Boolean Functions' with the objective to unravel properties of Boolean functions by studying their Fourier spectra. The harmonic analysis of Boolean functions has become a powerful tool in theoretical computer science, leading to groundbreaking results in various areas such as social choice theory, hardness of approximation, learning theory, pseudorandomness, property testing and circuit complexity. In fact, the tools developed in this area have found key applications beyond computer science, in particular leading to key developments in areas of random graphs, statistical physics, combinatorics and metric spaces. The course will aim to provide an in-depth introduction to this field of study.
Prerequisites: CS 4820.
Last Four Terms Offered: Spring 2025, Fall 2020
CS 6820 - Analysis of Algorithms (4 Credits)
Methodology for developing and analyzing efficient algorithms. Understanding the inherent complexity of natural problems via polynomial-time algorithms, advanced data structures, randomized algorithms, approximation algorithms, and NP-completeness. Additional topics may include algebraic and number theoretic algorithms, circuit lower bounds, online algorithms, or algorithmic game theory.
Prerequisites: CS 4820 or graduate level students.
Last Four Terms Offered: Fall 2024, Fall 2023, Fall 2022, Fall 2021
CS 6828 - Modern Prediction Paradigms: Responsible Machine Learning (3 Credits)
Predictive algorithms influence and shape society. The use of machine learning to make predictions about people raises a host of basic questions: What does it mean for a predictive algorithm to be fair to individuals from marginalized groups? On what basis should we deem a predictive algorithm to be valid? And when should we trust (or distrust) a predictor's output? This course surveys recent developments in the theory of responsible machine learning. We overview new paradigms for formulating learning problems and highlight key algorithmic tools in the study of fairness, validity, and robustness. Topics covered include: Multicalibration and Outcome Indistinguishability, Omniprediction, Performative Prediction, Distributional Robustness, and Verification of Learning.
Last Four Terms Offered: Fall 2024
Learning Outcomes:
- Identify common patterns and assumptions underlying modern prediction problems.
- Evaluate, given new settings, whether using machine prediction is appropriate.
- When appropriate, apply principled frameworks for reasoning about prediction (e.g., outcome indistinguishability, performative prediction) to reason about machine learning responsibly.
CS 6830 - Cryptography (3 Credits)
A rigorous introduction to the theoretical foundations of the cryptography that powers much of the modern world. As this is a theoretical class, the emphasis will be on formal definitions and proofs. E.g., what does it mean to communicate securely? Can I prove that I am who I claim to be without revealing additional information (such as information that allows others to impersonate me)?Topics include one-way functions, pseudorandom number generators, public-key encryption, zero-knowledge proofs, digital signatures, etc. We will also see some more exotic primitives, such as fully homomorphic encryption, and we might briefly discuss program obfuscation and/or cryptocurrency.
Prerequisites: general ease with algorithms and elementary probability theory, maturity with mathematical proofs (ability to read and write mathematical proofs).
Last Four Terms Offered: Fall 2024, Fall 2022, Fall 2020, Fall 2018
CS 6831 - Designing Secure Cryptography (3 Credits)
Last Four Terms Offered: Spring 2023, Spring 2019
CS 6832 - Quantum Cryptography (3 Credits)
Quantum information and computation have had a profound impact on cryptography, and understanding the connections between them is an active area of research. This course will cover a selection of cutting-edge topics in quantum cryptography, including quantum attacks on classical protocols, provable security against quantum attacks, cryptographic protocols that leverage quantum resources (e.g. quantum key distribution, quantum money, etc.), and connections to quantum complexity theory.
Learning Outcomes:
- Identify situations in which quantum computation can affect cryptographic security.
- Prove security of cryptographic protocols in the presence of quantum information and computation.
- Describe the complexity-theoretic relationships between quantum cryptographic primitives.
CS 6840 - Algorithmic Game Theory (4 Credits)
Algorithmic Game Theory combines algorithmic thinking with game-theoretic, or more generally, economic concepts. Designing and analyzing large-scale multi-user systems and as well as such markets, requires good understanding of tools from algorithms, game theory, and graph theory. The course will develop mathematically sophisticated techniques at the interface between algorithms and game theory, and will consider their applications to markets, auctions, networks, as well as the Internet.
Last Four Terms Offered: Fall 2024, Spring 2020, Spring 2017, Spring 2014
CS 6850 - The Structure of Information Networks (4 Credits)
Crosslisted with INFO 6850
Information networks such as the World Wide Web are characterized by the interplay between heterogeneous content and a complex underlying link structure. This course covers recent research on algorithms for analyzing such networks and models that abstract their basic properties. Topics include combinatorial and probabilistic techniques for link analysis, centralized and decentralized search algorithms, generative models for networks, and connections with work in the areas of social networks and citation analysis.
Prerequisites: CS 4820.
Last Four Terms Offered: Fall 2024, Fall 2023, Spring 2023, Fall 2021
CS 6861 - Introduction to Kleene Algebra (4 Credits)
Kleene algebra is the algebra of regular expressions and finite automata, structures of fundamental importance in computer science. Kleene algebra is the algebraic theory of these objects, although it has many other natural and useful interpretations: relational algebra, programming language semantics, program logics, automata and formal languages, network programming, computational geometry, and the design and analysis of algorithms. In this course we will explore the theory and applications of this system, including models, deductive systems, completeness and complexity results, and applications in the areas mentioned above. A final paper or project will be due on which the course grade will be based. It will be either an independent study with a final paper and presentation, or a software project and presentation, at the students' choice.
Last Four Terms Offered: Spring 2024, Fall 2019, Spring 2018
CS 7090 - Computer Science Colloquium (1 Credit)
Weekly meeting for the discussion and study of important topics in the field.
Last Four Terms Offered: Spring 2025, Fall 2024, Spring 2024, Fall 2023
CS 7190 - Seminar in Programming Languages (1 Credit)
The Programming Languages Discussion Group meets weekly to discuss papers in the area of programming languages, program analysis, and compilers. The goal is to encourage interactions and discussions between students, researchers, and faculty with interests in this area. The seminar is open to everybody interested in languages and compilers. First-year and second-year students are especially encouraged to participate.
Prerequisites: CS 6110 or permission of instructor.
Last Four Terms Offered: Spring 2025, Fall 2024, Spring 2024, Fall 2023
CS 7194 - Great Works in Programming Languages (1 Credit)
This seminar covers classic papers in the area of programming languages. The goal is to give students an in-depth introduction to some of the most important ideas in the field, to provide a foundation for advanced research. Participants will be expected to read one or two papers each week, and to lead one presentation each semester. The seminar is open to everybody interested in programming languages. First and second-year graduate students are especially encouraged to participate.
Last Four Terms Offered: Spring 2024, Spring 2022, Spring 2021, Spring 2019
CS 7290 - Seminar on Scientific Computing and Numerics (1 Credit)
Crosslisted with MATH 7290
Talks on various methods in scientific computing, the analysis of their convergence properties and computational efficiency, and their adaptation to specific applications.
Last Four Terms Offered: Spring 2025, Fall 2024, Spring 2024, Fall 2023
CS 7340 - Special Topics in Technology and Society (1 Credit)
Last Four Terms Offered: Fall 2023
CS 7390 - Database Seminar (1 Credit)
The database seminar is the weekly meeting of students and faculty interested in data management and data mining at Cornell. We typically discuss one or two papers on related topics per session. We focus on recent and seminal papers of general interest.
Last Four Terms Offered: Spring 2025, Fall 2024, Spring 2024, Fall 2023
CS 7420 - Special Topics in Computer Systems (1 Credit)
This course will allow students to gain an in-depth learning about a subarea in computer systems, either a classical one or an emerging one. Students will read and discuss recent papers in the selected subarea, and work on a collaborative project. Each offering of the course may choose a different subarea.
Last Four Terms Offered: Spring 2022
Learning Outcomes:
- In-depth understanding of a specialized subarea in computer systems.
- Identify core challenges, and problems within the subarea.
- Build or analyze a system component to gain hands-on experience.
CS 7490 - Systems Research Seminar (1 Credit)
The Systems Research Seminar discusses recent, interesting papers in the systems area, broadly defined to span operating systems, distributed systems, networking, architecture, databases, security, and programming languages. The goal is to foster technical discussions among the Cornell systems research community.
Enrollment Information: Enrollment limited to: Ph.D. students; others require permission of instructor.
Last Four Terms Offered: Spring 2025, Fall 2024, Spring 2024, Fall 2023
CS 7492 - Special Topics in Computer Systems (2 Credits)
Crosslisted with INFO 7492
PhD-level seminar on special topics in computer systems.
Prerequisites: graduate-level preparation in computer systems or permission of instructor.
Last Four Terms Offered: Fall 2020
Learning Outcomes:
- Understand state-of-the-art techniques, tools, and technologies from multiple perspectives.
- Read and analyze current research papers.
- Where relevant, identify, analyze, and evaluate ethical, legal, and policy dimensions of technologies under study.
CS 7493 - Computer Security Seminar (1 Credit)
Last Four Terms Offered: Fall 2021, Spring 2021, Fall 2020, Spring 2020
CS 7620 - Special Topics in Computer Graphics (1 Credit)
An advanced PhD-level seminar on special topics in Computer Graphics. Recent papers in a selected research area will be read and presented. Topics include rendering, inverse rendering, surface reflection, material capture, and computational fabrication.
Prerequisites: graduate level coursework in computer graphics or vision.
Enrollment Information: Enrollment limited to: CS Ph.D. students or permission of instructor.
Last Four Terms Offered: Fall 2021
CS 7670 - Special Topics in Computer Vision (1-3 Credits)
Informal weekly seminar in which current topics in computer vision are discussed.
Last Four Terms Offered: Fall 2024, Spring 2023, Fall 2015, Spring 2015
CS 7690 - Computer Graphics and Vision Seminar (1 Credit)
The Graphics/Vision Research Seminar discusses recent research in the areas of computer graphics and computer vision. The goal is to foster technical discussions and collaboration among the Cornell graphics and vision research community.
Last Four Terms Offered: Spring 2025, Fall 2024, Spring 2024, Fall 2023
CS 7790 - Seminar in Artificial Intelligence (1 Credit)
The AI seminar will meet weekly for lectures by graduate students, faculty, and researchers emphasizing work-in-progress and recent results in AI research.
Last Four Terms Offered: Spring 2025, Fall 2024, Spring 2024, Fall 2023
CS 7792 - Special Topics in Machine Learning (1 Credit)
Reading group on advanced topics in machine learning.
Last Four Terms Offered: Spring 2024, Fall 2023, Spring 2023, Fall 2021
CS 7794 - Seminar in Natural Language Understanding (1 Credit)
This course, the NLP seminar, is a weekly meeting for people currently or soon to be actively doing research in NLP. (Students simply looking to learn more about NLP should not enroll, but should take one of our lecture courses instead.) One participant leads discussion each week, either of a recently published paper or of their own work in progress.
Enrollment Information: Enrollment limited to: Ph.D. and MS students.
Last Four Terms Offered: Spring 2025, Fall 2024, Spring 2024, Fall 2023
CS 7796 - Robotics Seminar (1 Credit)
Informal seminar in which current topics in robotics are discussed.
Enrollment Information: Primarily for: students and faculty actively involved in robotics research.
Last Four Terms Offered: Spring 2025, Fall 2024, Spring 2024, Fall 2023
CS 7800 - Topics in Theory of Computing (1 Credit)
CS 7890 - Seminar in Theory of Algorithms and Computing (1 Credit)
The theory seminar will meet weekly for lectures by graduate students, faculty, and researchers emphasizing work-in-progress and recent results related to theory of computing.
Last Four Terms Offered: Spring 2025, Fall 2024, Spring 2024, Fall 2023
CS 7893 - Cryptography Seminar (1 Credit)
Seminar for discussing recent or classical papers in cryptography.
Last Four Terms Offered: Fall 2020, Spring 2020, Fall 2019, Spring 2019
CS 7999 - Independent Research (1-12 Credits)
Independent research for CS PhD students who have not yet passed their A-exam.
Last Four Terms Offered: Spring 2025, Fall 2024, Spring 2024, Fall 2023