Information and Policies
Introduction
The bachelor of science (B.S.) program is appropriate for students desiring a strong concentration in the core areas of computer science—algorithms, programming languages, and systems—with more courses in computer science, computer engineering, and computational media; this program also allows for a few electives outside of science and engineering.
Applications of computer science are found in many other areas of study, from art, music, and linguistics to social sciences, economics, business, digital, and social media, environmental and life sciences, and sciences. Thus, interdisciplinary activities are encouraged. For those students whose primary interest is in another area, a minor in computer science is offered.
Program Learning Outcomes
Recipients of a Bachelor of Science degree in Computer Science at the University of California, Santa Cruz, are expected to have the following skills and experiences:
 Demonstrate mastery of computer science in the following core knowledge areas:
 Algorithms, data structures, and complexity
 Programming languages
 Software engineering and development
 Computer systems
 Apply systemlevel perspective by thinking at multiple levels of detail and abstraction and by recognizing the context in which a computer system may function, including its interactions with people and the physical world.
 Apply problemsolving skills and the knowledge of computer science to solve real problems.
 Understand how technological advances impact society and the social, legal, ethical and cultural ramifications of computer technology and their usage.
 Write about and orally communicate technical material about computer science and computer systems, broadly conceived.
Academic Advising for the Program
The Baskin Engineering undergraduate advising office offers general advising for prospective and declared undergraduates majoring in Baskin Engineering programs. The office handles major declarations, transfer credits, course substitutions, articulations, and degree certifications. Undergraduate students obtain and submit all paperwork requiring departmental approval to the undergraduate advising office. Transfer students should also refer to the Transfer Information and Policy section.
Baskin Engineering Building, Room 225
bsoeadvising@ucsc.edu
(831) 4595840
Getting Started in the Major: Frosh
It is recommended that high school students intending to apply to the computer science major have completed four years of mathematics (through advanced algebra and trigonometry) and three years of science in high school. Comparable college mathematics and science courses completed at other institutions also serve to properly prepare a student for the computer science major.
This major is highly course intensive and sequential; students who intend to pursue this major must begin taking classes for the major in their first quarter at UC Santa Cruz.
Math placement is required for one or more of the foundational courses for this major. For more information, please review the Math Placement website.
Transfer Information and Policy
Transfer students who want to pursue the computer science major, must have applied and been admitted to UC Santa Cruz as a proposed computer science major.
Transfer Admission Screening Policy
The following Transfer Screening policy takes effect in fall 2024 and will be mandatory for all transfer students entering UC Santa Cruz fall 2026 and later. Transfer students entering UCSC prior to fall 2026 are encouraged to complete these requirements, but will still be considered for admission if they fulfill the 20232024 admissions screening requirements.
Prior to admission, transfer students must have completed the following five courses or their articulated equivalents with a combined minimum GPA of 3.0.
Lecturelab combinations count as one course.
All of the following
CSE 12  Computer Systems and Assembly Language and Lab  7 
CSE 16  Applied Discrete Mathematics  5 
CSE 30  Programming Abstractions: Python  7 
Plus one of the following
MATH 19A  Calculus for Science, Engineering, and Mathematics  5 
MATH 20A  Honors Calculus  5 
Plus one of the following
MATH 19B  Calculus for Science, Engineering, and Mathematics  5 
MATH 20B  Honors Calculus  5 
Minimum GPA
The combined GPA in the five courses above must be at least a 3.0.
Furthermore, transfer students entering in the fall must have completed at least three of these courses by the end of the fall term of the previous academic year and have a minimum 3.0 GPA over all completed CS major qualification courses at that time.
Transfer students are strongly recommended to complete one course out of MATH 21, AM 10, MATH 23A or AM 30, and most general education requirements prior to arriving at UC Santa Cruz.
Most courses in the computer science program at UC Santa Cruz have a strong theoretical component to prepare the student for designing, as opposed to simply using, computer systems. Often, courses taken at other institutions which emphasize applications of current languages and computers do not count toward the computer science major at UCSC.
At UCSC, computer science students are first introduced to programming using the programming language Python. The core programming sequence—courses CSE 30 and CSE 13S—exposes students to both Python and C. Many upperdivision courses that involve programming use the C and C++ programming languages.
Transfer students who are not familiar with both an objectoriented language may need to take a remedial course. Students familiar with C++ and Unix should find the transition to Python and C relatively simple.
Getting Started in the Major: Transfer Students
Transfer students should declare their major in their first quarter at UC Santa Cruz. Instructions for declaring a major in the Baskin School of Engineering are on the Baskin Engineering undergraduate advising major declaration page.
Major Qualification Policy and Declaration Process
Major Qualification
Transfer students should refer to the Transfer Admission Screening requirements.
For all students, it is necessary to be listed as a proposed computer science major within Baskin Engineering before being able to declare the major. Additionally, students must satisfy the following three criteria to qualify for the CS B.S. major:
Declare
Students must declare CS (Computer Science B.S. or Computer Science B.A.) as their major between student’s second to sixth quarter.
CS B.S. Major Qualification courses
Students must have completed the following CS major qualification courses to qualify for the CS B.S. major:
Complete these three courses
CSE 12  Computer Systems and Assembly Language and Lab  7 
CSE 13S  Computer Systems and C Programming  7 
CSE 30  Programming Abstractions: Python  7 
Plus one of the following
MATH 19A  Calculus for Science, Engineering, and Mathematics  5 
MATH 20A  Honors Calculus  5 
Plus one of the following
MATH 19B  Calculus for Science, Engineering, and Mathematics  5 
MATH 20B  Honors Calculus  5 
Cumulative GPA
Students must also have a cumulative GPA of at least 3.0 in the CS major qualification courses attempted at UC Santa Cruz, with at most one unsuccessful attempt (grade C, D+, D, D, F, or NP) permitted in a CS major qualification course.
Appeal Process
Students who are informed that they do not qualify for the major may appeal this decision by submitting a letter to the undergraduate director through the Baskin Engineering undergraduate advising office within 15 days from the date the notification was mailed. Within 15 days of receipt of the appeal, the department will notify the student, college, and Office of the Registrar of the decision.
How to Declare a Major
Students interested in pursuing computer science must indicate computer science as a proposed major on their application for admission to UC Santa Cruz. Students admitted to UCSC in fall 2018 or later will be able to declare a computer science major only if they have been admitted to UCSC as proposed computer science majors.
There are four steps to declaring a Baskin Engineering major. For a detailed guide to this process, please consult Baskin Engineering's Declare Your Major website.
Students should start the declaration of major process by completing Step One on the Baskin Engineering Declare Your Major website as soon as they complete the CS major qualification courses or reach their declaration deadline quarter, whichever comes first.
Students petitioning when the campus declaration deadline is imminent (i.e., in their sixth quarter, for students admitted as frosh), will either be approved, denied, or provided with conditions (e.g., completion of some courses with certain grades) that will be resolved within at most one more enrolled quarter, even if they have not completed all CS major qualification courses.
Letter Grade Policy
All students admitted to a Baskin Engineering major, or seeking admission to a major, must take all courses required for that major for a letter grade. This policy includes courses required for these degrees that are sponsored by other departments.
Course Substitution Policy
Undergraduate engineering students who wish to substitute a major course with a course from another department at UC Santa Cruz, or from another academic institution, must first seek approval through the Baskin Engineering Undergraduate Advising Office. The advising office requires a Petition for Course Substitution be approved before credit for an alternate course can be applied to any Baskin Engineering major requirement.
Petition forms are available at the Undergraduate Advising Office and online.
Petitions and procedures for approval must be obtained from and submitted to the Undergraduate Advising Office.
Community Colleges courses once enrolled at UCSC
Once enrolled in Baskin Engineering students who wish to take a course at a California community college must first check Assist.org to see if the course is equivalent at UC Santa Cruz. If the course is not listed on Assist.org, students must submit a course substitution petition to the BE Undergraduate Advising Office to have it reviewed for equivalency. Courses that need to be reviewed must be accompanied by a course description and syllabus. It is very helpful if students can provide further evidence of course content, such as examples of programming assignments, homework, or examinations. To guarantee equivalency, departments may sometimes require a grade of B or better.
If the course is approved for equivalency or was on Assist.org, then the student must also receive approval by their major department to take the class at the community college PRIOR to taking it. Forms and procedures for approval can be obtained from and submitted to the BE Undergraduate Advising Office.
FourYear Institutions and the UC Education Abroad Program (UCEAP)
Students who intend to take a course at a fouryear institution or UC Education Abroad, must submit a Course Substitution Petition to the BE Undergraduate Advising Office to have the course reviewed for equivalency. Courses that need to be reviewed must be accompanied by a course description and syllabus. It is very helpful if students can provide further evidence of course content, such as examples of programming assignments, homework, or examinations. To guarantee equivalency, departments may sometimes require a grade of B or better.
If the course is approved for equivalency, then the student must also receive approval by their major department PRIOR to taking the class. Forms and procedures for approval can be obtained from and submitted to the BE Undergraduate Advising Office.
Double Majors and Major/Minor Combinations Policy
Students may not receive both the Computer Science B.A. and Computer Science B.S. degrees.
Students may not receive both the Network and Digital Technology B.A. and the Computer Science B.S. degrees.
Honors
Students must obtain a GPA of 3.8 or higher in the courses in the major to be considered for the distinction of "Highest Honors in the Major." Students must obtain a GPA of 3.5 or higher in the courses in the major to be considered for the distinction of "Honors in the Major." Baskin Engineering reserves the right to withhold honors based on other criteria, such as an incident of academic dishonesty.
Requirements and Planners
Course Requirements
This program is designed for students who wish to maximize exposure to computer science concepts and methods by taking a large selection of upperdivision computer science courses, as well as courses in the sciences and mathematics. A minimum of 21 courses must be completed for the B.S. in computer science.
LowerDivision Courses
Computer Science and Engineering
All of the following
CSE 12  Computer Systems and Assembly Language and Lab  7 
CSE 16  Applied Discrete Mathematics  5 
CSE 20  Beginning Programming in Python  5 
CSE 30  Programming Abstractions: Python  7 
CSE 40  Machine Learning Basics: Data Analysis and Empirical Methods  5 
Students with no prior programming will take CSE 20 before CSE 30, and CSE 12. Students with a prior programming course, AP credit, or clearing the “Testout” bar will start with CSE 30, and CSE 12.
Plus the following
CSE 13S  Computer Systems and C Programming  7 
Mathematics
Plus one of the following options:
 Either these courses  
