# CS Courses

• CS C8. Foundations of Data Science

Catalog Description: Foundations of data science from three perspectives: inferential thinking, computational thinking, and real-world relevance. Given data arising from some real-world phenomenon, how does one analyze that data so as to understand that phenomenon? The course teaches critical concepts and skills in computer programming and statistical inference, in conjunction with hands-on analysis of real-world datasets, including economic data, document collections, geographical data, and social networks. It delves into social and legal issues surrounding data analysis, including issues of privacy and data ownership.
Units: 4.0

• CS C8R. Introduction to Computational Thinking with Data

Catalog Description: An introduction to computational thinking and quantitative reasoning, preparing students for further coursework, especially Foundations of Data Science (CS/Info/Stat C8). Emphasizes the use of computation to gain insight about quantitative problems with real data. Expressions, data types, collections, and tables in Python. Programming practices, abstraction, and iteration. Visualizing univariate and bivariate data with bar charts, histograms, plots, and maps. Introduction to statistical concepts including averages and distributions, predicting one variable from another, association and causality, probability and probabilistic simulation. Relationship between numerical functions and graphs. Sampling and introduction to inference.
Units: 3.0

• CS 9A. Matlab for Programmers

Catalog Description: Introduction to the constructs in the Matlab programming language, aimed at students who already know how to program. Array and matrix operations, functions and function handles, control flow, plotting and image manipulation, cell arrays and structures, and the Symbolic Mathematics toolbox.
Units: 2.0

• CS 9C. C for Programmers

Catalog Description: Self-paced course in the C programming language for students who already know how to program. Computation, input and output, flow of control, functions, arrays, and pointers, linked structures, use of dynamic storage, and implementation of abstract data types.
Units: 2.0

• CS 9D. Scheme and Functional Programming for Programmers

Catalog Description: Self-paced course in functional programming, using the Scheme programming language, for students who already know how to program. Recursion; higher-order functions; list processing; implementation of rule-based querying.
Units: 2.0

• CS 9E. Productive Use of the UNIX Environment

Catalog Description: Use of UNIX utilities and scripting facilities for customizing the programming environment, organizing files (possibly in more than one computer account), implementing a personal database, reformatting text, and searching for online resources.
Units: 2.0

• CS 9F. C++ for Programmers

Catalog Description: Self-paced introduction to the constructs provided in the C++ programming language for procedural and object-oriented programming, aimed at students who already know how to program.
Units: 2.0

• CS 9G. JAVA for Programmers

Catalog Description: Self-paced course in Java for students who already know how to program. Applets; variables and computation; events and flow of control; classes and objects; inheritance; GUI elements; applications; arrays, strings, files, and linked structures; exceptions; threads.
Units: 2.0

• CS 9H. Python for Programmers

Catalog Description: Introduction to the constructs provided in the Python programming language, aimed at students who already know how to program. Flow of control; strings, tuples, lists, and dictionaries; CGI programming; file input and output; object-oriented programming; GUI elements.
Units: 2.0

• CS 10. The Beauty and Joy of Computing

Catalog Description: An introductory course for students with minimal prior exposure to computer science. Prepares students for future computer science courses and empowers them to utilize programming to solve problems in their field of study. Presents an overview of the history, great principles, and transformative applications of computer science, as well as a comprehensive introduction to programming. Topics include abstraction, recursion, algorithmic complexity, higher-order functions, concurrency, social implications of computing (privacy, education, algorithmic bias), and engaging research areas (data science, AI, HCI). Students will program in Snap! (a friendly graphical language) and Python, and will design and implement two projects of their choice.
Units: 4.0

• CS W10. The Beauty and Joy of Computing

Catalog Description: This course meets the programming prerequisite for 61A. An introduction to the beauty and joy of computing. The history, social implications, great principles, and future of computing. Beautiful applications that have changed the world. How computing empowers discovery and progress in other fields. Relevance of computing to the student and society will be emphasized. Students will learn the joy of programming a computer using a friendly, graphical language, and will complete a substantial team programming project related to their interests.
Units: 4.0

• CS 24. Freshman Seminars

Catalog Description: The Freshman Seminar Program has been designed to provide new students with the opportunity to explore an intellectual topic with a faculty member in a small-seminar setting. Freshman seminars are offered in all campus departments, and topics vary from department to department and semester to semester. Enrollment limited to 15 freshmen.
Units: 1.0

• CS 24-001. Boeing 737 MAX: Money, Machines, and Morals in Conflict

Catalog Description: The Freshman Seminar Program has been designed to provide new students with the opportunity to explore an intellectual topic with a faculty member in a small-seminar setting. Freshman seminars are offered in all campus departments, and topics vary from department to department and semester to semester. Enrollment limited to 15 freshmen.
Units: 1.0

• CS 24-002. The Coevolution of Humans and Machines

Catalog Description: The Freshman Seminar Program has been designed to provide new students with the opportunity to explore an intellectual topic with a faculty member in a small-seminar setting. Freshman seminars are offered in all campus departments, and topics vary from department to department and semester to semester. Enrollment limited to 15 freshmen.
Units: 1.0

• CS 24-003. Our Digital Quandary: The Co-Evolution of Information Technology and Society

Catalog Description: The Freshman Seminar Program has been designed to provide new students with the opportunity to explore an intellectual topic with a faculty member in a small-seminar setting. Freshman seminars are offered in all campus departments, and topics vary from department to department and semester to semester. Enrollment limited to 15 freshmen.
Units: 1.0

• CS 36. CS Scholars Seminar: The Educational Climate in CS & CS61A technical discussions

Catalog Description: Computer Science 36 is a seminar for CS Scholars who are concurrently taking CS61A: The Structure and Interpretation of Computer Programs. CS Scholars is a cohort-model program to provide support in exploring and potentially declaring a CS major for students with little to no computational background prior to coming to the university. CS 36 provides an introduction to the CS curriculum at UC Berkeley, and the overall CS landscape in both industry and academia—through the lens of accessibility and its relevance to diversity. Additionally, CS36 provides technical instruction to review concepts in CS61A, in order to support CS Scholars’ individual learning and success in the CS61A course.
Units: 2.0

• CS 39. Freshman/Sophomore Seminar

Catalog Description: Freshman and sophomore seminars offer lower division students the opportunity to explore an intellectual topic with a faculty member and a group of peers in a small-seminar setting. These seminars are offered in all campus departments; topics vary from department to department and from semester to semester. Enrollment limits are set by the faculty, but the suggested limit is 25.
Units: 1.5-2.0

• CS 39J. Freshman/Sophomore Seminar

Catalog Description: Freshman and sophomore seminars offer lower division students the opportunity to explore an intellectual topic with a faculty member and a group of peers in a small-seminar setting. These seminars are offered in all campus departments; topics vary from department to department and from semester to semester. Enrollment limits are set by the faculty, but the suggested limit is 25.
Units: 1.5-4

• CS 39K. Freshman/Sophomore Seminar

Catalog Description: Freshman and sophomore seminars offer lower division students the opportunity to explore an intellectual topic with a faculty member and a group of peers in a small-seminar setting. These seminars are offered in all campus departments; topics vary from department to department and from semester to semester. Enrollment limits are set by the faculty, but the suggested limit is 25.
Units: 1.5-4

• CS 39M. Freshman/Sophomore Seminar

Catalog Description: Freshman and sophomore seminars offer lower division students the opportunity to explore an intellectual topic with a faculty member and a group of peers in a small-seminar setting. These seminars are offered in all campus departments; topics vary from department to department and from semester to semester. Enrollment limits are set by the faculty, but the suggested limit is 25.
Units: 1.5-4

• CS 39N. Freshman/Sophomore Seminar

Catalog Description: Freshman and sophomore seminars offer lower division students the opportunity to explore an intellectual topic with a faculty member and a group of peers in a small-seminar setting. These seminars are offered in all campus departments; topics vary from department to department and from semester to semester. Enrollment limits are set by the faculty, but the suggested limit is 25.
Units: 1.5-4

• CS 39P. Freshman/Sophomore Seminar

Catalog Description: Freshman and sophomore seminars offer lower division students the opportunity to explore an intellectual topic with a faculty member and a group of peers in a small-seminar setting. These seminars are offered in all campus departments; topics vary from department to department and from semester to semester. Enrollment limits are set by the faculty, but the suggested limit is 25.
Units: 1.5-4

• CS 39Q. Freshman/Sophomore Seminar

Catalog Description: Freshman and sophomore seminars offer lower division students the opportunity to explore an intellectual topic with a faculty member and a group of peers in a small-seminar setting. These seminars are offered in all campus departments; topics vary from department to department and from semester to semester. Enrollment limits are set by the faculty, but the suggested limit is 25.
Units: 1.5-4

