Related Pages
CS 1
Introduction to Computer Programming
9 units (342)

first term
A course on computer programming emphasizing the program design process and pragmatic programming skills. It will use the Python programming language and will not assume previous programming experience. Material covered will include data types, variables, assignment, control structures, functions, scoping, compound data, string processing, modules, basic input/output (terminal and file), as well as more advanced topics such as recursion, exception handling and objectoriented programming. Program development and maintenance skills including debugging, testing, and documentation will also be taught. Assignments will include problems drawn from fields such as graphics, numerics, networking, and games. At the end of the course, students will be ready to learn other programming languages in courses such as CS 11, and will also be ready to take more indepth courses such as CS 2 and CS 4.
Instructor:
Vanier
CS 2
Introduction to Programming Methods
9 units (261)

second term
Prerequisites: CS 1 or equivalent.
CS 2 is a demanding course in programming languages and computer science. Topics covered include data structures, including lists, trees, and graphs; implementation and performance analysis of common algorithms; algorithm design principles, in particular recursion and dynamic programming; concurrency and network programming; basic numerical computation methods. Heavy emphasis is placed on the use of compiled languages and development tools, including source control and debugging. The course includes weekly laboratory exercises and written homework covering the lecture material and program design. The course is intended to establish a foundation for further work in many topics in the computer science option.
Instructors:
Blank, Desbrun
CS 3
Introduction to Software Engineering
9 units (243)

third term
Prerequisites: CS 2 or equivalent.
CS 3 is a practical introduction to software engineering with an emphasis on understanding and minimizing risk in large software projects. Students will work in teams on a courselong project. Topics covered include revision control, code reviews, testing and testability, code readability, API design, refactoring, and documentation. The course provides opportunities to present your work to the class, and emphasizes working with other people's code, both that of classmates and preexisting frameworks. Not offered 201819.
CS 4
Fundamentals of Computer Programming
9 units (342)

second term
Prerequisites: CS 1 or instructor's permission.
This course gives students the conceptual background necessary to construct and analyze programs, which includes specifying computations, understanding evaluation models, and using major programming language constructs (functions and procedures, conditionals, recursion and looping, scoping and environments, compound data, side effects, higherorder functions and functional programming, and objectoriented programming). It emphasizes key issues that arise in programming and in computation in general, including time and space complexity, choice of data representation, and abstraction management. This course is intended for students with some programming background who want a deeper understanding of the conceptual issues involved in computer programming.
Instructor:
Vanier
Ma/CS 6/106 abc
Introduction to Discrete Mathematics
9 units (306)

first, second, third terms
Prerequisites: for Ma/CS 6 c, Ma/CS 6 a or Ma 5 a or instructor's permission.
First term: a survey emphasizing graph theory, algorithms, and applications of algebraic structures. Graphs: paths, trees, circuits, breadthfirst and depthfirst searches, colorings, matchings. Enumeration techniques; formal power series; combinatorial interpretations. Topics from coding and cryptography, including Hamming codes and RSA. Second term: directed graphs; networks; combinatorial optimization; linear programming. Permutation groups; counting nonisomorphic structures. Topics from extremal graph and set theory, and partially ordered sets. Third term: elements of computability theory and computational complexity. Discussion of the P=NP problem, syntax and semantics of propositional and firstorder logic. Introduction to the Godel completeness and incompleteness theorems.
Instructors:
Katz, Durcik, Kechris
CS 9
Introduction to Computer Science Research
1 unit (100)

first term
This course will introduce students to research areas in CS through weekly overview talks by Caltech faculty and aimed at firstyear undergraduates. More senior students may wish to take the course to gain an understanding of the scope of research in computer science. Graded pass/fail.
Instructors:
Blank, Ralph
EE/CS 10 ab
Introduction to Digital Logic and Embedded Systems
6 units (231)

second, third terms
This course is intended to give the student a basic understanding of the major hardware and software principles involved in the specification and design of embedded systems. The course will cover basic digital logic, programmable logic devices, CPU and embedded system architecture, and embedded systems programming principles (interfacing to hardware, events, user interfaces, and multitasking).
Instructor:
George
CS 11
Computer Language Lab
3 units (030)

first, second, third terms
Prerequisites: CS 1 or instructor's permission.
A selfpaced lab that provides students with extra practice and supervision in transferring their programming skills to a particular programming language. The course can be used for any language of the student's choosing, subject to approval by the instructor. A series of exercises guide the student through the pragmatic use of the chosen language, building his or her familiarity, experience, and style. More advanced students may propose their own programming project as the target demonstration of their new language skills. This course is available for undergraduate students only. Graduate students should register for CS 111. CS 11 may be repeated for credit of up to a total of nine units.
Instructors:
Blank, Pinkston, Vanier
CS 19 ab
Introduction to Computer Science in Industry
2 units (101)

first, second terms
This course will introduce students to CS in industry through weekly overview talks by alums and engineers in industry. It is aimed at secondyear undergraduates. Others may wish to take the course to gain an understanding of the scope of computer science in industry. Additionally students will complete short weekly assignments aimed at preparing them for interactions with industry. This course is closed to first and second term freshman for credit. Graded pass/fail.
Instructor:
Ralph
CS 21
Decidability and Tractability
9 units (306)

second term
Prerequisites: CS 2 (may be taken concurrently).
This course introduces the formal foundations of computer science, the fundamental limits of computation, and the limits of efficient computation. Topics will include automata and Turing machines, decidability and undecidability, reductions between computational problems, and the theory of NPcompleteness.
Instructor:
Umans
CS 24
Introduction to Computing Systems
9 units (333)

