Computer Science

2018-19 General Catalog

Baskin School of Engineering
(831) 459-2158
https://www.soe.ucsc.edu/

Faculty | Course Descriptions


Program Description

Computer science is the study of the theoretical and practical aspects of computer technology and computer usage. The Computer Science (CMPS) Department offers courses on a wide range of topics, many of which include a mathematical component, and offers undergraduate bachelor of arts and bachelor of science degrees in computer science, as well as the master of science and doctor of philosophy degrees. Besides offering instructional courses, the department engages in a substantial research program in which both advanced undergraduates and graduate students participate. The department offers two undergraduate degree programs.

Bachelor of Arts in Computer Science

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.

Bachelor of Science in Computer Science

The bachelor of science (B.S.) program is appropriate for students desiring a somewhat stronger 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.

Because many courses in both programs have prerequisites, students leaning toward any of these programs will enjoy greater scheduling flexibility if they take some preparatory courses in their first year. The specific course requirements for each undergraduate degree are given below.

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.

Courses for Nonmajors

The Computer Science Department offers a wide range of courses intended for nonmajors as well as majors. These include CMPS 10, Introduction to Computer Science; CMPS 17, Social Networks; CMPS 80J, Technology Targeted at Social Issues; CMPS 80L, Social Data Analytics and Visualization; and CMPS 80S, From Software Innovation to Social Entrepreneurship. CMPS 10, Introduction to Computer Science, may be beneficial to students who are considering the major but have a limited background in computer science. There are also introductory programming classes intended for nonmajors: CMPS 5P, Introduction to Programming in Python.

Program Learning Outcomes for B.S. or B.A. degree

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:

  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.

Computer Science Policies

Declaration of the Computer Science Majors

Students interested in pursuing computer science must indicate computer science as a proposed major on their application for admission to UCSC. Students admitted to UCSC in Fall 2018 will be able to declare a computer science major only if they have been admitted to UCSC as proposed computer science majors.

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: (i) students must declare CS (Computer Science B.S. or Computer Science B.A.) as their major between student’s second to sixth quarter; (ii) students have to have completed all the foundation courses listed below when they declare their major; and (iii) 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. Denials of admission to the major may be appealed by submitting a letter to the School of Engineering Undergraduate Office, addressed to the Computer Science Undergraduate Director, describing why the prior performance is not an accurate reflection of the student's potential. Students who are informed that they are not eligible to declare the major may appeal this decision by submitting a letter to the department chair 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.

Please refer to the “Declaration of Major” section in the School of Engineering Program Statement for more information.

Foundation Courses

The foundation courses for all computer science majors are as follows:

CMPS 12A/L (or Computer Engineering 13, or both CMPS 5J and CMPS 11)
CMPS 12B/M
CMPS 13H/L simultaneously satisfies the requirement of 12A/L and 12B/M
Mathematics 19A (or Mathematics 20A)
Mathematics 19B (or Mathematics 20B)
Computer Engineering 16

Honors in the Majors

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.

Disciplinary Communication (DC) Requirement

Students of every major must satisfy that major’s upper-division Disciplinary Communication (DC) requirement. Refer to major program statements for details.

Letter Grade Policy

Please refer to the School of Engineering section of the catalog (subheading: Letter Grade Policy).

Transfer Students

Most courses in the computer science program at UCSC 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 Java. The core programming sequence, courses 12A/L and 12B/M (or 13H/L, which covers both 12A/L and 12B/M), exposes students to both Java and C. Many upper-division courses that involve programming use the C and C++ programming languages. Transfer students who are not familiar with both Java and C may need to take a remedial course. Students familiar with C++ and Unix should find the transition to Java and C relatively simple.

Prior to admission transfer students must have completed all of the foundation courses listed above, or their articulated equivalents. A student lacking one foundation course may be admitted if they have completed CMPE 12/L (or its articulated alternative).

Furthermore, transfer students must have completed at least three (3) foundation 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. All foundation courses must be completed by the end of the spring term of the previous academic year with a minimum 2.80 GPA.

