Quick links

Course Catalog

This catalog is a list of courses that the department may offer in a given year. Not all courses in the catalog are offered every year.

If you are looking for current course information:
-View the Registrar's course offerings page for courses offered this semester.
-Students and faculty can refer to the Undergraduate Announcement for the academic year undergraduate course information.

Undergraduate courses are in the 100 - 400 listing. Graduate courses are in the 400 - 500 listing.

COS109 - Computers in Our World (Fall)

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.

Cross-listed as EGR109.

Classes: Two 90-minute lectures. Self-scheduled computer laboratory.

COS126 - Computer Science: An Interdisciplinary Approach (Fall, Spring)

An 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, engineering, and other disciplines. Java programming language is used to introduce fundamental programming concepts, including conditionals, loops, arrays, functions, and object-oriented programming. Add topics include algorithms and data structures; theory of computing; and machine learning.

Cross-listed as EGR126.

Classes: Weekly: two lectures, two preceptorials.
Prerequisite(s): No prior programming experience is required. Satisfies the SEAS computing requirement.

COS217 - Introduction to Programming Systems (Fall, Spring)

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.

Classes: Two 60-minute lectures and two 60-minute preceptorials.
Prerequisite(s): COS 126, ISC 231-234, or approval by the COS placement officer.

COS226 - Algorithms and Data Structures (Fall, Spring)

This course surveys the most important algorithms and data structures in use on computers today. Particular emphasis is given to algorithms for sorting, searching, graphs, and strings. The course concentrates on developing implementations, understanding their performance characteristics, and estimating their potential effectiveness in applications.

Classes: Two 80-minute lectures and one 80-minute precept.
Prerequisite(s): COS 126 or approval by the COS placement officer. Enrollment is limited to undergraduate students.

COS240 - Reasoning About Computation (Fall, Spring)

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.

Prerequisite(s): COS 126 and MAT 175 or MAT 202 or MAT 204. COS 226 is not a prerequisite but is recommended to be taken before COS 240 or in the same term.

COS302 - Mathematics for Numerical Computing and Machine Learning (Fall)

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

Cross-listed as SML305 Center for Statistics and Machine Learning.

Prerequisite(s): COS 126 or equivalent familiarity with programming. Corequisite: MAT 202/204 or equivalent.

COS306 - Contemporary Logic Design (Fall)

COS314 - Computer and Electronic Music through Programming, Performance, and Composition (Fall)

See MUS314 Department of Music.

COS316 - Principles of Computer System Design (Fall)

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.

Prerequisite(s): COS 217 and COS 226

COS318 - Operating Systems (Spring)

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.

Classes: Two 90-minute lectures.
Prerequisite(s): 217 and 226 or instructor's permission.

COS320 - Compiling Techniques

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.

Classes: Three lectures.
Prerequisite(s): COS 217 and COS 226 or instructor's permission.

COS323 - Computing and Optimization for the Physical and Social Sciences (Fall, Spring)

COS324 - Introduction to Machine Learning (Fall, Spring)

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.

Classes: Two 90-minute lectures and one 50 minute precept
Prerequisite(s): MAT 201 or 203; MAT 202 or 204; COS 226; ORF 245, ORF 309 or MAT 385 or permission of instructor.

COS326 - Functional Programming (Fall)

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.

Prerequisite(s): COS 226 or with permission of the instructor.

COS333 - Advanced Programming Techniques (Fall, Spring)

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.

Classes: Two 90-minute lectures.
Prerequisite(s): 217 and 226 (as corequisite).

COS342 - Introduction to Graph Theory (Spring)

COS343 - Algorithms for Computational Biology (Spring)

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.

Classes: Two 90-minute lectures and one 50 minute precept
Prerequisite(s): COS126, COS226. Some exposure to discrete math and basic probability (e.g. COS340).

COS346 - Introduction to Robotics (Fall)

See MAE 345 Department of Mechanical and Aerospace Engineering.
Prerequisite(s): 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.

COS351 - Information Technology and Public Policy

See WWS351 Princeton School of Public and International Affairs.
Classes: Two 50 minute lectures and one precept.
Prerequisite(s): Students should have some background in either technology (computer science, engineering) or the social sciences (especially economics, politics, and sociology)..

COS352 - Artificial Intelligence, Law, and Public Policy (Fall)

See SPI 352 Princeton School of Public and International Affairs.
Classes: One 3 hour course
Follow us: Facebook Twitter Linkedin