• CS 39R. Freshman/Sophomore Seminar

Catalog Description: Freshman and sophomore seminars offer lower division students the opportunity to explore an intellectual topic with a faculty member and a group of peers in a small-seminar setting. These seminars are offered in all campus departments; topics vary from department to department and from semester to semester. Enrollment limits are set by the faculty, but the suggested limit is 25.
Units: 1.5-4

• CS 47A. Completion of Work in Computer Science 61A

Catalog Description: Implementation of generic operations. Streams and iterators. Implementation techniques for supporting functional, object-oriented, and constraint-based programming in the Scheme programming language. Together with 9D, 47A constitutes an abbreviated, self-paced version of 61A for students who have already taken a course equivalent to 61B.
Units: 1.0

• CS 47A-001. Self-paced courses

Catalog Description: Implementation of generic operations. Streams and iterators. Implementation techniques for supporting functional, object-oriented, and constraint-based programming in the Scheme programming language. Together with 9D, 47A constitutes an abbreviated, self-paced version of 61A for students who have already taken a course equivalent to 61B.
Units: 1.0

• CS 47B. Completion of Work in Computer Science 61B

Catalog Description: Iterators. Hashing, applied to strings and multi-dimensional structures. Heaps. Storage management. Design and implementation of a program containing hundreds of lines of code. Students who have completed a portion of the subject matter of COMPSCI 61B may, with consent of instructor, complete COMPSCI 61B in this self-paced course. Please note that students in the College of Engineering are required to receive additional permission from the College as well as the EECS department for the course to count in place of COMPSCI 61B.
Units: 1.0

• CS 47B-001. Self-paced courses

Catalog Description: Iterators. Hashing, applied to strings and multi-dimensional structures. Heaps. Storage management. Design and implementation of a program containing hundreds of lines of code. Students who have completed a portion of the subject matter of COMPSCI 61B may, with consent of instructor, complete COMPSCI 61B in this self-paced course. Please note that students in the College of Engineering are required to receive additional permission from the College as well as the EECS department for the course to count in place of COMPSCI 61B.
Units: 1.0

• CS 47C. Completion of Work in Computer Science 61C

Catalog Description: MIPS instruction set simulation. The assembly and linking process. Caches and virtual memory. Pipelined computer organization. Students with sufficient partial credit in 61C may, with consent of instructor, complete the credit in this self-paced course.
Units: 1.0

• CS 47C-001. Self-paced courses

Catalog Description: MIPS instruction set simulation. The assembly and linking process. Caches and virtual memory. Pipelined computer organization. Students with sufficient partial credit in 61C may, with consent of instructor, complete the credit in this self-paced course.
Units: 1.0

• CS 61A. The Structure and Interpretation of Computer Programs

Catalog Description: An introduction to programming and computer science focused on abstraction techniques as means to manage program complexity. Techniques include procedural abstraction; control abstraction using recursion, higher-order functions, generators, and streams; data abstraction using interfaces, objects, classes, and generic operators; and language abstraction using interpreters and macros. The course exposes students to programming paradigms, including functional, object-oriented, and declarative approaches. It includes an introduction to asymptotic analysis of algorithms. There are several significant programming projects.
Units: 4.0

• CS 61AS. The Structure and Interpretation of Computer Programs (Self-Paced)

Catalog Description: Introductory programming and computer science. Abstraction as means to control program complexity. Programming paradigms: functional, object-oriented, client/server, and declarative (logic). Control abstraction: recursion and higher order functions. Introduction to asymptotic analysis of algorithms. Data abstraction: abstract data types, type-tagged data, first class data types, sequences implemented as lists and as arrays, generic operators implemented with data-directed programming and with message passing. Implementation of object-oriented programming with closures over dispatch procedures. Introduction to interpreters and compilers. There are several significant programming projects. Course may be completed in one or two semesters. Students must complete a mimimum of two units during their first semester of 61AS.
Units: 1-4

• CS W61A. The Structure and Interpretation of Computer Programs (Online)

Catalog Description: An introduction to programming and computer science focused on abstraction techniques as means to manage program complexity. Techniques include procedural abstraction; control abstraction using recursion, higher-order functions, generators, and streams; data abstraction using interfaces, objects, classes, and generic operators; and language abstraction using interpreters and macros. The course exposes students to programming paradigms, including functional, object-oriented, and declarative approaches. It includes an introduction to asymptotic analysis of algorithms. There are several significant programming projects.
Units: 4.0

• CS 61B. Data Structures

Catalog Description: Fundamental dynamic data structures, including linear lists, queues, trees, and other linked structures; arrays strings, and hash tables. Storage management. Elementary principles of software engineering. Abstract data types. Algorithms for sorting and searching. Introduction to the Java programming language.
Units: 4.0

• CS 61BL. Data Structures and Programming Methodology

Catalog Description: The same material as in 61B, but in a laboratory-based format.
Units: 4.0

• CS W61B. Data Structures (Online)

Catalog Description: Identical to CS61B, but in an online format. Fundamental dynamic data structures, including linear lists, queues, trees, and other linked structures; arrays strings, and hash tables. Storage management. Elementary principles of software engineering. Abstract data types. Algorithms for sorting and searching. Introduction to the Java programming language.
Units: 4.0

• CS 61C. Machine Structures

Catalog Description: The internal organization and operation of digital computers. Machine architecture, support for high-level languages (logic, arithmetic, instruction sequencing) and operating systems (I/O, interrupts, memory management, process switching). Elements of computer logic design. Tradeoffs involved in fundamental architectural design decisions.
Units: 4.0

• CS 61CL. Machine Structures

Catalog Description: The same material as in 61C but in a lab-centric format.
Units: 4.0

• CS 70. Discrete Mathematics and Probability Theory

Catalog Description: Logic, infinity, and induction; applications include undecidability and stable marriage problem. Modular arithmetic and GCDs; applications include primality testing and cryptography. Polynomials; examples include error correcting codes and interpolation. Probability including sample spaces, independence, random variables, law of large numbers; examples include load balancing, existence arguments, Bayesian inference.
Units: 4.0

• CS 88. Computational Structures in Data Science

Catalog Description: Development of Computer Science topics appearing in Foundations of Data Science (C8); expands computational concepts and techniques of abstraction. Understanding the structures that underlie the programs, algorithms, and languages used in data science and elsewhere. Mastery of a particular programming language while studying general techniques for managing program complexity, e.g., functional, object-oriented, and declarative programming. Provides practical experience with composing larger systems through several significant programming projects.
Units: 3.0

• CS 94. Special Topics

Catalog Description: Topics will vary semester to semester. See the Computer Science Division announcements.
Units: 1.0-4.0

• CS 97. Field Study

Catalog Description: Students take part in organized individual field sponsored programs with off-campus companies or tutoring/mentoring relevant to specific aspects and applications of computer science on or off campus. Note Summer CPT or OPT students: written report required. Course does not count toward major requirements, but will be counted in the cumulative units toward graduation.
Units: 1-4

• CS 98. Directed Group Study

Catalog Description: Seminars for group study of selected topics, which will vary from year to year. Intended for students in the lower division.
Units: 1-4

• CS 99. Individual Study and Research for Undergraduates

Catalog Description: A course for lower division students in good standing who wish to undertake a program of individual inquiry initiated jointly by the student and a professor. There are no other formal prerequisites, but the supervising professor must be convinced that the student is able to profit by the program.
Units: 1-2

• CS C100. Principles & Techniques of Data Science

Catalog Description: In this course, students will explore the data science lifecycle, including question formulation, data collection and cleaning, exploratory data analysis and visualization, statistical inference and prediction​, and decision-making.​ This class will focus on quantitative critical thinking​ and key principles and techniques needed to carry out this cycle. These include languages for transforming, querying and analyzing data; algorithms for machine learning methods including regression, classification and clustering; principles behind creating informative data visualizations; statistical concepts of measurement error and prediction; and techniques for scalable data processing.
Units: 4.0

• CS 146L. Programmable Digital Systems Laboratory

Catalog Description: Hardware description languages for digital system design and interactions with tool flows. Design, implementation, and verification of digital designs. Digital synthesis, partitioning, placement, routing, and simulation for Field-Programmable Gate Arrays. Large digital-system design concepts. Project design component – example, a full processor implementation with peripherals.
Units: 2.0

• CS 152. Computer Architecture and Engineering

