ECE 396 / COS 396

Introduction to Quantum Computing

Professor/Instructor

Sarang Gopalakrishnan

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

Robert S. Fish, Zachary Kincaid

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

Robert S. Fish, Zachary Kincaid

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 418

Distributed Systems

Professor/Instructor

Michael Joseph Freedman

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

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 240 or instructor's permission.

COS 424 / SML 302

Fundamentals of Machine Learning

Professor/Instructor

Computers have made it possible to collect vast amounts of data from a wide variety of sources. It is not always clear, however, how to use the data, and how to extract useful information from them. This problem is faced in a tremendous range of social, economic and scientific applications. The focus will be on some of the most useful approaches to the problem of analyzing large complex data sets, exploring both theoretical foundations and practical applications. Students will gain experience analyzing several types of data, including text, images, and biological data. Two 90-minute lectures. Prereq: MAT 202 and COS 126 or equivalent.

COS 426

Computer Graphics

Professor/Instructor

Adam Finkelstein

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

Felix Heide, Vikram Ramaswamy

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 / ECE 432

Information Security

Professor/Instructor

Maria Apostolaki

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

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

Human-Computer Interaction

Professor/Instructor

Andrés Monroy-Hernández, Parastoo Abtahi

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

Professor/Instructor

Matt Weinberg, Pedro Paredes

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 / EGR 448

Innovating Across Technology, Business, and Marketplaces

Professor/Instructor

Jaswinder Pal Singh, Robert S. Fish

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

Professor/Instructor

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 240 or 341, or equivalent.

QCB 455 / MOL 455 / COS 455

Introduction to Genomics and Computational Molecular Biology

Professor/Instructor

Joshua Akey, Mona Singh

This interdisciplinary course provides a broad overview of computational and experimental approaches to decipher genomes and characterize molecular systems. We focus on methods for analyzing "omics" data, such as genome and protein sequences, gene expression, proteomics and molecular interaction networks. We cover algorithms used in computational biology, key statistical concepts (e.g., basic probability distributions, significance testing, multiple testing correction, performance evaluation), and machine learning methods which have been applied to biological problems (e.g., classification techniques, hidden Markov models, clustering).

COS 461

Computer Networks

Professor/Instructor

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.

ECE 462 / COS 462

Design of Very Large-Scale Integrated (VLSI) Systems

Professor/Instructor

Hossein Valavi

Analysis and design of digital integrated circuits using deep sub-micron CMOS technologies as well as emerging and post-CMOS technologies (Si finFETs, III-V, carbon). Emphasis on design, including synthesis, simulation, layout and post-layout verification. Analysis of energy, power, performance, area of logic-gates, interconnect and signaling structures.

ECE 475 / COS 475

Computer Architecture

Professor/Instructor

David Wentzlaff

An in-depth study of the fundamentals of modern computer processor and system architecture. Students will develop a strong theoretical and practical understanding of modern, cutting-edge computer architectures and implementations. Studied topics include: Instruction-set architecture and high-performance processor organization including pipelining, out-of-order execution, as well as data and instruction parallelism. Cache, memory, and storage architectures. Multiprocessors and multicore processors. Coherent caches. Interconnection and network infrastructures. Prerequisite: ECE 375/COS 375 and ECE 206/COS 306 (or familiarity with Verilog).

COS 484

Natural Language Processing

Professor/Instructor

Karthik Narasimhan, Danqi Chen

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 / MAT 407

Theory of Computation

Professor/Instructor

Gillat Kol

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. Two lectures, one precept. Prerequisite: 240 or 341, or instructor's permission.

COS 488 / MAT 474

Introduction to Analytic Combinatorics

Professor/Instructor

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

Robert S. Fish, Zachary Kincaid

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

Robert S. Fish, Zachary Kincaid

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.