CS Curricula

←All schools

Princeton UniversityWebsiteAcademic Catalog

Computer ScienceDepartment Website

Majors

Courses

source 1source 2source 3source 4

COS 109: Computers in Our World (1)

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: Computer Science: An Interdisciplinary Approach (1) intro

An introduction to computer science in the context of scientific, engineering, and commercial applications. The course will teach basic principles and practical issues, and will prepare students to use computers effectively for applications in computer science, physics, biology, chemistry, engineering, and other disciplines. Topics include: hardware and software systems; programming in Java; algorithms and data structures; fundamental principles of computation; and scientific computing, including simulation, optimization, and data analysis. No prior programming experience required. Video lectures, one class, two preceptorials. A. Kaplan, K. Wayne

COS 217: Introduction to Programming Systems (1) intro

An introduction to computer organization and system software. The former includes topics such as processor and memory organization, input/output devices, and interrupt structures. The latter includes assemblers, loaders, libraries, and compilers. Programming assignments are implemented in assembly language and C using the UNIX operating system. Three lectures.

COS 226: Algorithms and Data Structures (1) algs

This course surveys the most important algorithms and data structures in use on computers today. Particular emphasis is given to algorithms for sorting, searching, and string processing. Fundamental algorithms in a number of other areas are covered as well, including geometric algorithms, graph algorithms, and some numerical algorithms. The course will concentrate on developing implementations, understanding their performance characteristics, and estimating their potential effectiveness in applications. Two online lectures, two class meetings, one precept. G. Kol, K. Wayne

COS 240: Reasoning About Computation (1) math

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. R. Raz, M. Braverman

COS 302: Mathematics for Numerical Computing and Machine Learning (1) math

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). R. Adams

COS 306: Contemporary Logic Design (1)

COS 314: Computer and Electronic Music through Programming, Performance, and Composition (1)

COS 316: Principles of Computer System Design (1) sys

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. A. Levy, R. Netravali

COS 318: Operating Systems (1) sys

A study of the design and analysis of operating systems. Topics include: processes, mutual exclusion, synchronization, semaphores, monitors, deadlock prevention and detection, memory management, virtual memory, processor scheduling, disk management, file systems, security, protection, distributed systems. Two 90-minute lectures.

COS 320: Compiling Techniques (1) pls

The principal algorithms and concepts associated with translator systems. Topics include lexical analysis, syntactic analysis, parsing techniques, symbol table management, code generation and optimization, run time system design, implementation issues related to programming language design. Course will include a large-scale programming project utilizing the above topics. Three lectures.

COS 323: Computing and Optimization for the Physical and Social Sciences (1) math

COS 324: Introduction to Machine Learning (1) ai

This 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 Programming (1) pls

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

COS 333: Advanced Programming Techniques (1) intro

The practice of programming. Emphasis is on the development of real programs, writing code but also assessing tradeoffs, choosing among design alternatives, debugging and testing, and improving performance. Issues include compatibility, robustness, and reliability, while meeting specifications. Students will have the opportunity to develop skills in these areas by working on their own code and in group projects. Two 90-minute lectures.

COS 342: Introduction to Graph Theory. Same as MAT 375 (1) math

COS 343: Algorithms for Computational Biology (1) algs

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.

COS 346: Introduction to Robotics (1) ai

COS 351: Information Technology and Public Policy (1) impact

This course surveys recurring, high-profile issues in technology policy and law. Each session will explore a challenging topic, including consumer privacy, data security, electronic surveillance, net neutrality, online speech, algorithmic fairness, cryptocurrencies, election security, and offensive operations. The seminar will also cover foundational technical concepts that affect policy and law, including internet architecture, cryptography, systems security, privacy science, and artificial intelligence. Materials and discussion will draw extensively from current events and primary sources.

COS 375: Computer Architecture and Organization (1) sys

An introduction to computer architecture and organization. Instruction set design; basic processor implementation techniques; performance measurement; caches and virtual memory; pipelined processor design; design trade-offs among cost, performance, and complexity. Two 90-minute classes, one self-scheduled hardware laboratory.

COS 381: Networks: Friends, Money and Bytes (1) sys

This course is oriented around 20 practical questions in the social, economic, and technological networks in our daily lives. How does Google sell ad spaces and rank webpages? How does Netflix recommend movies and Amazon rank products? How do I influence people on Facebook and Twitter? Why doesn’t the Internet collapse under congestion, and does it have an Achilles heel? Why does each gigabyte of mobile data cost $10, but Skype is free? How come Wi-Fi is slower at hotspots than at home, and what is inside the cloud of iCloud? In formulating and addressing these questions, we introduce the fundamental concepts behind the networking industry.