Catalog Description: Instruction set architecture, microcoding, pipelining (simple and complex). Memory hierarchies and virtual memory. Processor parallelism: VLIW, vectors, multithreading. Multiprocessors.
Units: 4.0

• CS 160. User Interface Design and Development

Catalog Description: The design, implementation, and evaluation of user interfaces. User-centered design and task analysis. Conceptual models and interface metaphors. Usability inspection and evaluation methods. Analysis of user study data. Input methods (keyboard, pointing, touch, tangible) and input models. Visual design principles. Interface prototyping and implementation methodologies and tools. Students will develop a user interface for a specific task and target user group in teams.
Units: 4.0

• CS 161. Computer Security

Catalog Description: Introduction to computer security. Cryptography, including encryption, authentication, hash functions, cryptographic protocols, and applications. Operating system security, access control. Network security, firewalls, viruses, and worms. Software security, defensive programming, and language-based security. Case studies from real-world systems.
Units: 4.0

• CS 162. Operating Systems and System Programming

Catalog Description: Basic concepts of operating systems and system programming. Utility programs, subsystems, multiple-program systems. Processes, interprocess communication, and synchronization. Memory allocation, segmentation, paging. Loading and linking, libraries. Resource allocation, scheduling, performance evaluation. File systems, storage devices, I/O systems. Protection, security, and privacy.
Units: 4.0

• CS 164. Programming Languages and Compilers

Catalog Description: Survey of programming languages. The design of modern programming languages. Principles and techniques of scanning, parsing, semantic analysis, and code generation. Implementation of compilers, interpreters, and assemblers. Overview of run-time organization and error handling.
Units: 4.0

• CS 168. Introduction to the Internet: Architecture and Protocols

Catalog Description: This course is an introduction to the Internet architecture. We will focus on the concepts and fundamental design principles that have contributed to the Internet's scalability and robustness and survey the various protocols and algorithms used within this architecture. Topics include layering, addressing, intradomain routing, interdomain routing, reliable delivery, congestion control, and the core protocols (e.g., TCP, UDP, IP, DNS, and HTTP) and network technologies (e.g., Ethernet, wireless).
Units: 4.0

• CS 169. Software Engineering

Catalog Description: Ideas and techniques for designing, developing, and modifying large software systems. Function-oriented and object-oriented modular design techniques, designing for re-use and maintainability. Specification and documentation. Verification and validation. Cost and quality metrics and estimation. Project team organization and management. Students will work in teams on a substantial programming project.
Units: 4.0

• CS 169A. Introduction to Software Engineering

Catalog Description: Ideas and techniques for designing, developing, and modifying large software systems. Service-oriented architecture, behavior-driven design with user stories, cloud computing, test-driven development, automated testing, cost and quality metrics for maintainability and effort estimation, practical performance and security in software operations, design patterns and refactoring, specification and documentation, agile project team organization and management.
Units: 4.0

• CS W169A. Software Engineering

Catalog Description: This course presents ideas and techniques for designing, developing, and modifying large software systems using Agile techniques and tools. Topics include: function-oriented and object-oriented modular design techniques, designing for re-use and maintainability including proper use of design patterns, behavior-driven design, test-driven development, user stories for requirements elicitation & documentation, verification and validation, cost and quality metrics and estimation, project team organization and management, analyzing and refactoring legacy code.
Units: 3.0

• CS 169L. Software Engineering Team Project

Catalog Description: Open-ended design project enhancing or creating software for real customers in an agile team setting. Teamwork coordination, effective customer meetings, pre- and post-iteration team meetings, running scrums and standups, technical communication. Contributing as a team to an open-source project; tools and workflows associated with open source collaboration, including fork-and-pull, rebase, upstream merge, continuous deployment & integration.
Units: 2.0

• CS 170. Efficient Algorithms and Intractable Problems

Catalog Description: Concept and basic techniques in the design and analysis of algorithms; models of computation; lower bounds; algorithms for optimum search trees, balanced trees and UNION-FIND algorithms; numerical and algebraic algorithms; combinatorial algorithms. Turing machines, how to count steps, deterministic and nondeterministic Turing machines, NP-completeness. Unsolvable and intractable problems.
Units: 4.0

• CS 171. Cryptography

Catalog Description: Cryptography or cryptology is the science of designing algorithms and protocols for enabling parties to communicate and compute securely in an untrusted environment (e.g. secure communication, digital signature, etc.) Over the last four decades, cryptography has transformed from an ad hoc collection of mysterious tricks into a rigorous science based on firm complexity-theoretic foundations. This modern complexity-theoretic approach to cryptography will be the focus. E.g., in the context of encryption we will begin by giving a precise mathematical definition for what it means to be a secure encryption scheme and then give a construction (realizing this security notion) assuming various computational hardness assumptions (e.g. factoring).
Units: 4.0

• CS 172. Computability and Complexity

Catalog Description: Finite automata, Turing machines and RAMs. Undecidable, exponential, and polynomial-time problems. Polynomial-time equivalence of all reasonable models of computation. Nondeterministic Turing machines. Theory of NP-completeness: Cook's theorem, NP-completeness of basic problems. Selected topics in language theory, complexity and randomness.
Units: 4.0

• CS 174. Combinatorics and Discrete Probability

Catalog Description: Permutations, combinations, principle of inclusion and exclusion, generating functions, Ramsey theory. Expectation and variance, Chebychev's inequality, Chernov bounds. Birthday paradox, coupon collector's problem, Markov chains and entropy computations, universal hashing, random number generation, random graphs and probabilistic existence bounds.
Units: 4.0

• CS 176. Algorithms for Computational Biology

Catalog Description: Algorithms and probabilistic models that arise in various computational biology applications: suffix trees, suffix arrays, pattern matching, repeat finding, sequence alignment, phylogenetics, genome rearrangements, hidden Markov models, gene finding, motif finding, stochastic context free grammars, RNA secondary structure. There are no biology prerequisites for this course, but a strong quantitative background will be essential.
Units: 4.0

• CS 182. Designing, Visualizing and Understanding Deep Neural Networks

Catalog Description: Deep Networks have revolutionized computer vision, language technology, robotics and control. They have growing impact in many other areas of science and engineering. They do not however, follow a closed or compact set of theoretical principles. In Yann Lecun's words they require "an interplay between intuitive insights, theoretical modeling, practical implementations, empirical studies, and scientific analyses." This course attempts to cover that ground.
Units: 4.0

• CS L182. Designing, Visualizing and Understanding Deep Neural Networks

Catalog Description: Deep Networks have revolutionized computer vision, language technology, robotics and control. They have growing impact in many other areas of science and engineering. They do not however, follow a closed or compact set of theoretical principles. In Yann Lecun's words they require "an interplay between intuitive insights, theoretical modeling, practical implementations, empirical studies, and scientific analyses." This course attempts to cover that ground.
Units: 4.0

• CS W182. Designing, Visualizing and Understanding Deep Neural Networks

Catalog Description: Deep Networks have revolutionized computer vision, language technology, robotics and control. They have growing impact in many other areas of science and engineering. They do not however, follow a closed or compact set of theoretical principles. In Yann Lecun's words they require "an interplay between intuitive insights, theoretical modeling, practical implementations, empirical studies, and scientific analyses." This course attempts to cover that ground.
Units: 4.0

• CS 184. Foundations of Computer Graphics

Catalog Description: Techniques of modeling objects for the purpose of computer rendering: boundary representations, constructive solids geometry, hierarchical scene descriptions. Mathematical techniques for curve and surface representation. Basic elements of a computer graphics rendering pipeline; architecture of modern graphics display devices. Geometrical transformations such as rotation, scaling, translation, and their matrix representations. Homogeneous coordinates, projective and perspective transformations. Algorithms for clipping, hidden surface removal, rasterization, and anti-aliasing. Scan-line based and ray-based rendering algorithms. Lighting models for reflection, refraction, transparency.
Units: 4.0

• CS 186. Introduction to Database Systems

Catalog Description: Access methods and file systems to facilitate data access. Hierarchical, network, relational, and object-oriented data models. Query languages for models. Embedding query languages in programming languages. Database services including protection, integrity control, and alternative views of data. High-level interfaces including application generators, browsers, and report writers. Introduction to transaction processing. Database system implementation to be done as term project.
Units: 4.0

• CS W186. Introduction to Database Systems

Catalog Description: Broad introduction to systems for storing, querying, updating and managing large databases. Computer science skills synthesizing viewpoints from low-level systems architecture to high-level modeling and declarative logic. System internals, including the complex details of query optimization and execution, concurrency control, indexing, and memory management. More abstract issues in query languages and data modeling – students are exposed to formal relational languages, SQL, full-text search, entity-relationship modeling, normalization, and physical database design. Recent technological trends in the field, including “Big Data” programming libraries like MapReduce, and distributed key-value stores with various consistency models.
Units: 4.0

