Computer Science B.S.

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.

 

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 degree in Computer Science at UC Santa Cruz are expected to have the following skills and experiences:

  1. Demonstrate mastery of computer science in the following core knowledge areas:
    • Algorithms, data structures, and complexity
    • Programming languages
    • Software engineering and development
    • Computer systems
  2. 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.
  3. Apply problem-solving skills and the knowledge of computer science to solve real problems.
  4. Understand how technological advances impact society and the social, legal, ethical and cultural ramifications of computer technology and their usage.
  5. 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
CSE13SComputer Systems and C Programming

7

or this course

CSE13EEmbedded Systems and C Programming

7

13S recommended

And these courses
CSE12Computer Systems and Assembly Language

5

CSE12LComputer Systems and Assembly Language Laboratory

2

CSE30Programming Abstractions: Python

7

Plus one of the following
MATH19ACalculus for Science, Engineering, and Mathematics

5

MATH20AHonors Calculus

5

Plus one of the following
MATH19BCalculus for Science, Engineering, and Mathematics

5

MATH20BHonors Calculus

5

Students must have a cumulative GPA of at least 2.80 in the foundation courses attempted at UCSC, with at most one unsuccessful attempt (grade C-, D+, D, D-, F, or NP) permitted in a foundation course.

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
CSE30Programming Abstractions: Python

7

Plus one of the following
CSE13EEmbedded Systems and C Programming

7

CSE13SComputer Systems and C Programming

7

Plus one of the following options
Either these courses

CSE12Computer Systems and Assembly Language

5

CSE12LComputer Systems and Assembly Language Laboratory

2

or this course

CSE16Applied Discrete Mathematics

5

Plus one of the following
MATH19ACalculus for Science, Engineering, and Mathematics

5

MATH20AHonors Calculus

5

Plus one of the following
MATH19BCalculus for Science, Engineering, and Mathematics

5

MATH20BHonors 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 are strongly recommended to complete CSE 16 as part of their screening courses, and 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.

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 an object-oriented language 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

This program is designed for students who wish to maximize exposure to computer science concepts and methods by taking a large selection of upper-division computer science courses, as well as courses in the sciences and mathematics. A minimum of 20 courses must be completed for the B.S. in computer science.

Lower-Division Courses

Computer Science and Engineering
All of the following
CSE12Computer Systems and Assembly Language

5

CSE12LComputer Systems and Assembly Language Laboratory

2

CSE16Applied Discrete Mathematics

5

CSE20Beginning Programming in Python

5

CSE30Programming 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 courses
CSE13SComputer Systems and C Programming

7

CSE13EEmbedded Systems and C Programming

7

CSE 13S recommended

Mathematics

Plus one of the following options:

Either these courses

MATH19ACalculus for Science, Engineering, and Mathematics

5

MATH19BCalculus for Science, Engineering, and Mathematics

5

or these courses

MATH20AHonors Calculus

5

MATH20BHonors Calculus

5

Applied Mathematics
One of these courses
AM10Mathematical Methods for Engineers I

5

MATH21Linear Algebra

5

Plus one of these courses
AM30Multivariate Calculus for Engineers

5

MATH23AVector Calculus

5

Upper-Division Courses

Computer Science and Engineering

The following courses:

CSE101Algorithms and Abstract Data Types

5

CSE102Introduction to Analysis of Algorithms

5

CSE103Computational Models

5

CSE120Computer Architecture

5

Plus one of the following
CSE112Comparative Programming Languages

5

CSE114Functional Programming

5

CSE116Introduction to Functional Programming

5

Plus one of the following
CSE130Principles of Computer Systems Design

5

CSE131Introduction to Operating Systems

5

Statistics

One of the following:

STAT131Introduction to Probability Theory

5

CSE107Probability and Statistics for Engineers

5

Electives

Five 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:
  1. Any CSE course with a number below 170, or between 180 and 189.
  2. Any course from the following list:
AM114Introduction to Dynamical Systems

5

AM147Computational Methods and Applications

5

CMPM120Game Development Experience

5

CMPM131User Experience for Interactive Media

