COS 109/EGR 109

Computers in Our World

Computers are all around us. How does this affect the world we live in? This course is a broad introduction to computing technology for humanities and social science students. Topics will be drawn from current issues and events, and will include discussion of how computers work, what programming is and why it is hard, how the Internet and the Web work, security and privacy. Two 90-minute lectures. Self-scheduled computer laboratory.

COS 126/EGR 126

Computer Science: An Interdisciplinary Approach

An introduction 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 preparing students to use computers effectively for applications in computer science, physics, biology, chemistry, engineering, and other disciplines. The course uses Java to introduce fundamental programming concepts, including conditionals, loops, arrays, functions, and object-oriented programming. Add'l. topics include algorithms and data structures; theory of computing; hardware and software systems; and AI. No prior programming experience is required.

ECO 326/COS 206/ECE 326

Economics of Digital Connectivity and Artificial Intelligence

Using applied microeconomic theory and case studies, this course examines the impact of digital technology on markets. In a connected market, information is freely and instantly available to all participants. We ask how these features affect the way markets function. Topics include the economics of platform markets and multisided markets, the impact of the internet on the news media, education, health care and new industries, such as big-data driven industries, social networks, technological innovation and intellectual property, internet security, privacy and other regulatory issues.

COS 217

Introduction to Programming Systems

An introduction to computer organization and system software. Developing 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. Prerequisites: COS 126 or ECE 115.

COS 226

Algorithms and Data Structures

This course surveys the most important algorithms and data structures in use on computers today. It emphasizes algorithms and data structures for sorting, searching, and graphs. The course concentrates on developing implementations, understanding their performance characteristics, and estimating their effectiveness in applications. Prerequisites: COS 126 or approval by the COS placement officer.

COS 240

Reasoning About Computation

An 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. Prerequisites: COS 126 and MAT 175 or MAT 202 or MAT 204.

COS 302/ECE 305/SML 305

Mathematics for Numerical Computing and Machine Learning

This 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). Prerequisites: COS 126 and MAT 202.

ECE 206/COS 306

Contemporary Logic Design

Introduction 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.

MUS 314/COS 314

Computer and Electronic Music through Programming, Performance, and Composition

An introduction to the fundamentals of computer and electronic music in the context of the Princeton Laptop Orchestra (PLOrk). 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.

COS 316

Principles of Computer System Design

This course teaches students the design, implementation, and evaluation of computer systems, including operating systems, networking, and distributed systems. The course will teach students to evaluate the performance and study the design choices of existing systems. Students will also learn general systems concepts that support design goals of modularity, performance, and security. Students will apply materials learned in lectures and readings to design and build new systems components. Prerequisites: Students must have completed COS 217 and COS 226 prior to enrolling in this course.

COS 320

Compiling Techniques

Understand the design and construction of compilers. Concepts include syntax analysis, semantics, code generation, and optimization. Translation of imperative languages (such as C), functional languages (such as ML), and object-oriented languages (such as Java) will be studied. Students will implement a complete compiler for a small language. Prerequisites: COS 217, COS 226 and COS 326

ORF 363/COS 323

Computing and Optimization for the Physical and Social Sciences

An 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.

COS 324

Introduction to Machine Learning

This course is an introduction to various machine learning paradigms and algorithms, providing 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 course goals are threefold: to understand the landscape of machine learning, to compute the math behind techniques, and to use Python and relevant libraries to implement and apply various methods. Prerequisite: MAT 103, MAT 202, and COS 226.

COS 326

Functional Programming and Formal Methods

In the world of large language models and AI coding agents, it is easier than ever to generate code, but a key question remains: How do we know the code we have generated does what we want it to? This class will introduce students to functional programming and techniques for specifying, generating, testing, and reasoning about programs. Topics include an introduction to the principles and practice of functional programming; type systems; specification of program properties; property-based testing; logic, theorem provers, and reasoning about program correctness. Prerequisite COS 226.

COS 333

Advanced Programming Techniques

This 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 & 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. Prerequisites - Successful completion of COS 217 and 226.

MAT 375/COS 342

Introduction to Graph Theory