• CS 188. Introduction to Artificial Intelligence

Catalog Description: Ideas and techniques underlying the design of intelligent computer systems. Topics include search, game playing, knowledge representation, inference, planning, reasoning under uncertainty, machine learning, robotics, perception, and language understanding.
Units: 4.0

• CS 189. Introduction to Machine Learning

Catalog Description: Theoretical foundations, algorithms, methodologies, and applications for machine learning. Topics may include supervised methods for regression and classication (linear models, trees, neural networks, ensemble methods, instance-based methods); generative and discriminative probabilistic models; Bayesian parametric learning; density estimation and clustering; Bayesian networks; time series models; dimensionality reduction; programming projects covering a variety of real-world applications.
Units: 4.0

• CS C191. Quantum Information Science and Technology

Catalog Description: This multidisciplinary course provides an introduction to fundamental conceptual aspects of quantum mechanics from a computational and informational theoretic perspective, as well as physical implementations and technological applications of quantum information science. Basic sections of quantum algorithms, complexity, and cryptography, will be touched upon, as well as pertinent physical realizations from nanoscale science and engineering.
Units: 3.0

• CS 194. Special Topics

Catalog Description: Topics will vary semester to semester. See the Computer Science Division announcements.
Units: 1.0-4.0

• CS 194-015. Parallel Programming

Catalog Description: Topics will vary semester to semester. See the Computer Science Division announcements.
Units: 1.0-4.0

• CS 194-026. Intro to Computer Vision and Computational Photography

Catalog Description: Topics will vary semester to semester. See the Computer Science Division announcements.
Units: 1.0-4.0

• CS 194-100. EECS for All: Social Justice in EECS

Catalog Description: Topics will vary semester to semester. See the Computer Science Division announcements.
Units: 1.0-4.0

• CS 194-172. Computational Genomics

Catalog Description: Topics will vary semester to semester. See the Computer Science Division announcements.
Units: 1.0-4.0

• CS 194-175. Extra Topics on the Structure and Interpretation of Computer Programs

Catalog Description: Topics will vary semester to semester. See the Computer Science Division announcements.
Units: 1.0-4.0

• CS 194-177. Special Topics on Decentralized Finance

Catalog Description: Topics will vary semester to semester. See the Computer Science Division announcements.
Units: 1.0-4.0

• CS 194-196. Special Topics on Science and Technology of Decentralization and Decentralized Intelligence

Catalog Description: Topics will vary semester to semester. See the Computer Science Division announcements.
Units: 1.0-4.0

• CS 194-198. Networks: Models, Processes & Algorithms

Catalog Description: Topics will vary semester to semester. See the Computer Science Division announcements.
Units: 1.0-4.0

• CS 195. Social Implications of Computer Technology

Catalog Description: Topics include electronic community; the changing nature of work; technological risks; the information economy; intellectual property; privacy; artificial intelligence and the sense of self; pornography and censorship; professional ethics. Students will lead discussions on additional topics.
Units: 1.0

• CS H195. Honors Social Implications of Computer Technology

Catalog Description: Topics include electronic community; the changing nature of work; technological risks; the information economy; intellectual property; privacy; artificial intelligence and the sense of self; pornography and censorship; professional ethics. Students may lead discussions on additional topics.
Units: 3.0

• CS H196A. Senior Honors Thesis Research

Catalog Description: Thesis work under the supervision of a faculty member. To obtain credit the student must, at the end of two semesters, submit a satisfactory thesis to the Electrical Engineering and Computer Science department archive. A total of four units must be taken. The units many be distributed between one or two semesters in any way. H196A-H196B count as graded technical elective units, but may not be used to satisfy the requirement for 27 upper division technical units in the College of Letters and Science with a major in Computer Science.
Units: 1-4

• CS H196B. Senior Honors Thesis Research

Catalog Description: Thesis work under the supervision of a faculty member. To obtain credit the student must, at the end of two semesters, submit a satisfactory thesis to the Electrical Engineering and Computer Science department archive. A total of four units must be taken. The units many be distributed between one or two semesters in any way. H196A-H196B count as graded technical elective units, but may not be used to satisfy the requirement for 27 upper division technical units in the College of Letters and Science with a major in Computer Science.
Units: 1-4

• CS 197. Field Study

Catalog Description: Students take part in organized individual field sponsored programs with off-campus companies or tutoring/mentoring relevant to specific aspects and applications of computer science on or off campus. Note Summer CPT or OPT students: written report required. Course does not count toward major requirements, but will be counted in the cumulative units toward graduation.
Units: 1-4

Catalog Description: Group study of selected topics in Computer Sciences, usually relating to new developments.
Units: 1-4

• CS 198-001. iOS DeCal

Catalog Description: Group study of selected topics in Computer Sciences, usually relating to new developments.
Units: 1-4

• CS 198-003. UCBUGG: 3D Modeling and Animation

Catalog Description: Group study of selected topics in Computer Sciences, usually relating to new developments.
Units: 1-4

• CS 198-008. Linux System Administration DeCal

Catalog Description: Group study of selected topics in Computer Sciences, usually relating to new developments.
Units: 1-4

• CS 198-056. Web Design DeCal

Catalog Description: Group study of selected topics in Computer Sciences, usually relating to new developments.
Units: 1-4

• CS 198-061. CS Scholars Section

Catalog Description: Group study of selected topics in Computer Sciences, usually relating to new developments.
Units: 1-4

• CS 198-062. CS Scholars

Catalog Description: Group study of selected topics in Computer Sciences, usually relating to new developments.
Units: 1-4

• CS 198-071. Going Down the EECS Stack DeCal

Catalog Description: Group study of selected topics in Computer Sciences, usually relating to new developments.
Units: 1-4

• CS 198-071. Going Down the EECS Stack

Catalog Description: Group study of selected topics in Computer Sciences, usually relating to new developments.
Units: 1-4

• CS 198-073. Cloud Computing and SaaS

Catalog Description: Group study of selected topics in Computer Sciences, usually relating to new developments.
Units: 1-4

• CS 198-074. ANova DeCal

Catalog Description: Group study of selected topics in Computer Sciences, usually relating to new developments.
Units: 1-4

• CS 198-075. Cubstart: Introduction to Building Apps

Catalog Description: Group study of selected topics in Computer Sciences, usually relating to new developments.
Units: 1-4

• CS 198-080. Extended Reality Development DeCal

Catalog Description: Group study of selected topics in Computer Sciences, usually relating to new developments.
Units: 1-4

• CS 198-097. Robot Autonomous Racing DeCal

Catalog Description: Group study of selected topics in Computer Sciences, usually relating to new developments.
Units: 1-4

• CS 198-098. Digital Privacy

Catalog Description: Group study of selected topics in Computer Sciences, usually relating to new developments.
Units: 1-4

• CS 198-099. Introduction to Full Stack Development

Catalog Description: Group study of selected topics in Computer Sciences, usually relating to new developments.
Units: 1-4

• CS 198-100. Recommendation Systems in Machine Learning DeCal

Catalog Description: Group study of selected topics in Computer Sciences, usually relating to new developments.
Units: 1-4

• CS 198-101. Algorithmic Fairness and the Genome (1 hour version)

Catalog Description: Group study of selected topics in Computer Sciences, usually relating to new developments.
Units: 1-4

• CS 198-102. Algorithmic Fairness and the Genome (2 hour version)

Catalog Description: Group study of selected topics in Computer Sciences, usually relating to new developments.
Units: 1-4

• CS 198-104. Cooperative Games DeCal

Catalog Description: Group study of selected topics in Computer Sciences, usually relating to new developments.
Units: 1-4

• CS 198-108. The Missing Semester Of Your CS Education

Catalog Description: Group study of selected topics in Computer Sciences, usually relating to new developments.
Units: 1-4

• CS 198-112. Introduction to Algorithmic Thinking

Catalog Description: Group study of selected topics in Computer Sciences, usually relating to new developments.
Units: 1-4

• CS 199. Supervised Independent Study

Catalog Description: Supervised independent study. Enrollment restrictions apply.
Units: 1-4

• CS C200A. Principles and Techniques of Data Science

Catalog Description: Explores the data science lifecycle: question formulation, data collection and cleaning, exploratory, analysis, visualization, statistical inference, prediction, and decision-making. Focuses on quantitative critical thinking and key principles and techniques: languages for transforming, querying and analyzing data; algorithms for machine learning methods: regression, classification and clustering; principles of informative visualization; measurement error and prediction; and techniques for scalable data processing. Research term project.
Units: 4.0

