The University of California, Santa Cruz's campus |
This guide is intended to be read by prospective computer science students and incoming freshmen; however, current students may find portions of the text to be useful as well. Includes information on the Bachelor of Science and Bachelor of Arts in Computer Science majors, as well as the Bachelor of Science in Computer Science: Computer Game Design (CSGD) major. Among other things, contains descriptions of relevant courses, discussion on programming languages you will use, requirements to graduate, as well as ratings on professors, and classes you will encounter.
Authors:
- William Santosa - Email | Website | LinkedIn | GitHub
- Gregory Santosa - Email | LinkedIn | GitHub
- Arrian Chi - Email | Website | LinkedIn | GitHub
Media:
- A Guide to the University of California, Santa Cruz's Computer Science Majors
- Contributors
- Table of Contents
- Introduction
- Subjects
- Languages
- Graduation Requirements
- Classes
- Professors
- Preparing for University
- Planning for Graduate School
- Tips and Tricks
- Acknowledgements
- Further Learning Material
- References
The University of California, Santa Cruz, is well known for its beautiful campus and excellent education. The B.S in Computer Science: Computer Game Design degree at UCSC is reported to be in the top five computer science game design degrees in the United States. Additionally, the B.S and B.A in Computer Science degree is reported to be one of the top ten in California, and among the top fifty across the country. We will discuss the differences between the Computer Science Bachelor of Arts and Bachelor of Science degrees, and talk about the Computer Science: Computer Game Design degree.
Computer science at UCSC is impacted, meaning that it is a very popular, difficult major to get admitted into. Unfortunately, this also means that switching into computer science (after you have applied) is very difficult. If you want to major in CS and were not admitted, it is a good idea to take another offer that allows you to do CS. Alternatively, you can also do two years of community college and transfer as a junior. That way, you will can get a degree in CS while also saving money.
Additional Note: Majors offered by the Baskin School of Engineering are also impacted, making it difficult for students admitted to a proposed major outside of BSOE to switch in.
"Science" refers to the study of something. Consequently, "computer science" refers to the study of computers. A typical computer science curriculum is composed of studying theory, algorithms, programming languages, and architecture. Computer science students will often find themselves not programming for long periods of time, sometimes even for an entire quarter. Some things that students do other than programming include formulating proofs, plotting diagrams, and writing documentation or writeups on their programs.
Both the Bachelor of Art (B.A) and Bachelor of Science (B.S) in Computer Science are great degrees. They are crafted such that students are exposed to "a rigorous curriculum" (Registrar) and their lower division requirements are practically the same. All students have to complete the same Math courses (save for Math 23A), the same Computer Science & Engineering (CSE) courses, and complete CSE 101 in order to graduate. However, the B.A degree offers more flexibility in the upper division electives allowed, while the B.S is designed to prepare the student for research and post-undergraduate programs.
It is easy to switch from a B.S to a B.A, however, switching from a B.A to B.S requires:
- An appeal to the university
- Maintaining good academic standing (3.0 GPA)
Both of the requirements are not terribly difficult, but they do require some planning ahead of time.
The Computer Science: Game Design degree is a degree offered by the Computational Media Department designed for students pursuing a career in game design and related fields. CSGD majors have similar lower division classes as CS majors (MATH23A/AM30 and ECE30 are not required) in addition to art/game classes (ARTG80G, FILM80V, and CMPM80K). That being said, the degree's rigorous curriculum requires dedication to complete. Students in the degree will be well acquainted with the game design loop, rapid prototyping, playtesting, game systems, and Scrum.
The CSGD degree is most known for its senior capstone series (CMPM 170- 172), a year-long studio course where students work in a group of 6-12 people to create a series of polished games/prototypes for your portfolio. Lectures are formatted to guide you as you progress through your production. After every sprint period, students present their game and design processes to the TAs and Professors (and if you are lucky, you get to present to the entire class) and write a postmortem about your game.
The course is also taught in conjunction with ARTG 170-172 (the AGPM degree capstone), making it important to connect with AGPM majors as well.
Side Note #1: The state of the 170 series seems to be volatile right now due to some significant changes in the course format. If anything has changed, please contact me.
Side Note #2: CSGD is offered by the Computational Media Department. Therefore, someone in CS:GD cannot switch into CS, but someone in CS could switch into CS:GD (there's no going back however). It is common to double major in CS and CSGD, so if interested, consult your major advisor.
There are a few subjects that everyone will have to encounter as a computer science major. Namely,
- Programming - Planning and generating instructions to give to a machine.
- Computer Architecture - The functionality, management, and implementation of computer systems.
- Data Structures - Structure used to hold data, like LinkedLists, Heaps, and Trees.
- Algorithms - Methods of solving problems efficiently using data structure.
- Math (CS) - Math topics like Calculus and Linear Algebra.
- Operating Systems - System software that manages computer hardware, software resources, and provides services for computer programs.
The following are more topics that students may encounter at UCSC.
- Databases - A structured way to hold data (like a table).
- Languages and Compilers - The way code is interpreted through your system.
- Distributed Systems - A computing environment where components are spread across many computers.
- 3D Modeling - Generating models using modeling software.
- Computer Networking - Interconnected computing devices that can exchange data and share resources with one another.
You will definitely use these languages.
- Python - High-level language. Slow to compute but fast to write.
- C - Low-level language. Blazingly fast but slow to write. Prone to many errors.
- C++ - Intermediate-level language. Easier to write in relative to C but trades some performance as a result.
- MIPS / RISC-V - Assembly language. Will be used in Computer Architecture classes (CSE 12/120).
Depending on your interests, you may use these languages.
- JavaScript - High-level language which create mobile and desktop apps, along with full-stack applications.
- C# - High-level language creating mobile and desktop apps, cloud-based services, and more.
- R - Mathematical programming language.
- MatLab - Mathematical programming language.
- Haskell - Functional programming language. Free of side effects, used in Functional Programming classes (CSE 114A).
Some useful ones you should definitely consider learning.
- LaTeX - Powerful and complex markup language.
- Markdown - Fast, simple, and lightweight markup language.
- HTML - The markup standard for web pages.
Languages and Game Engines useful for CSGD students:
- C#/Unity - Used in capstone project.
- C++/Unreal Engine - Complicated, powerful engine.
- Godot - Learn if you love FOSS.
- Javascript - Learn it. CMPM courses use this A LOT. Also look into P5.js and Twine.
- GLSL/Shader DSL - Good to know, fun to learn.
Everyone wants to graduate... which means it is imperative that you plan out your classes ahead of time! Below are the requirements to graduate.
General education requirements can be found here at the Registrar. It is recommended that you do not rush through the GEs as they can be finished quite quickly if you take 1 or 2 per quarter. Instead, space them out throughout your undergraduate career, as they are useful in padding classes during difficult quarters.
The curriculum charts can be found here at the university's webpage. More specifically, B.S in Computer Science, B.A in Computer Science, and B.S in Computer Science: Computer Game Design.
The curriculum charts can be found here at the university's webpage. More specifically, B.S in Computer Science, B.A in Computer Science, and B.S in Computer Science: Computer Game Design.
The classes at UCSC are structured such that the subject comes first, followed by their course number, followed by the course title. In other words, subject course_number - course_title
. Lower division courses range from 1 - 99, upper division courses from 100 - 199, and seminars/graduate courses are 200+. Some common subjects can be seen in the chart below.
Subject | Acronym |
---|---|
Computer Science & Engineering | CSE |
Computational Media | CMPM |
Mathematics | MATH |
Statistics | STAT |
Writing | WRIT |
List of Classes:
- AM 10 - Mathematical Methods for Engineers I
- CMPM 120 - Game Development Experience
- CMPM 147 - Generative Design
- CMPM 170-172 - Game Design Studio
- CSE 12 - Computer Systems and Assembly Language and Lab
- CSE 13S - Comp Sys and C Program
- CSE 16 - Applied Discrete Mathematics
- CSE 20 - Beginning Programming in Python
- CSE 30 - Programming Abstractions: Python
- CSE 101 - Introduction to Data Structures and Algorithms
- CSE 102 - Introduction to Analysis of Algorithms
- CSE 103 - Computational Models
- CSE 110A - Fundamentals of Compiler Design I
- CSE 111 - Advanced Programming
- CSE 114A - Foundations of Programming Languages
- CSE 120 - Computer Architecture
- CSE 130 - Principles of Computer Systems Design
- CSE 140 - Artificial Intelligence
- CSE 160 - Introduction to Computer Graphics
- CSE 180 - Database Systems I
- CSE 185S - Technical Writing and Communication in Computer Science
- CSE 186 - Full Stack Web Development I
- MATH 19A - Calculus for Science, Engineering, and Mathematics
- MATH 19B - Calculus for Science, Engineering, and Mathematics
- MATH 23A - Vector Calculus
- STAT 131 - Introduction to Probability Theory
There are plenty of Professors at UCSC, all of which are notable in their own field of study. Below are some of the Professors you may meet.
List of Professors:
Having come into University with minimal Computer Science experience, there are a few I would recommend people to do.
- Take AP Computer Science (if possible) in High School.
- Take community college classes if you can handle the workload. Saves a lot of money and time in the future.
- Learn a language (Java, Python, or C).
- Learn a second language. Compare and contrast the two, understand what it fully going on underneath everything (like JavaScript's
in
vs.of
when iterating over an object or how values are being stored in certain programming languages). - Watch a YouTube video about what proofs and assembly language are.
- Look at examples of proofs and assembly language.
- Learn common data structures and algorithms (LinkedList, Tree, Array).
There are a few things you should prepare if you are planning on going to graduate school. Namely, talking to professors, having a good GPA, and getting experience in research.
Most graduate schools require 3 recommendation letters from people you have worked with. Consequently, you should try to talk or even work with some of the professors at UCSC. A good way to work with them is to be active and get good grades in their class, then ask if they have any projects they need help on after class or via email. Alternatively, you can also tutor for them and that'll also increase your chances of getting a recommendation letter from them. If there are no opportunities to do so, it also doesn't hurt to ask them for a recommendation letter if you did good in their class.
Another major factor in getting into graduate schools is having a good GPA (3.5+). Having this, along with other extracurriculars, is a surefire way to increase your chances of getting into graduate school. After all, undergraduate academics are a good way to measure your likelihood of doing well in graduate school.
Lastly, research experience is also important for graduate school, although not explicitly required. For a doctorate, research is almost certainly required, however, for a masters degree, it is a great addition but not needed.
This section will cover some neat tips and tricks we've uncovered during our time at UCSC. Some topics include ways of making money, best locations, and services.
Some of the campus jobs you may run into are tutoring, reading, and note-taking. Tutors are exactly what it sounds like, after completing a class with at least a B, students can apply to teach students. Readers are essentially graders for a class, and note takers take notes for their current class.
The Baskin School of Engineering offers tutor and reader positions for students. Students have to apply here and specify the class and professor they want to work for. Applications generally open up near the end of the prior quarter.
Learning Support Services sometimes email students with good academic standing to tutor for a recently completed class. Alternatively, students may also apply here to work as well.
Sometimes, if a student has good academic standing, they will get emailed to take notes for a currently enrolled class. They offer $25 per class unit, e.g. $125 for a 5-unit class. I would generally shy away from this offer unless you religiously take notes, as you are required to take notes on every single lecture.
RateMyProfessor is a useful website which has fairly accurate reviews of professors. Keep in mind, however, that most of the people who post a review either loved or hated the professor and will generally have a strong bias.
-
Write introduction paragraph for locations on campus
-
Overnight, study, bathrooms, etc
-
Expand on this
There are a few study locations:
- Science & Engineering Library
- McHenry Library
- Gaming Lab (if you have access)
- DARC 308 (when class is not in session)
Rooms within the library can be reserved here and you can reserve up to a week in advance.
- Science and Engineering Library (SnE)
- McHenry Library
Places that get locked after midnight
- Jack's Lounge
- DARC 308
- Music Center
Places you will need keycard/special access to:
- Any Lab in Baskin Engineering 1/2
- (For CSGD/AGPM majors taking the capstone, you will have exclusive access to the Baskin Engineering 1 Game Labs)
Places where it is comfortable to sleep in:
- Baskin Engineering 1 1st floor couches
- Jack's Lounge (if you a hard wood bench kinda person)
- DARC 308
- Music Center
- Baskin Game labs
- Literally anywhere with 2 chairs, a quiet atmosphere, and no people
So say you are someone who wants to get access to every room in Baskin. Work for BELS (Expand on this.)
- Arrian's speciality add stuff here
- Best and worst bathrooms (link to the reddit post lmao)
Top 3 Best Restrooms
-
Baskin Engineering 2 any floor
-
Science and Engineering 2 3rd floor (All gender restrooms)
-
The woodsDARC Restrooms
There are a lot of useful services at UCSC, here are a few.
Provides counseling for mental health issues. Their website can be found here.
Food bank for students who cannot afford food. Their website can be found here.
Provides many different services, such as vans, counseling, and DRC status for exams. Depending on the Professor, may take exams in a separate location, online, get extra time, etc. Their website can be found here.
Thank you to our Professors for the wonderful education.