The fundamental theorems and algorithms of graph theory. Topics include: connectivity, matchings, graph coloring, planarity, the four-color theorem, extremal problems, network flows, and related algorithms. Prerequisite: MAT202 or 204 or 217 or equivalent.

COS 343

Algorithms for Computational Biology

This course introduces algorithms for analyzing DNA, RNA, and protein, the three fundamental molecules in the cell. Students will learn algorithms on strings, trees, and graphs, and their applications in: sequence comparison and alignment; molecular evolution and comparative genomics; DNA sequencing and assembly; recognition of genes and regulatory elements; and RNA structure and protein interaction networks. Students will also implement algorithms and apply them to biological data. Prerequisites: COS 126, COS 226. Some exposure to discrete math and basic probability (e.g., COS 240*)

MAE 345/COS 345/ECE 345/ROB 345

Introduction to Robotics

Robotics 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. Topics include inverse kinematics, motion planning, localization, mapping, vision, and reinforcement learning. Prerequisites: MAT 201 or 203, MAT 202 or 204, COS 126. Recommended ORF 309 and MAE 305. A.B. students ST requirement; B.S.E. students 1st-year science requirement. Two 90-minute lectures.

COS 350

Ethics of Computing

The 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; privacy; values in design; research ethics; professional ethics; technology and social good; digital colonialism; law & policy. Activities will include readings, technical work, and case studies of contemporary debates.

COS 351/SOC 353/SPI 351

Technology Policy and Law

This course examines challenging and consequential topics in technology policy and law. Subjects include AI governance, data privacy, cybersecurity, online speech, cryptocurrency regulation, net neutrality, and government use of technology. The seminar also covers foundational computer science concepts that affect public policy and law, including AI evaluation, internet architecture, privacy science, cryptography, and systems security. Materials and discussion will draw extensively from current events, primary sources, and the instructor's experience in government service.

PSY 360/COS 360

Computational Models of Cognition

This course provides advanced students in cognitive science, psychology, and computer science with the skills to develop computational models of human cognition. The course will explore three ways in which researchers have attempted to normalize cognition: symbolic approaches, neural networks, and probability and statistics. Two lectures, one preceptorial.

COS 375/ECE 375

Computer Architecture and Organization

An introduction to computer architecture and organization. Instruction set design; basic processor implementation techniques; caches and virtual memory; CPUs, GPUs, storage systems, hardware-software APIs, and compilers. Goal: building understanding of the systems you design and program. Design trade-offs among cost, performance, complexity, and power dissipation. Prerequisite: COS 217.

ECE 396/COS 396/QSE 320

Introduction to Quantum Computing

This 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. Prerequisite: Linear algebra at the level of MAT 202, 204, 217, or the equivalent.

COS 397

Junior Independent Work Seminar

This single-term IW seminar course(COS 397) requires students to complete a substantial research project under the advisement of a Princeton faculty member within a structured seminar format. The work requires consistent engagement throughout the term. Students may pursue a project aligned with their interests and skills, provided it fits within the scope of the assigned seminar. The work must result in a final paper. Offered in fall and spring, this course provides AB and BSE juniors with an opportunity to concentrate on a state-of-the-art project in computer science to fulfill the IW requirement.

COS 398

Junior Independent Work

This single-term one-on-one IW course (COS 398) requires students to complete a substantial research project under the advisement of a Princeton faculty member. The work requires consistent engagement throughout the term. Students may pursue a project aligned with their interests and skills. The work must result in a final paper. Offered in the fall, this course provides AB and BSE juniors with an opportunity to concentrate on a state-of-the-art computer science project to fulfill the IW requirement.

COS 399

Junior Independent Work

This single-term one-on-one IW course (COS 399) requires students to complete a substantial research project under the advisement of a Princeton faculty member. The work requires consistent engagement throughout the term. Students may pursue a project aligned with their interests and skills. The work must result in a final paper. Offered in the spring, this course provides AB & BSE juniors with an opportunity to concentrate on a state-of-the-art computer science project to fulfill the IW requirement.

COS 417

Operating Systems

An introduction to operating systems. The emphasis is on the fundamentals of designing and implementing an operating system. Topics include operating system structure, processes, threads, synchronizations, concurrent programming, interprocess communications, virtual memory, and file systems. COS 217 required. COS 316, COS 333, COS 318, 375, and/or programming maturity recommended.

