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 9A-001. Self-paced courses

    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 9C-001. Self-paced courses

    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 9E-001. Self-paced courses

    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 9F-001. Self-paced courses

    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 9G-001. Self-paced courses

    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 9H-001. Self-paced courses

    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 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 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-001. Berkeley Through the Lens

    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. Berkeley through the Lens

    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. Is the Mind still a Mystery?

    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. Rule-Based and Generative Art

    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 39-001. Symmetry and Topology

    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 with sufficient partial credit in 61B may, with consent of instructor, complete the credit in this self-paced course.
    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 with sufficient partial credit in 61B may, with consent of instructor, complete the credit in this self-paced course.
    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: 2.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 98-052. Additional Topics in the Structure and Interpretation of Computer Programs

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

  • CS 194-026. Image Manipulation and Computational Photography

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

  • CS 194-028. Computational Design and Fabrication

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

  • CS 194-031. Technological and social networks: Theory and analysis

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

  • CS 194-034. Undergraduate Cryptography

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

  • 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

  • CS 198. Directed Group Studies for Advanced Undergraduates

    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-001. iOS Decal

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

  • CS 198-002. GamesCrafters

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

  • CS 198-002. Gamescrafters

    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 DeCal

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

  • CS 198-003. UCBUGG DeCal: 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. Hands-On UNIX System Administration DeCal

    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-041. Free Ventures DeCal

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

  • CS 198-047. Ruby on Rails DeCal

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

  • CS 198-052. Additional Topics on the Structure and Interpretation of Computer Programs

    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-058. 3D Printing and Design DeCal

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

  • CS 198-058. 3D Printing & 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 Group Study (61B)

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

  • CS 198-062. CS Scholars Group Study (70)

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

  • CS 198-067. Smash Bros DeCal: The Anatomy of a Video Game Success

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

  • CS 198-067. Smash Bros: The Anatomy of a Video Game Success

    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-074. ANova DeCal: Mentoring Youth in Computer Science

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

  • CS 198-075. DeCal: How to Build the Future

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

  • CS 198-075. Decal: How to Build the Future

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

  • CS 198-076. Game Design and Development DeCal

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

  • CS 198-077. Blockchain for Developers DeCal

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

  • CS 198-078. Blockchain Fundamentals DeCal

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

  • CS 198-079. The Poetry of Computer Science, The Computer Science of Poetry: Philosophy of Computation DeCal

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

  • CS 198-080. Virtual Reality DeCal

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

  • CS 198-082. Machine Learning DeCal

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

  • CS 198-083. Settlers of Catan DeCal

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

  • CS 198-085. Teaching Data Science: Modules (DeCal)

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

  • CS 198-085. Data Science Teaching and Consulting DeCal

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

  • CS 198-086. Titans of Cybersecurity DeCal

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

  • CS 198-087. Introduction to Mathematical Thinking DeCal

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

  • CS 198-088. Exploring Data Science and Social Good

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

  • CS 198-089. Introduction to Quantum Computing DeCal

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

  • CS 198-090. Impact of AI DeCal

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

  • CS 198-091. DeCal: Engineering Mentorship with High Schoolers

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

  • CS 198-092. Rubik's Cube/Speedcubing Decal

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

  • CS 198-303. 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-801. Data Science Foundations Seminar

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

  • CS 198-802. Data Science Pathways Seminar

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

  • CS 198-803. Data Science Discovery Seminar

    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 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. Fundamental algorithms for linear algebra, sorting, FFT, etc. Survey of parallel machines and machine structures. Exiting parallel programming languages, vectorizing compilers, environments, 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 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

  • CS 287. Advanced Robotics

    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 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-043. Visual Object and Activity Recognition

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

  • CS 294-112. Deep Reinforcement Learning

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

  • CS 294-119. Computational Design and Fabrication

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

  • CS 294-131. Special Topics in Deep Learning

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

  • CS 294-131. Deep Learning Seminar

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

  • CS 294-137. Theory and Applications of Virtual Reality and Immersive Computing

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

  • CS 294-141. Compilers for Everyone: Designing and Building Domain-Specific Languages

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

  • CS 294-144. Blockchain, Cryptoeconomics, and the Future of Techonology, Business and Law

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

  • CS 294-148. Topics in Machine-learning, Inverse-problems, and Data Analysis in Computational Neuro and Medical Imaging

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

  • CS 294-149. Safety and Control for Artificial General Intelligence

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

  • CS 294-150. Machine Learning and Statistics Meet Biology

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

  • CS 294-151. Blockchain and CryptoEconomics

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

  • CS 294-152. Lower Bounds: Beyond the Bootcamp

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

  • CS 294-153. Probabilistically Checkable and Interactive Proof Systems

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

  • CS 294-154. Sums of Squares: proofs and algorithms

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

  • CS 294-155. Law and Cryptography

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

  • CS 294-156. Advanced Topics on Secure Hardware

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

  • CS 294-157. Deep Learning and Program Synthesis

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

  • CS 294-158. Deep Unsupervised Learning

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

  • 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-4

  • CS 298-003. EECS Colloquium

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

  • CS 298-006. LA PACK 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-4

  • 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-4

  • 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. Introduction to Teaching 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 best 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 greatly affect learning at any level. These sections are designed to enhance any intern’s, tutor’s, or TA’s 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 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.0-3.0

  • 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.0-3.0

  • EECS C106A. Introduction to Robotics

    Catalog Description: An introduction to the kinematics, dynamics, and control of robot manipulators, robotic vision, and sensing. The course covers forward and inverse kinematics of serial chain manipulators, the manipulator Jacobian, force relations, dynamics, and control. It presents elementary principles on proximity, tactile, and force sensing, vision sensors, camera calibration, stereo construction, and motion detection. The course concludes with current applications of robotics in active perception, medical robotics, and other areas.
    Units: 4.0

  • EECS C106B. Robotic Manipulation and Interaction

    Catalog Description: This course is a sequel to EECS C106A/Bioengineering C106A, 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 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: An introduction to the kinematics, dynamics, and control of robot manipulators, robotic vision, and sensing. The course will cover forward and inverse kinematics of serial chain manipulators, the manipulator Jacobian, force relations, dynamics and control-position, and force control. Proximity, tactile, and force sensing. Network modeling, stability, and fidelity in teleoperation and medical 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 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 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