Transfer students admitted during the winter term must satisfy the major preparation criteria for transfer students admitted during the fall term and, additionally, must have successfully completed at least two (2) required courses for the proposed degree, prior to admission. It is highly recommended that two of these courses are AMS 10 (or Math 21) and Math 23A.

B.A. Degree Planner for Transfer Students

Year

Fall

Winter

Spring

1st
(junior)

AMS10/MATH21

CMPS 101

Breadth List 1

CMPE 12/L

Gen ed

Gen ed

Gen ed

Gen ed

Gen ed

2nd
(senior)

Breadth List 2

Breadth List 3

Elective List 3

Elective List 1

Elective List 2

Elective List 4

Gen ed

Gen ed

Gen ed


Note: one elective must be drawn from the DC course list and one from the capstone course list.

B.S. Degree Planner for Transfer Students

Year

Fall

Winter

Spring

1st
(junior)

CMPE 12/L

CMPS 102

CMPS 111

CMPS 101

CMPE 110

CMPS 130

AMS 131

AMS 10/MATH 21
or MATH 23A

Gen ed

2nd
(senior)

CMPS 112

CMPS elective

CMPS elective

CMPS elective

CMPS elective

CMPS elective

Gen ed

Gen ed

Gen ed


Note: one elective must be drawn from the DC course list and one from the capstone course. Also, the above plan assumes having taken one of MATH 21, 22, 23A, or AMS 10 prior to arriving at UCSC.

For additional information on SOE policies, see the Major Preparation Selection Criteria webpage.

School of Engineering Policies

Please refer to the School of Engineering section of the catalog (subheading: Admission to School of Engineering Majors) for additional policies that apply to all School of Engineering programs. These policies include admission to the major and the need for computer science students to obtain pre-approval before taking courses elsewhere.

Preparation for 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.

B.A. Major 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 15 courses, 7 lower-division and 8 upper-division. Out of these, the 7 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 7 upper-division elective courses.

Lower-Division Requirements

Each student must successfully complete the following seven required preparatory courses:

Computer Science

CMPS 12A/L, Introduction to Programming (Accelerated)/Laboratory (or CMPS 5J, Introduction to Programming in Java and CMPS 11, Intermediate Programming). Computer Engineering 13 may be taken as an alternative to CMPS 12A/L. CMPS 13H/L may be taken as an alternative to CMPS 12A/L and CMPS 12B/M)

CMPS 12B/M, Introduction to Data Structures/Laboratory (CMPS 13H/L may be taken as an alternative to CMPS 12A/L and CMPS 12B/M)

Computer Engineering

Computer Engineering 12/L, Computer Systems and Assembly Language/Laboratory

Computer Engineering 16, Applied Discrete Mathematics

Mathematics

Mathematics 19A and 19B, Calculus for Science, Engineering, and Mathematics (credit for one or both may be granted with adequate performance on the College Entrance Examination Board (CEEB) calculus AB or BC Advanced Placement examination), or Mathematics 20A and 20B, Honors Calculus

Applied Mathematics and Statistics

Applied Mathematics and Statistics 10 (Mathematical Methods for Engineers I) or Mathematics 21 (Linear Algebra)

Upper-Division Requirements

All students in the major must complete the following courses:

CMPS 101, Algorithms and Abstract Data Types

Breadth List (complete any three courses)

  • CMPS 102, Introduction to Analysis of Algorithms
  • CMPS 104A, Compiler Design
  • CMPS 111, Operating Systems
  • CMPS 112, Comparative Programming Languages
  • CMPS 115, Software Methodology
  • CMPS 122, Computer Security
  • CMPS 128, Distributed Systems
  • CMPS 130, Computational Models
  • CMPS 140, Artificial Intelligence
  • CMPS 142, Machine Learning
  • CMPS 143, Natural Language Processing
  • CMPS 160/L, Computer Graphics/Laboratory
  • CMPS 180, Database Systems I
  • Computer Engineering (CMPE) 110, Computer Architecture