COS 418

Distributed Systems

This 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: server design, network programming, naming, concurrency and locking, consistency models and techniques, security, and fault tolerance. Modern techniques and systems employed at some of the largest Internet sites will also be covered. Students will gain practical experience designing, implementing, and debugging real distributed systems through programming assignments. Prereqs: COS 217 required; COS 316 rec.

COS 423

Theory of Algorithms

Design and analysis of efficient data structures and algorithms. General techniques for building and analyzing algorithms. Introduction to NP-completeness. Prerequisites: COS 226 and COS 240 or instructor's permission.

COS 424

Reasoning with Data

Reasoning with Data trains students to turn messy real-world datasets and experiments into credible empirical claims, covering data wrangling and visualization, core inference and causal tools (potential outcomes, DAGs, experiments, regression), and modern frontiers (LLMs, causal ML, benchmarks, and quasi-experiments). The course puts special emphasis on developing the practical skills that students will need in data-facing roles. Prerequisites: Basic Statistics: ORF 245 or equivalent -Introduction to ML: COS 324, ECE 435 or equivalent.

COS 426

Computer Graphics

The principles underlying the generation and display of graphical pictures by computer. Hardware and software systems for graphics. Topics include: hidden surface and hidden line elimination, line drawing, shading, half-toning, user interfaces for graphical input, and graphic system organization. Two 90-minute lectures. Prerequisites: 217 and 226.

COS 429

Computer Vision

This 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; and statistical modeling of visual data. Throughout the course, there will also be an examination of aspects of human vision and perception that guide and inspire computer vision techniques. Prerequisites: COS 217, COS 226, and COS 324 (or equivalent).

ECE 432/COS 432

Information Security

Security issues in computing, communications, and electronic commerce. Goals and vulnerabilities; legal and ethical issues; basic cryptology; private and authenticated communication; electronic commerce; software security; viruses and other malicious code; operating system protection; trusted systems design; network security; firewalls; policy, administration and procedures; auditing; physical security; disaster recovery; reliability; content protection; privacy. Prerequisites: 217 and 226. Two lectures.

COS 433/MAT 473

Cryptography

An 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. Prerequisites: COS 240 is a required prerequisite or equivalent proof-based mathematical maturity. Prerequisite: COS 330

COS 436

Human-Computer Interaction

This 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. A semester-long group project that involves the design and implementation of an interactive system. Prerequisite COS 217 or permission of instructor.

COS 445

Economics and Computing

Computation and other aspects of our lives are becoming increasingly intertwined. In this course, we will study a variety of topics on the cusp between economics and computation. Topics covered: games on networks, auctions, mechanism and market design, reputation, computational social choice. The aim of the course is two-fold: 1. to understand the game-theoretic issues behind systems involving computation, such as online networks, and 2. to learn how algorithms and algorithmic thinking help with designing better decision and allocation mechanisms in the offline world. Prereqs: COS 226 and 240, or significant background with proof-based math.

COS 448/EGR 448

Innovating Across Technology, Business, and Marketplaces

This course introduces computer science and technology-oriented students to issues tackled by Chief Technology Officers: the technical visionaries and managers innovating at the boundaries of technology and business. These individuals are partners to the business leaders of the organization, not merely implementers of business goals. The course covers companies from ideation and early-stage startup, to growth-stage startup, to mature company, covering the most relevant topics at each stage, including ideation, financing, product-market fit, go-to-market approaches, strategy, execution, and management. Exciting industry leaders guest lecture.

COS 451

Computational Geometry

Introduction to basic concepts of geometric computing, illustrating the importance of this new field for computer graphics, solid modeling, robotics, databases, pattern recognition, and statistical analysis. Algorithms for geometric problems. Fundamental techniques, for example, convex hulls, Voronoi diagrams, intersection problems, multidimensional searching. Two 90-minute lectures. Prerequisites: 226 and 240 or 341, or equivalent.

QCB 455/COS 455/MOL 455

Introduction to Genomics and Computational Molecular Biology

This 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 testing correction, performance evaluation), and machine learning methods which have been applied to biological problems (e.g., classification techniques, hidden Markov models, clustering).

COS 461/ECE 471