third term
Prerequisites: Familiarity with C equivalent to having taken the CS 11 C track.
Basic introduction to computer systems, including hardwaresoftware interface, computer architecture, and operating systems. Course emphasizes computer system abstractions and the hardware and software techniques necessary to support them, including virtualization (e.g., memory, processing, communication), dynamic resource management, and commoncase optimization, isolation, and naming.
Instructors:
Blank, Pinkston
CS 37
Algorithms in the Real World
9 units (261)

first term
Prerequisites: CS 2, CS 24, Ma 6 or permission from instructor.
This course introduces algorithms in the context of their usage in the real world. The course covers compression, advanced data structures, numerical algorithms, cryptography, computer algebra, and parallelism. The goal of the course is for students to see how to use theoretical algorithms in realworld contexts, focusing both on correctness and the nittygritty details and optimizations. Implementations focus on two orthogonal avenues: speed (for which C is used) and algorithmic thinking (for which Python is used).
Instructor:
Blank
CS 38
Algorithms
9 units (306)

third term
Prerequisites: CS 2; Ma/CS 6 a or Ma 121 a; and CS 21.
This course introduces techniques for the design and analysis of efficient algorithms. Major design techniques (the greedy approach, divide and conquer, dynamic programming, linear programming) will be introduced through a variety of algebraic, graph, and optimization problems. Methods for identifying intractability (via NPcompleteness) will be discussed.
Instructor:
Schulman
EE/CS 53
Microprocessor Project Laboratory
12 units (0120)

first, second, third terms
Prerequisites: EE/CS 10 ab or equivalent.
A project laboratory to permit the student to select, design, and build a microprocessorbased system. The student is expected to take a project from proposal through design and implementation (possibly including PCB fabrication) to final review and documentation. May be repeated for credit.
Instructor:
George
CS/EE/ME 75 abc
Multidisciplinary Systems Engineering
3 units (201), 6 units (204), or 9 units (207) first term

6 units (231), 9 units (261), or 12 units (291) second and third terms
This course presents the fundamentals of modern multidisciplinary systems engineering in the context of a substantial design project. Students from a variety of disciplines will conceive, design, implement, and operate a system involving electrical, information, and mechanical engineering components. Specific tools will be provided for setting project goals and objectives, managing interfaces between component subsystems, working in design teams, and tracking progress against tasks. Students will be expected to apply knowledge from other courses at Caltech in designing and implementing specific subsystems. During the first two terms of the course, students will attend project meetings and learn some basic tools for project design, while taking courses in CS, EE, and ME that are related to the course project. During the third term, the entire team will build, document, and demonstrate the course design project, which will differ from year to year. Freshmen must receive permission from the lead instructor to enroll. Not offered 201819.
CS 80 abc
Undergraduate Thesis
9 units

first, second, third terms
Prerequisites: instructor's permission, which should be obtained sufficiently early to allow time for planning the research.
Individual research project, carried out under the supervision of a member of the computer science faculty (or other faculty as approved by the computer science undergraduate option representative). Projects must include significant design effort. Written report required. Open only to upperclass students. Not offered on a pass/fail basis.
Instructor:
Staff
CS 81 abc
Undergraduate Projects in Computer Science
Units are assigned in accordance with work accomplished
Prerequisites: Consent of supervisor is required before registering.
Supervised research or development in computer science by undergraduates. The topic must be approved by the project supervisor, and a formal final report must be presented on completion of research. This course can (with approval) be used to satisfy the project requirement for the CS major. Graded pass/fail.
Instructor:
Staff
CS 90
Undergraduate Reading in Computer Science
Units are assigned in accordance with work accomplished
Prerequisites: Consent of supervisor is required before registering.
Supervised reading in computer science by undergraduates. The topic must be approved by the reading supervisor, and a formal final report must be presented on completion of the term. Graded pass/fail.
Instructor:
Staff
CS 101 abc
Special Topics in Computer Science
Units in accordance with work accomplished

offered by announcement
Prerequisites: CS 21 and CS 38, or instructor's permission.
The topics covered vary from year to year, depending on the students and staff. Primarily for undergraduates.
CS 102 abc
Seminar in Computer Science
3, 6, or 9 units as arranged with the instructor. Instructor's permission required
CS 103 abc
Reading in Computer Science
3, 6, or 9 units as arranged with the instructor. Instructor's permission required
HPS/Pl/CS 110
Causation and Explanation
9 units (306)

third term
An examination of theories of causation and explanation in philosophy and neighboring disciplines. Topics discussed may include probabilistic and counterfactual treatments of causation, the role of statistical evidence and experimentation in causal inference, and the deductivenomological model of explanation. The treatment of these topics by important figures from the history of philosophy such as Aristotle, Descartes, and Hume may also be considered.
Instructor:
Eberhardt
CS 111
Graduate Programming Practicum
3 units (030)

first, second, third terms
Prerequisites: CS 1 or equivalent.
A selfpaced lab that provides students with extra practice and supervision in transferring their programming skills to a particular programming language. The course can be used for any language of the student's choosing, subject to approval by the instructor. A series of exercises guide the student through the pragmatic use of the chosen language, building his or her familiarity, experience, and style. More advanced students may propose their own programming project as the target demonstration of their new language skills. This course is available for graduate students only. Undergraduates should register for CS 11. Not offered 201819.
Ec/ACM/CS 112
Bayesian Statistics
9 units (306)