Elective List (complete any four courses)

Two of the selected elective courses must be upper-division Computer Science courses except 191-194 and 196-199. For non-Computer Science courses, Computer Engineering, Computational Media, and Applied Mathematics and Statistics courses strongly recommended.

  • Any 5-credit upper-division course offered by the Baskin School of Engineering
  • Any 5-credit upper-division course offered by the Division of Physical and Biological Sciences except those numbered 190 and above (mathematics, physics, chemistry, and biology courses strongly recommended).
  • Art 118, Computer Art: Theories, Methods, and Practices
  • Art 120/121, Advanced Projects in Computer Art I/II
  • Economics 100M, Intermediate Microeconomics, Math Intensive
  • Economics 100N, Intermediate Macroeconomics, Math Intensive
  • Economics 101, Managerial Economics
  • Environmental Studies 115A/L, Geographic Information Systems
  • Film and Digital Media170A, Fundamentals of Introduction to Digital Media Production
  • Film and Digital Media 177, Digital Media Workshop: Computer as Medium
  • Linguistics 112/113/114, Syntax I/II/III
  • Linguistics 116/118, Semantics II/III
  • Linguistics 125, Foundations of Linguistic Theory
  • Music 123, Electronic Sound Synthesis
  • Music 124, Intermediate Electronic Sound Synthesis
  • Music 125, Advanced Electronic Sound Synthesis

B.S. Major Requirements

This program is designed for students who wish to maximize exposure to computer science concepts and methods by taking a larger selection of upper-division computer science courses, as well as additional courses in the sciences and mathematics. A minimum of 20 courses must be completed for the B.S. in computer science, whereas a minimum of 15 courses must be completed for the B.A. in computer science. Out of the 20 courses, 8 are lower-division courses, and 12 are upper-division courses. The B.S. is more structured than the B.A.; 15 specific courses are required, and the remaining 5 are elective upper-division computer science courses.

Lower- and Upper-Division Requirements

Students are required to take the following 15 courses:

Computer Science

CMPS12A/L Introduction to Programming (Accelerated)/Laboratory (or CMPS5J, Introduction to Programming in Java and CMPS11, Intermediate Programming). Computer Engineering 13/L may be taken as an alternative to CMPS 12A/L. CMPS 13H/L to simultaneously satisfy the requirement of CMPS 12A/L and CMPS 12B/M)

CMPS 12B/M Introduction to Data Structures/Laboratory (CMPS 13H/L may be taken to simultaneously satisfy the requirement of CMPS 12A/L and CMPS 12B/M)

CMPS 101 Algorithms and Abstract Data Types
CMPS 102 Introduction to Analysis of Algorithms
CMPS 111 Introduction to Operating Systems
CMPS 112 Comparative Programming Languages
CMPS 130 Computational Models

Computer Engineering

Computer Engineering 12/L Computer Systems and Assembly Language/Laboratory
Computer Engineering 16 Applied Discrete Mathematics
Computer Engineering 107, Probability and Statistics for Engineers, or Applied Mathematics and Statistics 131, Introduction to Probability Theory
Computer Engineering 110 Computer Architecture

Mathematics

Mathematics 19A and 19B, Calculus for Science, Engineering, and Mathematics, or Mathematics 20A and 20B, Honors Calculus

Mathematics 23A, Multivariable Calculus

Applied Mathematics and Statistics

Applied Mathematics and Statistics 10, Mathematical Methods for Engineers I; or Mathematics 21, Linear Algebra

Applied Mathematics and Statistics 131, Introduction to Probability Theory, or Computer Engineering 107, Probability and Statistics for Engineers

Upper-Division Electives