Computer Networks

This course studies computer networks and the services built on top of them. 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. Two lectures, one preceptorial. Prerequisite: 217.

ECE 462/COS 462

Design of Very Large-Scale Integrated (VLSI) Systems

Analysis 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 475/COS 475

Computer Architecture

An in-depth study of the fundamentals of modern computer processor and system architecture. Students will develop a strong theoretical and practical understanding of modern, cutting-edge computer architectures and implementations. Studied topics include: Instruction-set architecture and high-performance processor organization including pipelining, out-of-order execution, as well as data and instruction parallelism. Cache, memory, and storage architectures. Multiprocessors and multicore processors. Coherent caches. Interconnection and network infrastructures. Prerequisite: ECE 375/COS 375 and ECE 206/COS 306 (or familiarity with Verilog).

COS 480

Special Topics in Computer Science

These courses cover one or more advanced topics in computer science. The courses are offered only when there is an opportunity to present material not included in the established curriculum; the subjects vary from term to term. Three classes.

COS 481

Special Topics in Computer Science

These courses cover one or more advanced topics in computer science. The courses are offered only when there is an opportunity to present material not included in the established curriculum; the subjects vary from term to term. Three classes.

COS 484

Natural Language Processing

Recent advances have ushered in exciting developments in natural language processing (NLP), resulting in systems that can translate text, answer questions and even hold spoken conversations with us. This course will introduce students to the basics of NLP, covering standard frameworks for dealing with natural language as well as algorithms and techniques to solve various NLP problems, including recent deep learning approaches. Topics covered include language modeling, rep. learning, text classification, sequence tagging, syntactic parsing, and machine translation. The course will have programming assignments, a mid-term and a final project.

COS 485

Neural Networks: Theory and Applications

Organization of synaptic connectivity as the basis of neural computation and learning. Multilayer perceptrons, convolutional networks, and recurrent networks. Backpropagation and Hebbian learning. Models of perception, language, memory, and neural development.

COS 487/MAT 407

Theory of Computation

Studies the limits of computation by identifying tasks that are either inherently impossible to compute, or impossible to compute within the resources available. Introduces students to computability and decidability, Godel's incompleteness theorem, computational complexity, NP-completeness, and other notions of intractability. This course also surveys the status of the P versus NP question. Additional topics may include: interactive proofs, hardness of computing approximate solutions, cryptography, and quantum computation. Two lectures, one precept. Prerequisite: 240 or instructor's permission.

COS 488/MAT 474

Introduction to Analytic Combinatorics

Analytic Combinatorics aims to enable precise quantitative predictions of the properties of large combinatorial structures. The theory has emerged over recent decades as essential both for the scientific analysis of algorithms in computer science and for the study of scientific models in many other disciplines. This course combines motivation for the study of the field with an introduction to underlying techniques, by covering as applications the analysis of numerous fundamental algorithms from computer science. The second half of the course introduces Analytic Combinatorics, starting from basic principles.

COS 497

Senior Independent Work (One Semester)

This single-term IW course requires COS BSE seniors to complete a substantial piece of research and scholarship under the supervision and advisement of a Princeton faculty member in either a seminar or one-on-one format. The work requires consistent engagement throughout the term. Students may pursue a project aligned with their interests and skills. Seminar projects must fit within the scope of the assigned seminar. The work will result in a final paper. Offered in fall and spring, this course provides COS BSE seniors with an opportunity to concentrate on a state-of-the-art project in computer science to fulfill the IW requirement.

COS 498A

Senior Thesis I (Year-Long)

The senior thesis for AB COS majors (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. Therefore, students will receive a P/D/F for COS 498A and a letter grade for COS 499A.

COS 498B

Senior Thesis I (Year-Long)

The senior thesis for COS BSE majors (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. Therefore, students will receive a P/D/F for COS 498B and a letter grade for COS 499B.

COS 499A

Senior Thesis II (Year-Long)

The senior thesis for AB COS majors (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. Therefore, students will receive a P/D/F for COS 498A and a letter grade for COS 499A.

COS 499B

Senior Thesis II (Year-Long)

The senior thesis for COS BSE majors (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. Therefore, students will receive a P/D/F for COS 498B and a letter grade for COS 499B.