Upper Division Electives

NOTE: Upper division major electives must be approved by a faculty member.

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. You may change your selection at any time by submitting a new Major Elective Approval form to the Computer Science Department.

B.S. students must take 20 units of electives and B.A. students must take 11 units of electives from the courses listed here. At least 8 units of these electives must be Computer Science courses. The required courses in the upper division major generally do not count towards these electives. All upper division elective courses must be taken for a letter grade.

Communication Networks

Course Title
CMPSC 176A Introduction to Computer Communication Networks
CMPSC 176B Network Computing
CMPSC 176C Advanced Topics in Internet Computing

Software Systems

Course Title
CMPSC 160 Translation of Programming Languages (Elective for BA, required for BS)
CMPSC 171 / ECE 151 Distributed Systems
CMPSC 172 Software Engineering
CMPSC 174A Fundamentals of Database Systems
CMPSC 174B Design and Implementation Techniques of Database Systems
CMPSC 180 Computer Graphics

Computer Security

Course Title
CMPSC 177 Computer Security
CMPSC 178 Introduction to Cryptography

Theory and Logic

Course Title
CMPSC 186 Theory of Computation

Artificial Intelligence

Course Title
CMPSC 165A Artificial Intelligence
CMPSC 165B Machine Learning
CMPSC/ECE 181B Introduction to Computer Vision

Vision and Graphics

Course Title
CMPSC 180 Computer Graphics
CMPSC/ECE 181B Introduction to Computer Vision
ECE 178 Introduction to Digital Image and Video Processing
CMPSC 182 / ECE 160 Multimedia Computing

Bioinformatics

Course Title
CMPSC 167 Bioinformatics

Interactivity

Course Title
CMPSC 180 Computer Graphics
CMPSC/ECE 181B Introduction to Computer Vision
CMPSC 185 Human-Computer Interaction
CMPSC 182 / ECE 160 Multimedia Computing

Undergraduate Projects, Special Topics, and Research

Course Title
CMPSC 189A/B Senior Computer Systems Project
CMPSC 190AA-ZZ Special Topics in Computer Science
CMPSC 192 Projects in Computer Science (Only available to students with GPA >= 3.0, Four units maximum from CMPSC 192 and CMPSC 196 combined may be counted as upper division electives
CMPSC 196 Undergraduate Research (Only available to students with GPA >= 3.0, Four units maximum from CMPSC 192 and CMPSC 196 combined may be counted as upper division electives

Hardware

Course Title
ECE 152B Digital Design Methodologies
CMPSC / ECE 153A Hardware/Software Interface
ECE 153B Sensor and Peripheral Interface Design

Signal Processing

Course Title
ECE 130A / B /C Signal Analysis and Processing

Scientific Computing

Course Title
CMPSC 111 / 140 Foundation of Scientific Computing (You must take either of these courses to satisfy your upper division major requirements, so to receive 4 units of credit toward your electives, you must take both courses.)
MATH 108A / B Linear Algebra
MATH 119A / B ODEs
MATH 124A /B PDEs, Fourier Series and Numerical Methods

PSTAT and Mathematics

Course Title
PSTAT 122 / 130 Probability and Statistics
PSTAT 160A / B Applied Stochastic Processes