• CS C249A. Introduction to Embedded Systems

Catalog Description: This course introduces students to the basics of models, analysis tools, and control for embedded systems operating in real time. Students learn how to combine physical processes with computation. Topics include models of computation, control, analysis and verification, interfacing with the physical world, mapping to platforms, and distributed embedded systems. The course has a strong laboratory component, with emphasis on a semester-long sequence of projects.
Units: 4.0

• CS 250. VLSI Systems Design

Catalog Description: Unified top-down and bottom-up design of integrated circuits and systems concentrating on architectural and topological issues. VLSI architectures, systolic arrays, self-timed systems. Trends in VLSI development. Physical limits. Tradeoffs in custom-design, standard cells, gate arrays. VLSI design tools.
Units: 4.0

• CS 252. Graduate Computer Architecture

Catalog Description: Graduate survey of contemporary computer organizations covering: early systems, CPU design, instruction sets, control, processors, busses, ALU, memory, I/O interfaces, connection networks, virtual memory, pipelined computers, multiprocessors, and case studies. Term paper or project is required.
Units: 4.0

• CS 252A. Graduate Computer Architecture

Catalog Description: Graduate survey of contemporary computer organizations covering: early systems, CPU design, instruction sets, control, processors, busses, ALU, memory, I/O interfaces, connection networks, virtual memory, pipelined computers, multiprocessors, and case studies. Term paper or project is required.
Units: 4.0

• CS 260A. User Interface Design and Development

Catalog Description: The design, implementation, and evaluation of user interfaces. User-centered design and task analysis. Conceptual models and interface metaphors. Usability inspection and evaluation methods. Analysis of user study data. Input methods (keyboard, pointing, touch, tangible) and input models. Visual design principles. Interface prototyping and implementation methodologies and tools. Students will develop a user interface for a specific task and target user group in teams.
Units: 4.0

• CS 260B. Human-Computer Interaction Research

Catalog Description: This course is a broad introduction to conducting research in Human-Computer Interaction. Students will become familiar with seminal and recent literature; learn to review and critique research papers; re-implement and evaluate important existing systems; and gain experience in conducting research. Topics include input devices, computer-supported cooperative work, crowdsourcing, design tools, evaluation methods, search and mobile interfaces, usable security, help and tutorial systems.
Units: 3.0

• CS 261. Security in Computer Systems

Catalog Description: Graduate survey of modern topics in computer security, including protection, access control, distributed access security, firewalls, secure coding practices, safe languages, mobile code, and case studies from real-world systems. May also cover cryptographic protocols, privacy and anonymity, and/or other topics as time permits.
Units: 3.0

• CS 261N. Internet and Network Security

Catalog Description: Develops a thorough grounding in Internet and network security suitable for those interested in conducting research in the area or those more broadly interested in security or networking. Potential topics include denial-of-service; capabilities; network intrusion detection/prevention; worms; forensics; scanning; traffic analysis; legal issues; web attacks; anonymity; wireless and networked devices; honeypots; botnets; scams; underground economy; attacker infrastructure; research pitfalls.
Units: 4.0

• CS 262A. Advanced Topics in Computer Systems

Catalog Description: Graduate survey of systems for managing computation and information, covering a breadth of topics: early systems; volatile memory management, including virtual memory and buffer management; persistent memory systems, including both file systems and transactional storage managers; storage metadata, physical vs. logical naming, schemas, process scheduling, threading and concurrency control; system support for networking, including remote procedure calls, transactional RPC, TCP, and active messages; security infrastructure; extensible systems and APIs; performance analysis and engineering of large software systems. Homework assignments, exam, and term paper or project required.
Units: 4.0

• CS 262B. Advanced Topics in Computer Systems

Catalog Description: Continued graduate survey of large-scale systems for managing information and computation. Topics include basic performance measurement; extensibility, with attention to protection, security, and management of abstract data types; index structures, including support for concurrency and recovery; parallelism, including parallel architectures, query processing and scheduling; distributed data management, including distributed and mobile file systems and databases; distributed caching; large-scale data analysis and search. Homework assignments, exam, and term paper or project required.
Units: 3.0

• CS 263. Design of Programming Languages

Catalog Description: Selected topics from: analysis, comparison, and design of programming languages, formal description of syntax and semantics, advanced programming techniques, structured programming, debugging, verification of programs and compilers, and proofs of correctness.
Units: 3.0

• CS 264. Implementation of Programming Languages

Catalog Description: Compiler construction. Lexical analysis, syntax analysis. Semantic analysis code generation and optimization. Storage management. Run-time organization.
Units: 4.0

• CS 265. Compiler Optimization and Code Generation

Catalog Description: Table-driven and retargetable code generators. Register management. Flow analysis and global optimization methods. Code optimization for advanced languages and architectures. Local code improvement. Optimization by program transformation. Selected additional topics. A term paper or project is required.
Units: 3.0

• CS C267. Applications of Parallel Computers

Catalog Description: Models for parallel programming. Overview of parallelism in scientific applications and study of parallel algorithms for linear algebra, particles, meshes, sorting, FFT, graphs, machine learning, etc. Survey of parallel machines and machine structures. Programming shared- and distributed-memory parallel computers, GPUs, and cloud platforms. Parallel programming languages, compilers, libraries and toolboxes. Data partitioning techniques. Techniques for synchronization and load balancing. Detailed study and algorithm/program development of medium sized applications.
Units: 3.0

• CS W267. Applications of Parallel Computers

Catalog Description: Parallel programming, from laptops to supercomputers to the cloud. Goals include writing programs that run fast while minimizing programming effort. Parallel architectures and programming languages and models, including shared memory (eg OpenMP on your multicore laptop), distributed memory (MPI and UPC on a supercomputer), GPUs (CUDA and OpenCL), and cloud (MapReduce, Hadoop and Spark). Parallel algorithms and software tools for common computations (eg dense and sparse linear algebra, graphs, structured grids). Tools for load balancing, performance analysis, debugging. How high level applications are built (eg climate modeling). On-line lectures and office hours.
Units: 3.0

• CS 268. Computer Networks

Catalog Description: Distributed systems, their notivations, applications, and organization. The network component. Network architectures. Local and long-haul networks, technologies, and topologies. Data link, network, and transport protocols. Point-to-point and broadcast networks. Routing and congestion control. Higher-level protocols. Naming. Internetworking. Examples and case studies.
Units: 3.0

• CS 270. Combinatorial Algorithms and Data Structures

Catalog Description: Design and analysis of efficient algorithms for combinatorial problems. Network flow theory, matching theory, matroid theory; augmenting-path algorithms; branch-and-bound algorithms; data structure techniques for efficient implementation of combinatorial algorithms; analysis of data structures; applications of data structure techniques to sorting, searching, and geometric problems.
Units: 3.0

• CS 271. Randomness and Computation

Catalog Description: Computational applications of randomness and computational theories of randomness. Approximate counting and uniform generation of combinatorial objects, rapid convergence of random walks on expander graphs, explicit construction of expander graphs, randomized reductions, Kolmogorov complexity, pseudo-random number generation, semi-random sources.
Units: 3.0

• CS 273. Foundations of Parallel Computation

Catalog Description: <Formerly 292K>. Fundamental theoretical issues in designing parallel algorithms and architectures. Shared memory models of parallel computation. Parallel algorithms for linear algegra, sorting, Fourier Transform, recurrence evaluation, and graph problems. Interconnection network based models. Algorithm design techniques for networks like hypercubes, shuffle-exchanges, threes, meshes and butterfly networks. Systolic arrays and techniques for generating them. Message routing.
Units: 3.0

• CS 274. Computational Geometry

Catalog Description: <Formerly 292T>. Constructive problems in computational geometry: convex hulls, triangulations, Voronoi diagrams, arrangements of hyperplanes; relationships among these problems. Search problems: advanced data structures; subdivision search; various kinds of range searches. Models of computation; lower bounds.
Units: 3.0

• CS 276. Cryptography

Catalog Description: Graduate survey of modern topics on theory, foundations, and applications of modern cryptography. One-way functions; pseudorandomness; encryption; authentication; public-key cryptosystems; notions of security. May also cover zero-knowledge proofs, multi-party cryptographic protocols, practical applications, and/or other topics, as time permits.
Units: 3.0

• CS C280. Computer Vision

