|
Computer Science

School of Engineering
Baskin School of Engineering
335 Baskin Engineering Building
(831) 459-2158
http://www.soe.ucsc.edu
Program Description
| Faculty | Course
Descriptions
Computer science is the study of the theoretical and practical
aspects of computer technology and computer usage. The Computer
Science Department offers courses on a wide range of topics, many
of which include a mathematical component, and offers both the bachelor
of arts and bachelor of science degrees, 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 bachelor of arts 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 many
courses outside of the sciences, or even for a double major in another
discipline. The bachelor of science program is appropriate for students
desiring a somewhat stronger concentration in the sciences, with
more courses in computer science and computer engineering, as well
as courses in physics or chemistry; this program also allows for
electives outside of the sciences. Because many courses in both
programs have prerequisites, students leaning toward either program
will enjoy greater scheduling flexibility if they begin 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 and music to business and science. Thus, interdisciplinary
activities are encouraged. For those students whose primary interest
is in another area, a minor in computer science is offered.
The Computer Science Department offers a wide range of
courses intended for nonmajors as well as majors. These include
course 2, Computer Literacy; course 10, Introduction to
Computer Science; course 80B, Systems and Simulation;
and course 80C, Computer Arts and Graphics. Course 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:
courses 60G and 60N, Beginning Programming.
Admissions Policy
Admission to the computer science majors is selective. First-year
applicants may receive direct admission at the time they apply to
UCSC based on their high school record and test scores. Admission
to the major after a student has entered UCSC is based on performance
in the foundation courses: courses 12A and 12B (or 13H); Computer
Engineering 16 or 16H; and Mathematics 19A-B. Please refer to the
School of Engineering section of the catalog for the full admissions
policy.
Disqualification and Satisfactory Progress
in the Major
Students who do not make adequate progress in the computer science
major may be disqualified from the major. Adequate progress normally
means passing a minimum of three courses required for the major
over every three consecutive quarters. (For part-time students,
15 credits attempted equals one full term.) Students who do not
expect to meet this requirement should consult their faculty adviser
and/or the undergraduate director for their major beforehand.
Students who receive a total of three grades of D, F, or No Pass
in the key courses, Computer Science 12A, 12B, 13H, 101; Computer
Engineering 12, 16, and 16H may, at the discretion of the department,
be disqualified from the major.
The department may, at its sole discretion, disqualify from the
major any student making two unsuccessful attempts in any one of
the following principal courses commonly used to satisfy degree
requirements:
- Computer Science 12A, 12B, 13H, 101, 102, 104A, 104B, 111,
112, 115, 116, 130, 132, 160, 161, 180, 181, and 183;
- Computer Engineering 12, 16, 16H, 100, 107, and 110;
- Applied Mathematics and Statistics 27, 131, and 147;
- Physics 5A, 5B, 5C, 6A, 6B, and 6C;
- Chemistry 1B, 1C, 4A, and 4C;
- Mathematics 19A-B and 23A.
Each grade of D, F, or No Pass counts as one unsuccessful attempt;
each grade of W counts as one-half of an unsuccessful attempt.
The School of Engineering section contains additional disqualification
policies, such as maintaining a 2.0 GPA in the major and the ethics
requirement, that apply to computer science majors.
Students at risk of disqualification must meet with the undergraduate
director to discuss their options for continuing in the major.
Letter Grade Policy
The Computer Science Department requires letter grades for all courses
applied toward the B.A., B.S., and minor in computer science with
the exception of two lower-division courses which students may elect
to take Pass/No Pass. This policy includes courses required for
the computer science majors but sponsored by other departments.
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, students are first introduced to programming using the
programming language Java. The core programming sequence, courses
12A/L and 12B/M, exposes students to both Java and C. Many upper-division
courses that involve programming use the C programming language.
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.
Please refer to the School of Engineering section of the catalog
for the policy regarding transfer students.
School of Engineering Policies
Please refer to the School of Engineering section of the catalog
for additional policies that apply to all School of Engineering
programs. These policies include admission to the major, limits
on the number of times courses can be attempted, and the need for
computer science students to obtain preapproval before taking courses
elsewhere.
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.
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 17 courses, eight lower-division
and nine 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 eight additional upper-division
elective courses. To provide an adequate balance in subject matter,
these additional courses must be divided between those that emphasize
the theoretical aspects of the field and those that have a more
practical focus. To provide a depth of study in one aspect of computer
science, three of the eight courses must be chosen from an approved
depth sequence.
Lower-Division Requirements
Each student must successfully complete the following nine required
preparatory courses:
Computer Science
12A/L, Introduction to Programming/Computer Programming Laboratory;
or 13H/L, Introduction to Programming and Data Structures
(Honors)/ Laboratory
12B/M, Introduction to Data Structures/Laboratory; or
13H/L, Introduction to Programming and Data Structures (Honors)/Laboratory
101, Abstract Data Types
Computer Engineering
12/L, Computer Systems and Assembly Language/ Laboratory
16, Applied Discrete Mathematics; or 16H, Honors
Applied Discrete Mathematics
Mathematics
19A-B, Calculus for Science, Engineering, and Mathematics
(Credit for one or both may be granted with adequate performance
on the CEEB calculus AB or BC Advanced Placement exam.)
23A, Multivariable Calculus
Applied Mathematics and Statistics
27, Mathematical Methods for Engineers (formerly Mathematics
27); or Mathematics 21, Linear Algebra; and 24, Ordinary
Differential Equations
Upper-Division Requirements
In addition to the above nine required courses, students must
complete eight upper-division electives. Seven of these courses
must be chosen from the theory and practice lists as follows:
- a minimum of three courses from the theory course list and
a minimum of three courses from the practice course list;
- in addition, the seven courses chosen from the theory and
practice course lists must include all of the courses of one
of the depth sequences listed below;
- the eighth upper-division elective must be selected from any
upper-division (5-credit) School of Engineering course;
- at least 50 percent of these upper-division courses must be
completed at UCSC.
Theory Course List
A double dagger (‡) indicates a course that prepares students
for the senior comprehensive examination. (See Comprehensive Requirement
below.)
Computer Science
102, Introduction to Analysis of Algorithms ‡
130, Computational Models ‡
132, Computability and Computational Complexity ‡
Computer Engineering
107, Mathematical Methods of Systems Analysis:
Stochastic
108, Data Compression
154, Data Communications
177, Applied Graph Theory and Algorithms
Electrical Engineering
103, Signals and Systems
153, Digital Signal Processing (formerly Computer
Engineering 153)
Applied Mathematics and Statistics
131, Introduction to Probability Theory (formerly Mathematics
131A)‡
146, Discrete Dynamical Systems
147, Computational Methods and Applications
Mathematics
115, Graph Theory
117, Advanced Linear Algebra
126, Mathematical Control Theory
148, Numerical Analysis
Practice Course List
Computer Science
104A, Fundamentals of Compiler Design I ‡
104B, Fundamentals of Compiler Design II ‡
105, Systems Programming
109, Advanced Programming
111, Introduction to Operating Systems ‡
112, Comparative Programming Languages ‡
115, Software Methodology ‡
116, Software Design Projects
122, Computer Security
129, Data Storage Systems
140, Artificial Intelligence ‡
160/L, Introduction to Computer Graphics /Laboratory
‡
161/L, Visualization and Computer Animation/Laboratory
180, Database Systems I ‡
181, Database Systems II
183, Hypermedia and the Web
190X, Methods of Cryptography
204, Compiler Design
Computer Engineering
100/L, Logic Design/Laboratory
110, Computer Architecture ‡
113, Parallel and Concurrent Programming
117/L, Embedded Software Laboratory
121/L, Microprocessor System Design/Laboratory
123A, Computer Engineering Design Project I
123B, Computer Engineering Design Project II
125/L, Logic Design with Verilog/Laboratory
126/L, Advanced Logic Design/Laboratory
150, Introduction to Computer Networks
152, Analysis and Design of Communication Protocols
155, Computer Networks Project
163/L, Multimedia Processing and Applications/ Laboratory
Electrical Engineering
130, Introduction to Optoelectronics and Photonics
Depth Sequence List
- Compilers and language theory: Computer Science 104A, 112,
and 130 or 104B
- Operating systems and hardware: Computer Engineering
100/L, Computer Science 111, and Computer Engineering 110 or
121/L
- Theory: Computer Science 102, 130, and 132
- Software methodology: Computer Science 115 and two of the
following: 104A, 112, and 116
- Graphics: Computer Science 160, 161, and Engineering 147
- Databases: Computer Science 180, 181, and 183
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 22 courses
must be completed for the B.S. in computer science degree, whereas
a minimum of 17 courses must be completed for the B.A. in computer
science degree. Out of the 22 courses, 10 are lower-division courses
(including two sciences courses), and 12 are upper-division courses.
The B.S. is more structured than the B.A. in the sense that 18 specific
courses are required, and the remaining four are elective upper-division
computer science or computer engineering courses.
Lower- and Upper-Division Requirements
Students are required to take the following 18 courses. A double
dagger (‡) indicates a course that prepares students for the senior
comprehensive examination (see Comprehensive Requirement below).
Computer Science
12A/L, Introduction to Programming/Computer Programming Laboratory;
or 13H/L, Introduction to Programming and Data Structures (Honors)/
Laboratory
12B/M, Introduction to Data Structures/Laboratory; or
13H/L, Introduction to Programming and Data Structures (Honors)/Laboratory
101, Abstract Data Types ‡
102, Introduction to Analysis of Algorithms ‡
104A, Fundamentals of Compiler Design I ‡
111, Introduction to Operating Systems ‡
112, Comparative Programming Languages ‡
130, Computational Models ‡
Computer Engineering
12/L, Computer Systems and Assembly Language/ Laboratory
16, Applied Discrete Mathematics; or 16H, Honors Applied
Discrete Mathematics
107, Mathematical Methods of Systems Analysis: Stochastic;
or Engineering 131, Introduction to Probability Theory ‡
(formerly Mathematics 131A)
110, Computer Architecture ‡
Mathematics
19A-B, Calculus for Science, Engineering, and Mathematics
23A, Multivariable Calculus
Applied Mathematics and Statistics
27/L, Mathematical Methods for Engineers/ Laboratory (formerly
Mathematics 27); or Mathematics 21, Linear Algebra; and
24, Ordinary Differential Equations
131, Introduction to Probability Theory; or Computer Engineering
107, Mathematical Methods of Systems Analysis: Stochastic
Physics or Chemistry
Either two physics or two chemistry courses, with their associated
laboratories, from the following:
Physics 5A/L, Introduction to Physics I/Laboratory (or
6A/L)
Physics 5B/M, Introduction to Physics II/Laboratory (or
6B/M)
Physics 5C/N, Introduction to Physics III/Laboratory (or
6C/N)
Chemistry 1B/M, General Chemistry/Laboratory
Chemistry 1C/N, General Chemistry/Laboratory
The remaining four courses must be upper-division computer
science or computer engineering electives selected from the theory
and practice course lists (see B.A. Major Requirements reference
above). One of these courses may be replaced by an upper-division
mathematics course from the theory course list.
In addition to the above B.A. or B.S. requirements, students
in the computer science majors must satisfy one of the following
three exit requirements: pass course 116, Software Design Project;
successfully complete a senior thesis; or obtain a scaled score
of 600 or above on the Graduate Record Examination (GRE) Advanced
Computer Science Subject Test.
Students taking course 116 will enroll normally and notify the
instructor that they are using the course to satisfy their exit
requirement. Students receiving a passing grade on the project portion
of the course will satisfy the exit requirement. The project grade
is typically the same as the overall 116 course grade, but may deviate
in exceptional circumstances. Students are permitted to take course
116 a maximum of two times to achieve a passing score. If a student
fails to receive a passing score during these two attempts, he or
she may still take the GRE Advanced Computer Science Subject Test
and achieve a scaled score of 600 or above to satisfy the exit requirement.
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 course 195, Senior Thesis Research; submit a written thesis
proposal; and have it accepted by a faculty supervisor. The supervision
of a senior thesis student is always at the discretion of the faculty
member. For example, an instructor often requires a student to successfully
pass the comprehensive examination before agreeing to the supervision
of a senior thesis. A written report and an oral presentation to
a faculty examining committee are required.
Students who elect to use the GRE Advanced Computer Science Subject
Test as their senior exit requirement must arrange to take the GRE
test and have scores submitted to the department before graduation
deadlines. Contact the UCSC Career Center for GRE information and
application forms.
The following are four sample academic plans for first-year
students as preparation for the computer science major. Plans One
A and Two A are suggested guidelines for students who are committed
to the major early in their academic career. Plans One B and Two
B are for students who are considering the major. Students who plan
carefully can still have several openings free to take other breadth
courses they find interesting.
| Plan
One A, B.A. Degree |
| Year |
Fall |
Winter |
Spring |
1st
(frsh) |
Cmps 10
Math 19A |
Cmps 12A/L
Math 19B |
Cmps 12B/M
Math 23A |
2nd
(soph) |
|
AMS 27/L
Cmpe 12C/L |
CMPS 101
Cmpe 16 or 16H |
| Plan One B, B.A. Degree |
| Year |
Fall |
Winter |
Spring |
1st
(frsh) |
|
Math 19A |
Math 19B |
2nd
(soph) |
Cmps 10
Math 23A |
AMS 27/L
Cmps 12A/L |
CMPS 12B/M
Cmpe 16 or 16H |
| Plan Two A, B.S. Degree |
| Year |
Fall |
Winter |
Spring |
1st
(frsh) |
Cmps 12A/L
Math 19A |
Cmps 12B/M
Math 19B |
Cmpe 12/L
Cmpe 16 or 16H |
2nd
(soph) |
Math 23A
AMS 27/L |
Cmps 101
Phys 6A/L |
Cmpe 100/L
Phys 6C/N |
| Plan Two B, B.S. Degree |
| Year |
Fall |
Winter |
Spring |
1st
(frsh) |
Cmps 10 |
Math 19A |
Cmps 12A/L
Math 19B |
2nd
(soph) |
Cmps 12/M
|
Math 23A
Engr 27/L |
Cmpe 12/L
Cmps 101 or
Cmpe 16 or 16H |
Courses required for the computer science minor are Mathematics
19A-B and 23A; Applied Mathematics and Statistics 27/L (formerly
Mathematics 27); courses 12A/L and 12B/M (or 13H/L) and course 101;
Computer Engineering 12/L and 16 or 16H; and four additional upper-division
computer science courses from a list of approved courses (see the
department’s checklist for the computer science minor at www.soe.ucsc.edu/programs/cs/undergraduate/).
In selecting the four upper-division courses, students may elect
to focus on one subdiscipline of computer science by completing
a depth sequence as shown on the computer science minor checklist.
Upper-division computer engineering and mathematics courses that
generally apply toward the computer science major may not be applied
toward the computer science minor. In addition, some upper-division
computer science courses may not be applied toward the computer
science minor. There is no comprehensive examination or senior thesis
requirement for the minor.
Program Description
The Computer Science Department at UCSC offers both a master’s program
and a doctoral program. The goal of these programs is to help students
develop into independent scholars who are prepared for productive
careers in research, teaching, and industry. The master’s degree
may be used as a terminal degree or as the first step toward the
Ph.D. degree. The student-faculty ratio is five to one, making it
possible for students to receive individual attention and to pursue
programs that fit their individual needs. The intellectual atmosphere
is enriched by regular colloquia and seminars presented by eminent
contributors to the field, many of whom are associated with other
major universities and industrial research centers in the San Francisco
Bay Area.
The Computer Science Department enjoys a close relationship with
the Computer Engineering and Electrical Engineering Departments,
the Bioinformatics Department, and the new applied mathematics and
statistics graduate program currently in development.
Most computer science graduate students are hired as teaching
assistants helping with undergraduate courses, hired as research
assistants working for computer science and other School of Engineering
faculty, or awarded fellowships to pursue their research.
Additional information on the computer science graduate programs
can be found on the department’s web pages at http://www.soe.ucsc.edu.
Requirements for the Master’s Degree: Project
Track
Course Requirements
Each student is required to take 50 credits as follows:
Computer Science
- 200, Research and Teaching in Computer Science and Engineering,
3 credits;
- 201, Analysis of Algorithms, 5 credits;
- 203, Programming Languages, 5 credits;
- 296, Master’s Project, 2 credits;
- Computer Engineering 202, Computer Architecture, 5
credits;
- one course each from three different breadth categories for
a total of three courses (15 credits). See http://www.soe.ucsc.edu/programs/cs/graduate;
- all remaining credits must be graduate elective courses from
the list of approved graduate courses. See http://www.soe.ucsc.edu/programs/cs/graduate;
- two upper-division undergraduate computer science courses
(other than course 101) or a graduate course (not seminar) in
related disciplines outside the list of approved graduate courses
may be substituted for one graduate course, when necessary to
strengthen a student’s preparation for graduate studies, with
prior approval from the adviser and the graduate director.
Project
Completion of a master’s project is required for the master’s degree.
In consultation with the adviser, the student forms a master’s project
reading committee of at least two faculty members, each of whom
is provided a copy of the project report. The final project must
be accepted by the review committee before the award of the master
of science degree.
Requirements for the Master’s Degree: Thesis
Track
Course Requirements
Each student is required to take 48 credits as follows:
Computer Science
- 200, Research and Teaching in Computer Science and Engineering,
3 credits;
- 201, Analysis of Algorithms, 5 credits;
- 203, Programming Languages, 5 credits;
- Computer Engineering 202, Computer Architecture, 5
credits;
- one course each from three different breadth categories for
a total of 3 courses (15 credits). See http://www.soe.ucsc.edu/programs/cs/graduate;
- up to 10 credits of course 297, Independent Study or Research;
or course 299, Thesis Research;
- all remaining credits must be graduate elective courses from
the list of approved graduate courses. See http://www.soe.ucsc.edu/programs/cs/graduate;
- two upper-division undergraduate computer science courses
(other than course 101) or a graduate course (not seminar) in
related disciplines outside the list of approved graduate courses
may be substituted for one graduate course, when necessary to
strengthen a student’s preparation for graduate studies, with
prior approval from the adviser and the graduate director.
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:
Computer Science
- 200, Research and Teaching in Computer Science and Engineering,
3 credits;
- 201, Analysis of Algorithms, 5 credits;
- 203, Programming Languages, 5 credits;
- Computer Engineering 202, Computer Architecture, 5
credits;
- one course each from three different breadth categories for
a total of 3 courses (15 credits). See http://www.soe.ucsc.edu/programs/cs/graduate;
- up to 10 credits of course 297, Independent Study or Research;
or course 299, Thesis Research;
- all remaining credits must be graduate elective courses from
the list of approved graduate courses. See http://www.soe.ucsc.edu/programs/cs/graduate;
- 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.
Dissertation
Each student writes a Ph.D. dissertation. The dissertation must
show the results of in-depth research, be an original contribution
of significant knowledge, and include material worthy of publication.
As the first step, a student submits a written dissertation proposal
to a School of Engineering faculty member. By accepting the proposal,
the faculty member becomes the dissertation supervisor. The dissertation
proposal is publicly and formally presented in an oral qualifying
examination given by a qualifying exam committee, approved by the
graduate committee and the Graduate Council. The student must submit
his or her written dissertation proposal to all members of the committee
and the graduate assistant one month in advance of the examination.
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. Students who have not
advanced to candidacy by the end of their fourth year will be placed
on academic probation.
Each Ph.D. candidate submits the completed dissertation to a reading
committee at least one month prior to the dissertation defense.
The appointment of the dissertation reading committee is made immediately
after the qualifying exam and is necessary for advancing to candidacy.
The candidate presents his or her research results in a public seminar
sponsored by the dissertation supervisor. The seminar is followed
by a defense of the dissertation to the reading committee and attending
faculty, who will then decide 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 adviser and the graduate
committee.
Courses from other institutions may not be applied to the M.S.
degree course requirements.
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 course work
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 towards completion of degree requirements
are subject to dismissal from the program. See http://www.soe.ucsc.edu/programs/cs/graduate/CSCurrentReq.html
for more information on this policy.
|