COS 396: Introduction to Quantum Computing (1)

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

COS 397: Junior Independent Work, Fall (1) capstone

B.S.E candidates only

COS 398: Junior Independent Work, Spring (1) capstone

B.S.E. candidates only

COS 418: Distributed Systems (1) sys

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 include 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 (e.g., Google, Facebook, Amazon) will also be covered. Through programming assignments, students will gain practical experience designing, implementing, and debugging real distributed systems.

COS 423: Theory of Algorithms (1) algs

Design and analysis of efficient data structures and algorithms. General techniques for building and analyzing algorithms. Introduction to NP-completeness.

COS 424: Fundamentals of Machine Learning (1) ai

COS 426: Computer Graphics (1) 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.

COS 429: Computer Vision (1) ai

An introduction to the concepts of 2D and 3D computer vision. Topics include low-level image processing methods such as filtering and edge detection; segmentation and clustering; optical flow and tracking; shape reconstruction from stereo, motion, texture, and shading. Throughout the course, there will also be examination of aspects of human vision and perception that guide and inspire computer vision techniques.

COS 432: Information Security (1) sys

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.

COS 433: Cryptography (1) math

An introduction to modern cryptography with an emphasis on fundamental ideas. The course will survey both the basic information and complexity-theoretic concepts as well as their (often surprising and counter-intuitive) applications.

COS 436: Human-Computer Interaction (1) humans

How do we create interactive technology centered around people and society at large? This course is a survey of the field of Human-Computer Interaction (HCI). Lectures, readings, and precept discussions cover foundational theories as well as topics in HCI. We focus on two core areas of interactive computing (e.g., input/output, ubiquitous computing) and social computing (e.g., collaboration, social media), and span a breadth of domains, such as AI+HCI, AR/VR, design tools, and accessibility. Put your learnings into practice, with a semester-long group project, by either studying how people think or by designing a novel technological system.

COS 445: Economics and Computing (1) impact

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 to be covered include: 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 can help with designing better decision and allocation mechanisms in the offline world.

COS 448: Innovating Across Technology, Business, and Marketplaces (1) impact

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 (1) algs

Introduction to basic concepts of geometric computing, illustrating the importance of this new field for computer graphics, solid modelling, robotics, databases, pattern recognition, and statistical analysis. Algorithms for geometric problems. Fundamental techniques, for example, convex hulls, Voronoi diagrams, intersection problems, multidimensional searching.

COS 455: Introduction to Genomics and Computational Molecular Biology (1) science

COS 461: Computer Networks (1) sys

This course studies computer networks and the services built on top of them. Topics include packet-switch and multi-access networks, routing and flow control, congestion control and quality-of-service, Internet protocols (IP, TCP, BGP), the client-server model and RPC, elements of distributed systems (naming, security, caching) and the design of network services (multimedia, peer-to-peer networks, file and Web servers, content distribution networks).

COS 462: Design of Very Large-Scale Integrated (VLSI) Systems (1) sys

COS 475: Computer Architecture (1) sys

COS 484: Natural Language Processing (1) ai

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 487: Theory of Computation (1) theory

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.

COS 488: Introduction to Analytic Combinatorics (1) math

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 495: Special Topics in Computer Science (1) special

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.

COS 496: Special Topics in Computer Science (1) special

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.

COS 497: Senior Independent Work, Fall (1) capstone

Seniors are provided with an opportunity to concentrate on a 'state-of-the-art' project in computer science. Topics may be selected from suggestions by faculty members or proposed by the student. B.S.E. candidates only.

COS 498: Senior Independent Work, Spring (1) capstone

Seniors are provided with an opportunity to concentrate on a 'state-of-the-art' project in computer science. Topics may be selected from suggestions by faculty members or proposed by the student. B.S.E. candidates only.

MAT 103: Calculus I (1) math

First semester of calculus. Topics include limits, continuity, the derivative, basic differentiation formulas and applications (curve-sketching, optimization, related rates), definite and indefinite integrals, the fundamental theorem of calculus.

MAT 104: Calculus II (1) math

Continuation of MAT103. Topics include techniques of integration, arclength, area, volume, convergence of series and improper integrals, L'Hopital's rule, power series and Taylor's theorem, introduction to differential equations and complex numbers.

MAT 201: Multivariable Calculus (1) math

Vectors in the plane and in space, vector functions and motion, surfaces, coordinate systems, functions of two or three variables and their derivatives, maxima and minima and applications, double and triple integrals, vector fields, and Stokes's theorem.