Five courses must be completed from the list below. At least one course must be a computer science course. At most two courses can be from applied mathematics and statistics and mathematics, of which at most one may be substituted with two physics classes, chosen from the following list of class pairs: Physics 6A and 6C, 6A and 6B, 5A and 5C, 5A and 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.

  • All upper-division computer science (CMPS) courses with course number 190 or below
  • CMPS 195
  • All upper-division computer engineering (CMPE) courses with course number 190 or below
  • CMPM 120, Game Development Experience
  • CMPM 131, User Experience for Interactive Media
  • CMPM 146, Game AI
  • CMPM 163, Game Graphics and Real-Time Rendering
  • CMPM 164/L, Game Engines Laboratory
  • CMPM 171, Game Design Studio II
  • CMPM 172 Game Design Studio III
  • Applied Mathematics and Statistics 114, Introduction to Dynamical Systems
  • Applied Mathematics and Statistics 132, Classical and Bayesian Inference
  • Applied Mathematics and Statistics 147, Computational Methods and Applications
  • Mathematics 115, Graph Theory
  • Mathematics 116, Combinatorics
  • Mathematics 117, Advanced Linear Algebra
  • Mathematics 134, Cryptography
  • Mathematics 148, Numerical Analysis
  • Mathematics 160, Mathematical Logic I
  • Mathematics 161, Mathematical Logic II

Disciplinary Communication (DC) Requirement for the Computer Science B.A. and B.S.

Students of every major must satisfy that major's upper-division Disciplinary Communication (DC) requirement. The DC requirement in computer science B.A. or B.S. is satisfied by completing CMPS 115, CMPS 195, Computer Engineering 185, CMPS 132 and 132W, CMPS 185, or CMPS 180 and 180W. These courses may also fulfill one of the upper-division electives listed above.

Comprehensive Requirement for the Computer Science B.A. and B.S.

In addition to the above B.A. or B.S. 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:

CMPS 104B, Fundamentals of Compiler Design II
CMPS 117, Software Design Project II
CMPS 161/L, Introduction to Data Visualization and Laboratory
CMPS 162/L, Advanced Computer Graphics and Animation
CMPS 165, Data Programming for Visualization
CMPS 181, Database Systems II
CMPS 183, Web Applications
CMPS 184, Data Wrangling and Web Scraping
CMPM 172, Game Design Studio III

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 CMPS 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 CMPS 195 is earned when the final thesis is approved.

Computer Science Major 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) a four-year plan for the B.A. major for first-year students with programming experience; and (3) an alternative first-year plan for students without programming experience, suitable for both majors. Students who do not have adequate preparation to take MATH 19A should take MATH 3.

B.S. Four-Year Plan for Students with Programming Experience

Year

Fall

Winter

Spring

1st
(frosh)

CMPS 12A/L

CMPS 12B/M

CMPE 16

MATH 19A

MATH 19B

 

2nd
(soph)

CMPE 12/L

MATH 23A  

CMPS 101

AMS 10

   

3rd
(junior)

CMPE 110

CMPS 130

CMPS 102

AMS 131

Elective

Elective

4th
(senior)

CMPS 111

CMPS 112

Capstone-elective

DC-elective

Elective

 

B.A. Four-Year Plan for Students with Programming Experience

Year

Fall

Winter

Spring

1st
(frosh)

CMPS 12A/L

CMPS 12B/M

CMPE 16

MATH 19A

MATH 19B

 

2nd
(soph)

CMPE 12/L

AMS 10

CMPS 101

3rd
(junior)

Breadth List 1

Breadth List 2

Breadth List 3

Elective List 1

Elective List 2

 

4th
(senior)

Elective List 3
(DC)

 

Elective List 4
(capstone)

B.A/B.S. Degree, First-Year Plan for Students Without Programming Experience

Year

Fall

Winter

Spring

1st
(frosh)

CMPS 5J

CMPS 11

CMPS 12B/M

MATH 19A

MATH 19B

CMPE 16

2nd
(soph)

CMPE 12/L

AMS 10

CMPS 101

3rd
(junior)

Breadth List 1

Breadth List 2

Breadth List 3

Elective List 1

Elective List 2

 

4th
(senior)

Elective List 3
(DC)

 

Elective List 4
(capstone)


Minor Requirements

Eleven courses are required for the computer science minor. These courses are:

Mathematics 11A and 11B or Mathematics 19A and 19B, or Mathematics 20A and 20B;
Applied Mathematics and Statistics 10 or Mathematics 21;
CMPS 12A/L (or Computer Engineering 13/L, or both CMPS 5J and CMPS 11);
CMPS 12B/M;
Computer Engineering 16;
CMPS 101;
Two upper-division, computer science courses selected from the Breadth List for the computer science B.A. given above;
Two additional upper-division computer science courses.

Upper-division computer engineering and mathematics courses may not be applied toward the computer science minor. In addition, CMPS 19X courses may not be applied toward the computer science minor. There is no comprehensive examination or senior thesis requirement for the minor.

Contiguous Five-Year Bachelor’s/Master’s Path

The Department of Computer Science offers a combined bachelor and master of science degree path. Undergraduate students in computer science can apply to the path in order to earn a B.S. degree or a B.A. degree together with an M.S. degree in computer science. It is expected that the combined path can be completed in five years.

The five-year bachelor's/master's path offers a competitive edge to students who are completing their undergraduate degree at UCSC, by enabling those with advanced preparation to move directly from the undergraduate to the graduate program. The path assists qualified enrolled students with a simplified graduate application process that does not require students to take the graduate record examination (GRE) if they have an overall GPA of 3.5 or above by the end of their junior year standing, and makes it possible to complete an M.S. degree with just nine courses beyond the bachelor’s degree.

The path prepares students for leadership positions in industry. The School of Engineering has many opportunities for undergraduate and graduate research. Upon advancement to graduate standing, students are eligible for financial support as graduate research assistants and teaching assistants.

Particularly motivated students can complete both the bachelor’s and the master’s degrees in 15 quarters. However, advance planning is essential. Interested students should contact the graduate advising office and their faculty adviser early in their college career—no later than the end of their junior year.  Students in this path retain undergraduate status until the completion of all undergraduate requirements, but may begin graduate coursework in advance of graduate standing.

Admission to the Contiguous Five-Year Bachelor’s/Master’s Path

The undergraduate degree requirements are the same as those for all computer science majors. Admission to the five-year contiguous path is gained by formally applying to the Computer Science Masters program. The application deadline is usually early January. UC Santa Cruz undergraduate students majoring in computer science may have the graduate record examination (GRE) waived if their overall GPA is 3.5 or above after their third quarter of junior year standing. Contact the graduate advising office for more information.

Graduate Programs

Program Description

The Computer Science Department offers a doctorate (Ph.D.) and two Master of Science (M.S.) degree programs. The normative time for the Ph.D. program is five years for a full-time student. Students admitted to the Ph.D. program come with financial support in the form of a combination of fellowship, teaching assistantship, and/or graduate research assistantships. The normative time for the M.S. thesis track program is two years for a full-time student. This track is for students interested in advanced studies and carrying out independent research as well as those contemplating pursuit of a Ph.D. degree. The normative time for the M.S. project track program is one year for a full-time student. This track is for students interested in advanced studies to better prepare themselves in the information technology workforce. Students in the M.S. programs are not guaranteed any form of financial support from the department. It is the student’s responsibility to ensure that they have sufficient funds for completing the M.S. degree program. Most M.S. students manage their finances by working as interns at companies in the Bay Area during the summer months.

Graduate students work in close collaboration with faculty members in different areas of research including machine learning, database systems, data science, big data, data analytics and visualization, privacy and security, distributed systems, operating systems, storage systems, real-time systems, mobile computing, cloud computing, human computing, software engineering, programming languages, algorithms and complexity, artificial intelligence, technology for social good, natural languages, human-computer interaction, and computer vision.

Additional information on the computer science graduate programs can be found on the Computer Science Department website.

Requirements for the Computer Science Master’s Degree: Project Track

Course Requirements

