University of California, BerkeleyWebsiteAcademic Catalog
Electrical Engineering and Computer SciencesDepartment Website
BA Degree in Computer Sciencesource 1source 2source 3source 4
CS Courses
- The Structure and Interpretation of Computer ProgramsCS 61A (4)introCS 61A: The Structure and Interpretation of Computer Programs
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.
- Data StructuresorCS 61B (4)introCS 61B: Data Structures
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.
- Great Ideas of Computer Architecture (Machine Structures)CS 61C (4)introCS 61C: Great Ideas of Computer Architecture (Machine Structures)
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.
- orUser Interface Design and DevelopmentorCS 160 (4)humansCS 160: User Interface Design and Development
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.
Computer SecurityorCS 161 (4)sysCS 161: Computer SecurityIntroduction 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.
Operating Systems and System ProgrammingorCS 162 (4)sysCS 162: Operating Systems and System ProgrammingBasic 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.
Programming Languages and CompilersorCS 164 (4)plsCS 164: Programming Languages and CompilersSurvey 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.
Introduction to the Internet: Architecture and ProtocolsorCS 168 (4)sysCS 168: Introduction to the Internet: Architecture and ProtocolsThis 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).
Introduction to Software EngineeringorCS 169A (4)softengCS 169A: Introduction to Software EngineeringIdeas 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.
Software Engineering Team ProjectorCS 169L (4)softengCS 169L: Software Engineering Team ProjectOpen-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.
Intro to Computer Vision and Computational PhotographyorCS 180 (4)aiCS 180: Intro to Computer Vision and Computational PhotographyThis advanced undergraduate course introduces students to computing with visual data (images and video). We will cover acquisition, representation, and manipulation of visual information from digital photographs (image processing), image analysis and visual understanding (computer vision), and image synthesis (computational photography). Key algorithms will be presented, ranging from classical to contemporary, with an emphasis on using these techniques to build practical systems. The hands-on emphasis will be reflected in the programming assignments, where students will acquire their own images and develop, largely from scratch, image analysis and synthesis tools for real-world applications.
Designing, Visualizing and Understanding Deep Neural NetworksorCS 182 (4)aiCS 182: Designing, Visualizing and Understanding Deep Neural NetworksDeep 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.
Foundations of Computer GraphicsorCS 184 (4)graphicsCS 184: Foundations of Computer GraphicsTechniques 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.
Introduction to Database SystemsorCS 186 (4)sysCS 186: Introduction to Database SystemsAccess 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.
Introduction to Embedded and Cyber Physical SystemsorEECS 149 (4)engrEECS 149: Introduction to Embedded and Cyber Physical SystemsThis 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.
Introduction to Digital Design and Integrated CircuitsorEECS 151 (3)engrEECS 151: Introduction to Digital Design and Integrated CircuitsAn 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.
Introduction to RoboticsorEECS C106A (4)engrEECS C106A: Introduction to RoboticsThis 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.
Robotic Manipulation and InteractionorEECS C106B (4)engrEECS C106B: Robotic Manipulation and InteractionThe 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.
Integrated-Circuit DevicesorEE 130 (4)engrEE 130: Integrated-Circuit DevicesOverview of electronic properties of semiconductor. Metal-semiconductor contacts, pn junctions, bipolar transistors, and MOS field-effect transistors. Properties that are significant to device operation for integrated circuits. Silicon device fabrication technology.
Linear Integrated CircuitsorEE 140 (4)engrEE 140: Linear Integrated CircuitsSingle and multiple stage transistor amplifiers. Operational amplifiers. Feedback amplifiers, 2-port formulation, source, load, and feedback network loading. Frequency response of cascaded amplifiers, gain-bandwidth exchange, compensation, dominant pole techniques, root locus. Supply and temperature independent biasing and references. Selected applications of analog circuits such as analog-to-digital converters, switched capacitor filters, and comparators. Hardware laboratory and design project.
Microfabrication TechnologyorEE 143 (4)engrEE 143: Microfabrication TechnologyIntegrated circuit device fabrication and surface micromachining technology. Thermal oxidation, ion implantation, impurity diffusion, film deposition, expitaxy, lithography, etching, contacts and interconnections, and process integration issues. Device design and mask layout, relation between physical structure and electrical/mechanical performance. MOS transistors and poly-Si surface microstructures will be fabricated in the laboratory and evaluated.
Mechatronic Design LaboratoryorEE 192 (4)engrEE 192: Mechatronic Design LaboratoryDesign project course, focusing on application of theoretical principles in electrical engineering to control of a small-scale system, such as a mobile robot. Small teams of students will design and construct a mechatronic system incorporating sensors, actuators, and intelligence.
Feedback Control SystemsEE C128 (4)engrEE C128: Feedback Control SystemsAnalysis and synthesis of linear feedback control systems in transform and time domains. Control system design by root locus, frequency response, and state space methods. Applications to electro-mechanical and mechatronics systems.
- Designing Information Devices and Systems IorEECS 16A (4)engrEECS 16A: Designing Information Devices and Systems I
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.
Linear Algebra and Differential EquationsorMATH 54 (4)mathMATH 54: Linear Algebra and Differential EquationsBasic linear algebra; matrix arithmetic and determinants. Vector spaces; inner product spaces. Eigenvalues and eigenvectors; orthogonality, symmetric matrices. Linear second-order differential equations; first-order systems with constant coefficients. Fourier series.
Linear AlgebraMATH 56 (4)mathMATH 56: Linear AlgebraThis is a first course in Linear Algebra. Core topics include: algebra and geometry of vectors and matrices; systems of linear equations and Gaussian elimination; eigenvalues and eigenvectors; Gram-Schmidt and least squares; symmetric matrices and quadratic forms; singular value decomposition and other factorizations. Time permitting, additional topics may include: Markov chains and Perron-Frobenius, dimensionality reduction, or linear programming. This course differs from Math 54 in that it does not cover Differential Equations, but focuses on Linear Algebra motivated by first applications in Data Science and Statistics.
- 1 units from
Non-CS Upper Division Technical Elective
Math/Stat Courses
- CalculusMATH 1B (4)mathMATH 1B: Calculus
Continuation of 1A. Techniques of integration; applications of integration. Infinite sequences and series. First-order ordinary differential equations. Second-order ordinary differential equations; oscillation and damping; series solutions of ordinary differential equations.