UC Santa Barbara General CatalogUniversity of California, Santa Barbara

Computer Engineering

Harold Frank Hall, Room 4157;
Telephone (805) 893-5615 or (805) 893-8292
Email: info@ce.ucsb.edu
Website: www.ce.ucsb.edu
Director: Li-C. Wang


 

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 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 witha 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 ECE154A 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. Notopen 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