Catalog Description: Paradigms for computational vision. Relation to human visual perception. Mathematical techniques for representing and reasoning, with curves, surfaces and volumes. Illumination and reflectance models. Color perception. Image segmentation and aggregation. Methods for bottom-up three dimensional shape recovery: Line drawing analysis, stereo, shading, motion, texture. Use of object models for prediction and recognition.
Units: 3.0

• CS C281A. Statistical Learning Theory

Catalog Description: Classification regression, clustering, dimensionality, reduction, and density estimation. Mixture models, hierarchical models, factorial models, hidden Markov, and state space models, Markov properties, and recursive algorithms for general probabilistic inference nonparametric methods including decision trees, kernal methods, neural networks, and wavelets. Ensemble methods.
Units: 3.0

• CS C281B. Advanced Topics in Learning and Decision Making

Catalog Description: Recent topics include: Graphical models and approximate inference algorithms. Markov chain Monte Carlo, mean field and probability propagation methods. Model selection and stochastic realization. Bayesian information theoretic and structural risk minimization approaches. Markov decision processes and partially observable Markov decision processes. Reinforcement learning.
Units: 3.0

• CS 282A. Designing, Visualizing and Understanding Deep Neural Networks

Catalog Description: Deep Networks have revolutionized computer vision, language technology, robotics and control. They have growing impact in many other areas of science and engineering. They do not however, follow a closed or compact set of theoretical principles. In Yann Lecun's words they require "an interplay between intuitive insights, theoretical modeling, practical implementations, empirical studies, and scientific analyses." This course attempts to cover that ground.
Units: 4.0

• CS 284A. Foundations of Computer Graphics

Catalog Description: Techniques of modeling objects for the purpose of computer rendering: boundary representations, constructive solids geometry, hierarchical scene descriptions. Mathematical techniques for curve and surface representation. Basic elements of a computer graphics rendering pipeline; architecture of modern graphics display devices. Geometrical transformations such as rotation, scaling, translation, and their matrix representations. Homogeneous coordinates, projective and perspective transformations.
Units: 4.0

• CS 284B. Advanced Computer Graphics Algorithms and Techniques

Catalog Description: This course provides a graduate-level introduction to advanced computer graphics algorithms and techniques. Students should already be familiar with basic concepts such as transformations, scan-conversion, scene graphs, shading, and light transport. Topics covered in this course include global illumination, mesh processing, subdivision surfaces, basic differential geometry, physically based animation, inverse kinematics, imaging and computational photography, and precomputed light transport.
Units: 4.0

• CS 285. Deep Reinforcement Learning, Decision Making, and Control

Catalog Description: Intersection of control, reinforcement learning, and deep learning. Deep learning methods, which train large parametric function approximators, achieve excellent results on problems that require reasoning about unstructured real-world situations (e.g., computer vision, speech recognition, NLP). Advanced treatment of the reinforcement learning formalism, the most critical model-free reinforcement learning algorithms (policy gradients, value function and Q-function learning, and actor-critic), a discussion of model-based reinforcement learning algorithms, an overview of imitation learning, and a range of advanced topics (e.g., exploration, model-based learning with video prediction, transfer learning, multi-task learning, and meta-learning).
Units: 3.0

• CS 286A. Introduction to Database Systems

Catalog Description: Access methods and file systems to facilitate data access. Hierarchical, network, relational, and object-oriented data models. Query languages for models. Embedding query languages in programming languages. Database services including protection, integrity control, and alternative views of data. High-level interfaces including application generators, browsers, and report writers. Introduction to transaction processing. Database system implementation to be done as term project.
Units: 4.0

• CS 286B. Implementation of Data Base Systems

Catalog Description: Implementation of data base systems on modern hardware systems. Considerations concerning operating system design, including buffering, page size, prefetching, etc. Query processing algorithms, design of crash recovery and concurrency control systems. Implementation of distributed data bases and data base machines.
Units: 3.0

Catalog Description: Advanced topics related to current research in algorithms and artificial intelligence for robotics. Planning, control, and estimation for realistic robot systems, taking into account: dynamic constraints, control and sensing uncertainty, and non-holonomic motion constraints.
Units: 3.0

• CS 287H. Algorithmic Human-Robot Interaction

Catalog Description: As robot autonomy advances, it becomes more and more important to develop algorithms that are not solely functional, but also mindful of the end-user. How should the robot move differently when it's moving in the presence of a human? How should it learn from user feedback? How should it assist the user in accomplishing day to day tasks? These are the questions we will investigate in this course. We will contrast existing algorithms in robotics with studies in human-robot interaction, discussing how to tackle interaction challenges in an algorithmic way, with the goal of enabling generalization across robots and tasks. We will also sharpen research skills: giving good talks, experimental design, statistical analysis, literature surveys.
Units: 4.0

• CS 288. Natural Language Processing

Catalog Description: Methods and models for the analysis of natural (human) language data. Topics include: language modeling, speech recognition, linguistic analysis (syntactic parsing, semantic analysis, reference resolution, discourse modeling), machine translation, information extraction, question answering, and computational linguistics techniques.
Units: 4.0

• CS 289A. Introduction to Machine Learning

Catalog Description: This course provides an introduction to theoretical foundations, algorithms, and methodologies for machine learning, emphasizing the role of probability and optimization and exploring a variety of real-world applications. Students are expected to have a solid foundation in calculus and linear algebra as well as exposure to the basic tools of logic and probability, and should be familiar with at least one modern, high-level programming language.
Units: 4.0

• CS 294. Special Topics

Catalog Description: Topics will vary from semester to semester. See Computer Science Division announcements.
Units: 1.0-4.0

• CS 294-026. Intro to Computer Vision and Computational Photography

Catalog Description: Topics will vary from semester to semester. See Computer Science Division announcements.
Units: 1.0-4.0

• CS 294-043. Vision and Language AI Seminar

Catalog Description: Topics will vary from semester to semester. See Computer Science Division announcements.
Units: 1.0-4.0

• CS 294-082. Experimental Design for Machine Learning on Multimedia Data

Catalog Description: Topics will vary from semester to semester. See Computer Science Division announcements.
Units: 1.0-4.0

• CS 294-137. Immersive Computing and Virtual Reality

Catalog Description: Topics will vary from semester to semester. See Computer Science Division announcements.
Units: 1.0-4.0

• CS 294-150. Machine Learning Meets Biology

Catalog Description: Topics will vary from semester to semester. See Computer Science Division announcements.
Units: 1.0-4.0

• CS 294-164. Computational Color

Catalog Description: Topics will vary from semester to semester. See Computer Science Division announcements.
Units: 1.0-4.0

• CS 294-167. Geometry and Learning for 3D Vision

Catalog Description: Topics will vary from semester to semester. See Computer Science Division announcements.
Units: 1.0-4.0

• CS 294-171. Privacy Preserving Systems

Catalog Description: Topics will vary from semester to semester. See Computer Science Division announcements.
Units: 1.0-4.0

• CS 294-177. Special Topics on Decentralized Finance

Catalog Description: Topics will vary from semester to semester. See Computer Science Division announcements.
Units: 1.0-4.0

• CS 294-182. Machine Learning and Econ

Catalog Description: Topics will vary from semester to semester. See Computer Science Division announcements.
Units: 1.0-4.0

• CS 294-184. Building User-Centered Programming Tools

Catalog Description: Topics will vary from semester to semester. See Computer Science Division announcements.
Units: 1.0-4.0

• CS 294-186. Algorithms and Inequality

Catalog Description: Topics will vary from semester to semester. See Computer Science Division announcements.
Units: 1.0-4.0

• CS 294-188. Design and Evaluation of Processes for Teaching Computer Science at Scale

Catalog Description: Topics will vary from semester to semester. See Computer Science Division announcements.
Units: 1.0-4.0

• CS 294-190. Advanced topics in learning and decision making

Catalog Description: Topics will vary from semester to semester. See Computer Science Division announcements.
Units: 1.0-4.0

• CS 294-192. Visual Scene Understanding

Catalog Description: Topics will vary from semester to semester. See Computer Science Division announcements.
Units: 1.0-4.0

• CS 294-194. From Research to Startup

Catalog Description: Topics will vary from semester to semester. See Computer Science Division announcements.
Units: 1.0-4.0

• CS 294-196. Special Topics on Science and Technology of Decentralization and Decentralized Intelligence

Catalog Description: Topics will vary from semester to semester. See Computer Science Division announcements.
Units: 1.0-4.0

• CS 294-202. Pseudorandomness

Catalog Description: Topics will vary from semester to semester. See Computer Science Division announcements.
Units: 1.0-4.0

• CS 294-204. Phase Transitions

Catalog Description: Topics will vary from semester to semester. See Computer Science Division announcements.
Units: 1.0-4.0

