Information and Policies
Introduction
The bachelor of arts (B.A.) program at UC Santa Cruz is designed to give students a solid grounding in both theoretical and practical topics in computer science, computer engineering, and mathematics while leaving flexibility for a broad program of study, including some courses outside of science and engineering, or even for a double major in another discipline.
Academic Advising for the Program
The Baskin School of Engineering undergraduate advising office offers general advising for prospective and declared undergraduates majoring in School of 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
advising@soe.ucsc.edu
(831) 459-5840
Getting Started in the Major
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.
Program Learning Outcomes
Recipients of a Bachelor of Science or a Bachelor of Arts degree in Computer Science at UC 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 system-level 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 problem-solving 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.
Major Qualification Policy and Declaration Process
Major Qualification
For all students, it is necessary to be listed as proposed computer science majors within the School of Engineering before being able to declare the major. Additionally, students must satisfy the following three criteria to be able to declare the 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.
Foundation courses
Students must have completed the following foundation courses when they declare their major:
Either this course
And these courses
CSE 12 | Computer Systems and Assembly Language | 5 |
CSE 12L | Computer Systems and Assembly Language Laboratory | 2 |
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 2.80 in the foundation courses attempted at UC Santa Cruz, with at most one unsuccessful attempt (grade C-, D+, D, D-, F, or NP) permitted in a foundation course.
Appeal Process
Students who are informed that they are not eligible to declare the major may appeal this decision by submitting a letter to the undergraduate director through the Baskin School of 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.
For more instructions about how to declare a major in the Baskin School of Engineering, please refer to the department's website on declaring your major.
Transfer Information and Policy
Transfer Admission Screening Policy
Prior to admission, transfer students must have completed the following five courses or their articulated equivalents. (Students entering UCSC by fall 2020 and students who have catalog rights to follow the 2018-19 General Catalog may follow the screening requirements published in that catalog.)
Lecture/lab combinations count as one course; CSE 12 and CSE 12L count as one course.
This course
CSE 30 | Programming Abstractions: Python | 7 |
Plus one of the following
CSE 13E | Embedded Systems and C Programming | 7 |
CSE 13S | Computer Systems and C Programming | 7 |
Plus one of the following options
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
With a minimum GPA of 2.8. A student lacking one of these five courses may be admitted if they have completed CSE 16, and CSE 12 and CSE 12L, or the articulated alternative.
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 2.80 GPA over all completed foundation courses at that time.
Transfer students admitted for the winter term must satisfy the major preparation criteria for transfer students admitted for the fall term and, additionally, must have successfully completed at least two additional courses that are required for the proposed degree, prior to admission. It is highly recommended that these courses should be AM 10 (or MATH 21) and AM 30 (or MATH 23A).
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 (or CSE 13E)—exposes students to both Python and C. Many upper-division courses that involve programming use the C and C++ programming languages.
Transfer students who are not familiar with both Python and C 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 at UCSC as a Transfer Student
Transfer students should declare their major in their first quarter at UCSC. Instructions for declaring a major in the Baskin School of Engineering are on the department's major declaration page.
Letter Grade Policy
All students admitted to a School of 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 UC Santa Cruz must first consult the School of 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 School of 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.
Double Majors and Major/Minor Combinations Policy
Students may not receive both the computer science B.A. and 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." The School of Engineering reserves the right to withhold honors based on other criteria, such as an incident of academic dishonesty.
Requirements and Planners
Course Requirements
The aim of this program is to expose students to a rigorous curriculum in computer science while maintaining sufficient flexibility so that students can take courses outside computer science, pursue a minor in another discipline, or complete a double major. Every student must complete a minimum of 16 courses—eight lower-division and eight upper-division. Out of these, the eight lower-division courses and the first upper-division course are required preparatory courses for every student. Once these preparatory courses are completed, students tailor their own program by choosing seven upper-division elective courses.
Lower-Division Courses
Computer Science and Engineering
One of the following courses
CSE 13S | Computer Systems and C Programming | 7 |
CSE 13E | Embedded Systems and C Programming | 7 |
Plus all of the following
CSE 12 | Computer Systems and Assembly Language | 5 |
CSE 12L | Computer Systems and Assembly Language Laboratory | 2 |
CSE 16 | Applied Discrete Mathematics | 5 |
CSE 20 | Beginning Programming in Python | 5 |
CSE 30 | Programming Abstractions: Python | 7 |
Students with no prior programming will take CSE 20 before CSE 30, and CSE 12 & CSE 12L. Students with a prior programming course, AP credit, or clearing the “Test-out” bar will start with CSE 30, and CSE 12 and CSE 12L.
Plus one of the following options
Plus one of the following
AM 10 | Mathematical Methods for Engineers I | 5 |
MATH 21 | Linear Algebra | 5 |
Upper-Division Courses
The following course
CSE 101 | Introduction to Data Structures and Algorithms | 5 |
Plus three of the following breadth courses
CSE 102 | Introduction to Analysis of Algorithms | 5 |
CSE 103 | Computational Models | 5 |
CSE 110A | Fundamentals of Compiler Design I | 5 |
CSE 112 | Comparative Programming Languages | 5 |
CSE 115A | Introduction to Software Engineering | 5 |
CSE 120 | Computer Architecture | 5 |
CSE 130 | Principles of Computer Systems Design | 5 |
CSE 131 | Introduction to Operating Systems | 5 |
CSE 132 | Computer Security | 5 |
CSE 138 | Distributed Systems | 5 |
CSE 140 | Artificial Intelligence | 5 |
CSE 142 | Machine Learning | 5 |
CSE 143 | Introduction to Natural Language Processing | 5 |
CSE 160 | Introduction to Computer Graphics | 5 |
CSE 160L | Introduction to Computer Graphics Laboratory | 2 |
CSE 180 | Database Systems I | 5 |
Students can only take one of either CSE 130 or CSE 131.
CSE 160 and CSE 160L lecture/lab combination counts as one course.
Electives
Three courses from the list of B.A. electives below, including at least one upper-division computer science and engineering course(s) numbered below 170, or numbered between 180 and 189, or CSE 195.
For other courses, computational media, and Applied Mathematics and Statistics courses are strongly recommended.
List of BA electives
- Any 5-credit upper-division course offered by the Baskin School of Engineering, except for the DC courses CSE 115A and CSE 185E/CSE 185S.
- Or any course from the following list:
Lecture/lab combinations count as one course.
Additional courses may be accepted by petition.
Disciplinary Communication (DC) Requirement
Students of every major must satisfy that major's upper-division Disciplinary Communication (DC) requirement.
The DC requirement for the computer science B.A. is satisfied by completing one of the following additional courses:
The course used for the DC requirement cannot also be used as an upper-division elective.
Comprehensive Requirement
In addition to the above B.A. requirements, students in the computer science majors 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 upper-division electives requirement.
Capstone Courses
Students may choose from one of the following capstone courses to satisfy their exit requirement (lecture/lab 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 118 | Mobile Applications | 5 |
CSE 121 | Microprocessor System Design | 5 |
CSE 121L | Microprocessor System Design Laboratory | 2 |
CSE 138 | Distributed Systems | 5 |
CSE 140 | Artificial Intelligence | 5 |
CSE 143 | Introduction to Natural Language Processing | 5 |
CSE 144 | Applied Machine Learning | 5 |
CSE 156 | Network Programming | 5 |
CSE 156L | Network Programming Laboratory | 2 |
CSE 157 | Internet of Things | 7 |
CSE 160 | Introduction to Computer Graphics | 5 |
CSE 160L | Introduction to Computer Graphics Laboratory | 2 |
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 |
CMPM 172 | Game Design Studio III | 7 |
ECE 118 | Introduction to Mechatronics | 10 |
ECE 118L | Introduction to Mechatronics Laboratory | 2 |
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 self-contained 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 following are three sample academic plans: (1) a four-year plan for the B.A. major for first-year students with programming experience; (2) an alternative first-year plan for students without programming experience; and (3) a two-year plan for the B.A. major for transfer students.
Students completing the courses in the planners will have satisfied the MF general education requirement.
Four-Year Plan for Students with Programming Experience
|
Fall |
Winter |
Spring |
1st (frosh) |
CSE 30 |
CSE 12 & CSE 12L |
CSE 16 |
MATH 19A |
MATH 19B |
|
|
|
|
2nd (soph) |
CSE 13S |
AM 10 |
CSE 101 |
|
|
|
|
|
|
3rd (junior) |
Breadth course 1 |
Breadth course 2 |
Breadth course 3 |
Elective list 1 |
Elective list 2
|
|
|
|
|
4th (senior) |
DC elective
|
|
Elective list 3
(capstone) |
|
|
|
|
|
|
First-Year Plan for Students Without Programming Experience
|
Fall |
Winter |
Spring |
1st (frosh) |
CSE 20 |
CSE 30 |
CSE 12 & CSE 12L |
MATH 3 |
MATH 19A |
MATH 19B |
|
|
|
2nd (soph) |
CSE 13S |
AM 10 |
CSE 101 |
|
CSE 16 |
|
|
|
|
3rd (junior) |
Breadth course 1 |
Breadth course 2 |
Breadth course 3 |
Elective list 1 |
Elective list 2 |
|
|
|
|
4th (senior) |
DC elective |
|
Elective list 3
(capstone) |
|
|
|
|
|
|
Two-Year Degree Planner for Transfer Students
|
Fall |
Winter |
Spring |
1st (junior) |
CSE 12 & CSE 12L |
CSE 101 |
Breadth list 1 |
AM 10 or MATH 21 |
|
|
2nd (senior)
|
Breadth list 2 |
Breadth list 3 |
DC elective |
Elective list 1 |
Elective list 2 |
Elective list 3
(capstone) |
|
|
|
Note: One elective must be drawn from the DC course list and one from the capstone course.
Curriculum charts for all BSOE majors are available at the department's Major Curriculum Charts page.