CS Curricula

←All schools

University of California, Santa BarbaraWebsiteAcademic Catalog

Computer ScienceDepartment Website

Majors

Courses

source 1source 2source 3

CMPSC 16: Problem Solving with Computers I (4) intro

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) intro

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 32: Object Oriented Design and Implementation (4) intro

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) theory

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) sys

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 111: Introduction to Computational Science (4) math

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 123: Overview of Computer Systems: Hardware and Software (4) sys

Basic computer architecture: CPU, memory, I/O. Basic operating systemsConcepts: processes, synchronization, memory management, virtual memory, file systems.

CMPSC 130A: Data Structures and Algorithms I (4) algs

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) algs

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) theory

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) sys

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) softeng

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 154: Computer Architecture (4) sys

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) softeng

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) pls

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) pls

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) ai

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) ai

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) sys

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) sys

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) softeng

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) sys

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) sys

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 176A: Introduction to Computer Communication Networks (4) sys

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) sys

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) sys

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) sys

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) math

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) graphics

Overview of OpenGL graphics standard, OpenGL statemachine, other 3D graphics libraries, 3D graphicspipeline, 3D transformations and clipping, colormodel, shading model, shadow algorithms, texturing,curves and curved surfaces, graphics hardware,interaction devices and techniques

CMPSC 181: Introduction to Computer Vision (4) ai

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) sys

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) sys

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) humans

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) capstone

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) capstone

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 190: Special Topics in Computer Science (4) special

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.

MATH 3A: Calculus with Applications, First Course (4) math

Differential Calculus including analytic geometry, functions and limits, derivatives, techniques and applications of differentiation; introduction to integration; logarithmic and trigonometric functions.

MATH 3B: Calculus with Applications, Second Course (4) math

Integral calculus including definite and indefinite integrals, techniques of integration; introduction to sequences and series; with applications in mathematics and physics.

MATH 4A: Linear Algebra with Applications (4) math

Systems of linear equations, matrix algebra, determinants, vector spaces and subspaces, basis and dimension, linear transformations, eigenvalues and eigenvectors, diagonalization, and orthogonality.

MATH 4B: Differential Equations (4) math

First and second order differential equations, separation of variables, linear differential equations, systems of first order equations, nonlinear differential equations and stability.

MATH 6A: Vector Calculus with Applications, First Course (4) math

Calculus of functions of several variables, vector valued functions of one variable, derivative and integrals of vector functions, double and triple integrals, properties and applications of integrals, change of variables.

PSTAT 120A: Probability and Statistics (4) math

Concepts of probability; random variables; combinatorial probability; discrete and continuous distributions; joint distributions, expected values; moment generating functions; law of large numbers and central limit theorems.

PSTAT 120B: Probability and Statistics (4) math

Distribution of sample mean and sample variance; t, chi-squared and F distributions; summarizing data by statistics and graphs; estimation theory for single samples: sufficiency, efficiency, consistency, method of moments, maximum likelihood; hypothesis testing: likelihood ratio test; confidence intervals.

ENGR 101: Ethics in Engineering (3) impact

The nature of moral value, normative judgment and moral reasoning. Theories of moral value. The engineer's role in society. Ethics in professional practice. Safety, risk, responsibility. Morality and career choice. Code of ethics. Case studies facilitate the comprehension of the concepts introduced.