Each student is required to take 40 credits as follows:

  • Computer Science 200, Research and Teaching in Computer Science and Engineering, 3 credits

  • Computer Science 201, Analysis of Algorithms, 5 credits

  • Computer Science 203, Programming Languages, 5 credits

  • Computer Science 296, Master's Project, 2 credits

  • a base requirement in computer architecture must be met by taking Computer Engineering 110 (grade B or higher) or Computer Engineering 202. Computer Engineering 110 can be taken to meet the architecture requirement, however, the credits will not be counted toward graduation requirements

  • one course each from three different breadth categories for a total of three courses (15 credits)—see the Breath Requirements webpage.

  • all remaining courses must be regular, 5-credit graduate courses from computer science; courses that do not count include all courses numbered 200, 280, 296, 297, and 299

  • at least 25 credits must be in computer science

  • upper-division undergraduate UCSC computer science courses may be taken to strengthen a student's preparation for graduate studies. At most, 10 credits of UCSC upper-division undergraduate computer science courses (other than CMPS 101) may be counted toward the degree requirements.

  • with the exception of 200, 280, 296, 297, and 299, all graduate courses and upper-division courses must be taken for letter grade. Only courses with a letter grade of B- or higher can be counted toward the M.S. degree requirements.

  • courses that are taken to satisfy an undergraduate degree requirement cannot be counted toward the M.S. degree requirements. Undergraduates who are in their senior year at UCSC and are taking computer science upper-division courses or computer science graduate courses that are beyond their undergraduate degree requirements can count those courses as part of their M.S. degree should they apply to the computer science M.S. program.

  • courses from other institutions may be substituted for equivalent courses at UCSC (with the approval of the graduate director and graduate committee) but may not count toward the 40-credit requirement of the computer science M.S. degree. For example, a student may substitute an equivalent course for CMPS 201 but may not count that course toward the 40-credit requirement. As another example, a student may substitute an equivalent graduate course for CMPS 260 and count that as breadth but may not count that course toward the 40-credit requirement or as part of the 25 credits from computer science.

Each student must complete CMPS 200 in their first year.

Each student must complete CMPS 201 or a course to prepare the student for CMPS 201 in their first year, after which CMPS 201 should be completed by the end of the second year.

Each student must complete CMPS 203 or a course to prepare the student for CMPS 203 in their first year, after which CMPS 203 should be completed by the end of the second year.

Each student must complete Computer Engineering 110 or Computer Engineering 202 in their first year.

Project

Completion of a master's project is required for the master's degree. The M.S. project is an individual or a team-based project supervised by a faculty adviser and approved by a reading committee composed of the faculty adviser and a ladder rank SOE faculty, teaching professor, or lecturer.  In situations when a lecturer is on the reading committee, an extra senate faculty member must be added so that senate faculty forms a majority of the reading committee.

A team is made up of three to five members. Projects can either be proposed by the team or the team may bid on projects proposed by faculty members. It is also possible to have industry- or government-sponsored projects, in which case, the industry/government supervisor can be invited to be an optional third member on the reading committee.In situations where multiple teams are bidding on a project, the project sponsor decides on which team work on the project.

Project lifetimes are on the order of one to two quarters. It is expected that team members are enrolled in CMPS 296 in at least one of the quarters. Over the course of the project, teams may be required to meet milestones, e.g., design and specification, implementation plan, checkpoints, etc.,  at a schedule arranged by the faculty adviser. For effective team management and member participation, evaluation strategies such as 360-degree reviews may be employed.

The final project must be accepted by the review committee before the Master of Science degree is conferred.

Requirements for the Computer Science Master's Degree: Thesis Track

Course Requirements