• CS 294-206. Intro to Research in Quantum Computation

Catalog Description: Topics will vary from semester to semester. See Computer Science Division announcements.
Units: 1.0-4.0

• CS 297. Field Studies in Computer Science

Catalog Description: Supervised experience in off-campus companies relevant to specific aspects and applications of electrical engineering and/or computer science. Written report required at the end of the semester.
Units: 0.0-12.0

• CS 298. Group Studies Seminars, or Group Research

Catalog Description: Advanced study in various subjects through seminars on topics to be selected each year, informal group studies of special problems, group participation in comprehensive design problems, or group research on complete problems for analysis and experimentation.
Units: 1.0-4.0

• CS 298-002. Theory Seminar

Catalog Description: Advanced study in various subjects through seminars on topics to be selected each year, informal group studies of special problems, group participation in comprehensive design problems, or group research on complete problems for analysis and experimentation.
Units: 1.0-4.0

• CS 298-007. Research Culture and Community Norms

Catalog Description: Advanced study in various subjects through seminars on topics to be selected each year, informal group studies of special problems, group participation in comprehensive design problems, or group research on complete problems for analysis and experimentation.
Units: 1.0-4.0

• CS 298-012. Database Seminar

Catalog Description: Advanced study in various subjects through seminars on topics to be selected each year, informal group studies of special problems, group participation in comprehensive design problems, or group research on complete problems for analysis and experimentation.
Units: 1.0-4.0

• CS 298-015. BAIR First-year Proseminar

Catalog Description: Advanced study in various subjects through seminars on topics to be selected each year, informal group studies of special problems, group participation in comprehensive design problems, or group research on complete problems for analysis and experimentation.
Units: 1.0-4.0

• CS 299. Individual Research

Catalog Description: Investigations of problems in computer science.
Units: 1.0-12.0

• CS 300. Teaching Practice

Catalog Description: Supervised teaching practice, in either a one-on-one tutorial or classroom discussion setting.
Units: 1-6

• CS 302. Designing Computer Science Education

Catalog Description: Discussion and review of research and practice relating to the teaching of computer science: knowledge organization and misconceptions, curriculum and topic organization, evaluation, collaborative learning, technology use, and administrative issues. As part of a semester-long project to design a computer science course, participants invent and refine a variety of homework and exam activities, and evaluate alternatives for textbooks, grading and other administrative policies, and innovative uses of technology.
Units: 3.0

• CS 370. Adaptive Instruction Methods in Computer Science

Catalog Description: This is a course for aspiring teachers or those who want to instruct with expertise from evidence-based research and proven equity-oriented practices. It provides pedagogical training by introducing the big ideas of teaching and learning, and illustrating how to put them into practice. The course is divided into three sections—instructing the individual; a group; and psycho-social factors that affect learning at any level. These sections are designed to enhance any intern’s, tutor’s, or TA’s teaching skillset. Class is discussion based, and covers theoretical and practical pedagogical aspects to teaching in STEM. An integral feature of the course involves providing weekly tutoring sessions.
Units: 3.0

• CS 375. Teaching Techniques for Computer Science

Catalog Description: Discussion and practice of techniques for effective teaching, focusing on issues most relevant to teaching assistants in computer science courses.
Units: 2.0

• CS 399. Professional Preparation: Supervised Teaching of Computer Science

Catalog Description: Discussion, problem review and development, guidance of computer science laboratory sections, course development, supervised practice teaching.

• CS 602. Individual Study for Doctoral Students

Catalog Description: Individual study in consultation with the major field adviser, intended to provide an opportunity for qualified students to prepare themselves for the various examinations required of candidates for the Ph.D. (and other doctoral degrees).
Units: 1-8

• EECS 16A. Designing Information Devices and Systems I

Catalog Description: This course and its follow-on course EECS16B focus on the fundamentals of designing modern information devices and systems that interface with the real world. Together, this course sequence provides a comprehensive foundation for core EECS topics in signal processing, learning, control, and circuit design while introducing key linear-algebraic concepts motivated by application contexts. Modeling is emphasized in a way that deepens mathematical maturity, and in both labs and homework, students will engage computationally, physically, and visually with the concepts being introduced in addition to traditional paper/pencil exercises. The courses are aimed at entering students as well as non-majors seeking a broad foundation for the field.
Units: 4.0

• EECS 16B. Designing Information Devices and Systems II

Catalog Description: This course is a follow-on to EECS 16A, and focuses on the fundamentals of designing and building modern information devices and systems that interface with the real world. The course sequence provides a comprehensive introduction to core EECS topics in machine learning, circuit design, control, and signal processing while developing key linear-algebraic concepts motivated by application contexts. Modeling is emphasized in a way that deepens mathematical maturity, and in both labs and homework, students will engage computationally, physically, and visually with the concepts being introduced in addition to traditional paper exercises. The courses are aimed at entering students as well as non-majors seeking a broad introduction to the field.
Units: 4.0

• EECS 47D. Completion of work in Electrical Engineering 16A

Catalog Description: This course allows students who have had a linear algebra and/or basic circuit theory course to complete the work in EE16A and be ready for EE16B or EE47E. The course focuses on the fundamentals of designing modern information devices and systems that interface with the real world and provides a comprehensive foundation for core EECS topics in signal processing, learning, control, and circuit design. Modeling is emphasized in a way that deepens mathematical maturity, and in both labs and homework, students will engage computationally, physically, and visually with the concepts being introduced in addition to traditional paper/pencil exercises.
Units: 1.0-3.0

• EECS 47D-001. Self-paced courses

Catalog Description: This course allows students who have had a linear algebra and/or basic circuit theory course to complete the work in EE16A and be ready for EE16B or EE47E. The course focuses on the fundamentals of designing modern information devices and systems that interface with the real world and provides a comprehensive foundation for core EECS topics in signal processing, learning, control, and circuit design. Modeling is emphasized in a way that deepens mathematical maturity, and in both labs and homework, students will engage computationally, physically, and visually with the concepts being introduced in addition to traditional paper/pencil exercises.
Units: 1.0-3.0

• EECS 47E. Completion of work in Electrical Engineering 16B

Catalog Description: This course allows students who have had a linear algebra and/or basic circuit theory course to complete the work in EE16B. The course focuses on the fundamentals of designing modern information devices and systems that interface with the real world and provides a comprehensive foundation for core EECS topics in signal processing (DFT), learning (SVD/PCA), feedback control, and circuit design. Modeling is emphasized in a way that deepens mathematical maturity, and in both labs and homework, students will engage computationally, physically, and visually with the concepts being introduced in addition to traditional paper/pencil exercises.
Units: 1.0-3.0

• EECS 47E-001. Self-paced courses

Catalog Description: This course allows students who have had a linear algebra and/or basic circuit theory course to complete the work in EE16B. The course focuses on the fundamentals of designing modern information devices and systems that interface with the real world and provides a comprehensive foundation for core EECS topics in signal processing (DFT), learning (SVD/PCA), feedback control, and circuit design. Modeling is emphasized in a way that deepens mathematical maturity, and in both labs and homework, students will engage computationally, physically, and visually with the concepts being introduced in addition to traditional paper/pencil exercises.
Units: 1.0-3.0

• EECS 47F. Completion of work in Computer Science 70

Catalog Description: This course allows students who have had a discrete math and/or probability course to complete the work in CS70. Logic, infinity, and induction; applications include undecidability and stable marriage problem. Modular arithmetic and GCDs; applications include primality testing and cryptography. Polynomials; examples include error correcting codes and interpolation. Probability including sample spaces, independence, random variables, law of large numbers; examples include load balancing, existence arguments, Bayesian inference.
Units: 1-3

• EECS 47F-001. Self-paced courses

Catalog Description: This course allows students who have had a discrete math and/or probability course to complete the work in CS70. Logic, infinity, and induction; applications include undecidability and stable marriage problem. Modular arithmetic and GCDs; applications include primality testing and cryptography. Polynomials; examples include error correcting codes and interpolation. Probability including sample spaces, independence, random variables, law of large numbers; examples include load balancing, existence arguments, Bayesian inference.
Units: 1-3

• EECS C106A. Introduction to Robotics

Catalog Description: This course is an introduction to the field of robotics. It covers the fundamentals of kinematics, dynamics, control of robot manipulators, robotic vision, sensing, forward & inverse kinematics of serial chain manipulators, the manipulator Jacobian, force relations, dynamics, & control. We will present techniques for geometric motion planning & obstacle avoidance. Open problems in trajectory generation with dynamic constraints will also be discussed. The course also presents the use of the same analytical techniques as manipulation for the analysis of images & computer vision. Low level vision, structure from motion, & an introduction to vision & learning will be covered. The course concludes with current applications of robotics.
Units: 4.0