second term
Prerequisites: Ma 3, ACM/EE/IDS 116 or equivalent.
This course provides an introduction to Bayesian Statistics and its applications to data analysis in various fields. Topics include: discrete models, regression models, hierarchical models, model comparison, and MCMC methods. The course combines an introduction to basic theory with a handson emphasis on learning how to use these methods in practice so that students can apply them in their own work. Previous familiarity with frequentist statistics is useful but not required.
Instructor:
Rangel
ACM/CS/IDS 114
Parallel Algorithms for Scientific Applications
9 units (306)
Prerequisites: ACM 11, 106 or equivalent.
Introduction to parallel program design for numerically intensive scientific applications. Parallel programming methods; distributedmemory model with message passing using the message passing interface; sharedmemory model with threads using open MP, CUDA; objectbased models using a problemsolving environment with parallel objects. Parallel numerical algorithms: numerical methods for linear algebraic systems, such as LU decomposition, QR method, CG solvers; parallel implementations of numerical methods for PDEs, including finitedifference, finiteelement; particlebased simulations. Performance measurement, scaling and parallel efficiency, load balancing strategies. Not offered 201819.
CS 115
Functional Programming
9 units (342)

third term
Prerequisites: CS 1 and CS 4.
This course is a both a theoretical and practical introduction to functional programming, a paradigm which allows programmers to work at an extremely high level of abstraction while simultaneously avoiding large classes of bugs that plague more conventional imperative and objectoriented languages. The course will introduce and use the lazy functional language Haskell exclusively. Topics include: recursion, firstclass functions, higherorder functions, algebraic data types, polymorphic types, function composition, pointfree style, proving functions correct, lazy evaluation, pattern matching, lexical scoping, type classes, and modules. Some advanced topics such as monad transformers, parser combinators, dynamic typing, and existential types are also covered.
Instructor:
Vanier
CS 116
Reasoning about Program Correctness
9 units (306)

first term
Prerequisites: CS 1 or equivalent.
This course presents the use of logic and formal reasoning to prove the correctness of sequential and concurrent programs. Topics in logic include propositional logic, basics of firstorder logic, and the use of logic notations for specifying programs. The course presents a programming notation and its formal semantics, Hoare logic and its use in proving program correctness, predicate transformers and weakest preconditions, and fixedpoint theory and its application to proofs of programs. Not offered 201819.
Ma/CS 117 abc
Computability Theory
9 units (306)

first, second, third terms
Prerequisites: Ma 5 or equivalent, or instructor's permission.
Various approaches to computability theory, e.g., Turing machines, recursive functions, Markov algorithms; proof of their equivalence. Church's thesis. Theory of computable functions and effectively enumerable sets. Decision problems. Undecidable problems: word problems for groups, solvability of Diophantine equations (Hilbert's 10th problem). Relations with mathematical logic and the Godel incompleteness theorems. Decidable problems, from number theory, algebra, combinatorics, and logic. Complexity of decision procedures. Inherently complex problems of exponential and superexponential difficulty. Feasible (polynomial time) computations. Polynomial deterministic vs. nondeterministic algorithms, NPcomplete problems and the P = NP question.
Instructors:
Kechris, Panagiotopolous
CS 118
Logic Model Checking for Formal Software Verification
9 units (333)

second term
An introduction to the theory and practice of logic model checking as an aid in the formal proofs of correctness of concurrent programs and system designs. The specific focus is on automatatheoretic verification. The course includes a study of the theory underlying formal verification, the correctness of programs, and the use of software tools in designs.
Instructor:
Holzmann
EE/CS 119 abc
Advanced Digital Systems Design
9 units (333)

first, second term
Prerequisites: EE/CS 10 a or CS 24.
Advanced digital design as it applies to the design of systems using PLDs and ASICs (in particular, gate arrays and standard cells). The course covers both design and implementation details of various systems and logic device technologies. The emphasis is on the practical aspects of ASIC design, such as timing, testing, and fault grading. Topics include synchronous design, state machine design, ALU and CPU design, applicationspecific parallel computer design, design for testability, PALs, FPGAs, VHDL, standard cells, timing analysis, fault vectors, and fault grading. Students are expected to design and implement both systems discussed in the class as well as selfproposed systems using a variety of technologies and tools.
Instructor:
George
CS/Ph 120
Quantum Cryptography
9 units (306)

