Upper Division Electives

NOTE: Upper-division major electives must be approved by a faculty member. Submit a Major Elective Approval form to the undergraduate advisor when completed.

Upper-division Computer Science majors must choose a series of upper-division major elective courses to have an emphasis on a subject or subjects in their major studies. Students report that the electives were discussed and approved by a faculty member by submitting a Major Elective Approval form to the Computer Science Department staff advisor. View the Major Elective slide show, and see a recording of the Spring 2021 Major Elective information session (use your UCSB NetID to view).  

The department annually hosts two events in Fall and Spring quarter where students can either meet one-on-one with faculty (Fall) or hear about the elective courses from faculty (Spring); students can complete their major elective approval form by attending either event. 

Depending on the GEAR major year, CS students must take either 28 units (GEAR years 2018-19, 2019-20) or 32 units (GEAR years 2020-21 and 2021-22) of upper-division major field electives. At least 8 units of these electives must be Computer Science courses. The required courses in the upper-division major do not count towards these electives. All upper-division elective courses must be taken for a letter grade.

Programming

COURSETITLE
CMPSC 156Advanced Applications Programming (One course of 148/156/172 required for the major for students in GEAR years 20-21 and 21-22, the other can apply towards major electives; students in GEAR years 18-19 and 19-20 must take both 148 and 156.)
CMPSC 160Translation of Programming Languages (One course of 160/162 required for the major, the other can apply towards major electives)
CMPSC 162Programming Languages (One course of 160/162 required for the major, the other can apply towards major electives)

Communication Networks

CourseTitle
CMPSC 176AIntroduction to Computer Communication Networks
CMPSC 176BNetwork Computing
CMPSC 176CAdvanced Topics in Internet Computing

Software Systems

CourseTitle
CMPSC 171 / ECE 151Distributed Systems
CMPSC 172Software Engineering - Currently Dormant
CMPSC 174AFundamentals of Database Systems
CMPSC 174BDesign and Implementation Techniques of Database Systems 
CMPSC 180Computer Graphics

Computer Security

CourseTitle
CMPSC 177Computer Security
CMPSC 178Introduction to Cryptography

Artificial Intelligence

CourseTitle
CMPSC 165AArtificial Intelligence
CMPSC 165BMachine Learning
CMPSC/ECE 181Introduction to Computer Vision

Vision and Graphics

CourseTitle
CMPSC 180Computer Graphics
CMPSC/ECE 181Introduction to Computer Vision
ECE 178Introduction to Digital Image and Video Processing
ECE 160Multimedia Computing

Bioinformatics

CourseTitle
CMPSC 167Bioinformatics - Currently Dormant

Interactivity

CourseTitle
CMPSC 180Computer Graphics
CMPSC/ECE 181Introduction to Computer Vision
CMPSC 184Mobile Application Development (Android)
CMPSC 185Human-Computer Interaction
ECE 160Multimedia Computing

Undergraduate Projects, Special Topics, and Research

CourseTitle
CMPSC 148Computer Science Project (One course of 148/156/172 required for the major for students in GEAR years 20-21 and 21-22, the other can apply towards major electives; students in GEAR years 18-19 and 19-20 must take both 148 and 156.)
CMPSC 189A/BSenior Computer Systems Project (Capstone)
CMPSC 190AA-ZZSpecial Topics in Computer Science
CMPSC 192Projects in Computer Science (Only available to students with GPA >= 3.0, Four units maximum w/a Letter Grade from CMPSC 192 and CMPSC 196 combined may be counted as upper-division electives)
CMPSC 196Undergraduate Research (Only available to students with GPA >= 3.0, Four units maximum w/a Letter Grade from CMPSC 192 and CMPSC 196 combined may be counted as upper-division electives)

Hardware

CourseTitle
ECE 152ADigital Design Principles
CMPSC / ECE 153AHardware/Software Interface
ECE 153BSensor and Peripheral Interface Design

Signal Processing

CourseTitle
ECE 130A / B /CSignal Analysis and Processing

Scientific Computing

CourseTitle
CMPSC 111 / 140Computational Science/Parallel Scientific Computing (One course required for the major, the other can apply towards major electives)
MATH 108A / BLinear Algebra
MATH 119A / BODEs, Chaotic Dynamics and Bifurcation Theory
MATH 124A /BPDEs, Fourier Series and Numerical Methods

PSTAT and Mathematics

CourseTitle
PSTAT 122 / 130Design and Analysis of Experiments / SAS Base Programming
PSTAT 160A / BApplied Stochastic Processes