Computer Science
- COS 126/EGR 126: Computer Science: An Interdisciplinary ApproachAn intro. to computer science in the context of scientific, engineering, and commercial applications. The goal of the course is to teach basic principles and practical issues, while at the same time preparing students to use computers effectively for applications in computer science, physics, biology, chemistry, engineering, and other disciplines. The course uses the Java programming language to introduce fundamental programming concepts, including conditionals, loops, arrays, functions, and object-oriented programming. Add topics include algorithms and data structures; theory of computing; hardware and software systems; and machine learning.
- COS 217: Introduction to Programming SystemsDeveloping skills for composing large programs, including modularity, abstraction, programming style, and best practices for code development, testing, debugging, and performance tuning. Additionally, an overview of computing environments and architectures, through the C programming language, assembly language, and machine language.
- COS 226: Algorithms and Data StructuresThis course surveys the most important algorithms and data structures in use on computers today. Topics include elementary data structures, sorting algorithms, search algorithms and data structures, graphs, and some more advanced topics (randomization, multiplicative weights and intractability). The course concentrates on developing implementations, understanding their performance characteristics, and estimating their potential effectiveness in applications.
- COS 240: Reasoning About ComputationAn introduction to mathematical topics relevant to computer science. Combinatorics, probability and graph theory will be covered in the context of computer science applications. The course will present a computer science approach to thinking and modeling. Students will be introduced to fundamental concepts in theoretical computer science, such as NP-completeness and cryptography that arise from the world view of efficient computation.
- COS 302/SML 305/ECE 305: Mathematics for Numerical Computing and Machine LearningThis course provides a comprehensive and practical background for students interested in continuous mathematics for computer science. The goal is to prepare students for higher-level subjects in artificial intelligence, machine learning, computer vision, natural language processing, graphics, and other topics that require numerical computation. This course is intended students who wish to pursue these more advanced topics, but who have not taken (or do not feel comfortable) with university-level multivariable calculus (e.g., MAT 201/203) and probability (e.g., ORF 245 or ORF 309). See "Other Information"
- COS 324: Introduction to Machine LearningThis course is a broad introduction to different machine learning paradigms and algorithms and provides a foundation for further study or independent work in machine learning and data science. Topics include linear models for classification and regression, support vector machines, clustering, dimensionality reduction, deep neural networks, Markov decision processes, planning, and reinforcement learning. The goals of this course are three-fold: to understand the landscape of machine learning, how to compute the math behind techniques, and how to use Python and relevant libraries to implement and use various methods.
- COS 326: Functional ProgrammingAn introduction to the principles of typed functional programming. Programming recursive functions over structured data types and informal reasoning by induction about the correctness of those functions. Functional algorithms and data structures. Principles of modular programming, type abstraction, representation invariants and representation independence. Parallel functional programming, algorithms, and applications. Probabilistic functional programming, algorithms, and applications.
- COS 330: Great Ideas in Theoretical Computer ScienceThis course will focus on a few great ideas in theoretical computer science that power modern computing applications. We will cover both classical ideas in algorithm design and more contemporary ideas from optimization and their applications. We will also study new computation models, such as online learning and communication complexity motivated by current large-scale applications. We will examine the role of randomness in algorithm design and theoretical computer science more generally. We will also cover modern topics such as error-correcting codes and their role in reliable information processing and transmission.
- COS 333: Advanced Programming TechniquesThis is a course about the practice of programming. Programming is more than just writing code. Programmers must also assess tradeoffs, choose among design alternatives, debug and test, improve performance, and maintain software written by themselves and others. At the same time, they must be concerned with compatibility, robustness, and reliability, while meeting specifications. Students will have the opportunity to develop these skills by working on their own code and in group projects.
- COS 350: Ethics of ComputingThe course aims to help students think critically about the ethical and social aspects of computing technology. Topics include ethical foundations; political economy of the tech industry; algorithmic fairness; AI and labor; AI safety; AI and climate; social media and platform power; information security; differential privacy; design ethics; research ethics; professional ethics; technology & social good; law & policy. Activities will include readings, technical work, and case studies of contemporary debates.
- COS 375/ECE 375: Computer Architecture and OrganizationAn introduction to computer architecture and organization. Instruction set design; basic processor implementation techniques; caches and virtual memory, CPUs, GPUs, storage systems, hardware-software APIs, compilers. Goal: building understanding of the systems you design and program. Design trade-offs among cost, performance, complexity, and power dissipation.
- COS 398: Junior Independent Work (B.S.E. candidates only)The single semester IW course (398) requires BSE juniors to complete a substantial piece of research and scholarship under the supervision and advisement of a Princeton faculty member. The work requires sustained investment and attention throughout the semester. Required works-in-progress submissions, due dates, as well as how students final grades are calculated are outlined below.Students can pursue Independent Work driven by a student's interests and skills. The work must result in a final paper. Offered in the fall juniors are provided with an opportunity to concentrate on a "state-of-the-art" project in computer science.
- COS 418: Distributed SystemsThis course covers the design and implementation of distributed systems. Students will gain an understanding of the principles and techniques behind the design of modern, reliable, and high-performance distributed systems. Topics include server design, network programming, naming, concurrency and locking, consistency models and techniques, and fault tolerance. Modern techniques and systems employed at some of the largest Internet sites (e.g., Google, Amazon) will also be covered. Through programming assignments, students will gain practical experience designing, implementing, and debugging real distributed systems.
- COS 426: Computer GraphicsThis course will study topics in computer graphics, covering methods in image processing, 3D modeling, rendering, and animation. The course is mainly project based and encourages hands-on programming experience.
- COS 429: Computer VisionThis course is an introduction to the concepts of 2D and 3D computer vision. It surveys a wide range of topics from level-level vision to high-level recognition. We will discuss concepts such as filtering and edge detection; cameras and shape reconstruction; segmentation and clustering; optical flow and tracking; object recognition; motion recognition; statistical modeling of visual data, etc. Throughout the course, there will also be examination of aspects of human vision and perception that guide and inspire computer vision techniques.
- COS 433/MAT 473: CryptographyAn introduction to the theory of modern cryptography. Topics covered include private key and public key encryption schemes, digital signatures, pseudorandom generators and functions, zero-knowledge proofs, and some advanced topics.
- COS 436: Human-Computer InteractionThis course is a survey of the field of Human-Computer Interaction (HCI). We cover foundational as well as current research topics in HCI. The two core focus areas are interactive computing and social computing; breadth topics include AI+HCI, AR/VR, design tools, and accessibility.
- COS 451: Computational GeometryThis course introduces the basic concepts of geometric computing, illustrating the importance of this field for a variety of applications areas, such as computer graphics, solid modeling, robotics, database, pattern recognition, and statistical analysis. Algorithms are presented and analyzed for a large number of geometric problems, and an array of fundamental techniques are discussed (e.g., convex hulls, Voronoi diagrams, intersection problems, multidimensional searching).
- COS 461/ECE 471: Computer NetworksThe course's goal is to teach students how today's Internet works. Topics covered include the Internet protocol, Internet routing, routers, packet switching, network management, network monitoring, congestion control, reliable transport, network security, and applications of ML on networking. Through programming assignments, students will gain practical experience building network components and operating an Internet-like network infrastructure.
- COS 487/MAT 407: Theory of ComputationIntroduction to computability and complexity theory. Topics will include models of computation such as automata, and Turing machines; decidability and decidability; computational complexity; P, NP, and NP completeness; others.
- COS 497: Senior Independent Work (One Semester)The single semester IW course (497) requires BSE seniors to complete a substantial piece of research and scholarship under the supervision and advisement of a Princeton faculty member. The work requires sustained investment and attention throughout the semester. Required works-in-progress submissions, due dates, as well as how students final grades are calculated are outlined below.Students can pursue Independent Work driven by a student's interests and skills. The work must result in a final paper. Offered in the fall and spring seniors are provided with an opportunity to concentrate on a "state-of-the-art" project in computer science.
- COS 498A: Senior Thesis I (Year-Long)The AB senior thesis (498A-499A) is a year-long project in which students complete a substantial piece of research and scholarship under the supervision and advisement of a Princeton faculty member. While a year-long thesis is due in the student's final semester of study, the work requires sustained investment and attention throughout the academic year. Required works-in-progress submissions, their due dates, as well as how students' grades for the semester are calculated are outlined below.
- COS 498B: Senior Thesis I (Year-Long)The BSE senior thesis (498B-499B) is a year-long project in which students complete a substantial piece of research and scholarship under the supervision and advisement of a Princeton faculty member. While a year-long thesis is due in the student's final semester of study, the work requires sustained investment and attention throughout the academic year. Required works-in-progress submissions, their due dates, as well as how students' grades for the semester are calculated are outlined below.
- COS 514: Fundamentals of Deep LearningMathematical and conceptual introduction to Deep Learning: basic concepts, model classes, paradigms, and attempts at analysis. Covers some ML theory (learning rate, SGD, generalization, etc.) and then some advanced topics: Normalization, Implicit Bias, Generative Models, Recurrent Nets, Contrastive Learning, Self-Supervised Learning, Transformers, Diffusion Models, Private Learning, Interpretability, Fine-tuning of Large Pretrained Models, etc. (Varies year to year.) 4 home-works. Term project done in groups of 2-3 --- can be experimental or theoretical. Course text available from Instructor's homepage.
- COS 516/ECE 516: Automated Reasoning about SoftwareAn introduction to algorithmic techniques for reasoning about software. Basic concepts in logic-based techniques including model checking, invariant generation, symbolic execution; automatic decision procedures in modern solvers for Boolean Satisfiability (SAT) and Satisfiability Modulo Theories (SMT); and their applications in automated verification, analysis, and synthesis of software. Emphasis on algorithms and automatic tools.
- COS 518: Advanced Computer SystemsCOS 518 is a graduate course in computer systems. Its goals are: (1) To understand the core concepts of computer systems, rather than particular implementation details. (2) To understand the state of the art in distributed, storage, mobile, and operating systems. (3) To understand how to engage in cutting-edge systems research and development. This course assumes a basic familiarity with computer systems and networking concepts.
- COS 521: Advanced Algorithm DesignBroadly covers algorithmic design ideas of the past few decades, preparing students to understand current research papers in algorithms. Although designed for computer science grads, it may be suitable for advanced undergrads and non-CS grads as well. The course is thematically distinct from undergrad algorithms (such as COS 423) in its extensive use of ideas such as randomness, optimization, approximation, and high dimensional geometry, which are increasingly important in applications. The course also exposes students to modern algorithmic concerns, including dealing with uncertainty and strategic (i.e., game-theoretic) behaviors.
- COS 529: Advanced Computer VisionAdvanced topics in computer vision, with a focus on recent methods and current research. Topics include 3D vision, recognition, and the intersection of computer vision and other fields. Appropriate for students who have taken COS 429 or equivalent and would like further exposure to computer vision.
- COS 551/MOL 551/QCB 551: Introduction to Genomics and Computational Molecular BiologyThis interdisciplinary course provides a broad overview of computational and experimental approaches to decipher genomes and characterize molecular systems. We focus on methods for analyzing "omics" data, such as genome and protein sequences, gene expression, proteomics and molecular interaction networks. We cover algorithms used in computational biology, key statistical concepts (e.g., basic probability distributions, significance testing, multiple hypothesis correction, data evaluation), and machine learning methods which have been applied to biological problems (e.g., hidden Markov models, clustering, classification techniques).
- COS 585: Information Theory and ApplicationsThe notions of entropy and information, originated in statistical physics and electrical engineering, have become central in almost all branches of modern science. The course gives an introduction to information theory and its applications, from the perspective of math, computer science and theoretical computer science. The course is intended for students from all areas of computer science, as well as math, physics, bio-informatics and electrical engineering.
- COS 590: Extramural Research InternshipOne-term full time research internship at a host institution to perform scholarly research directly relevant to a student's dissertation work. Research objectives are determined by the student's advisor in consultation with the outside host. Monthly progress reports and a final paper are required. Enrollment limited to post-generals students. Students are permitted to enroll in this one-semester course at most twice. Participation is considered exceptional.
- COS 597A: Advanced Topics in Computer Science: Efficient Systems for Foundation ModelsAs models increase in size and training budget, they not only systematically improve in upstream quality, but also exhibit novel emergent capabilities. This increase in scale raises proportionate difficulties for practitioners: foundation model training and inference lie at a unique interdisciplinary crossroad, combining open problems in algorithms, system design, and software engineering. The goal of this course is to give an overview of emerging research questions and challenges associated with foundation model training and inference.
- COS 597B: Advanced Topics in Computer Science: Computational Models of CognitionThis course provides an overview of computational models of human cognition. Computational modeling is one of the central methods in cognitive science research, and can help to provide insight into how people solve the challenging problems posed by everyday life, as well as how to bring computers closer to human performance for some of these problems. The course explores three ways in which researchers have attempted to formalize cognition - symbolic approaches, neural networks, and probability and statistics - considering the strengths and weaknesses of each.
- COS 597D: Advanced Topics in Computer Science: Imaging the InvisibleThis course explores topics at the frontiers of imaging where algorithms promise super-human vision by extracting information deeply hidden in measurements. We focus on today's capture challenges, including harsh environmental conditions, ultra-fast or slow time scales, extreme scene scales and imaging via proxies using objects in the scene as cameras instead. We discuss how co-designing components in a vision system can enable us to tackle these challenges. Students are expected to present recent research work, with attention on developing oral and written scientific communication skills.
- COS 597E: Advanced Topics in Computer Science: Neural Sensing, Modeling, and UnderstandingThis graduate seminar explores selected topics in neural-driven wireless sensing drawn from the recent research literature and industry. Neural networks are opening up exciting new possibilities to harness the ambient wireless and acoustic transmissions around us for sensing purposes. Our smartphones, devices, and nearby cell towers and hotspots provide readily available signals that neural networks can analyze in order to create in situ models of the world, sense movements, and enable navigation of autonomous agents.
- COS 597K: Advanced Topics in Computer Science: Frontiers in Deep LearningThis seminar course focuses on reading and discussing the latest advancements and major milestones in various topics of deep learning. Topics include Large Language Models, vision perception/generation models, multimodal models, reasoning, architectures, training, efficiency, and interdisciplinary AI applications. Students will engage in paper presentations and discussions, guest lectures, and a course research project related to deep learning. Prior background in deep learning, computer vision, and/or natural language processing is required.
- COS 597U: Advanced Topics in Computer Science: Machine BehaviorAutomated systems powered by artificial intelligence are ubiquitous in our everyday lives, and their role in society may increase as LLMs grow more popular and powerful. At the same time, recent work has shown that LLMs can simulate and predict human behavior. Thus, understanding and steering the behavior of such systems can amplify their benefits, mitigate their harms, and increase our understanding of human behavior. This seminar course aims to facilitate publishable student research on the emerging field of machine behavior. Coursework is a mix of reading and empirical work tailored to make students catch up with research in the field.
- ECE 206/COS 306: Contemporary Logic DesignIntroduction of the basic concepts in logic design that form the basis of computation and communication circuits. This course will start from scratch and end with building a working computer on which we will run small programs.
- ECE 396/COS 396: Introduction to Quantum ComputingThis course will introduce the matrix form of quantum mechanics and discuss the concepts underlying the theory of quantum information. Some of the important algorithms will be discussed, as well as physical systems which have been suggested for quantum computing.
- ECE 462/COS 462: Design of Very Large-Scale Integrated (VLSI) SystemsAnalysis and design of digital integrated circuits using deep sub-micron CMOS technologies as well as emerging and post-CMOS technologies (Si finFETs, III-V, carbon). Emphasis on design, including synthesis, simulation, layout and post-layout verification.Analysis of energy, power, performance, area of logic-gates, interconnect and signaling structures.
- ECE 532/COS 572/MAE 572: Safety-Critical Robotics and AIRobotic and AI systems are unlocking transformative impact but also raising urgent safety questions. This course covers the mathematical foundations of safety-critical autonomy and introduces the key algorithmic paradigms (control barrier functions, Hamilton-Jacobi reachability, model-predictive shielding) under a unified safety filter framework. By dissecting the safety challenges in autonomous driving, robot learning, human interaction, and AI alignment, students learn the importance of quantifying uncertainty, minding the gap between models and reality, and ensuring safety - even under black swan events - without sacrificing performance.
- MAE 345/COS 346/ECE 345/ROB 345: Introduction to RoboticsRobotics is a rapidly-growing field with applications including unmanned aerial vehicles, autonomous cars, and robotic manipulators. This course will provide an introduction to the basic theoretical and algorithmic principles behind robotic systems. The course will also allow students to get hands-on experience through project-based assignments on quadrotors. In the final project, students will implement a vision-based obstacle avoidance controller for a quadrotor. Topics include motion planning, control, localization, mapping, and vision.
- MUS 314/COS 314: Computer and Electronic Music through Programming, Performance, and CompositionAn introduction to the fundamentals of computer and electronic music. The music and sound programming language ChucK, developed here at Princeton, will be used in conjunction with Max/MSP, another digital audio language, to study procedural programming, digital signal processing and synthesis, networking, and human-computer interfacing. Students present their work to the public in the "House of Sound" event in the Forum of the Lewis Arts Complex.
- ORF 363/COS 323: Computing and Optimization for the Physical and Social SciencesAn introduction to several fundamental and practically-relevant areas of modern optimization and numerical computing. Topics include computational linear algebra, first and second order descent methods, convex sets and functions, basics of linear and semidefinite programming, optimization for statistical regression and classification, and techniques for dealing with uncertainty and intractability in optimization problems. Extensive hands-on experience with high-level optimization software. Applications drawn from operations research, statistics and machine learning, economics, control theory, and engineering.
- PSY 360/COS 360: Computational Models of CognitionThe objective of this course is to provide advanced students in cognitive science, psychology, and computer science with the skills to develop computational models of human cognition. Computational modeling is one of the central methods in cognitive science research, and can help to provide insight into how people solve the challenging problems posed by everyday life, as well as how to bring computers closer to human performance for some of these problems. The course will explore three ways in which researchers have attempted to normalize cognition: symbolic approaches, neural networks, and probability and statistics.
- QCB 455/MOL 455/COS 455: Introduction to Genomics and Computational Molecular BiologyThis interdisciplinary course provides a broad overview of computational and experimental approaches to decipher genomes and characterize molecular systems. We focus on methods for analyzing "omics" data, such as genome and protein sequences, gene expression, proteomics and molecular interaction networks. We cover algorithms used in computational biology, key statistical concepts (e.g., basic probability distributions, significance testing, multiple hypothesis correction, data evaluation), and machine learning methods which have been applied to biological problems (e.g., hidden Markov models, clustering, classification techniques).
- SML 301/COS 301: Data Intelligence: Modern Data Science MethodsThis course provides the training for students to be independent in modern data analysis. The course emphasizes the rigorous treatment of data and the programming skills and conceptual understanding required for dealing with modern datasets. The course examines data analysis through the lens of statistics and machine learning methods. Students verify their understanding by working with real datasets. The course also covers supporting topics such as experiment design, ethical data use, best practices for statistical and machine learning methods, reproducible research, writing a quantitative research paper, and presenting research results.
- SPI 352/COS 352: Artificial Intelligence, Law, & Public PolicyThis course examines the implications of AI, particularly foundation models, for law and public policy. Topics will include how AI affects and reshapes legal doctrine and policy, including: intellectual property law, administrative law, anti-discrimination law, and more. Also covered will be emerging regulatory policies and legislative efforts around AI, as well as the limits of proposed approaches. Emphasis will be placed juxtaposing the legal and policy considerations with technical design decisions, in an interdisciplinary and accessible way. This course is suitable for students of all backgrounds; no technical knowledge is assumed.