Each student is required to take 43 credits as follows:

  • Computer Science 200, Research and Teaching in Computer Science and Engineering, 3 credits;

  • Computer Science 201, Analysis of Algorithms, 5 credits;

  • Computer Science 203, Programming Languages, 5 credits;

  • Computer Science 299, Thesis Research, 5 credits;
  • a base requirement in computer architecture must be met by taking Computer Engineering 110 (grade B or higher) or Computer Engineering 202. Computer Engineering 110 can be taken to meet the architecture requirement, however, the credits will not be counted toward graduation requirements;

  • one course each from three different breadth categories for a total of three courses (15 credits)—see the Breath Requirements webpage.

  • all remaining courses must be regular, 5-credit graduate courses from computer science courses that do not count include all courses numbered 200, 280, 296, 297, and 299

  • at least 25 credits must be in computer science

  • upper-division undergraduate UCSC computer science courses may be taken to strengthen a student's preparation for graduate studies. At most, 10 credits of UCSC upper-division undergraduate computer science courses (other than CMPS 101) may be counted toward the degree requirements.

  • with the exception of 200, 280, 296, 297, and 299, all graduate courses and upper-division courses must be taken for letter grade. Only courses with a letter grade of B- or higher can be counted toward the M.S. degree requirements.

  • courses that are taken to satisfy an undergraduate degree requirement cannot be counted toward the M.S. degree requirements. Undergraduates who are in their senior year at UCSC and are taking computer science upper-division courses or computer science graduate courses that are beyond their undergraduate degree requirements can count those courses as part of their M.S. degree should they apply to the computer science M.S. program.

  • courses from other institutions may be substituted for equivalent courses at UCSC (with the approval of the graduate director and graduate committee) but may not count toward the 43-credit requirement of the computer science M.S. degree. For example, a student may substitute an equivalent course for CMPS 201 but may not count that course toward the 43-credit requirement. As another example, a student may substitute an equivalent graduate course for CMPS 260 and count that as breadth but may not count that course toward the 43-credit requirement or as part of the 25 credits from CMPS

Each student must complete CMPS 200 in their first year.

Each student must complete CMPS 201 or a course to prepare the student for CMPS 201 in their first year, after which CMPS 201 should be completed by the end of the second year.

Each student must complete CMPS 203 or a course to prepare the student for CMPS 203 in their first year, after which CMPS 203 should be completed by the end of the second year.

Each student must complete Computer Engineering 110 or Computer Engineering 202 in their first year.

Thesis

Completion of a master's thesis is required for the master's degree. To fulfill this requirement, the student submits a written proposal to a faculty member, usually by the third academic quarter. By accepting the proposal, the faculty member becomes the thesis adviser. In consultation with the adviser, the student forms a master's thesis reading committee with at least two additional faculty members, each of whom is provided a copy of the proposal. The student presents an expository talk on the thesis research, and the final thesis must be accepted by the review committee before the award of the master of science degree.

Requirements for the Ph.D. Degree

Course Requirements