• EECS C106B. Robotic Manipulation and Interaction

Catalog Description: The course is a sequel to EECS/BIOE/MEC106A/EECSC206A, which covers the mathematical fundamentals of robotics including kinematics, dynamics and control as well as an introduction to path planning, obstacle avoidance, and computer vision. This course will present several areas of robotics and active vision, at a deeper level and informed by current research. Concepts will include the review at an advanced level of robot control, the kinematics, dynamics and control of multi-fingered hands, grasping and manipulation of objects, mobile robots: including non-holonomic motion planning and control, path planning, Simultaneous Localization And Mapping (SLAM), and active vision. Additional research topics covered at the instructor's discretion.
Units: 4.0

• EECS 126. Probability and Random Processes

Catalog Description: This course covers the fundamentals of probability and random processes useful in fields such as networks, communication, signal processing, and control. Sample space, events, probability law. Conditional probability. Independence. Random variables. Distribution, density functions. Random vectors. Law of large numbers. Central limit theorem. Estimation and detection. Markov chains.
Units: 4.0

• EECS 127. Optimization Models in Engineering

Catalog Description: This course offers an introduction to optimization models and their applications, ranging from machine learning and statistics to decision-making and control, with emphasis on numerically tractable problems, such as linear or constrained least-squares optimization.
Units: 4.0

• EECS 149. Introduction to Embedded Systems

Catalog Description: This course introduces students to the basics of modeling, analysis, and design of embedded, cyber-physical systems. Students learn how to integrate computation with physical processes to meet a desired specification. Topics include models of computation, control, analysis and verification, interfacing with the physical world, real-time behaviors, mapping to platforms, and distributed embedded systems. The course has a strong laboratory component, with emphasis on a semester-long sequence of projects.
Units: 4.0

• EECS 151. Introduction to Digital Design and Integrated Circuits

Catalog Description: An introduction to digital and system design. The material provides a top-down view of the principles, components, and methodologies for large scale digital system design. The underlying CMOS devices and manufacturing technologies are introduced, but quickly abstracted to higher-levels to focus the class on design of larger digital modules for both FPGAs (field programmable gate arrays) and ASICs (application specific integrated circuits). The class includes extensive use of industrial grade design automation and verification tools for assignments, labs and projects. The class has two lab options: ASIC Lab (EECS 151LA) and FPGA Lab (EECS 151LB). Students must enroll in at least one of the labs concurrently with the class.
Units: 3.0

• EECS 151LA. Introduction to Digital Design and Integrated Circuits Lab

Catalog Description: This lab lays the foundation of modern digital design by first presenting the scripting and hardware description language base for specification of digital systems and interactions with tool flows. The labs are centered on a large design with the focus on rapid design space exploration. The lab exercises culminate with a project design, e.g., implementation of a three-stage RISC-V processor with a register file and caches. The design is mapped to simulation and layout specification.
Units: 2.0

• EECS 151LB. Introduction to Digital Design and Integrated Circuits Lab

Catalog Description: This lab covers the design of modern digital systems with Field-Programmable Gate Array (FPGA) platforms. A series of lab exercises provide the background and practice of digital design using a modern FPGA design tool flow. Digital synthesis, partitioning, placement, routing, and simulation tools for FPGAs are covered in detail. The labs exercises culminate with a large design project, e.g., an implementation of a full three-stage RISC-V processor system, with caches, graphics acceleration, and external peripheral components. The design is mapped and demonstrated on an FPGA hardware platform.
Units: 2.0

• EECS 206A. Introduction to Robotics

Catalog Description: This course is an introduction to the field of robotics. It covers the fundamentals of kinematics, dynamics, control of robot manipulators, robotic vision, sensing, forward & inverse kinematics of serial chain manipulators, the manipulator Jacobian, force relations, dynamics, & control. We will present techniques for geometric motion planning & obstacle avoidance. Open problems in trajectory generation with dynamic constraints will also be discussed. The course also presents the use of the same analytical techniques as manipulation for the analysis of images & computer vision. Low level vision, structure from motion, & an introduction to vision & learning will be covered. The course concludes with current applications of robotics.
Units: 4.0

• EECS 206B. Robotic Manipulation and Interaction

Catalog Description: This course is a sequel to EECS C106A/206A, which covers kinematics, dynamics and control of a single robot. This course will cover dynamics and control of groups of robotic manipulators coordinating with each other and interacting with the environment. Concepts will include an introduction to grasping and the constrained manipulation, contacts and force control for interaction with the environment. We will also cover active perception guided manipulation, as well as the manipulation of non-rigid objects. Throughout, we will emphasize design and human-robot interactions, and applications to applications in manufacturing, service robotics, tele-surgery, and locomotion.
Units: 4.0

• EECS 208. Computational Principles for High-dimensional Data Analysis

Catalog Description: Introduction to fundamental geometric and statistical concepts and principles of low-dimensional models for high-dimensional signal and data analysis, spanning basic theory, efficient algorithms, and diverse real-world applications. Systematic study of both sampling complexity and computational complexity for sparse, low-rank, and low-dimensional models – including important cases such as matrix completion, robust principal component analysis, dictionary learning, and deep networks.
Units: 4.0

• EECS 219C. Formal Methods: Specification, Verification, and Synthesis

Catalog Description: Introduction to the theory and practice of formal methods for the design and analysis of systems, with a focus on algorithmic techniques. Covers selected topics in computational logic and automata theory including modeling and specification formalisms, temporal logics, satisfiability solving, model checking, synthesis, learning, and theorem proving. Applications to software and hardware design, cyber-physical systems, robotics, computer security, and other areas will be explored as time permits.
Units: 3.0

• EECS 225A. Statistical Signal Processing

Catalog Description: This course connects classical statistical signal processing (Hilbert space filtering theory by Wiener and Kolmogorov, state space model, signal representation, detection and estimation, adaptive filtering) with modern statistical and machine learning theory and applications. It focuses on concrete algorithms and combines principled theoretical thinking with real applications.
Units: 3.0

• EECS 225B. Digital Image Processing

Catalog Description: This course deals with computational methods as applied to digital imagery. It focuses on image sensing and acquisition, image sampling and quantization; spatial transformation, linear and nonlinear filtering; introduction to convolutional neural networks, and GANs; applications of deep learning methods to image processing problems; image enhancement, histogram equalization, image restoration, Weiner filtering, tomography, image reconstruction from projections and partial Fourier information, Radon transform, multiresolution analysis, continuous and discrete wavelet transform and computation, subband coding, image and video compression, sparse signal approximation, dictionary techniques, image and video compression standards, and more.
Units: 3.0

• EECS 227AT. Optimization Models in Engineering

Catalog Description: This course offers an introduction to optimization models and their applications, ranging from machine learning and statistics to decision-making and control, with emphasis on numerically tractable problems, such as linear or constrained least-squares optimization.
Units: 4.0

• EECS 251A. Introduction to Digital Design and Integrated Circuits

Catalog Description: An introduction to digital circuit and system design. The material provides a top-down view of the principles, components, and methodologies for large scale digital system design. The underlying CMOS devices and manufacturing technologies are introduced, but quickly abstracted to higher levels to focus the class on design of larger digital modules for both FPGAs (field programmable gate arrays) and ASICs (application specific integrated circuits). The class includes extensive use of industrial grade design automation and verification tools for assignments, labs, and projects.
Units: 3.0

• EECS 251LA. Introduction to Digital Design and Integrated Circuits Lab

Catalog Description: This lab lays the foundation of modern digital design by first presenting the scripting and hardware description language base for specification of digital systems and interactions with tool flows. The labs are centered on a large design with the focus on rapid design space exploration. The lab exercises culminate with a project design, e.g. implementation of a 3-stage RISC-V processor with a register file and caches. The design is mapped to simulation and layout specification.
Units: 2.0

• EECS 251LB. Introduction to Digital Design and Integrated Circuits Lab

Catalog Description: This lab covers the design of modern digital systems with Field-Programmable Gate Array (FPGA) platforms. A series of lab exercises provide the background and practice of digital design using a modern FPGA design tool flow. Digital synthesis, partitioning, placement, routing, and simulation tools for FPGAs are covered in detail. The labs exercises culminate with a large design project, e.g., an implementation of a full 3-stage RISC-V processor system, with caches, graphics acceleration, and external peripheral components. The design is mapped and demonstrated on an FPGA hardware platform.
Units: 2.0