5

CMPM146Game AI

5

CMPM163Game Graphics and Real-Time Rendering

5

CMPM164Game Engines

5

CMPM164LGame Engines Lab

2

CMPM171Game Design Studio II

7

CMPM172Game Design Studio III

7

CSE195Senior Thesis Research

5

MATH110Introduction to Number Theory

5

MATH115Graph Theory

5

MATH116Combinatorics

5

MATH117Advanced Linear Algebra

5

MATH118Advanced Number Theory

5

MATH134Cryptography

5

MATH145Introductory Chaos Theory

5

MATH145LIntroductory Chaos Laboratory

1

MATH148Numerical Analysis

5

MATH160Mathematical Logic I

5

MATH161Mathematical Logic II

5

STAT132Classical and Bayesian Inference

5

Lecture/lab combinations count as one course.

Disciplinary Communication (DC) Requirement

Students of every major must satisfy that major's upper-division Disciplinary Communication (DC) requirement.

The DC requirement in computer science B.S. is satisfied by completing one of the following options:

Either one of these courses

CSE115AIntroduction to Software Engineering

5

CSE185ETechnical Writing for Computer Engineers

5

CSE185STechnical Writing and Communication in Computer Science

5

or these courses

CSE104Computability and Computational Complexity

5

CSE104WComputability and Computational Complexity

2

or these courses

CSE180Database Systems I

5

CSE180WDatabase Systems

2

These courses may also fulfill one of the upper-division electives if they appear in the list of electives. 

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 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):

CSE110BFundamentals of Compiler Design II

5

CSE115CSoftware Design Project II

5

CSE118Mobile Applications

5

CSE121Microprocessor System Design

5

CSE121LMicroprocessor System Design Laboratory

2

CSE138Distributed Systems: File Sharing, Online Gaming, and More

5

CSE140Artificial Intelligence

5

CSE143Introduction to Natural Language Processing

5

CSE144Applied Machine Learning

5

CSE156Network Programming

5

CSE156LNetwork Programming Laboratory

2

CSE160Introduction to Computer Graphics

5

CSE160LIntroduction to Computer Graphics Laboratory

2

CSE161Introductionto Data Visualization

5

CSE161LData Visualization Laboratory

2

CSE162Advanced Computer Graphics and Animation

5

CSE162LAdvanced Computer Graphics and Animation Laboratory

2

CSE163Data Programming for Visualization

5

CSE168Introduction to Augmented Reality and Virtual Reality

7

CSE181Database Systems II

5

CSE183Web Applications

5

CSE184Data Wrangling and Web Scraping

5

CMPM172Game Design Studio III

7

ECE118Introduction to Mechatronics

5

ECE118LIntroduction 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.

CSE195Senior Thesis Research

5

Planners

The following are three sample academic plans: (1) a four-year plan for the B.S. 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 that have completed all general education requirements.

Students completing the courses in the planners will have satisfied the MF and SR 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  AM 30
     
2nd (soph) CSE 13S CSE 101 CSE 120
AM 10 CSE 107  
     
3rd (junior) CSE 130 CSE 102 CSE 103
Elective Elective  
     
4th (senior) Elective CSE 114 Capstone elective
DC elective    
     

 

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 30 CSE 101
AM 10 CSE 16 CSE 107
     
3rd (junior) CSE 102 CSE 103 CSE 120
Elective Elective  DC-elective
     
4th (senior) CSE 112 CSE 130 Capstone elective
Elective    
     
 

 

 

Two-Year Degree Planner for Transfer Students

  Fall Winter Spring
1st (junior) CSE 12 & CSE 12L CSE 102 CSE 130
CSE 101 CSE 120 CSE 103
AM 30 CSE 107 DC elective
 2nd (senior)
 
CSE 114 Elective Elective  
Elective Capstone elective Elective
     

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 UCSC as well as courses equivalent to CSE 16 and CSE 30 and CSE 13S (or CSE 14/CSE 15L and CSE 15/CSE 15L).

Curriculum charts for all BSOE majors are available at the department's Major Curriculum Charts page.