**COS 109 / EGR 109**

## Computers in Our World

**Professor/Instructor**

**Brian W. Kernighan**

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 116 / EGR 116**

## The Computational Universe

**Professor/Instructor**

**Adam Finkelstein**

Computers have brought the world to our fingertips. This course explores at a basic level the science "old and new" underlying this new computational universe: propositional logic of the ancient Greeks (microprocessors); quantum mechanics (silicon chips); network and system phenomena (internet and search engines); computational intractability (secure encryption); and efficient algorithms (genomic sequencing). Ultimately, this study makes us look anew at ourselves: our genome; language; music; "knowledge"; and, above all, the mystery of our intelligence. Two 90-minute lectures, one three-hour laboratory.

**COS 126 / EGR 126**

## Computer Science: An Interdisciplinary Approach

**Professor/Instructor**

**Robert Sedgewick**

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 or two classes, two preceptorials.

**COS 217**

## Introduction to Programming Systems

**Professor/Instructor**

**Andrew Wilson Appel**

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. Prerequisite: 126 or instructor's permission.

**COS 226**

## Algorithms and Data Structures

**Professor/Instructor**

**Kevin Wayne**

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.

**ISC 231 / CHM 231 / COS 231 / MOL 231 / PHY 231**

## An Integrated, Quantitative Introduction to the Natural Sciences I

**Professor/Instructor**

**Thomas Gregor, Eric Francis Wieschaus, Martin Helmut Wühr**

An integrated, mathematically and computationally sophisticated introduction to physics, chemistry, molecular biology, and computer science. Alternative to the combination of PHY 103-104, CHM 201-202, MOL 214 and COS 126. Students must enroll in ISC231 and ISC232 in the fall and ISC233 and ISC234 in the spring. Prerequisites: familiarity with calculus at the level of MAT103/104 or Advanced Placement Calculus BC, solid high school physics and chemistry courses. Five lectures, one three-hour laboratory, one three-hour computational laboratory, one evening problem session.

**ISC 232 / CHM 232 / COS 232 / MOL 232 / PHY 232**

## An Integrated, Quantitative Introduction to the Natural Sciences I

**Professor/Instructor**

**Thomas Gregor, Eric Francis Wieschaus, Martin Helmut Wühr**

An integrated, mathematically and computationally sophisticated introduction to physics, chemistry, molecular biology, and computer science. Alternative to the combination of PHY 103-104, CHM 201-202, MOL 214 and COS 126. Students must enroll in ISC 231 and ISC 232 in the fall and ISC 233 and ISC 234 in the spring. Prerequisites: familiarity with the calculus at the level of MAT 103-104 or Advanced Placement Calculus BC, solid high school physics and chemistry courses. Five lectures, one three-hour laboratory, one three-hour computational laboratory, one evening problem session.

**ISC 233 / CHM 233 / COS 233 / MOL 233 / PHY 233**

## An Integrated, Quantitative Introduction to the Natural Sciences II

**Professor/Instructor**

**Joshua William Shaevitz, Olga G. Troyanskaya, Martin Helmut Wühr**

An integrated, mathematically and computationally sophisticated introduction to physics and chemistry, drawing on examples from biological systems. Alternative to the combination of PHY 103-104, CHM 201-202, MOL 214, and COS 126. Students must enroll in ISC 231 and ISC 232 in the fall and ISC 233 and ISC 234 in the spring. Prerequisites: familiarity with the calculus at the level of MAT 103-104 or Advanced Placement Calculus BC, solid high school physics and chemistry courses. Five lectures, one three-hour laboratory, one three-hour computational laboratory, one evening problem session.

**ISC 234 / CHM 234 / COS 234 / MOL 234 / PHY 234**

## An Integrated, Quantitative Introduction to the Natural Sciences II

**Professor/Instructor**

**Joshua William Shaevitz, Olga G. Troyanskaya, Martin Helmut Wühr**

An integrated, mathematically and computationally sophisticated introduction to physics and chemistry, drawing on examples from biological systems. Alternative to the combination of PHY 103-104, CHM 201-202, MOL 214 and COS 126. Students must enroll in ISC 231 and ISC 232 in the fall and ISC 233 and ISC 234 in the spring. Prerequisites: familiarity with the calculus at the level of MAT 103-104 or Advanced Placement Calculus BC, solid high school physics and chemistry courses. Five lectures, one three-hour laboratory, one three-hour computational laboratory, one evening problem session.

**ELE 206 / COS 306**

## Contemporary Logic Design

**Professor/Instructor**

**Christopher Greg Brinton**

