University of California, Santa BarbaraWebsiteAcademic Catalog
Computer ScienceDepartment Website
BS Degree in Computer Sciencesource 1source 2source 3source 4
CS Courses
- Problem Solving with Computers ICMPSC 16 (4)introCMPSC 16: Problem Solving with Computers I
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.
- Problem Solving with Computers IICMPSC 24 (4)introCMPSC 24: Problem Solving with Computers II
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.
- Object Oriented Design and ImplementationCMPSC 32 (4)introCMPSC 32: Object Oriented Design and Implementation
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.
- Introduction to Computational ScienceorCMPSC 111 (4)mathCMPSC 111: Introduction to Computational Science
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.
Parallel Scientific ComputingCMPSC 140 (4)sysCMPSC 140: Parallel Scientific ComputingFundamentals 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.
- Data Structures and Algorithms IICMPSC 130B (4)algsCMPSC 130B: Data Structures and Algorithms II
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.
- Automata and Formal LanguagesCMPSC 138 (4)theoryCMPSC 138: Automata and Formal Languages
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.
- Computer Science ProjectorCMPSC 148 (4)softengCMPSC 148: Computer Science Project
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.
Advanced Applications ProgrammingorCMPSC 156 (4)softengCMPSC 156: Advanced Applications ProgrammingAdvanced 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.
Software EngineeringCMPSC 172 (4)softengCMPSC 172: Software EngineeringSoftware 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.
- Translation of Programming LanguagesorCMPSC 160 (4)plsCMPSC 160: Translation of Programming Languages
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.
Programming LanguagesCMPSC 162 (4)plsCMPSC 162: Programming LanguagesConcepts 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.
Math/Stat Courses
- Calculus with Applications, First CourseMATH 3A (4)mathMATH 3A: Calculus with Applications, First Course
Differential Calculus including analytic geometry, functions and limits, derivatives, techniques and applications of differentiation; introduction to integration; logarithmic and trigonometric functions.
- Vector Calculus with Applications, First CourseMATH 6A (4)mathMATH 6A: Vector Calculus with Applications, First Course
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.
- Foundations of Computer ScienceCMPSC 40 (5)theoryCMPSC 40: Foundations of Computer Science
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).
- Probability and StatisticsPSTAT 120A (4)mathPSTAT 120A: Probability and Statistics
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.
- Probability and StatisticsPSTAT 120B (4)mathPSTAT 120B: Probability and Statistics
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.
Engineering Courses
- Ethics in EngineeringENGR 101 (3)impactENGR 101: Ethics in Engineering
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.
Science Courses
- 5 × Science course
Other Courses
Program Outcomes
The program enables students to achieve, by the time of graduation:
- An ability to apply knowledge of computing and mathematics appropriate to computer science.
- An ability to analyze a problem, and identify and define the computing requirements appropriate to its solution.
- An ability to design, implement, and evaluate a computer-based system, process, component, or program to meet desired needs.
- An ability to function effectively on teams to accomplish a common goal.
- An understanding of professional, ethical, and social responsibilities.
- An ability to communicate effectively.
- An ability to analyze the impact of computing on individuals, organizations, and society, including ethical, legal, security, and global policy issue.
- Recognition of the need for and an ability to engage in continuing professional development.
- An ability to use current techniques, skills, and tools necessary for computing practice.
- An ability to apply mathematical foundations, algorithmic principles, and computer science theory in the modeling and design of computer-based systems in a way that demonstrates comprehension of the trade-offs involved in design choices.
- An ability to apply design and development principles in the construction of software systems of varying complexity.
History of the Major
2023 | Replace 3-course Physics Sequence with 3 (restricted) Science electives. |
2022 | Tweak list of technical electives. |
2021 | Tweak list of technical electives. |
2020 | Replace CMPSC 48 (CS Project) → CMPSC 148 (CS Project) or 156 (Advanced Applications Programming) or 172 (Software Engineering). Require one more Technical Elective. |
2019 | Tweak list of technical electives. |
2018 | |
2017 |