MATH 19A  Calculus for Science, Engineering, and Mathematics  5 
MATH 19B  Calculus for Science, Engineering, and Mathematics  5 
 or these courses  
MATH 20A  Honors Calculus  5 
MATH 20B  Honors Calculus  5 
Applied Mathematics
One of these courses
AM 10  Mathematical Methods for Engineers I  5 
MATH 21  Linear Algebra  5 
Plus one of these courses
AM 30  Multivariate Calculus for Engineers  5 
MATH 23A  Vector Calculus  5 
Engineering Science
ECE 30  Engineering Principles of Electronics  5 
UpperDivision Courses
Computer Science and Engineering
Take the following courses:
CSE 101  Introduction to Data Structures and Algorithms  5 
CSE 101M  Mathematical Thinking for Computer Science  5 
CSE 120  Computer Architecture  5 
CSE 130  Principles of Computer Systems Design  5 
Plus one of the following
CSE 102  Introduction to Analysis of Algorithms  5 
CSE 103  Computational Models  5 
Plus one of the following
CSE 112  Comparative Programming Languages  5 
CSE 114A  Foundations of Programming Languages  5 
Statistics
Take one of the following:
STAT 131  Introduction to Probability Theory  5 
CSE 107  Probability and Statistics for Engineers  5 
Electives
Four courses must be completed from the list below . At least one course must be a computer science and engineering course. At most two courses can be from applied mathematics, statistics or mathematics, of which at most one may be substituted with two physics classes, chosen from the following list of class pairs: PHYS 6A and PHYS 6C, PHYS 6A and PHYS 6B, PHYS 5A and PHYS 5C, PHYS 5A and PHYS 5B. Any laboratories required or recommended by the Physics Department associated with these classes are not part of the computer science B.S. major requirements.
List of B.S. electives:
 Any 5credit or more CSE course with a number between 100 and 189, except for the DC courses CSE 115A and CSE 185E/CSE 185S.

