Computers in Our World
Professor/Instructor
Brian W. KernighanComputers 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.
Computer Science: An Interdisciplinary Approach
Professor/Instructor
David I. August, Adam FinkelsteinAn 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.
Introduction to Programming Systems
Professor/Instructor
Christopher M. Moretti, Szymon M. RusinkiewiczAn 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.
Algorithms and Data Structures
Professor/Instructor
Kevin WayneThis 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.
An Integrated, Quantitative Introduction to the Natural Sciences I
Professor/Instructor
Thomas Gregor, Joshua Akey, Martin Helmut WührAn 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.
An Integrated, Quantitative Introduction to the Natural Sciences I
Professor/Instructor
Thomas Gregor, Joshua Akey, Martin Helmut WührAn 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.
An Integrated, Quantitative Introduction to the Natural Sciences II
Professor/Instructor
Joshua William Shaevitz, Olga G. Troyanskaya, Martin Helmut WührAn 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.
An Integrated, Quantitative Introduction to the Natural Sciences II
Professor/Instructor
Joshua William Shaevitz, Olga G. Troyanskaya, Martin Helmut WührAn 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.
Contemporary Logic Design
Professor/Instructor
Sharad MalikLogic 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.
Computer and Electronic Music through Programming, Performance, and Composition
Professor/Instructor
Daniel Laurence Trueman, Jeffrey Owen SnyderAn 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.
Operating Systems
Professor/Instructor
Jaswinder Pal SinghA 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.
Compiling Techniques
Professor/Instructor
Zachary KincaidThe 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.
Computing and Optimization for the Physical and Social Sciences
Professor/Instructor
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. A. Ahmadi,
Functional Programming
Professor/Instructor
Andrew Wilson AppelAn 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.
Advanced Programming Techniques
Professor/Instructor
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).
Reasoning about Computation
Professor/Instructor
Ran RazAn 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.
Introduction to Graph Theory
Professor/Instructor
Paul SeymourThe 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.
Information Technology and Public Policy
Professor/Instructor
Edward William FeltenNew 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.
Computer Architecture and Organization
Professor/Instructor
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.
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.
Introduction to Quantum Computing
Professor/Instructor
Jeffrey Douglas ThompsonThis 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.
Junior Independent Work (B.S.E. candidates only)
Professor/Instructor
David Paul Dobkin, Robert S. FishOffered 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.
Junior Independent Work (B.S.E. candidates only)
Professor/Instructor
Aarti Gupta, Robert S. FishOffered 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.
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
Theory of Algorithms
Professor/Instructor
Robert Endre TarjanDesign 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.