MAT 202: Linear Algebra with Applications (1) math

Companion course to MAT201. Matrices, linear transformations, linear independence and dimension, bases and coordinates, determinants, orthogonal projection, least squares, eigenvectors and their applications to quadratic forms and dynamical systems.

MAT 203: Advanced Vector Calculus (1) math

Vector spaces, limits, derivatives of vector-valued functions, Taylor's formula, Lagrange multipliers, double and triple integrals, change of coordinates, surface and line integrals, generalizations of the fundamental theorem of calculus to higher dimensions. More abstract than 201 but more concrete than 216/218. Recommended for prospective physics majors and others with a strong interest in applied mathematics.

MAT 204: Advanced Linear Algebra with Applications (1) math

Companion course to MAT203. Linear systems of equations, linear independence and dimension, linear transforms, determinants, (real and complex) eigenvectors and eigenvalues, orthogonality, spectral theorem, singular value decomposition, Jordan forms, other topics as time permits. More abstract than MAT202 but more concrete than MAT217. Recommended for prospective physics majors and others with a strong interest in applied mathematics.

MAT 217: Honors Linear Algebra (1) math

A rigorous course in linear algebra with an emphasis on proof rather than applications. Topics include vector spaces, linear transformations, inner product spaces, determinants, eigenvalues, the Cayley-Hamilton theorem, Jordan form, the spectral theorem for normal transformations, bilinear and quadratic forms.

MAT 218: Multivariable Analysis and Linear Algebra II (1) math

Continuation of Multivariable Analysis and Linear Algebra I (MAT 216) from the fall. A rigorous course in analysis with an emphasis on proof rather than applications. Topics include metric spaces, completeness, compactness, total derivatives, partial derivatives, inverse function theorem, implicit function theorem, Riemann integrals in several variables, Fubini.

CHM 201: General Chemistry I (1) sci

An introductory course. Principles of chemistry; understanding the world around us; structure and reactions of atoms and molecules; laboratory manipulations, preparations, and analysis. Fulfills medical school entrance requirements in general chemistry and qualitative analysis.

CHM 207: General Chemistry: Applications in Modern Technology (1) sci

Introduction to the basic concepts of chemistry: stoichiometry, types of reactions, thermodynamics, quantum mechanics, and chemical bonding. Introduction to the structure, chemistry, and properties of technologically important materials: metals, semiconductors, ceramics, and polymers. Fulfills medical school requirements in general chemistry and qualitative analysis.

PHY 103: General Physics I (1) sci

The physical laws that govern the motion of objects, forces, and forms of energy in mechanical systems are studied at an introductory level. Calculus-based, primarily for engineering and science students, meets premedical requirements. Some preparation in physics and calculus is desirable; calculus may be taken concurrently. One demonstration lecture, three classes, one three-hour laboratory.

PHY 104: General Physics II (1) sci

Continuation of 103. Electromagnetism from electrostatics, DC and AC circuits to optics, and topics of modern physics are treated at an introductory level. Some preparation in physics and calculus is desirable; calculus may be taken concurrently. Calculus-based, primarily for engineering and science students, meets premedical requirements. One demonstration lecture, three classes, one three-hour laboratory.

PHY 105: Advanced Physics (Mechanics) (1) sci

PHY105 is an advanced first year course in classical mechanics, taught at a more sophisticated level than PHY103. Care is taken to make the course mathematically self contained, and accessible to the motivated physics student who may not have had exposure to an introductory college level physics course. The approach of PHY105 is that of an upper-division physics course, with more emphasis on the underlying formal structure of physics than PHY103, including an introduction to modern variational methods (Lagrangian dynamics), with challenging problem sets due each week and a mini-course in Special Relativity held over reading period.

PHY 106: Advanced Physics (Electromagnetism) (1) sci

Parallels 104 at a more sophisticated level, emphasizing the unification of electric and magnetic forces and electromagnetic radiation. To enter this course, students must have done well in 103 or 105. 103 students must attend the lectures on special relativity given in reading period as part of 105. Three lectures, one class, one three-hour laboratory.

EGR 154: Foundations of Engineering: Linear Systems (1)

This course covers the basics of algebra with linear systems, vectors, matrices, matrix multiplication, systems of equations, matrix inversion, diagonalization, eigenvalues and eigenvectors, determinants, and some basic probability/Markov chains. These topics will be taught in the context of engineering problems that are centered around grand challenges facing society today, including information and security, bioengineering and health, structures and circuits, machine learning and the like.