ARCHIVED CATALOG: Visit catalog.ucsb.edu to view the 2023-2024 General Catalog.

UC Santa Barbara General CatalogUniversity of California, Santa Barbara

Computer Science - Engineering

Department of Computer Science, Harold Frank Hall, Room 2104;
Telephone (805) 893-4321
Web site: www.cs.ucsb.edu
Chair: Tevfik Bultan
Vice Chair: Chandra Krintz
Vice Chair: Ben Hardekopf


 

Some courses displayed may not be offered every year. For actual course offerings by quarter, please consult the Quarterly Class Search or GOLD (for current students). To see the historical record of when a particular course has been taught in the past, please visit the Course Enrollment Histories.

Computer Science
 (
Show All
 | 
Hide All
)
Collapse Courses Lower Division 
CMPSC 1. Seminar on the Field of Computer Science
(1) FRANKLIN
Overviews the potential of, and opportunities available from, the field of computer science. Topics include an overview of how computers work and the interesting ways in which computers can be applied to solve important and high-impact technological, social, and cutting-edge research problems.
CMPSC 2. Computational Thinking for Scientists
(4) EGECIOGLU
Prerequisite: Math 4A with a grade of C or better.
Introduction to the central concepts of computer science as they apply to a wide variety of human endeavors, including natural and physical sciences. Topics that interrelate central ideas from algorithms, performance and complexity, data structures, concurrency, languages and abstractions will be studied.
CMPSC 4. Computer Science Boot Camp
(4) KOC
An introduction to computational thinking, computing, data management, and problem solving using computers, for non-majors. Topics include coding basics, representing code and data using a computer, and applications of computing that are important to society.
CMPSC 5A. Introduction to Data Science 1
(4) STAFF
Enrollment Comments: Not open for credit to students who have completed Computer Science 8, Computer Science 16, Engineering 3, ECE 3, or equivalent (including AP CS A with a score of 4 or higher).
Introduction to data science methods and Python programming language for students with little to no experience in the subjects. Topics include foundational programming concepts, problem-solving strategies and code design, and data science concepts as table operations, exploratory data analysis, basic probability.
CMPSC 5B. Introduction to Data Science 2
(4) STAFF
Prerequisite: Computer Science 5A or Computer Science 8 or ECE 3 with a grade of C or better.
Students explore the data science lifecycle, including question formulation, data collection and cleaning, exploratory data analysis and visualization, statistical inference and prediction, and decision-making. The course focus is on transforming and analyzing data; machine learning methods including regression, classification and clustering; principles behind data visualizations; concepts of measurement error and prediction; and techniques for scalable data processing.
CMPSC 8. Introduction to Computer Science
(4) MIRZA
Enrollment Comments: Not open for credit to students who have completed Computer Science 16 or Engineering 3 or ECE 3.
Introduction to computer program development for students with little to no programming experience. Basic programming concepts, variables and expressions, data and control structures, algorithms, debugging, program design, and documentation.
CMPSC 9. Intermediate Python Programming
(4) R WANG
Prerequisite: Computer Science 8 or Engineering 3 with a grade of C or better.
Intermediate topics in Computer Science using the Python programming language. Topics include object oriented programming, runtime analysis, data structures, and software testing methodologies.
CMPSC 11AAZZ. Programming Language Laboratory
(1) STAFF
Prerequisite: Knowledge of at least one programming language.
Enrollment Comments: Different sections may be repeated. Sections not always offered.
A self-paced course to allow a student who already possesses a working knowledge of at least one programming language an opportunity to learn other languages of interest. Each section studies a different programming language.
CMPSC 11AD. Programming Language Laboratory: ADA
CMPSC 11AP. Programming Language Laboratory: APL
CMPSC 11C. Programming Language Laboratory
CMPSC 11CO. Programming Language Laboratory: COBOL
CMPSC 11FO. Programming Language Laboratory: Fortran
CMPSC 11JA. Programming Language Laboratory
CMPSC 11LI. Programming Language Laboratory: LISP
CMPSC 11PA. Programming Language Laboratory: Pascal
CMPSC 11PL. Programming Language Laboratory: PL/1
CMPSC 11SN. Programming Language Laboratory: SNOBOL
CMPSC 16. Problem Solving with Computers I
(4) MIRZA, KHARITONOVA
Prerequisite: Mathematics 3A or 2A with a grade of C or better (may be taken concurrently), CS 8 or Engineering 3 or ECE 3 with a grade of C or better, or significant prior programming experience.
Repeat Comments: Legal repeat of CMPSC 10.
Fundamental building blocks for solving problems using computers. Topics include basic computer organization and programming constructs: memory CPU, binary arithmetic, variables, expressions, statements, conditionals, iteration, functions, parameters, recursion, primitive and composite data types, and basic operating system and debugging tools.
CMPSC 24. Problem Solving with Computers II
(4) COSTANZO
Prerequisite: Computer Science 16 with a grade of C or better; and Mathematics 3B or 2B with a grade of C or better (may be taken concurrently).
Enrollment Comments: Not open for credit to students who have completed Computer Science 20.
Repeat Comments: This is a legal repeat of CMPSC 24A.
Intermediate building blocks for solving problems using computers. Topics include intermediate object-oriented programming, data structures, object-oriented design, algorithms for manipulating these data structures and their run-time analyses. Data structures introduced include stacks, queues, lists, trees, and sets.
CMPSC 24A. Problem Solving with Computers II
(4) WANG, RICHERT
Prerequisite: Computer Science 16 with a grade of C or better; and Mathematics 3B or 2B with a grade of C or better (may be taken concurrently).
Enrollment Comments: Not open for credit to students who have completed Computer Science 20.
Repeat Comments: This is a legal repeat of CS 24.
Intermediate building blocks for solving problems using computers. Topics include data structures, object-oriented design and development, algorithms for manipulating these data structures and their runtime analyses. Data structures introduced include stacks, queues, lists, trees, and sets.
CMPSC 32. Object Oriented Design and Implementation
(4) HOLLERER
Prerequisite: Computer Science 24 with a grade of C or better
Repeat Comments: Computer Science 32 is a legal repeat for Computer Science 60
Advanced topics in object-oriented computing. Topics include encapsulation, data hiding, inheritance, polymorphism, compilation, linking and loading, memory management, and debugging; recent advances in design and development tools, practices, libraries, and operating system support.
CMPSC 40. Foundations of Computer Science
(5) SU, VAN DAM
Prerequisite: Computer Science 16 with a grade of C or better and Mathematics 4A with a grade of C or better.
Introduction to the theoretical underpinnings of computer science. Topics include propositional predicate logic, set theory, functions and relations, counting, mathematical induction and recursion (generating functions).
CMPSC 64. Computer Organization and Logic Design
(4) ZHENG, FRANKLIN
Prerequisite: Computer Science 16 with a grade of C or better; and Mathematics 3C or 4A with a grade of C or better.
Enrollment Comments: Not open for credit to students who have completed ECE 15 or ECE 15B or Computer Science 30.
Repeat Comments: Course counts as a legal repeat of CMPSC 30.
Assembly language programming and advanced computer organization; Digital logic design topics including gates, combinational circuits, flip-flops, and the design and analysis of sequential circuits.
CMPSC 90AAZZ. Special Topics in Computer Science
(4) STAFF
Prerequisite: Consent of instructor.
Enrollment Comments: May be repeated for credit to a maximum of 32 units provided letter designations are different.
Provides for the study of topics of current interest in computer science: A. Foundations; B. Software Systems; C. Programming Languages and Software Engineering; D. Information Management; E. Architecture; F. Networking; G. Security; H. Scientific Computing; I. Intelligent and Interactive Systems; N. General.
CMPSC 90DA. Special Topics in Computer Science
CMPSC 90DB. Special Topics in Computer Science
CMPSC 95. Undergraduate Seminar in Computer Science
(1-4) STAFF
Prerequisite: Open to computer science and computer engineering majors only; consent of instructor.
Provides an overview of the history, technology, applications, and impact in various areas of computer science, including: A. Foundations, B. Software Systems, C. Programming languages and software engineering, D. Information management,E. Architecture, F. Networking G. Security, H. Scientific computing,I. Intelligent and interactive systems, J. History, N. General.
CMPSC 96. Undergraduate Research
(2-4) STAFF
Prerequisite: Consent of instructor.
Enrollment Comments: May be repeated for up to 12 units total. Does not apply toward any CS major degree requirements.
Research opportunities for undergraduate students. Students will be expected to give regular oral presentations, actively participate in a weekly seminar, and prepare at least one written report on their research.
CMPSC 99. Independent Studies in Computer Science
(1-4) STAFF
Enrollment Comments: Must have a minimum 3.0 grade point average. May be repeated. Students are limited to 5 units per quarter and 30 units total in all 99/198/199 courses combined.
Independent studies in computer science for advanced students.
Collapse Courses Upper Division 
CMPSC 100. Introduction to Teaching Methods in Computer Science
(4) MIRZA
Prerequisite: Consent of instructor.
Enrollment Comments: May be repeated to a maximum of 12 units.
Designed to train outstanding undergraduates for learning assistant positions in CS courses. Lecture/discussion surveys current research and best practices in CS pedagogy including student development theories, different pedagogical techniques, and methods for assessing learning. Students gain experience working one-on-one with students, fostering positive learning environments, and providing feedback on student work. Students who successfully complete this course will earn units by serving as an apprentice undergraduate learning assistant.
CMPSC 110. Introduction to Research in Computer Science
(4) MIRZA
Prerequisite: Computer Science 40 and Computer Science 32; consent of instructor.
Defining a CS research problem, finding and reading technical papers, oral communication, technical writing, and independent learning. Course participants work in teams as they apprentice with a CS research group to propose an original research problem and write a research proposal.
CMPSC 111. Introduction to Computational Science
(4) GILBERT
Prerequisite: Mathematics 4B with a grade of C or better; Mathematics 6A with a grade of C or better; Computer Science 24 with a grade of C or better.
Enrollment Comments: Not open for credit to students who have completed Computer Science 110A.
Introduction to the numerical algorithms that form the foundations of data science, machine learning, and computational science and engineering. Matrix computation, linear equation systems, eigenvalue and singular value decompositions, numerical optimization. The informed use of mathematical software environments and libraries, such as python/numpy/scipy.
CMPSC 130A. Data Structures and Algorithms I
(4) EL ABBADI
Prerequisite: Computer Science 40 with a grade of C or better; Computer Science 32 with a grade of C or better; PSTAT 120A or ECE 139; open to computer science, computer engineering, and electrical engineering majors only.
Data structures and applications with proofs of correctness and analysis. Hash tables, priority queues (heaps); balanced search trees. Graph traversal techniques and their applications.
CMPSC 130B. Data Structures and Algorithms II
(4) EGECIOGLU
Prerequisite: Computer Science 130A.
Design and analysis of computer algorithms. Correctness proofs and solution of recurrence relations. Design techniques; divide and conquer, greedy strategies, dynamic programming. Applications of techniques to problems from several disciplines. NP - completeness.
CMPSC 138. Automata and Formal Languages
(4) EGECIOGLU
Prerequisite: Computer Science 40 with a grade of C or better; open to Computer Science and Computer Engineering majors only.
Formal languages; finite automata and regular expressions; properties of regular languages; pushdown automata and context-free grammars; properties of context-free languages; introduction to Turing machines and computability.
CMPSC 140. Parallel Scientific Computing
(4) YANG T
Prerequisite: Mathematics 4B with a grade of C or better; Mathematics 6A with a grade of C or better; Computer Science 130A.
Enrollment Comments: Not open for credit to students who have completed Computer Science 110B.
Fundamentals of high performance computing and parallel algorithm design for numerical computation. Topics include parallel architectures and clusters, parallel programming with message-passing libraries and threads, program parallelization methodologies, parallel performance evaluation and optimization, parallel numerical algorithms and applications with different performance tradeoffs.
CMPSC 148. Computer Science Project
(4) CONRAD
Prerequisite: Computer Science 32 with a grade of C or better; open to Computer Science majors only.
Enrollment Comments: Not open for credit to students who have completed Computer Science 48 with a grade of C or better.
Repeat Comments: CMPSC 148 is a legal repeat of CMPSC 48.
Team-based project development. Topics include software engineering and professional development practices, interface design, advanced library support; techniques for team oriented design and development, testing and test driven development, and software reliability and robustness. Students present and demonstrate final projects.
CMPSC 153A. Hardware/Software Interface
(4) BREWER, KRINTZ
Prerequisite: Upper division standing in Computer Science, Computer Engineering or Electrical Engineering.
Enrollment Comments: Same course as ECE 153A.
Issues in interfacing computing systems and software to practical I/O interfaces. Rapid response, real-time events and management of tasks, threads, and scheduling required for efficient design of embedded software and systems is discussed. Techniques for highly constrained systems.
CMPSC 154. Computer Architecture
(4) STAFF
Prerequisite: Computer Science 32 with a grade of C or better; Computer Science 64 with a grade of C or better.
Enrollment Comments: Not open for credit to students who have received credit for ECE 154 or ECE 154A or ECE 154B.
Introduction to the architecture of computer systems. Topics include: central processing units, memory systems, channels and controllers, peripheral devices, interrupt systems, software versus hardware tradeoffs.
CMPSC 156. Advanced Applications Programming
(4) CONRAD
Prerequisite: Computer Science 24 and 32 with a grade of C or better; open to Computer Science and Computer Engineering majors only.
Enrollment Comments: Not open for credit to students who have completed Computer Science 20. Not open for credit to students who have completed Computer Science 56 with a grade of C or better.
Repeat Comments: CMPSC 156 is a legal repeat of CMPSC 56.
Advanced application programming using a high-level, virtual-machine-based language. Topics include generic programming, exception handling, automatic memory management, and application development, management, and maintenance tools, third-party library use, version control, software testing, issue tracking, code review, and working with legacy code.
CMPSC 160. Translation of Programming Languages
(4) SHERWOOD
Prerequisite: Computer Science 64 or Electrical Engineering 154 or Electrical Engineering 154A; Computer Science 130A; and Computer Science 138; open to computer science and computer engineering majors only.
Study of the structure of compilers. Topics include: lexical analysis; syntax analysis including LL and LR parsers; type checking; run-time environments; intermediate code generation; and compiler-construction tools.
CMPSC 162. Programming Languages
(4) KRINTZ, HARDEKOPF
Prerequisite: Computer Science 130A and 138; open to computer science and computer engineering majors only.
Concepts of programming languages: scopes, parameter passing, storage management; control flow, exception handling; encapsulation and modularization mechanisms; reusability through genericity and inheritance; type systems; programming paradigms (imperative, object-oriented, functional, and others). Emerging programming languages and their development infrastructures.
CMPSC 165A. Artificial Intelligence
(4) WANG YX
Prerequisite: Computer Science 130A
Introduction to the field of artificial intelligence, which seeks to understand and build intelligent computational systems. Topics include intelligent agents, problem solving and heuristic search, knowledge representation and reasoning, uncertainty and probabilistic reasoning, machine learning, reinforcement learning, and responsible AI.
CMPSC 165B. Machine Learning
(4) WANG W
Prerequisite: Computer Science 130A.
Recommended Preparation: Computer Science 111.
Covers the most important techniques of machine learning (ML) and includes discussions of: well-posed learning problems; artificial neural networks; concept learning and general to specific ordering; decision tree learning; genetic algorithms; Bayesian learning; analytical learning; and others.
CMPSC 170. Operating Systems
(4) KRUEGEL, ZHAO
Prerequisite: Computer Science 130A; and, Computer Science 154 or ECE 154A (may be taken concurrently); open to computer science, computer engineering or electrical engineering majors only.
Basic concepts of operating systems. The notion of a process; interprocess communication and synchronization; input-output, file systems, memory management.
CMPSC 171. Distributed Systems
(4) EL ABBADI
Prerequisite: Computer Science 130A.
Enrollment Comments: Not open for credit to students who have completed ECE 151.
Distributed systems architecture, distributed programming, network of computers, message passing, remote procedure calls, group communication, naming and membership problems, asynchrony, logical time, consistency, fault-tolerance, and recovery.
CMPSC 172. Software Engineering
(4) BULTAN
Prerequisite: Computer Science 130A. Open to Computer Science or Computer Engineering majors only, or by consent of department.
Recommended Preparation: Computer Science 130B.
Software engineering is concerned with long-term, large-scale programming projects. Software management, cost estimates, problem specification and analysis, system design techniques, system testing and performance evaluation, and system maintenance. Students will design, manage, and implement a medium-sized project.
CMPSC 174A. Fundamentals of Database Systems
(4) SU
Prerequisite: Computer Science 130A.
Recommended Preparation: Students are strongly encouraged to complete Computer Science 56 or Computer Science 156 prior to enrolling in Computer Science 174A.
Database system architectures, relational data model, relational algebra, relational calculus, SQL, QBE, query processing, integrity constraints (key constraints, referential integrity), database design, ER and object- oriented data model, functional dependence, lossless join and dependency preserving decompositions, Boyce-Codd and Third Normal Forms.
CMPSC 174B. Design and Implementation Techniques of Database Systems
(4) SU, YAN
Prerequisite: Computer Science 130B.
Recommended Preparation: Students are strongly encouraged to complete Computer Science 56 or Computer Science 156 prior to enrolling in Computer Science 174B.
Queries and processing, optimizer, cost models, execution plans, rewriting rules, access methods, spatial indexing; transactions, ACID properties, concurrency control, serializability, two-phase locking, timestamping, logging,checkpointing, transaction abort and commit, crash recovery; distributed databases.
CMPSC 174N. Introduction to Databases
(4) SU, JIANWEN
Prerequisite: Computer Science 130A (may be taken concurrently); or consent of instructor.
Enrollment Comments: Open to non-majors.
ER/object-oriented data modeling, relational data model, database design, query languages (algebra, calculus, SQL, QBE), updates and views, query processing, integrity constraints (key constraints, referential integrity), functional dependence, Boyce­-Codd and Third Normal Forms.
CMPSC 176A. Introduction to Computer Communication Networks
(4) ALMEROTH, BELDING
Prerequisite: CMPSC 32 with a grade of C or better; PSTAT 120A or ECE 139; open to computer science, electrical engineering, and computer engineering majors only.
Recommended Preparation: PSTAT 120B.
Enrollment Comments: Not open for credit to students who have completed Computer Science 176 or ECE 155 or ECE 155A.
Basic concepts in networking, the OSI model, error detection codes, flow control, routing, medium access control, and high-speed networks.
CMPSC 176B. Network Computing
(4) VIGNA, ZHAO
Prerequisite: Computer Science 176A.
Enrollment Comments: Not open for credit to students who have completed ECE 155B or 194W.
Focus on networking and web technologies used in the Internet. The class covers socket programming and web-based techniques that are used to build distributed applications.
CMPSC 176C. Advanced Topics in Internet Computing
(4) BELDING
Prerequisite: Computer Science 176A.
Recommended Preparation: Computer Science 176B, PSTAT 120A.
General overview of wireless and mobile networking, multimedia, security, multicast, quality of service, IPv6, and web caching. During the second half of the course, one or more of the above are studied in greater detail.
CMPSC 177. Computer Security
(4) KEMMERER
Prerequisite: Computer Science 170 (may be taken concurrently).
Introduction to the basics of computer security and privacy. Analysis of technical difficulties of producing secure computer information systems that provide guaranteed controlled sharing. Examination and critique of current systems, methods, certification.
CMPSC 178. Introduction to Cryptography
(4) EGECIOGLU
Prerequisite: Computer Science 24 with a grade of C or better; Computer Science 40 with a grade of C or better; and PSTAT 120A or 121A or ECE 139 or permission of instructor.
An introduction to the basic concepts and techniques of cryptography and cryptanalysis. Topics include: The Shannon Theory, classical systems, the enigma machine, the data encryption standard, public key systems, digital signatures, file security.
CMPSC 180. Computer Graphics
(4) WANG
Prerequisite: Computer Science 130B or consent of instructor.
Overview of OpenGL graphics standard, OpenGL state machine, other 3D graphics libraries, 3D graphics pipeline, 3D transformations and clipping, color model, shading model, shadow algorithms, texturing, curves and curved surfaces, graphics hardware, interaction devices and techniques
CMPSC 181. Introduction to Computer Vision
(4) TURK, WANG
Prerequisite: Upper-division standing in Electrical Engineering, Computer Engineering, Computer Science, Chemical Engineering or Mechanical Engineering.
Enrollment Comments: Same course as ECE 181.
Repeat Comments: Not open for credit to students who have completed ECE/CMPSC 181B with a grade of C or better. ECE/CMPSC 181 is a legal repeat of ECE/CMPSC 181B.
Overview of computer vision problems and techniques for analyzing the content of images and video. Topics include image formation, edge detection, image segmentation, pattern recognition, texture analysis, optical flow, stereo vision, shape representation and recovery techniques, issues in object recognition, and case studies of practical vision systems.
CMPSC 182. Multimedia Computing
(4) ALMEROTH, ZHENG
Enrollment Comments: Not open for credit to students who have completed ECE 160.
Introduction to multimedia and applications. Topics include streaming media, conferencing, webcasting, digital libraries, multimedia system architectures, standards (including JPEG and MPEG), and multimedia storage and retrieval. A key emphasis is on using the internet for delivery of multimedia data. (First offered 2003-2004)
CMPSC 184. Mobile Application Development
(4) HOLLERER
Prerequisite: Computer Science 56 or Computer Science 156; and Computer Science 130A.
An introduction to programming mobile computing devices. Students will learn about and study the shift in software development from desktop to mobile device applications. Topics will include software engineering and design practices, advances in programming practice, and support tools for mobile application development and testing. Students will develop and deploy mobile applications as part of their course work.
CMPSC 185. Human-Computer Interaction
(4) HOLLERER
Prerequisite: Upper division standing; Open to computer science, computer engineering, and electrical engineering majors.
Recommended Preparation: Students are strongly encouraged to complete Computer Science 56 or Computer Science 156 prior to enrolling in Computer Science 185. Proficiency in the Java/C++ programming language, some experience with user interface programming.
The study of human-computer interaction enables system architects to design useful, efficient, and enjoyable computer interfaces. This course teaches the theory, design guidelines, programming practices, and evaluation procedures behind effective human interaction with computers.
CMPSC 189A. Senior Computer Systems Project
(4) BULTAN, KRINTZ
Prerequisite: Computer Science 48 or 56 or 148 or 156 or 172; Senior standing in computer science or computer engineering.
Enrollment Comments: Quarters usually offered: Fall. Not open for credit to students who have completed ECE 189A.
This course is the first in the 2-course Computer Science Capstone sequence. Student teams learn about modern software design and engineering techniques and work together to use them and their past educational experiences at UCSB to analyze, specify, design, and prototype innovative solutions to complex, real world problems using computers.
CMPSC 189B. Senior Computer Systems Project
(4) BULTAN, KRINTZ, VIGNA
Prerequisite: CMPSC 189A; Senior standing in Computer Science or Computer Engineering.
Enrollment Comments: Quarters usually offered: Winter. Not open for credit to students who have completed ECE 189A or ECE 189B.
This course is the second in the 2-course Computer Science Capstone sequence. Student teams continue their CMPSC 189A effort by evolving their specifications, design, and prototypes of advanced computer science solutions and systems. The students learn about interfaces, software integration, and testing, and prepare advanced demonstrations for public presentation at the end of the sequence.
CMPSC 190AAZZ. Special Topics in Computer Science
(4) STAFF
Prerequisite: Consent of instructor.
Enrollment Comments: May be repeated with consent of department chair.
Provides for the study of topics of current interest in computer science: A. Foundations; B. Software Systems; C. Programming Languages and Software Engineering; D. Information Management; E. Architecture; F. Networking; G. Security; H. Scientific Computing; I. Intelligent and Interactive Systems; N. General.
CMPSC 190A. Special Topics in Computer Science: Foundations
CMPSC 190B. Special Topics in Computer Science: Software Systems
CMPSC 190C. Special Topics in Computer Science: Programming Languages and Software Engineering
CMPSC 190D. Special Topics in Computer Science: Information Management
CMPSC 190DA. Special Topics in Computer Science
CMPSC 190DB. Special Topics in Computer Science
CMPSC 190DC. Special Topics in Computer Science
CMPSC 190DD. Special Topics in Computer Science
CMPSC 190DE. Special Topics in Computer Science
CMPSC 190DF. Special Topics in Computer Science
CMPSC 190E. Special Topics in Computer Science: Architectures
CMPSC 190F. Special Topics in Computer Science: Networking
CMPSC 190G. Special Topics in Computer Science: Security
CMPSC 190H. Special Topics in Computer Science: Scientific Computing
CMPSC 190I. Special Topics in Computer Science: Intelligent and Interactive Systems
CMPSC 190J. Special Topics in Computer Science: General
CMPSC 190K. Special Topics in Computer Science: Computer Systems Modeling and Analysis
CMPSC 190N. Special Topics in Computer Science: General
CMPSC 192. Projects in Computer Science
(1-5) STAFF
Prerequisite: Consent of instructor.
Enrollment Comments: May be repeated to a maximum of 8 units with consent of department chair. Students must have a minimum 3.0 GPA.
Projects in computer science for advanced undergraduate students.
CMPSC 193. Internship in Industry
(1-4) STAFF
Prerequisite: Consent of instructor and department chair.
Enrollment Comments: Not more than 4 units per quarter; may not be applied to science electives. May be repeated with faculty/chair approval to a maximum of 4 units.
Special projects for selected students. Offered in conjunction with selected industrial and research firms and under direct faculty supervision. Written proposal and final report required.
CMPSC 196. Undergraduate Research
(2-4) STAFF
Prerequisite: Students must: (1) have attained upper-division standing (2) have a minimum3.0 grade-point average for preceding three quarters, (3) have consent of instructor.
Enrollment Comments: May be repeated for up to 12 units. No more than 4 units may be applied to departmental electives.
Research opportunities for undergraduate students. Students will be expected to giveregular oral presentations, actively participate in a weekly seminar, and prepare at least one written report on their research.
CMPSC 196B. Undergraduate Research
(2-4) STAFF
Prerequisite: Students must: (1) have taken 4 letter graded units of CMPSC 196, (2) have consent of instructor
Enrollment Comments: Designed for majors. May be repeated for up to 12 units. No more than 4 units may be applied to departmental electives.
Advanced research for undergraduate students, by petition after completing a minimum of 4 units of CMPSC 196 for a letter grade. The student will propose a specific research project and make a public presentation of final results. Evaluation and grade will be based on feedback from faculty advisor and one other faculty member.
CMPSC 199. Independent Studies in Computer Science
(1-5) STAFF
Prerequisite: Upper-division standing; students must have completed at least two upper- division courses in computer science. May be repeated with consent of chair.
Enrollment Comments: Students are limited to five units per quarter and 30 units total in all 198/199 courses combined. Students must have a minimum 3.0 GPA for the preceding three quarters. May not be used for credit towards the major.
Independent studies in computer science for advanced students.
Collapse Courses Graduate 
CMPSC 209. Logic and Applications in Computer Science
(4) SU
Propositional logic, first order logic, completeness, compactness, incompleteness, undecidability; selected topics from finite model theory, theorem proving, logic programming, program verification, databases, computational complexity.
CMPSC 211A. Matrix Analysis and Computation
(4) STAFF,
Prerequisite: Consent of instructor.
Enrollment Comments: Students should be proficient in basic numerical methods, linear algebra, mathematically rigorous proofs, and some programming language. Same course as ECE 210A, ME 210A, Mathematics 206A, Chemical Engineering 211A, and Geology 251A.
Graduate level-matrix theory with introduction to matrix computations. SVD's, pseudoinverses, variational characterization of eigenvalues, perturbation theory, direct and iterative methods for matrix computations.
CMPSC 211B. Numerical Simulation
(4) PETZOLD
Prerequisite: Consent of instructor.
Enrollment Comments: Students should be proficient in basic numerical methods, linear algebra, mathematically rigorous proofs, and some programming language. Same course as ECE 210B, ME 210B, Mathematics 206B, Chemical Engineering 211B, and Geology 251B.
Linear multistep methods and Runge-Kutta methods for ordinary differential equations: stability, order and convergence. Stiffness. Differential algebraic equations. Numerical solution of boundary value problems.
CMPSC 211C. Numerical Solution of Partial Differential Equations--Finite Difference Methods
(4) STAFF,
Prerequisite: Consent of instructor.
Enrollment Comments: Students should be proficient in basic numerical methods, linear algebra, mathematically rigorous proofs, and some programming language. Same course as ECE 210C, ME 210C, Mathematics 206C, Chemical Engineering 211C, and Geology 251C.
Finite difference methods for hyperbolic, parabolic and elliptic PDE's, with application to problems in science and engineering. Convergence, consistency, order and stability offinite difference methods. Dissipation and dispersion. Finite volume methods. Software design and and adaptivity.
CMPSC 211D. Numerical Solution of Partial Differential Equations--Finite Element Methods
(4) STAFF,
Prerequisite: Consent of instructor.
Enrollment Comments: Students should be proficient in basic numerical methods, linear algebra, mathematically rigorous proofs, and some programming language. Same course as ECE 210D, ME 210D, Mathematics 206D, Chemical Engineering 211D, and Geology 251D.
Weighted residual and finite element methods for the solution of hyperbolic, parabolic and elliptical partial differential equations, with application to problems in science and engineering. Error Estimates. Standard and discontinuous Galerkin methods.
CMPSC 216. Level Set Methods
(4) GIBOU
Prerequisite: CMPSC 211C or CH E 211C or ECE 210C or ME 210C.
Enrollment Comments: Same course as CH E 226, ECE 226, and ME 216.
Mathematical description of the level set method and design of the numerical methods used in its implementations (ENO-WENO, Godunov, Lax-Friedrich, etc.). Introduction to the Ghost Fluid Method. Applications in CFD, Materials Sciences, Computer Vision and Computer Graphics.
CMPSC 219. Sparse Matrix Algorithms
(4) GILBERT
Theory, implementation, and applications of sparse matrix algorithms. Direct, iterative, preconditioned, and multilevel methods for solving large, sparse systems of linear equations. Tools include graph theory, linear algebra, and computer architecture; applications range from physical modeling to data mining.
CMPSC 220. Theory of Computation and Complexity
(4) IBARRA
Prerequisite: Computer Science 186.
Topics include: models of computation; time and space complexity classes (e.g., P, NP, CO-NP, and Pspace), efficient reducibilities, complete problems lower bounds; the polynomial hierarchy.
CMPSC 225. Information Theory
(4) VAN DAM
Prerequisite: ECE 139 or equivalent, or PSTAT 120A-B.
Enrollment Comments: Same course as ECE 205.
Entropy, mutual information, and Shannon's coding theorems; lossless source coding, Huffman, Shannon-Fano-Elias, and arithmetic codes; Channel capacity; rate-distortion theory, and lossy source coding; source-channel coding; algorithmic complexity and information; applications of information theory in various fields.
CMPSC 230. Approximations, NP-Completeness and Algorithms
(4) GONZALEZ
Prerequisite: Computer Science 130A-B.
Epsilon approximations, PTAS and FPTAS. Techniques for the design of approximation algrorithms. P, NP, NP-complete problems, polynomial transformations, Turing reductions, strong NP-completeness, NP-hardness and inapproximability results. Topics in algorithms include: amortized analysis, advanced graph algorithms and data structures.
CMPSC 231. Topics in Combinatorial Algorithms
(4) SURI
Prerequisite: Computer Science 130B.
Advanced topics in algorithm design, including network flows, matchings in graphs, linear and integer programming.
CMPSC 235. Computational Geometry
(4) SURI
Prerequisite: Computer Science 130A-B.
Algorithms and lower bound techniques in computational geometry; decision tree models of computation; geometric searching; point location and range search; convex hull and maxima of a point set; proximity algorithms; geometric intersections.
CMPSC 240A. Applied Parallel Computing
(4) GILBERT
Prerequisite: Computer Science 154 and 160.
Interdisciplinary introduction to applied parallel computing on modern supercomputers. Topics include applications-oriented architectural issues, MPI, parallel MATLAB, and parallel numerical algorithms. A course project emphasizes understanding the realities and myths of what is possible on the world's fastest machines.
CMPSC 254. Advanced Computer Architecture
(4) SHERWOOD
Prerequisite: CMPSC 154 or ECE 154.
Advanced instruction set architectures, pipelining, dynamic scheduling, branch prediction, superscalar issue, out-of-order execution, memory-hierarchy design, advanced cache architectures and prefetching. Several real designs are dissected and simulators are developed for performing quantitative evaluations of design decisions.
CMPSC 260. Advanced Topics in Program Analysis
(4) HARDEKOPF
Prerequisite: Computer Science 160 and 162.
Theoretical aspects of translation. Topics include: data flow analysis; control flow analysis; interprocedural analysis; optimization; type systems.
CMPSC 263. Runtime Systems
(4) KRINTZ
Prerequisite: Computer Science 154, 160, and 162.
Recommended Preparation: Conmputer Science 260.
Enrollment Comments: Computer Science 260 recommended.
Topics central to modern programming languages and their implementation: garbage collection; memory system performance; characteristics and optimization of object-oriented languages; type systems and type inference; run-time compilation.
CMPSC 265. Advanced Topics in Machine Intelligence
(4) TURK
Prerequisite: Computer Science 165A.
Enrollment Comments: May be repeated for credit.
Topics covered include advanced programming techniques for representing and reasoning about complex objects and various applications of such techniques, including expert systems, natural language processors, image understanding systems and machine learning.
CMPSC 266. Formal Specification and Verification
(4) KEMMERER
Prerequisite: Computer Science 130A-B; Computer Science 186.
Introduction to existing specification and verification systems, and the underlying theory and techniques of verifying the correctness of algorithms with respect to specifications. This subject can be considered as the combination of specification and verification techniques, programming language semantics and formal logic.
CMPSC 267. Automated Verification
(4) BULTAN
Prerequisite: Computer Science 130A-B and 138.
Covers automated verification algorithms and tools. Topics include: temporal logics, fixpoint characterizations of temporal properties, model checking, symbolic verification, explicit-state verification, verification using automated theorem provers, automated abstraction.
CMPSC 270. Operating Systems
(4) WOLSKI
Prerequisite: Computer Science 170
Develops an understanding of operating systems and operating systems research at both a conceptual level and from an engineering perspective. Fundamental design principles, culled primarily from the research literature, motivate an analysis of previous and current systems. This analysis is further validated through empirical investigation.
CMPSC 271. Advanced Topics in Distributed Systems
(4) EL ABBADI
Prerequisite: cmpsc 170.
Covers the fundamental problems in distributed systems and the various tools used to solve them. Of primary interest is the issue of fault-tolerance. Topics include event ordering, clocks, global states, agreement, fault-tolerance, and peer-to-peer systems.
CMPSC 272. Software Engineering
(4) BULTAN
Principles of software engineering disciplines emphasizing requirements analysis, specification design, coding, testing and correctness proofs, maintenance, and management. Students use a number of software engineering tools.
CMPSC 273. Data and Knowledge Bases
(4) SU
The focus is on the study of relational and post-relational data models and their query languages of different styles (algebraic, calculus, and deductive): complexity, expressive power, optimization, and database design.
CMPSC 274. Advanced Topics in Database Systems
(4) AGRAWAL, EL ABBADI
Prerequisite: Computer Science 170.
Topics include: data models, semantics, data integrity, database design, serializability theory, concurrency control, recovery, distributed databases.
CMPSC 276. Advanced Topics in Networking
(4) BELDING, ZHAO
Prerequisite: Computer Science 176A or 176B.
Focuses on advanced topics in networking. Topics may include, but are not limited to: Internet analysis, routing techniques, multimedia, approaches for network performance enhancements, and communication over new technologies.
CMPSC 279. Advanced Topics in Security
(4) VIGNA
Prerequisite: Computer Science 177.
Security analysis of networked systems. Analysis of techniques for network scanning, spoofing, hijacking, and denial-of-service attacks. Vulnerability analysis of applications and web-based systems. Intrusion detection and prevention techniques.
CMPSC 280. Computer Graphics
(4) HOLLERER
Prerequisite: Computer Science 180.
Special topics in computer graphics including: curves and curved surfaces; visual perception of colors and color models; shading models; shadow generation; texture mapping; solid textures; stereographics; helmet-mounteddisplay; graphics hardware/architecture; solid modeling; physically based modeling; fractals and graphtals; volume rendering; scientific visualization.
CMPSC 281. Advanced Topics in Computer Vision
(4) WANG
Prerequisite: ECE OR CMPSC 181
Enrollment Comments: Same course as ECE 281.
Topics in Computer Vision, including imaging and multi-view geometry; image and video segmentation; object detection, localization, and recognition; video activity recognition; machine learning models and methods applied to computer vision.
CMPSC 281B. Advanced Topics in Computer Vision
(4) TURK, WANG
Prerequisite: ECE OR CMPSC 181
Enrollment Comments: Same course as ECE 281B.
Advanced topics in computer vision: image sequence analysis, spatio-temporal filtering, camera calibration and hand-eye coordination, robot navigation, shape representation, physically-based modeling, regularization theory, multi-sensory fusion, biological models, expert vision systems, and other topics selected from recent research papers.
CMPSC 284. Mobile Computing
(4) BELDING
Prerequisite: Computer Science 176A or 176B.
Recommended Preparation: Computer Science 276.
Focuses on mobile computing. Topics may include, but are not limited to: mobile network characteristics, types of mobile networks, challenges and sollutions in mobile computing, and power conservation techniques.
CMPSC 285. Advanced Image Synthesis
(4) SEN
Prerequisite: Computer Graphics desired but not necessary
Theory and design of rendering systems for high-end image synthesis and modeling physically-based light transport. Topics include REYES-style architectures, Monte Carlo algorithms, variance reduction methods, path tracing, photon mapping, reflection and volumetric light transport. Students must have good software engineering skills.
CMPSC 291AAZZ. Special Topics in Computer Science, Applications
(4) STAFF
Prerequisite: None.
These courses provide for the study of topics of current interest in computer science applications. Topics are coded as follows: A. Applications, General; D. Database and Information Systems; G. Security and Cryptography; H. Computational Science and Engineering; I. Visual Computing and Interaction; K. Machine Learning and Data Mining.
CMPSC 291A. Special Topics in Computer Science, Applications, General
CMPSC 291D. Special Topics in Computer Science, Applications, Database and Information Systems
CMPSC 291G. Special Topics in Computer Science, Applications, Security and Cryptography
CMPSC 291H. Special Topics in Computer Science, Applications, Computational Science and Engineering
CMPSC 291I. Special Topics in Computer Science, Applications, Visual Computing and Interaction
CMPSC 291K. Special Topics in Computer Science, Applications
CMPSC 292AAZZ. Special Topics in Computer Science, Foundations
(4) STAFF
Prerequisite: None.
These courses provide for the study of topics of current interest in computer science foundations. Topics are coded as follows: C, Programming Languages and Software Engineering; F. Foundations, General; G. Security and Cryptography; H. Computational Science and Engineering.
CMPSC 292A. Special Topics in Computer Science, Foundations, Algorithms
CMPSC 292C. Special Topics in Computer Science, Foundations, Programming Languages and Software Engineering
CMPSC 292F. Special Topics in Computer Science, Foundations, General
CMPSC 292G. Special Topics in Computer Science, Foundations
CMPSC 292H. Special Topics in Computer Science, Foundations, Computational Science and Engineering
CMPSC 293AAZZ. Special Topics in Computer Science, Systems
(4) STAFF
Prerequisite: None.
These courses provide for the study of topics of current interest in computer science systems. Topics are coded as follows: B. Operating Systems and Distributed Systems; C, Programming Languages and Software Engineering; D. Database and Information Systems; E. Computer Architecture and Embedded Systems; G. Security and Cryptography; K. Machine Learning and Data Mining; N. Networking; S. Systems, General
CMPSC 293A. Special Topics in Computer Science, Systems
CMPSC 293B. Special Topics in Computer Science, Systems
CMPSC 293C. Special Topics in Computer Science, Systems, Programming Languages and Software Engineering
CMPSC 293D. Special Topics in Computer Science, Systems, Database and Information Systems
CMPSC 293E. Special Topics in Computer Science, Systems, Computer Architecture and Embedded Systems
CMPSC 293G. Special Topics in Computer Science, Systems, Security and Cryptography
CMPSC 293K. Special Topics in Computer Science, Systems, Machine Learning and Data Mining
CMPSC 293N. Special Topics in Computer Science, Systems
CMPSC 293S. Special Topics in Computer Science, Systems, General
CMPSC 501. Techniques of Computer Science Teaching
(1) STAFF
Enrollment Comments: This course is required for new teaching assistants, and may be taken only once. No unit credit allowed toward advanced degree.
An initial 1-2 day workshop on teaching techniques followed by a weekly seminar. Course emphasizes teaching skills, practical experience, and communication skills.
CMPSC 502. Teaching of Computer Science
(1-4) STAFF
Prerequisite: Computer Science 501.
Enrollment Comments: May be taken concurrently with Computer Science 501. No unit credit allowed toward advanced degree.
Procedures and techniques for teaching computer science gained through actual teaching of lecture courses, leading discussion sections, and/or teaching laboratories. Meetings will be held as needed to discuss problems,methods, and procedures.
CMPSC 592. Group Studies: Controls, Dynamical Systems, and Computation
(1) STAFF
Enrollment Comments: Same course as Chemical Engineering 295, ECE 295, and ME 295.
A series of weekly lectures given by university staff and outside experts in the fields of control systems, dynamical systems, and computation.
CMPSC 593. Computer Science Graduate Tutorial
(1-12) STAFF
Prerequisite: Consent of instructor or department chair.
Individual studies exploring topics in computer science with a faculty advisor.
CMPSC 594. Seminar in Computer Science
(1-5) STAFF
Prerequisite: Consent of instructor and advisor.
A seminar course offered on an irregular basis. Provides an in-depth discussion of advanced topics of general interest and broadens the scope ofknowledge in computer science.
CMPSC 595AAZZ. Group Studies in Computer Science
(2) STAFF
Prerequisite: Consent of instructor.
Special seminars focusing on topics of interest to faculty and graduate students. These seminars provide critical review of research in various areas of computer science: A. Foundations; B. Software Systems; C. Programming Languages and Software Engineering; D. Information Management; E. Architecture; F. Networking; G. Security; H. Scientific Computing; I. Intelligent and Interactive Systems; N. General
CMPSC 595A. Group Studies in Computer Science: Foundations
(2) STAFF
Prerequisite: Consent of instructor.
Special seminars focusing on topics of interest to faculty and graduate students. These seminars provide critical review of research in various areas of computer science.
CMPSC 595B. Group Studies in Computer Science: Software Systems
(2) STAFF
Prerequisite: Consent of instructor.
Special seminars focusing on topics of interest to faculty and graduate students. These seminars provide critical review of research in various areas of computer science.
CMPSC 595C. Group Studies in Computer Science: Programming Languages and Software Engineering
(2) STAFF
Prerequisite: Consent of instructor.
Special seminars focusing on topics of interest to faculty and graduate students. These seminars provide critical review of research in various areas of computer science.
CMPSC 595D. Group Studies in Computer Science
(2) STAFF
Prerequisite: Consent of instructor.
Special seminars focusing on topics of interest to faculty and graduate students. These seminars provide critical review of research in various areas of computer science.
CMPSC 595E. Group Studies in Computer Science: Architecture
(2) STAFF
Prerequisite: Consent of instructor.
Special seminars focusing on topics of interest to faculty and graduate students. These seminars provide critical review of research in various areas of computer science.
CMPSC 595F. Group Studies in Computer Science: Networking
(2) STAFF
Prerequisite: Consent of instructor.
Special seminars focusing on topics of interest to faculty and graduate students. These seminars provide critical review of research in various areas of computer science.
CMPSC 595G. Group Studies in Computer Science: Security
(2) STAFF
Prerequisite: Consent of instructor.
Special seminars focusing on topics of interest to faculty and graduate students. These seminars provide critical review of research in various areas of computer science.
CMPSC 595H. Group Studies in Computer Science: Scientific Computing
(2) STAFF
Prerequisite: Consent of instructor.
Special seminars focusing on topics of interest to faculty and graduate students. These seminars provide critical review of research in various areas of computer science.
CMPSC 595I. Group Studies in Computer Science: Intelligent and Interactive Systems
(2) STAFF
Prerequisite: Consent of instructor.
Special seminars focusing on topics of interest to faculty and graduate students. These seminars provide critical review of research in various areas of computer science.
CMPSC 595J. Group Studies in Computer Science: General
(2) STAFF
Prerequisite: Consent of instructor.
Instruction in these variable unit courses may be carried out by lecture, or by laboratory, or by a combination of the two. These courses provide critical review of research in various areas of computer science.
CMPSC 595K. Group Studies in Computer Science: Computer Systems Modeling and Analysis
(2) STAFF
Prerequisite: Consent of instructor.
Instruction in these variable unit courses may be carried out by lecture, or by laboratory, or by a combination of the two. These courses provide critical review of research in various areas of computer science.
CMPSC 595L. Group Studies in Computer Science
(2) STAFF
Prerequisite: Consent of instructor.
Instruction in these variable unit course may be carried out by lecture, or by laboratory, or by a combination of the two. These courses provide critical review of research in various areas of computer science.
CMPSC 595N. Group Studies in Computer Science: Faculty Research Seminar
CMPSC 595R. Group Studies in Computer Science
(2) STAFF
Prerequisite: Consent of instructor.
Enrollment Comments: May be repeated for credit if there is no duplication of course content.
Instruction in these variable unit course may be carried out by lecture, orby laboratory, or by a combination of the two. These courses provide critical review of research in various areas of computer science. See gcmps290AA-ZZ for list of topics. A: artificial intelligence. B: computer graphics. C: pattern recognition. D: program verification. E: computer architectures. F: algorithms and complexity. G: mathematical theory of computation. H: semantic models. I: software systems. J: general. K: computer systems modeling and analysis.
CMPSC 595Z. Group Studies in Computer Science
CMPSC 596. Directed Research
(2-12) STAFF
Research, either experimental or theoretical, may be undertaken by qualified graduate students under the direction of a faculty member.
CMPSC 597. Individual Studies for Master of Science Comprehensive Examinations and Ph.D Examinations
(1-12) STAFF
Enrollment Comments: No unit credit allowed toward advanced degree. Enrollment limited to 24 units per examination. Maximum of 12 units per quarter. S/U grading. Instructor is normally student's major professor or chair of doctoral committee.
Individual studies for M.S. comprehensive examination and Ph.D.
CMPSC 598. Master's Thesis Research and Preparation
(1-12) STAFF
Prerequisite: Consent of graduate advisor.
For research underlying the thesis and writing of the thesis.
CMPSC 599. Ph.D. Dissertation Research and Preparation
(1-12) STAFF
Prerequisite: Consent of chair of student's doctoral committee.
Research and preparation of dissertation.

 
Computer Science (Online)
 (
Show All
 | 
Hide All
)
Collapse Courses Lower Division 
CMPSCW 8. Introduction to Computer Science
(4) MIRZA
Enrollment Comments: Not open for credit to students who have completed Computer Science 16 or Engineering 3 or ECE 3.
Introduction to computer program development for students with little to no programming experience. Basic programming concepts, variables and expressions, data and control structures, algorithms, debugging, program design, and documentation.