COS 426

Computer Graphics

Professor/Instructor

Felix Heide

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

Professor/Instructor

Olga Russakovsky

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. Prerequisites: 217 and 226. Two 90-minute lectures.

COS 432 / ELE 432

Information Security

Professor/Instructor

Edward William Felten, Prateek Mittal

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 90-minute lectures.

COS 433 / MAT 473

Cryptography

Professor/Instructor

Mark Landry Zhandry

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. Among the topics covered will be private key and public key encryption schemes, digital signatures, pseudorandom generators and functions, chosen ciphertext security; and time permitting, some advanced topics such as zero knowledge proofs, secret sharing, private information retrieval, and quantum cryptography. Prerequisites: 226 or permission of instructor. Two 90-minute lectures.

COS 436 / ELE 469

Human-Computer Interface Technology

Professor/Instructor

Creating technologies that fit into people's everyday lives involves more than having technically sophisticated algorithms, systems, and infrastructure. It involves understanding how people think and behave and using this data to design user-facing interfaces that enhance and augment human capabilities. Introduction to the field of human-computer interaction and the tools, techniques, and principles that guide research on people. Design and implement user-facing systems that bring joy rather than frustrate the user and put these skills into practice in a group project involving the creation of an interactive system. Prerequisite COS 217.

COS 448 / EGR 448

Innovating Across Technology, Business, and Marketplaces

Professor/Instructor

Jaswinder Pal Singh

This course introduces engineering students to the types of issues that are tackled by leading and innovative Chief Technology Officers: the technical visionaries and/or managers at companies who innovate at the boundaries of technology, business, and marketplaces by understanding all of these areas deeply. These individuals are true partners to the business leaders of the organization, not merely implementers of business goals. The focus will be on software technologies and businesses based on them. To use specific contexts, we will emphasize two complementary areas as examples: businesses based on cloud computing and on marketplaces.

COS 451

Computational Geometry

Professor/Instructor

Bernard Chazelle

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. Two 90-minute lectures. Prerequisites: 226 and 340 or 341, or equivalent.

QCB 455 / MOL 455 / COS 455

Introduction to Genomics and Computational Molecular Biology

Professor/Instructor

Joshua Akey, Mona Singh

Introduction to computational and genomic approaches used to study molecular systems. Topics include computational approaches to sequence similarity and alignment, phylogenetic inference, gene expression analysis, structure prediction, comparative genome analysis, and high-throughput technologies for mapping genetic networks. Two lectures, one preceptorial.

COS 461

Computer Networks

Professor/Instructor

Michael Joseph Freedman

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). Two lectures, one preceptorial. Prerequisite: 217.

ELE 462 / COS 462

Design of Very Large-Scale Integrated (VLSI) Systems

Professor/Instructor

The implementation of digital systems using integrated circuit technology. Emphasis on structured design methodologies for VLSI systems. Topics include: design rules for metal oxide semiconductor (MOS) integrated circuits, implementation of common digital components, tools for computer-aided design, novel architectures for VLSI systems. Three hours of lectures. Prerequisite: 206.

ELE 475 / COS 475

Computer Architecture

Professor/Instructor

David Wentzlaff

An in-depth study of the fundamentals of modern processor and system design. Students will develop a strong practical and theoretical background in the technical and economic issues that govern the design of computer architectures and implementations. The course will emphasize the skills required to design and evaluate current and future systems. Three hours of lectures. Prerequisites: 206, 375.

COS 487 / MAT 407

Theory of Computation

Professor/Instructor

Gillat Kol

Studies the limits of computation by identifing 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: 340 or 341, or instructor's permission.

COS 488 / MAT 474

Introduction to Analytic Combinatorics

Professor/Instructor

Robert Sedgewick

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

Professor/Instructor

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 496

Special Topics in Computer Science

Professor/Instructor

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 497

Senior Independent Work (B.S.E. candidates only)

Professor/Instructor

David Paul Dobkin, Robert S. Fish

Offered in the fall, 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 (B.S.E. candidates only)

Professor/Instructor

Adam Finkelstein, Robert S. Fish

Offered in the spring, 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 511

Theoretical Machine Learning

Professor/Instructor

Elad Hazan

Course introduces the mathematical foundations of machine learning, including theoretical models of machine learning, and the design and analysis of learning algorithms. Topics include: bounds on the number of random examples needed to learn; learning from non-random examples in the on-line learning model (i.e., for investment portfolio selection); how to boost the accuracy of a weak learning algorithm; learning with queries; Fourier-based algorithms and support-vector machines.

COS 516 / ELE 516

Automated Reasoning about Software

Professor/Instructor

Aarti Gupta

An introduction to algorithmic techniques for reasoning about software. Basic concepts in logic-based techniques including model checking, invariant generation, symbolic execution, and syntax-guided synthesis; automatic decision procedures in modern solvers for Boolean Satisfiability (SAT) and Satisfiability Modulo Theory (SMT); and their applications in automated verification, analysis, and synthesis of software. Emphasis on algorithms and automatic tools.

COS 522 / MAT 578

Computational Complexity

Professor/Instructor

Gillat Kol

Introduction to research in computational complexity theory. Computational models: nondeterministic, alternating, and probabilistic machines. Boolean circuits. Complexity classes associated with these models: NP, Polynomial hierarchy, BPP, P/poly, etc. Complete problems. Interactive proof systems and probabilistically checkable proofs: IP=PSPACE and NP=PCP (log n, 1). Definitions of randomness. Pseudorandomness and derandomizations. Lower bounds for concrete models such as algebraic decision trees, bounded-depth circuits, and monotone circuits.

COS 526

Advanced Computer Graphics

Professor/Instructor

Szymon M. Rusinkiewicz

Advanced topics in computer graphics, with focus on learning recent methods in rendering, modeling, and animation. Appropriate for students who have taken COS426 (or equivalent) and who would like further exposure to computer graphics.

COS 528

Data Structures and Graph Algorithms

Professor/Instructor

Robert Endre Tarjan

Data structures and algorithms for graph and network problems, including disjoint set union, heaps, search trees, search on graphs, minimum spanning trees, shortest paths, network flows, and matchings. The intent of the course is to examine the most efficient algorithms known for a variety of combinatorial problems and to discover the principles underlying the design and analysis of these algorithms. The emphasis is on asymptotic worst-case and amortized analysis. Prerequisite: 423 or the equivalent.

COS 557 / MOL 557

Analysis & Visualization of Large-Scale Genomic Data Sets

Professor/Instructor

Olga G. Troyanskaya

Introduces students to computational issues involved in analysis and display of large-scale biological data sets. Algorithms covered will include clustering and machine learning techniques for gene expression and proteomics data analysis, biological networks, joint learning from multiple data sources, and visualization issues for large-scale biological data sets. No prior knowledge of biology or bioinformatics is required; an introduction to bioinformatics and the nature of biological data will be provided. In depth knowledge of computer science is not required, but students should have some understanding of programming and computation.

COS 561

Advanced Computer Networks

Professor/Instructor

Jennifer L. Rexford

Survey of computer networks covering end-to-end principle, multiplexing, virtualization, packet switching vs. circuit switching, router design, network protocols, congestion control, internet routing architecture, network measurement, network management, and overlay networks. Survey of research papers from classic literature through contemporary research.

ELE 579 / COS 579

Pervasive Information Systems

Professor/Instructor

Devices and systems that provide information anywhere, anytime. Goals of pervasive information: business, entertainment, government, etc. Components of pervasive information systems: low power electronics, audio/video, networking, etc. Human/computer interaction. Geographically distributed systems.