first term
Prerequisites: Ma 1 b, Ph 2 b or Ph 12 b, CS 21, CS 38 or equivalent recommended (or instructor's permission)..
This course is an introduction to quantum cryptography: how to use quantum effects, such as quantum entanglement and uncertainty, to implement cryptographic tasks with levels of security that are impossible to achieve classically. The course covers the fundamental ideas of quantum information that form the basis for quantum cryptography, such as entanglement and quantifying quantum knowledge. We will introduce the security definition for quantum key distribution and see protocols and proofs of security for this task. We will also discuss the basics of deviceindependent quantum cryptography as well as other cryptographic tasks and protocols, such as bit commitment or positionbased cryptography. Not offered 201819.
CS/IDS 121
Relational Databases
9 units (306)

first term
Prerequisites: CS 1 or equivalent.
Introduction to the basic theory and usage of relational database systems. It covers the relational data model, relational algebra, and the Structured Query Language (SQL). The course introduces the basics of database schema design and covers the entityrelationship model, functional dependency analysis, and normal forms. Additional topics include other query languages based on the relational calculi, datawarehousing and dimensional analysis, writing and using stored procedures, working with hierarchies and graphs within relational databases, and an overview of transaction processing and query evaluation. Extensive handson work with SQL databases.
Instructor:
Pinkston
CS/IDS 122
Database System Implementation
9 units (333)

second term
Prerequisites: CS 2, CS 38, CS/IDS 121 and familiarity with Java, or instructor's permission.
This course explores the theory, algorithms, and approaches behind modern relational database systems. Topics include file storage formats, query planning and optimization, query evaluation, indexes, transaction processing, concurrency control, and recovery. Assignments consist of a series of programming projects extending a working relational database, giving handson experience with the topics covered in class. The course also has a strong focus on proper software engineering practices, including version control, testing, and documentation.
Instructor:
Pinkston
CS 123
Projects in Database Systems
9 units (009)

third term
Prerequisites: CS/IDS 121 and CS/IDS 122.
Students are expected to execute a substantial project in databases, write up a report describing their work, and make a presentation.
Instructor:
Pinkston
CS 124
Operating Systems
12 units (363)

first term
Prerequisites: CS 24.
This course explores the major themes and components of modern operating systems, such as kernel architectures, the process abstraction and process scheduling, system calls, concurrency within the OS, virtual memory management, and file systems. Students must work in groups to complete a series of challenging programming projects, implementing major components of an instructional operating system. Most programming is in C, although some IA32 assembly language programming is also necessary. Familiarity with the material in CS 24 is strongly advised before attempting this course.
Instructor:
Pinkston
EE/CS/MedE 125
Digital Electronics and Design with FPGAs and VHDL
9 units (360)

third term
Prerequisites: basic knowledge of digital electronics.
Study of programmable logic devices (CPLDs and FPGAs). Detailed study of the VHDL language, with basic and advanced applications. Review and discussion of digital design principles for combinationallogic, combinationalarithmetic, sequential, and statemachine circuits. Detailed tutorials for synthesis and simulation tools using FPGAs and VHDL. Wide selection of complete, realworld fundamental advanced projects, including theory, design, simulation, and physical implementation. All designs are implemented using stateoftheart development boards.
Instructor:
Pedroni
EE/Ma/CS 126 ab
Information Theory
9 units (306)

first, second terms
Prerequisites: Ma 3.
Shannon's mathematical theory of communication, 1948present. Entropy, relative entropy, and mutual information for discrete and continuous random variables. Shannon's source and channel coding theorems. Mathematical models for information sources and communication channels, including memoryless, Markov, ergodic, and Gaussian. Calculation of capacity and ratedistortion functions. Universal source codes. Side information in source coding and communications. Network information theory, including multiuser data compression, multiple access channels, broadcast channels, and multiterminal networks. Discussion of philosophical and practical implications of the theory. This course, when combined with EE 112, EE/Ma/CS/IDS 127, EE/CS 161, and EE/CS/IDS 167, should prepare the student for research in information theory, coding theory, wireless communications, and/or data compression.
Instructor:
Effros
EE/Ma/CS/IDS 127
ErrorCorrecting Codes
9 units (306)

second term
Prerequisites: Ma 2.
This course develops from first principles the theory and practical implementation of the most important techniques for combating errors in digital transmission or storage systems. Topics include algebraic block codes, e.g., Hamming, BCH, ReedSolomon (including a selfcontained introduction to the theory of finite fields); and the modern theory of sparse graph codes with iterative decoding, e.g. LDPC codes, turbo codes. The students will become acquainted with encoding and decoding algorithms, design principles and performance evaluation of codes.
Instructor:
Kostina
CS 131
Programming Languages
9 units (306)

third term
Prerequisites: CS 4.
CS 131 is a course on programming languages and their implementation. It teaches students how to program in a number of simplified languages representing the major programming paradigms in use today (imperative, objectoriented, and functional). It will also teach students how to build and modify the implementations of these languages. Emphasis will not be on syntax or parsing but on the essential differences in these languages and their implementations. Both dynamicallytyped and staticallytyped languages will be implemented. Relevant theory will be covered as needed. Implementations will mostly be interpreters, but some features of compilers will be covered if time permits. Enrollment limited to 20 students.
Instructor:
Vanier
ME/CS 133 ab
Robotics
9 units (360)

first, second terms
The course focuses on current topics in robotics research in the area of robotic manipulation and sensing. Past topics have included advanced manipulator kinematics, grasping and dextrous manipulation using multifingered hands, and advanced obstacle avoidance and motion planning algorithms. Additional topics include robotics research in the area of autonomous navigation and vision. Including mobile robots, multilegged walking machines, use of vision in navigation systems. The lectures will be divided between a review of the appropriate analytical techniques and a survey of the current research literature. Course work will focus on an independent research project chosen by the student.
Instructor:
Staff
CS/EE/ME 134
Autonomy
9 units (306)

third term
This course covers the basics of autonomy at the intersection of computer vision, machine learning and robotics. It includes selected topics from each of these domains, and their integration points. The lectures will be accompanied by a project that will integrate these ideas on hardware and result in a final demonstration of the concepts studied in the course. Not offered 201819.
EE/CS/EST 135
Power System Analysis
9 units (333)

second term
Prerequisites: EE 44, Ma 2, or equivalent.
Basic power system analysis: phasor representation, 3phase transmission system, transmission line models, transformer models, perunit analysis, network matrix, power flow equations, power flow algorithms, optimal powerflow (OPF) problems, swing dynamics and stability. Current research topics such as (may vary each year): convex relaxation of OPF, frequency regulation, energy functions and contraction regions, volt/var control, storage optimization, electric vehicles charging, demand response.
Instructor:
Low
EE/Ma/CS/IDS 136
Topics in Information Theory
9 units (306)

third term
Prerequisites: undergraduate calculus and probability.
This class introduces information measures such as entropy, information divergence, mutual information, information density from a probabilistic point of view, and discusses the relations of those quantities to problems in data compression and transmission, statistical inference, language modeling, game theory and control. Topics include information projection, data processing inequalities, sufficient statistics, hypothesis testing, singleshot approach in information theory, large deviations. Not Offered 201819.
Instructor:
Kostina
CS 138
Computer Algorithms
9 units (306)

third term
Prerequisites: CS 21, or instructor's permission.
Design and analysis of algorithms. Techniques for problems concerning graphs, flows, number theory, string matching, data compression, geometry, linear algebra and coding theory. Optimization, including linear programming. Randomization. Basic complexity theory and cryptography.
Instructor:
Schulman
CMS/CS/IDS 139
Analysis and Design of Algorithms
12 units (309)

second term
Prerequisites: Ma 2, Ma 3, Ma/CS 6a, CS 21, CS 38/138, and ACM/EE/IDS 116 or CMS/ACM/IDS 113 or equivalent.
This course develops core principles for the analysis and design of algorithms. Basic material includes mathematical techniques for analyzing performance in terms of resources, such as time, space, and randomness. The course introduces the major paradigms for algorithm design, including greedy methods, divideandconquer, dynamic programming, linear and semidefinite programming, randomized algorithms, and online learning.
Instructor:
Vidick
CS 141
Hack Society: Projects from the Public Sector
9 units (009)

second term
Prerequisites: CS/IDS 142, 143, CMS/CS/EE/IDS 144, or permission from instructor.
There is a large gap between the public and private sectors' effective use of technology. This gap presents an opportunity for the development of innovative solutions to problems faced by society. Students will develop technologybased projects that address this gap. Course material will offer an introduction to the design, development, and analysis of digital technology with examples derived from services typically found in the public sector.
Instructor:
Ralph
CS/IDS 142
Distributed Computing
9 units (306)

third term
Prerequisites: CS 24, CS 38.
Programming distributed systems. Mechanics for cooperation among concurrent agents. Programming sensor networks and cloud computing applications. Applications of machine learning and statistics by using parallel computers to aggregate and analyze data streams from sensors. Not offered 201819.
CS/EE/IDS 143
Communication Networks
9 units (333)

first term
Prerequisites: Ma 2, Ma 3, CS 24 and CS 38, or instructor permission.
This course focuses on the link layer (two) through the transport layer (four) of Internet protocols. It has two distinct components, analytical and systems. In the analytical part, after a quick summary of basic mechanisms on the Internet, we will focus on congestion control and explain: (1) How to model congestion control algorithms? (2) Is the model well defined? (3) How to characterize the equilibrium points of the model? (4) How to prove the stability of the equilibrium points? We will study basic results in ordinary differential equations, convex optimization, Lyapunov stability theorems, passivity theorems, gradient descent, contraction mapping, and Nyquist stability theory. We will apply these results to prove equilibrium and stability properties of the congestion control models and explore their practical implications. In the systems part, the students will build a software simulator of Internet routing and congestion control algorithms. The goal is not only to expose students to basic analytical tools that are applicable beyond congestion control, but also to demonstrate in depth the entire process of understanding a physical system, building mathematical models of the system, analyzing the models, exploring the practical implications of the analysis, and using the insights to improve the design.
Instructors:
Low, Murray, Ralph
CMS/CS/EE/IDS 144
Networks: Structure & Economics
12 units (336)

second term
Prerequisites: Ma 2, Ma 3, Ma/CS 6 a, and CS 38, or instructor permission.
Social networks, the web, and the internet are essential parts of our lives and we all depend on them every day, but do you really know what makes them work? This course studies the "big" ideas behind our networked lives. Things like, what do networks actually look like (and why do they all look the same)? How do search engines work? Why do memes spread the way they do? How does web advertising work? For all these questions and more, the course will provide a mixture of both mathematical analysis and handson labs. The course assumes students are comfortable with graph theory, probability, and basic programming.
Instructor:
Wierman
CS/EE 145
Projects in Networking
9 units (009)

third term
Prerequisites: Either CMS/CS/EE/IDS 144 or CS/IDS 142 in the preceding term, or instructor permission.
Students are expected to execute a substantial project in networking, write up a report describing their work, and make a presentation.
Instructors:
Ralph, Wierman
CS/EE 146
Advanced Networking
9 units (333)

third term
Prerequisites: CS/EE/IDS 143 or instructor's permission.
This is a researchoriented course meant for undergraduates and beginning graduate students who want to learn about current research topics in networks such as the Internet, power networks, social networks, etc. The topics covered in the course will vary, but will be pulled from current research topics in the design, analysis, control, and optimization of networks, protocols, and Internet applications. Usually offered in alternate years. Not offered 201819.
EE/CS 147
Digital Ventures Design
9 units (333)

first term
Prerequisites: none.
This course aims to offer the scientific foundations of analysis, design, development, and launching of innovative digital products and study elements of their success and failure. The course provides students with an opportunity to experience combined teambased design, engineering, and entrepreneurship. The lectures present a disciplined stepbystep approach to develop new ventures based on technological innovation in this space, and with invited speakers, cover topics such as market analysis, user/product interaction and design, core competency and competitive position, customer acquisition, business model design, unit economics and viability, and product planning. Throughout the term students will work within an interdisciplinary team of their peers to conceive an innovative digital product concept and produce a business plan and a working prototype. The course project culminates in a public presentation and a final report. Every year the course and projects focus on a particular emerging technology theme. Not offered 201819.
Instructor:
Staff
EE/CNS/CS 148
Selected Topics in Computational Vision
9 units (306)

third term
Prerequisites: undergraduate calculus, linear algebra, geometry, statistics, computer programming.
The class will focus on an advanced topic in computational vision: recognition, visionbased navigation, 3D reconstruction. The class will include a tutorial introduction to the topic, an exploration of relevant recent literature, and a project involving the design, implementation, and testing of a vision system. Not offered 201819.
Instructor:
Perona
CS/SS/Ec 149
Algorithmic Economics
9 units (306)

second term
This course will equip students to engage with active research at the intersection of social and information sciences, including: algorithmic game theory and mechanism design; auctions; matching markets; and learning in games. Not offered 201819.
CS/IDS 150
Probability and Algorithms
9 units (306)

first term
Prerequisites: CS 38 a and Ma 5 abc.
Elementary randomized algorithms and algebraic bounds in communication, hashing, and identity testing. Game tree evaluation. Topics may include randomized parallel computation; independence, kwise independence and derandomization; rapidly mixing Markov chains; expander graphs and their applications; clustering algorithms.
Instructor:
Schulman
CS 151
Complexity Theory
12 units (309)

third term
Prerequisites: CS 21 and CS 38, or instructor's permission.
This course describes a diverse array of complexity classes that are used to classify problems according to the computational resources (such as time, space, randomness, or parallelism) required for their solution. The course examines problems whose fundamental nature is exposed by this framework, the known relationships between complexity classes, and the numerous open problems in the area.
Instructor:
Umans
CS 152
Introduction to Cryptography
12 units (309)

first term
Prerequisites: Ma 1 b, CS 21, CS 38 or equivalent recommended..
This course is an introduction to the foundations of cryptography. The first part of the course introduces fundamental constructions in privatekey cryptography, including oneway functions, pseudorandom generators and authentication, and in publickey cryptography, including trapdoor oneway functions, collisionresistant hash functions and digital signatures. The second part of the course covers selected topics such as interactive protocols and zero knowledge, the learning with errors problem and homomorphic encryption, and quantum cryptography: quantum money, quantum key distribution. The course is mostly theoretical and requires mathematical maturity. There will be a small programming component.
Instructor:
Vidick
CS/IDS 153
Current Topics in Theoretical Computer Science
9 units (306)

third term
Prerequisites: CS 21 and CS 38, or instructor's permission.
May be repeated for credit, with permission of the instructor. Students in this course will study an area of current interest in theoretical computer science. The lectures will cover relevant background material at an advanced level and present results from selected recent papers within that year's chosen theme. Students will be expected to read and present a research paper. Not offered 201819
CMS/CS/CNS/EE/IDS 155
Machine Learning & Data Mining
12 units (336)

second term
Prerequisites: CS/CNS/EE 156 a. Having a sufficient background in algorithms, linear algebra, calculus, probability, and statistics, is highly recommended.
This course will cover popular methods in machine learning and data mining, with an emphasis on developing a working understanding of how to apply these methods in practice. The course will focus on basic foundational concepts underpinning and motivating modern machine learning and data mining approaches. We will also discuss recent research developments
Instructor:
Yue
CS/CNS/EE 156 ab
Learning Systems
9 units (306)

first, third terms
Prerequisites: Ma 2 and CS 2, or equivalent.
Introduction to the theory, algorithms, and applications of automated learning. How much information is needed to learn a task, how much computation is involved, and how it can be accomplished. Special emphasis will be given to unifying the different approaches to the subject coming from statistics, function approximation, optimization, pattern recognition, and neural networks.
Instructor:
AbuMostafa
ACM/CS/IDS 157
Statistical Inference
9 units (324)

third term
Prerequisites: ACM/EE/IDS 116, Ma 3.
Statistical Inference is a branch of mathematical engineering that studies ways of extracting reliable information from limited data for learning, prediction, and decision making in the presence of uncertainty. This is an introductory course on statistical inference. The main goals are: develop statistical thinking and intuitive feel for the subject; introduce the most fundamental ideas, concepts, and methods of statistical inference; and explain how and why they work, and when they don't. Topics covered include summarizing data, fundamentals of survey sampling, statistical functionals, jackknife, bootstrap, methods of moments and maximum likelihood, hypothesis testing, pvalues, the Wald, Student's t, permutation, and likelihood ratio tests, multiple testing, scatterplots, simple linear regression, ordinary least squares, interval estimation, prediction, graphical residual analysis.
Instructor:
Zuev
ACM/CS/EE/IDS 158
Mathematical Statistics
9 units (306)

third term
Prerequisites: CMS/ACM/IDS 113, ACM/EE/IDS 116 and ACM/CS/IDS 157.
Fundamentals of estimation theory and hypothesis testing; minimax analysis, CramerRao bounds, RaoBlackwell theory, shrinkage in high dimensions; NeymanPearson theory, multiple testing, false discovery rate; exponential families; maximum entropy modeling; other advanced topics may include graphical models, statistical model selection, etc. Throughout the course, a computational viewpoint will be emphasized. Not offered 201819.
CS/CNS/EE/IDS 159
Advanced Topics in Machine Learning
9 units (306)

third term
Prerequisites: CS 155; strong background in statistics, probability theory, algorithms, and linear algebra; background in optimization is a plus as well.
This course focuses on current topics in machine learning research. This is a paper reading course, and students are expected to understand material directly from research articles. Students are also expected to present in class, and to do a final project.
Instructor:
Yue
EE/CS/IDS 160
Fundamentals of Information Transmission and Storage
9 units (306)

second term
Basics of information theory: entropy, mutual information, source and channel coding theorems. Basics of coding theory: errorcorrecting codes for information transmission and storage, block codes, algebraic codes, sparse graph codes. Basics of digital communications: sampling, quantization, digital modulation, matched filters, equalization. Offered 201819.
Instructor:
Hassibi
EE/CS 161
Big Data Networks
9 units (306)

third term
Prerequisites: Linear Algebra ACM/IDS 104 and Probability and Random Processes ACM/EE/IDS 116 or their equivalents.
Next generation networks will have tens of billions of nodes forming cyberphysical systems and the Internet of Things. A number of fundamental scientific and technological challenges must be overcome to deliver on this vision. This course will focus on (1) How to boost efficiency and reliability in large networks; the role of network coding, distributed storage, and distributed caching; (2) How to manage wireless access on a massive scale; modern random access and topology formation techniques; and (3) New vistas in big data networks, including distributed computing over networks and crowdsourcing. A selected subset of these problems, their mathematical underpinnings, stateoftheart solutions, and challenges ahead will be covered. Given in alternate years. Not offered 201819.
Instructor:
Hassibi
CS/CNS/EE/IDS 165
Foundations of Machine Learning
12 units (336)

second term
Prerequisites: Ma 108 a, ACM/IDS 104 or CMS/ACM/IDS 107, CMS/ACM/IDS 113, ACM/EE/IDS 116 or CMS/ACM/EE/IDS 117, CMS/CS/CNS/EE/IDS 155 or CMS 156 ab, programming experience..
Machine learning is promising to revolutionize every domain. Beyond the media hype, what are the basic foundations? Are the theoretical underpinnings irrelevant given the success of deep learning? What does success even mean? In addition to covering the core concepts, the course aims to ask such critical questions and foster a healthy debate among the students. Assignments will include exploring failure modes of popular algorithms, in addition to traditional problemsolving type questions. The core concepts covered include: linear models, kernel methods, probabilistic models, spectral methods (matrices and tensors), neural networks representation theory, nonconvex optimization, generalization in deep neural networks, causality etc. The course assumes students are comfortable with analysis, probability, statistics, and basic programming.
Instructor:
Anandkumar
EE/CS/IDS 167
Introduction to Data Compression and Storage
9 units (306)

third term
Prerequisites: Ma 3 or ACM/EE/IDS 116.
The course will introduce the students to the basic principles and techniques of codes for data compression and storage. The students will master the basic algorithms used for lossless and lossy compression of digital and analog data and the major ideas behind coding for flash memories. Topics include the Huffman code, the arithmetic code, LempelZiv dictionary techniques, scalar and vector quantizers, transform coding; codes for constrained storage systems. Given in alternate years; offered 201819.
Instructor:
Kostina
CS/CNS 171
Computer Graphics Laboratory
12 units (363)

first term
Prerequisites: Extensive programming experience and proficiency in linear algebra, starting with CS 2 and Ma 1 b..
This is a challenging course that introduces the basic ideas behind computer graphics and some of its fundamental algorithms. Topics include graphics input and output, the graphics pipeline, sampling and image manipulation, threedimensional transformations and interactive modeling, basics of physically based modeling and animation, simple shading models and their hardware implementation, and some of the fundamental algorithms of scientific visualization. Students will be required to perform significant implementations.
Instructor:
Barr
CS/CNS 174
Computer Graphics Projects
12 units (363)

third term
Prerequisites: Extensive programming experience, CS/CNS 171 or instructor's permission.
This laboratory class offers students an opportunity for independent work including recent computer graphics research. In coordination with the instructor, students select a computer graphics modeling, rendering, interaction, or related algorithm and implement it. Students are required to present their work in class and discuss the results of their implementation and possible improvements to the basic methods. May be repeated for credit with instructor's permission.
Instructor:
Barr
EE/CS/MedE 175
Digital Circuits Analysis and Design with Complete VHDL and RTL Approach
9 units (360)

third term
Prerequisites: medium to advanced knowledge of digital electronics.
A careful balance between synthesis and analysis in the development of digital circuits plus a truly complete coverage of the VHDL language. The RTL (register transfer level) approach. Study of FPGA devices and comparison to ASIC alternatives. Tutorials of software and hardware tools employed in the course. VHDL infrastructure, including lexical elements, data types, operators, attributes, and complex data structures. Detailed review of combinational circuits followed by full VHDL coverage for combinational circuits plus recommended design practices. Detailed review of sequential circuits followed by full VHDL coverage for sequential circuits plus recommended design practices. Detailed review of state machines followed by full VHDL coverage and recommended design practices. Construction of VHDL libraries. Hierarchical design and practice on the hard task of project splitting. Automated simulation using VHDL testbenches. Designs are implemented in stateoftheart FPGA boards. Not Offered 201819.
Instructor:
Pedroni
CS 176
Computer Graphics Research
9 units (333)

second term
Prerequisites: CS/CNS 171, or 173, or 174.
The course will go over recent research results in computer graphics, covering subjects from mesh processing (acquisition, compression, smoothing, parameterization, adaptive meshing), simulation for purposes of animation, rendering (both photo and nonphotorealistic), geometric modeling primitives (image based, point based), and motion capture and editing. Other subjects may be treated as they appear in the recent literature. The goal of the course is to bring students up to the frontiers of computer graphics research and prepare them for their own research. Not offered 201819.
CS/ACM 177 ab
Discrete Differential Geometry: Theory and Applications
9 units (333); second, third terms

Working knowledge of multivariate calculus and linear algebra as well as fluency in some implementation language is expected
Subject matter covered: differential geometry of curves and surfaces, classical exterior calculus, discrete exterior calculus, sampling and reconstruction of differential forms, low dimensional algebraic and computational topology, Morse theory, Noether's theorem, HelmholtzHodge decomposition, structure preserving time integration, connections and their curvatures on complex line bundles. Applications include elastica and rods, surface parameterization, conformal surface deformations, computation of geodesics, tangent vector field design, connections, discrete thin shells, fluids, electromagnetism, and elasticity.
Instructor:
Schroeder
CS/IDS 178
Numerical Algorithms and their Implementation
9 units (333)

second term
Prerequisites: CS 2.
This course gives students the understanding necessary to choose and implement basic numerical algorithms as needed in everyday programming practice. Concepts include: sources of numerical error, stability, convergence, illconditioning, and efficiency. Algorithms covered include solution of linear systems (direct and iterative methods), orthogonalization, SVD, interpolation and approximation, numerical integration, solution of ODEs and PDEs, transform methods (Fourier, Wavelet), and low rank approximation such as multipole expansions
Instructor:
Desbrun
CS 179
GPU Programming
9 units (333)

third term
Prerequisites: Good working knowledge of C/C++. Some experience with computer graphics algorithms preferred.
The use of Graphics Processing Units for computer graphics rendering is well known, but their power for general parallel computation is only recently being explored. Parallel algorithms running on GPUs can often achieve up to 100x speedup over similar CPU algorithms. This course covers programming techniques for the Graphics processing unit, focusing on visualization and simulation of various systems. Labs will cover specific applications in graphics, mechanics, and signal processing. The course will use nVidia's parallel computing architecture, CUDA. Labwork requires extensive programming.
Instructor:
Barr
Bi/BE/CS 183
Introduction to Computational Biology and Bioinformatics
9 units (306)

second term
Prerequisites: Bi 8, CS 2, Ma 3; or BE/Bi 103; or instructor's permission.
Biology is becoming an increasingly dataintensive science. Many of the data challenges in the biological sciences are distinct from other scientific disciplines because of the complexity involved. This course will introduce key computational, probabilistic, and statistical methods that are common in computational biology and bioinformatics. We will integrate these theoretical aspects to discuss solutions to common challenges that reoccur throughout bioinformatics including algorithms and heuristics for tackling DNA sequence alignments, phylogenetic reconstructions, evolutionary analysis, and population and human genetics. We will discuss these topics in conjunction with common applications including the analysis of high throughput DNA sequencing data sets and analysis of gene expression from RNASeq data sets.
Instructors:
Pachter, Thomson
CNS/Bi/EE/CS/NB 186
Vision: From Computational Theory to Neuronal Mechanisms
12 units (444)

second term
Lecture, laboratory, and project course aimed at understanding visual information processing, in both machines and the mammalian visual system. The course will emphasize an interdisciplinary approach aimed at understanding vision at several levels: computational theory, algorithms, psychophysics, and hardware (i.e., neuroanatomy and neurophysiology of the mammalian visual system). The course will focus on early vision processes, in particular motion analysis, binocular stereo, brightness, color and texture analysis, visual attention and boundary detection. Students will be required to hand in approximately three homework assignments as well as complete one project integrating aspects of mathematical analysis, modeling, physiology, psychophysics, and engineering. Given in alternate years; Not Offered 201819.
Instructors:
Meister, Perona, Shimojo
CNS/Bi/Ph/CS/NB 187
Neural Computation
9 units (306)

first term
Prerequisites: familiarity with digital circuits, probability theory, linear algebra, and differential equations. Programming will be required.
This course investigates computation by neurons. Of primary concern are models of neural computation and their neurological substrate, as well as the physics of collective computation. Thus, neurobiology is used as a motivating factor to introduce the relevant algorithms. Topics include ratecode neural networks, their differential equations, and equivalent circuits; stochastic models and their energy functions; associative memory; supervised and unsupervised learning; development; spikebased computing; singlecell computation; error and noise tolerance. Not Offered 201819.
Instructor:
Perona
BE/CS/CNS/Bi 191 ab
Biomolecular Computation
9 units (306) second term

(243) third term
Prerequisites: none. Recommended: ChE/BE 163, CS 21, CS 129 ab, or equivalent.
This course investigates computation by molecular systems, emphasizing models of computation based on the underlying physics, chemistry, and organization of biological cells. We will explore programmability, complexity, simulation of, and reasoning about abstract models of chemical reaction networks, molecular folding, molecular selfassembly, and molecular motors, with an emphasis on universal architectures for computation, control, and construction within molecular systems. If time permits, we will also discuss biological example systems such as signal transduction, genetic regulatory networks, and the cytoskeleton; physical limits of computation, reversibility, reliability, and the role of noise, DNAbased computers and DNA nanotechnology. Part a develops fundamental results; part b is a reading and research course: classic and current papers will be discussed, and students will do projects on current research topics.
Instructor:
Winfree
BE/CS 196 ab
Design and Construction of Programmable Molecular Systems
12 units

a (363) second term
Prerequisites: none.
This course will introduce students to the conceptual frameworks and tools of computer science as applied to molecular engineering, as well as to the practical realities of synthesizing and testing their designs in the laboratory. In part a, students will design and construct DNA logic circuits, biomolecular neural networks, and selfassembled DNA nanostructures, as well as quantitatively analyze the designs and the experimental data. Students will learn laboratory techniques including fluorescence spectroscopy and atomic force microscopy, and will use software tools and program in MATLAB or Mathematica. Part b is an openended design and build project. Enrollment in both parts a and b is limited to 12 students. Part b not offered 201819.
Instructor:
Qian
Ph/CS 219 abc
Quantum Computation
9 units (306)

first, second terms
Prerequisites: Ph 125 abc or equivalent.
The theory of quantum information and quantum computation. Overview of classical information theory, compression of quantum information, transmission of quantum information through noisy channels, quantum errorcorrecting codes, quantum cryptography and teleportation. Overview of classical complexity theory, quantum complexity, efficient quantum algorithms, faulttolerant quantum computation, physical implementations of quantum computation. Part c not offered in 20182019.
Instructors:
Preskill, Kitaev
SS/CS 241
Topics in Algorithmic Economics
9 units (306)
Prerequisites: SS/CS 149.
This is a graduatelevel seminar covering recent topics at the intersection of computer science and economics. Topics will vary, but may include, e.g., dynamics in games, algorithmic mechanism design, and prediction markets. Not offered 201819.
Instructor:
EAS and HSS faculty
CS 274 abc
Topics in Computer Graphics
9 units (333)

first, second, third terms
Prerequisites: instructor's permission.
Each term will focus on some topic in computer graphics, such as geometric modeling, rendering, animation, humancomputer interaction, or mathematical foundations. The topics will vary from year to year. May be repeated for credit with instructor's permission. Not offered 201819.
CS 280
Research in Computer Science
Units in accordance with work accomplished. Approval of student's research adviser and option adviser must be obtained before registering
CS 282 abc
Reading in Computer Science
6 units or more by arrangement; first, second, third terms. Instructor's permission required
CS 286 abc
Seminar in Computer Science
3, 6, or 9 units, at the instructor's discretion. Instructor's permission required
Published Date:
July 28, 2022