Logic circuits are at the heart of modern computing and communication chips. These deliver valuable societal solutions in several key areas: in information retrieval and processing using smart phones and cloud computing; in smart sensing and control as in emerging chips for human health care; and in critical security applications such as protecting infrastructures like the internet and energy production/distribution systems. Foundational aspects of logic design; contemporary design principles and practices. Three lectures, one laboratory. Prerequisite: an introductory programming course, or equivalent programming experience.

**MUS 314 / COS 314**

## Computer and Electronic Music through Programming, Performance, and Composition

**Professor/Instructor**

**Daniel Laurence Trueman, Jeffrey Owen Snyder**

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 318**

## Operating Systems

**Professor/Instructor**

**Jaswinder Pal Singh**

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. Prerequisites: 217 and 226 or instructor's permission.

**COS 320**

## Compiling Techniques

**Professor/Instructor**

**David I. August**

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. Prerequisites: 217 and 226 or instructor's permission.

**ORF 363 / COS 323**

## Computing and Optimization for the Physical and Social Sciences

**Professor/Instructor**

**Amir Ali Ahmadi**

An introduction to several fundamental and practically-relevant areas of numerical computing with an emphasis on the role of modern optimization. Topics include computational linear algebra, descent methods, basics of linear and semidefinite programming, optimization for statistical regression and classification, trajectory optimization for dynamical systems, 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, finance, economics, control theory, and engineering.

**COS 333**

## Advanced Programming Techniques

**Professor/Instructor**

**Brian W. Kernighan, Robert M. Dondero Jr.**

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. Prerequisites: 217 and 226 (as corequisite).

**COS 340**

## Reasoning about Computation

**Professor/Instructor**

**Ran Raz, Bernard Chazelle**

An introduction to mathematical topics relevant to computer science. Combinatorics and probability will be covered in the context of computer science applications. The course will present a computer science approach to thinking and modeling through such topics as dealing with uncertainty in data and handling large data sets. Students will be introduced to fundamental concepts such as NP-completeness and cryptography that arise from the world view of efficient computation. Prerequisites COS 126 and 226 (or sufficient mathematical background), and MAT 202 or MAT 204 or MAT 217. COS 226 can be taken along with COS 340 in the same term.

**MAT 375 / COS 342**

## Introduction to Graph Theory

**Professor/Instructor**

**Paul Douglas Seymour**

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.

**WWS 351 / SOC 353 / COS 351**

## Information Technology and Public Policy

**Professor/Instructor**

**Edward William Felten**

New technologies have changed the way we communicate with each other and learn about our world. They have also raised public policy dilemmas in every area they touch: communications, regulation, privacy, national security, intellectual property and many others. This course is predicated on the belief that we can only productively address the social and policy dimensions of the Internet if we understand the technology behind the Internet; the social-science concepts and research that illuminate the likely effects of policy options; and tradeoffs among fundamental values that different policy options imply. Two ninety-minute seminars.

**COS 375 / ELE 375**

## Computer Architecture and Organization

**Professor/Instructor**

**Margaret Rose Martonosi**

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. Prerequisites: COS 217.

**ELE 381 / COS 381**

## Networks: Friends, Money and Bytes

**Professor/Instructor**

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.

**ELE 396 / COS 396**

## Introduction to Quantum Computing

**Professor/Instructor**

**Andrew Addison Houck**

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

**COS 397**

## Junior Independent Work (B.S.E. candidates only)

**Professor/Instructor**

**Aarti Gupta**

Offered in the fall, juniors 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 398**

## Junior Independent Work (B.S.E. candidates only)

**Professor/Instructor**

**Andrea Suzanne LaPaugh**

Offered in the spring, juniors 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 402**

## Machine Learning and Artificial Intelligence

**Professor/Instructor**

This course will provide a basic introduction to the core principles, algorithms and techniques of modern artificial intelligence and machine learning research and practice. Main topics will include: 1. Problem solving using search, with applications to game playing 2. Probabilistic reasoning in the presence of uncertainty 3. Hidden Markov models and speech recognition 4. Markov decision processes and reinforcement learning 5. Machine learning using decision trees, neural nets and more. 6. Basic principles of mathematical optimization for learning. Prerequisites- COS 226 and COS 340

**COS 423**

## Theory of Algorithms

**Professor/Instructor**

**Robert Endre Tarjan**

Design and analysis of efficient data structures and algorithms. General techniques for building and analyzing algorithms. Introduction to NP-completeness. Two 90-minute lectures. Prerequisites: 226 and 340 or instructor's permission.