CSE 195 (if not used to satisfy the DC requirement).
 Any course from the following list:
Lecture/lab combinations count as one course. If a lecture has a lab offered (required or optional), the lab must be passed to count for this requirement.
Disciplinary Communication (DC) Requirement
Students of every major must satisfy that major's upperdivision Disciplinary Communication (DC) requirement.
The DC requirement in computer science B.S. is satisfied by completing an additional course from the following options.
 Either one of these courses  
CSE 115A  Introduction to Software Engineering  5 
CSE 185E
/CSE 185S
 Technical Writing for Computer Science and Engineering  5 
CSE 195  Senior Thesis Research  5 
Course CSE 195 may be used either as an elective, or to satisfy the DC requirement, but not for both.
Comprehensive Requirement
In addition to the above requirements, students must satisfy one of the following two exit requirements: pass one of the capstone courses (see Capstone Courses below); or successfully complete a senior thesis. A passed capstone course also counts toward satisfying the minimum number of upperdivision electives requirement.
Capstone Courses
Students may choose from one of the following capstone courses to satisfy their exit requirement (lecturelab combinations count as one course):
CSE 110B  Fundamentals of Compiler Design II  5 
CSE 115C  Software Design Project II  5 
CSE 115D  Software Design Project  Accelerated  5 
CSE 121  Embedded System Design  7 
CSE 134  Embedded Operating Systems  5 
CSE 138  Distributed Systems  5 
CSE 140  Artificial Intelligence  5 
CSE 143  Introduction to Natural Language Processing  5 
CSE 144  Applied Machine Learning: Deep Learning  5 
CSE 145  Introduction to Data Mining  5 
CSE 156  Network Programming  5 
CSE 156L  Network Programming Laboratory  2 
CSE 157  Internet of Things  7 
CSE 160  Introduction to Computer Graphics  7 
CSE 161  Introduction to Data Visualization  5 
CSE 161L  Data Visualization Laboratory  2 
CSE 162  Advanced Computer Graphics and Animation  5 
CSE 162L  Advanced Computer Graphics and Animation Laboratory  2 
CSE 163  Data Programming for Visualization  5 
CSE 168  Introduction to Augmented Reality and Virtual Reality  7 
CSE 181  Database Systems II  5 
CSE 183  Web Applications  5 
CSE 184  Data Wrangling and Web Scraping  5 
CSE 187  Full Stack Web Development II  5 
CMPM 172  Game Production Studio  7 
Students taking one of the capstone courses will enroll normally. Students need to pass the capstone course to pass the exit requirement. No course may be attempted more than twice without prior approval from the chair of the department offering the course. Withdrawals count as an attempted class for this purpose.
Senior Thesis
The senior thesis consists of a selfcontained project within the broad scope of computer science, but one that is not available in the regular course offerings. A student wishing to complete a senior thesis must successfully complete a minimum of 5 credits in CSE 195, Senior Thesis Research. The supervision of a senior thesis student is always at the discretion of the faculty member.
The student first submits a written thesis proposal and obtains approval of a faculty sponsor. Then the student submits a written draft and makes an oral presentation to a faculty examining committee. After receiving feedback from the examining committee, the student submits one or more additional drafts, until the final draft is approved by the examining committee. The total amount of writing shall be consistent with the campus Disciplinary Communication requirement. A passing grade in CSE 195 is earned when the final thesis is approved.
Planners
The tables below are for informational purposes and do not reflect all university, general education, and credit requirements. See Undergraduate Graduation Requirements for more information.
The following are three sample academic plans: (1) a fouryear plan for the B.S. major for firstyear students with programming experience; (2) an alternative firstyear plan for students without programming experience; and (3) a twoyear plan for the B.S. major for transfer students that have completed all general education requirements.
Students completing the courses in the planners will have satisfied the MF and SR general education requirement.
FourYear Plan for Students with Programming Experience
* WRIT 2 should be taken in or before spring quarter of the second year.
FirstYear Plan for Students Without Programming Experience
* WRIT 2 should be taken in or before spring quarter of the second year.
TwoYear Degree Planner for Transfer Students
Note: One elective must be drawn from the DC course list and one from the capstone course list. Also, the above plan assumes having taken one of MATH 21, MATH 23A, or AMS 10 and most general education requirements prior to arriving at UC Santa Cruz as well as courses equivalent to CSE 16 and CSE 30 and CSE 12).
Curriculum charts for all Baskin Engineering majors are available on the Baskin Engineering Advising Major Curriculum Charts page.