Each student is required to take 58 credits as follows:

  • CMPS 200, Research and Teaching in Computer Science and Engineering, 3 credits;

  • CMPS 201, Analysis of Algorithms, 5 credits;

  • CMPS 203, Programming Languages, 5 credits;

  • a base requirement in computer architecture must be met by taking Computer Engineering 110 or Computer Engineering 202 or equivalent elsewhere (approval required); Computer Engineering 110 can be taken to meet the architecture requirement, however, the credits will not be counted toward degree requirements;

  • one course each from three different breadth categories for a total of three courses (15 credits)—see www.cs.ucsc.edu/graduates/breadth/;

  • up to 10 credits of course 297, Independent Study or Research; or course 299, Thesis Research;

  • all remaining courses must be regular, 5-credit graduate courses from: computer science, within the School of Engineering (with faculty adviser's approval); or outside the School of Engineering (with faculty adviser's and grad director's approval); courses that do not count include all courses numbered 200, 280, 296, 297, and 299;

  • at least 33 credits must be in computer science;

  • graduate courses (not seminars) in related disciplines outside the list of approved graduate courses may be substituted, when necessary to strengthen a student's preparation for graduate studies, with prior approval from the adviser and the graduate director. Course selection should form a coherent plan of study and requires adviser approval. Undergraduate courses may not be used to satisfy Ph.D. course requirements;

  • each student is required to complete at least one quarter of teaching assistantship. This requirement can be met after advancement to candidacy. Certain exceptions may be permitted for those with extensive prior teaching experience or those who are not allowed to be employed due to visa regulations.

Ph.D. students who have satisfied the requirements for the master's degree are eligible to receive a master's degree.

Qualifying Examination and Dissertation

The two major milestone in the Ph.D. program are (1) advancing to candidacy, and (2) dissertation defense.

To continue in the Ph.D. program, students must advance to candidacy by the end of their third year. Students are advanced to candidacy after they have completed the course requirements, passed the qualifying examination, cleared all incompletes from their records, have an appointed dissertation reading committee, and paid the filing fee. A successful qualifying examination involves a student writing a research prospectus, a public oral presentation of the proposed research, evaluation of research prospectus and oral presentation by a qualifying examination committee that  is approved by the Graduate Division, and an appointment of a reading committee for the dissertation (which may differ from the qualifying examination committee).

Students who have not advanced to candidacy by the end of their third year (9 quarters) are recommended for academic probation, and are subject to dismissal from the program if they do not advance by the end of their fourth year (12 quarters).

Each student writes a Ph.D. dissertation which must be submitted to the reading committee at least one month prior to the dissertation defense. The dissertation must show the results of in-depth research, be an original contribution of significant knowledge, and include material worthy of publication. Where appropriate, research internships with companies, government laboratories, or elsewhere are recognized (and may be required) as an integral part of the research leading to the dissertation.

The candidate presents their research results in a public seminar sponsored by the dissertation supervisor. The seminar is followed by a defense of the dissertation to the public and the reading committee. The latter then decides whether the dissertation is acceptable or requires revision. Successful completion of the dissertation fulfills the final academic requirement for the Ph.D. degree.

Transfer Credit

Up to three School of Engineering courses fulfilling the degree requirements of either the M.S. or Ph.D. degrees may be taken before beginning the graduate program through the concurrent enrollment program.

Ph.D. students who have previously earned a master's degree in a related field at another institution may substitute courses from their previous university with approval of the graduate director and the graduate committee.

Courses from other institutions may not be applied to the M.S. degree course requirements. They may be used to meet core requirements. For example, an equivalent computer architecture class taken elsewhere may be used in lieu of CMPE 202. However, the student will need to replace it with 5 credits of another graduate elective course.

Petitions should be submitted along with the transcript from the other institution or UCSC extension. For courses taken at other institutions, copies of the syllabi, exams, and other coursework should accompany the petition. Such petitions are not considered until the completion of at least one quarter at UCSC.

At most, a total of three courses may be transferred from concurrent enrollment and other institutions.

Review of Progress

Each year, the faculty reviews the progress of every student. Students not making adequate progress toward completion of degree requirements (see the Graduate Handbook for policy on satisfactory academic progress) are subject to dismissal from the program. Students with academic deficiencies may be required to take additional courses. Full-time students with no academic deficiencies are normally expected to complete the degree requirements at the rate of at least two courses per quarter. Full-time computer science students must complete course 201, Computer Engineering 202, and course 203 within two years and normally must complete all course requirements within two years for the M.S. and three years for the Ph.D.

Ph.D. students who have not advanced to candidacy by the end of their third year (9 quarters) will be recommended for academic probation, and may be subject to dismissal from the program if not advanced to candidacy by the end of their fourth year (12 quarters).

Students receiving two or more unsatisfactory grades (U or letter grade below B-) in the School of Engineering (SoE) courses are not making adequate progress and will be recommended for academic probation for the following three quarters of registered enrollment. Withdrawing or taking a leave of absence does not count as enrollment. Part-time enrollment is counted as a half quarter of enrollment.

Should any computer science graduate student fail a School of Engineering course while on probation, the Computer Science Department may request the graduate dean to dismiss that student from the graduate program. If after being removed from probation, the student again fails a School of Engineering course, he or she will return immediately to academic probation.

Graduate students experiencing circumstances or difficulties that impact their academic performance should contact their faculty adviser and the graduate director immediately. Students may appeal their dismissal.

[Return to top.]

Revised: 07/15/18