Department of Computer Science,
Harold Frank Hall, Room 2104;
Telephone (805) 893-4321
Website: www.cs.ucsb.edu (will open in a new browser window)
Chair: Linda Petzold
Vice Chair: Tevfik Bultan
Contents:
- Faculty
- Emeriti Faculty
- Affiliated Faculty
- Overview
- Computer Engineering Major
- Mission Statement
- Program Goals for Undergraduate Programs
- Program Outcomes for Undergraduate Programs
- Admission to the Major
- Undergraduate Program
- Graduate Program
- Computer Science Courses
Divyakant Agrawal, Ph.D., State University of New York at Stony Brook, Professor (distributed systems and databases)
Kevin Almeroth, Ph.D., Georgia Institute of Technology, Professor (computer networks and protocols, large-scale multimedia systems, performance evaluation and distributed systems)
Elizabeth Belding, Ph.D., University of California, Santa Barbara, Associate Professor (mobile wireless networking, ad hoc mobile networks and protocols, and multimedia systems and performance evaluation)
Tevfik Bultan, Ph.D., University of Maryland, College Park, Associate Professor (model checking, concurrency, web services, static analysis, software engineering)
Peter R. Cappello, Ph.D., Princeton University, Professor (Java/Internet-based parallel computing, multiprocessor scheduling, market-based resource allocation, self-directed learning)
Fred Carlin, Ph.D., University of California, Santa Barbara, Lecturer
Frederic T. Chong, Ph.D., Massachusetts Institute of Technology, Professor (computer architecture, novel computing technologies, quantum computing, embedded systems, and architectural support for system security and reliability)
C. Michael Costanzo, Ph.D., University of California, Santa Barbara, Lecturer
Ömer Egecioglu, Ph.D., University of California, San Diego, Professor (bijective and enumerative combinatorics, parallel algorithms, approximation algorithms, combinatorial algorithms)
Amr El Abbadi, Ph.D., Cornell University, Professor (information systems, databases, fault-tolerant distributed systems)
Frederic Gibou, Ph.D., University of California, Los Angeles, Assistant Professor (computational mathematics, modeling and simulations - materials science, multiphase flows; level-set methods, ghost-fluid methods, and interface problems; and image segmentation with applications to radiotherapy treatment planning and civil engineering)*2
John Gilbert, Ph.D., Stanford University, Professor (combinatorial scientific computing, tools and software for computational science and engineering, numerical linear algebra, smart matter and systemic MEMS, distributed sensing and control)
Teofilo Gonzalez, Ph.D., University of Minnesota, Professor (multimessage multicasting, VLSI placement and routing algorithms, scheduling theory; design and analysis of algorithms)
Tobias Höllerer, Ph.D., Columbia University, Assistant Professor (human computer interaction, computer graphics, virtual and augmented reality, wearable and ubiquitous computing)
Oscar H. Ibarra, Ph.D., University of California, Berkeley, Professor (design and analysis of algorithms, theory of computation, computational complexity, parallel computing)
Eliot Jacobson, Ph.D., University of Arizona, Tucson, Lecturer
Richard A. Kemmerer, Ph.D., University of California, Los Angeles, Professor (specification and verification of systems, computer system security and reliability, programming and specification language design, software engineering, secure mobile computing)
Chandra Krintz, Ph.D., University of California, San Diego, Assistant Professor (dynamic and adaptive compilation systems, high-performance internet (mobile) computing, runtime and compiler optimizations for Java/CIL, efficient mobile program transfer formats)
Linda R. Petzold, Ph.D., University of Illinois at Urbana–Champaign, Professor (computational science and engineering, multiscale numerical simulation, systems biology)*2
Tim Sherwood, Ph.D., University of California, San Diego, Assistant Professor (computer architecture, dynamic optimization, network and security processors, embedded systems, program analysis and characterization, hardware support of software systems)
Ambuj Singh, Ph.D., University of Texas at Austin, Professor (bioinformatics, databases, parallel and distributed systems)*4
Terence R. Smith, Ph.D., Johns Hopkins University, Professor (spatial databases, techniques in artificial machine intelligence)*3
Jianwen Su, Ph.D., University of Southern California, Professor (database systems and applications, web services)
Subhash Suri, Ph.D., Johns Hopkins University, Professor (algorithms, internet computing, computational geometry)
Matthew Turk, Ph.D., Massachusetts Institute of Technology, Professor (computer vision, human computer interaction, perceptual user interfaces, imaging systems)
Wim van Dam, Ph.D., University of Oxford and University of Amsterdam, Assistant Professor (quantum computation, quantum algorithms, quantum communication, quantum information theory)*5
Giovanni Vigna, Ph.D., Politecnico di Milano, Associate Professor (computer and network security, network models and protocols, mobile code languages and systems, mobile agent security)
Yuan-Fang Wang, Ph.D., University of Texas at Austin, Professor (computer vision, computer graphics, artificial intelligence)
Richard Wolski, Ph.D., University of California, Davis/Livermore, Associate Professor (distributed systems, computational grid computing, on-line performance forecasting)
Tao Yang, Ph.D., Rutgers University, Professor (parallel and distributed systems, high performance scientific computing, cluster-based network services, Internet search)
Ben Zhao, Ph.D., University of California, Berkeley, Assistant Professor (overlay and peer-to-peer networks, large-scale distributed systems, mobile and wireless networks, system security)
Heather Zheng, Ph.D., University of Maryland, College Park, Assistant Professor (wireless/mobile/ad hoc networking, cognitive radio and dynamic spectrum networks, multimedia communications, security, game theory, algorithms, network simulation and modeling)
Alan G. Konheim, Ph.D., Cornell University, Professor (computer communications, computer systems, modeling and analysis, cryptography)
Marvin Marcus, Ph.D., University of California, Berkeley, Professor Emeritus (linear and multilinear algebra, scientific computation, numerical algorithms)
Roger C. Wood, Ph.D., University of California, Los Angeles, Professor Emeritus (computer system modeling, design and analysis, computer architecture)*1
*1 Joint appointment with the Department of Electrical and Computer Engineering.
*2 Joint appointment with the Department of Mechanical Engineering.
*3 Joint appointment with the Department of Geography.
*4 Joint appointment with the Department of Biomolecular Science and Engineering (BMSE).
*5 Joint appointment with the Department of Physics.
Edward Chang, Ph.D. (Electrical and Computer Engineering)
James Frew, Ph.D. (Bren School of Environmental Science and Management)
John Hershberger, Ph.D.
B.S. Manjunath, Ph.D., (Electrical and Computer Engineering)
P. Michael Melliar-Smith, Ph.D. (Electrical and Computer Engineering)
Kenneth Rose, Ph.D. (Electrical and Computer Engineering)
Klaus Schauser, Ph.D.
The Department of Computer Science offers programs leading to the degrees of bachelor of arts and bachelor of science in computer science, and the M.S. and Ph.D. in computer science. The B.A. is a College of Letters and Science major; the B.S. is a College of Engineering major. The B.S. degree program in computer science is accredited by the Computing Accreditation Commission of the Accrediting Board for Engineers and Technology.
One of the most important aspects of the Computer Science program at UCSB is the wealth of “hands-on” opportunities for students. UCSB has excellent computer facilities. Campus Instructional Computing makes accounts available to all students. Computer Science majors and premajors use the workstations in the Computer Science Instructional Lab and Engineering Computing Infrastructure computing facilities. Students doing special projects can gain access to machines at the NSF Supercomputing Centers via the Internet.
Additional computing facilities are available for graduate students in the Graduate Student Laboratory. Students working with faculty have access to the specialized research facilities within the Department of Computer Science.
The undergraduate major in computer science has a dual purpose: to prepare students for advanced studies and research and to provide training for a variety of careers in business, industry, and government.
Under the direction of the Associate Dean for Undergraduate Studies, academic advising services are jointly provided by advisors in the College of Engineering, as well as advisors in the department. A faculty advisor is also available to help with academic program planning. A department publication, Computer Science Undergraduate Brochure, describes degree offerings and degree requirements.
This major is offered jointly by the Department of Computer Science and the Department of Electrical and Computer Engineering. For information about this major, refer to the section on Computer Engineering.
The Computer Science programs seek to prepare undergraduate and graduate students for productive careers in industry, academia, and government, by providing an outstanding environment for teaching and research in the core and emerging areas of the discipline. The programs place high priority on establishing and maintaining innovative research programs that enhance educational opportunities and encourage a broad base of extramural support.
Program Goals for Undergraduate Programs
The goal of the computer science undergraduate program is to prepare future generations of computer professionals for long-term careers in research, technical development, and applications. Baccalaureate graduates, ready for immediate employment, are eminently trainable for most computer science positions in government and a wide range of industries. Outstanding graduates interested in highly technical careers, research, and/or academia, are fully prepared to further their education in graduate school.
The primary computer science departmental emphasis is on program design, analysis and implementation, with both a strong theoretical foundation and a strong practical component, covering most aspects of computing and computer communications.
Program Outcomes for Undergraduate ProgramsThe program enables students to achieve, by the time of graduation:
- An ability to apply knowledge of computing and mathematics appropriate to computer science.
- An ability to analyze a problem, and identify and define the computing requirements appropriate to its solution.
- An ability to design, implement, and evaluate a computer-based system, process, component, or program to meet desired needs.
- An ability to function effectively on teams to accomplish a common goal.
- An understanding of professional, ethical, and social responsibilities.
- An ability to communicate effectively.
- An ability to analyze the impact of computing on individuals, organizations, and society, including ethical, legal, security, and global policy issue.
- Recognition of the need for and an ability to engage in continuing professional development.
- An ability to use current techniques, skills, and tools necessary for computing practice.
- An ability to apply mathematical foundations, algorithmic principles, and computer science theory in the modeling and design of computer-based systems in a way that demonstrates comprehension of the trade-offs involved in design choices.
- An ability to apply design and development principles in the construction of software systems of varying complexity.
Students intending to major in computer science should declare a computer science pre-major when applying for admission to the university.
Computer Science majors and pre-majors have priority when registering in all Computer Science courses. Students who declare the computer science pre-major or major are responsible for satisfying major requirements in effect at the time of their declaration. When students have completed the required pre-major courses, they must petition to change from pre-major to major status. Students cannot be accepted into the computer science major unless they have successfully completed the computer science preparation for the major courses.
Courses required for the pre-major or major, lower- or upper-division, inside or outside of the Department of Computer Science, must be taken for letter grades.
Undergraduate Program
Bachelor of Science--Computer Science
Note: Schedules should be planned to meet both General Education and major requirements. Detailed descriptions of these requirements are presented in the College of Engineering Announcement and General Education booklet.
Admission to the full BS major is contingent upon the prior completion of the courses listed in the preparation for the major with at least a 2.75 cumulative grade point average.
Preparation for the major - B.S.
Required: Mathematics 3A-B-C and 5A-B; Computer Science 10, 20, 30, 40, 50, and 60; and Probability and Statistics 120A.
Students with no previous programming background should take CMPSC 5JA before taking CMPSC 10. CMPSC 5JA is not included in the list of preparation for the major courses but may be counted as a free elective.
Students applying for major status in the BS program who have completed more than 105 units will not be considered for a change of major/change of college unless they can demonstrate that they will be able to complete all of the degree requirements for the proposed program without exceeding 200 units.
Students may petition to enter the computer science pre-major at any time Option A below has been met, or they may petition to enter the full major when Option B has been met.
Option A: Satisfactory completion at UCSB of at least four 4-unit courses required for the computer science preparation for the major, including at least two computer science courses, with a University of California grade point average of at least 3.0 in all the preparation for the major courses taken.
Option B: Satisfactory completion of all the preparation for the major requirements with a University of California grade point average of at least 2.75.
Please note: Pre-major status does not guarantee admission to major status. To be admitted to the major, the student must complete the pre-major courses with a minimum grade point average of 2.75. All courses required for the preparation for the major must be taken for a letter grade. No exceptions will be made to the minimum 2.75 GPA rule.
Upper-division major
The following courses are required: Computer Science 111 or 140, 130A-B, 138, 154, 160, 162, 170; Electrical and Computer Engineering 152A; and Probability and Statistics 120B. In addition, at least 20 units of major field electives are required. Prior approval of these electives must be obtained from the faculty advisor. In addition, the following courses are required: Engineering 101, Physics 1, 2, 3, 3L and at least 8 units of science electives. Lists of approved major field electives and science electives are available in the computer science office and on the web at: www.cs.ucsb.edu/undergraduate
Bachelor of Arts -- Computer Science
The College of Letters and Science offers a bachelor of arts degree in computer science, with emphases in computational biology, computational economics, and computational geography. For information about this major, refer to the College of Letters and Science section.
Five-Year Bachelor of Science/Master of Science Program
A combined B.S./M.S. program in computer science provides an opportunity for outstanding undergraduates to earn both degrees in five years. Additional information about this program is available from the computer science graduate program assistant or online at www.cs.ucsb.edu/undergraduate. Interested students may apply after completing at least 3 but no more than 8 upper division computer science courses. In addition to fulfilling undergraduate degree requirements, B.S./M.S. degree candidates must meet Graduate Division degree requirements, including university requirements for academic residence and units of coursework, as described in the section "Graduate Education at UCSB.”
Graduate Program
Admission Requirements
All students must satisfy the University’s requirements as described in the section "Graduate Education at UCSB.” Applicants to the Department of Computer Science must have a bachelor’s degree in some discipline of science, engineering, or mathematics.
Applicants must have a grade-point average of at least 3.0 in their last two years of undergraduate study. Satisfactory performance in the verbal, quantitative, analytical sections of the Graduate Record Examination is required of all applicants. Applicants whose native language is not English are required to take the Test of English as a Foreign Language (TOEFL) or the International English Language Testing System (IELTS). Students who have completed an undergraduate or graduate education at an institution whose primary language of instruction is English may request an exception to this requirement. Applicants who have received a bachelor’s or master’s degree from a U.S. college or university are exempt from this requirement.
All application materials for graduate study must be received by January 15.
Please note: The Computer Science Department admits students to the graduate program only in fall quarter.
Master of Science Program--Computer Science
Objective
The purpose of the Master of Science program is to provide advanced training in computer science to prepare students for positions in industry and government, or for further graduate study.
There are three plans for the Master of Science program: thesis, comprehensive examination, or project.
Requirements Common to All Plans
There are three major areas - Theory, Systems, and Applications. All graduate courses in the department are classified into at most two major areas. The following requirements are common to all plans.
-
42 units of upper-division (excluding 193) or graduate courses (200+, 595, 596, 598) that are approved by a Computer Science Faculty Advisor must be completed.
-
A major area must be chosen. Four CS graduate courses (200 level) should be taken from the major area and one CS graduate course (200 level) must be taken from each of the other two areas. The same course cannot be used to satisfy more than one requirement.
-
The grade in each major area course must be at least a B.
-
At least two units and at most six units of 595 research seminar units may be used towards the unit requirements.
- The study plan must be approved by the faculty advisor.
Additional Requirements for Plan I: Thesis
The student must submit an acceptable thesis, approved by a thesis committee composed of three UC ladder faculty members. Two members, including the chair, must be computer science faculty members. Up to 12 units of 596 and 598 may be used toward unit requirements. A public defense of the thesis is required.
Additional Requirements for Plan II: Comprehensive Examination
Besides the six courses required for all plans, twelve additional units of coursework must be completed with 100 (excluding 193) and 200 level courses. Of these, eight units must be in the 200 level.
The comprehensive examination will be offered twice a year, in the eighth week of the fall and spring quarters. Each student will list four graduate courses; a question from each of these courses will be asked on the examination. Three questions must be answered correctly.
Additional Requirement for the Project Option
The project plan requires more coursework than the thesis plan but less research, establishing a useful intermediate position between the other two plans. Beyond the major area and breadth courses common to all plans, the project plan’s course requirements include two additional 200-level graduate courses. In addition to these course requirements, the student must complete:
- six units of 596: Directed Research.
- a project under the supervision of a Computer Science permanent faculty member. The project must be approved by a Project Committee consisting of two permanent faculty members of the Computer Science Department. Approval is based on the project’s deliverables:
- a report
- a 30-minute public presentation describing
the project
Study Plan
Upon entry into the graduate program, each student is assigned a faculty advisor who guides the student through his/her graduate career. In consultation with his/her faculty advisor, each student prepares a Study Plan, which details the courses that will be taken in order to fulfill the course requirements. The study plan may be changed at any time with the approval of one’s faculty advisor and the graduate advisor. If a student withdraws from a course that affects the study plan, a new study plan must be prepared prior to withdrawal.
Doctor of Philosophy -- Computer Science
Admission
Students may apply directly to the Ph.D. program without a master’s degree. However, a solid background in computer science or one or more fields of science and engineering is expected. Applicants to the Ph.D. program must have a grade-point average of at least 3.5 in their last two years of study. Students entering this program should be committed to completing a Ph.D. The department discourages students petitioning to switch to the master’s program; such petitions are approved only under exceptional circumstances.
Objective
The purpose of the Doctor of Philosophy program in computer science is to prepare students for research and teaching positions in universities and colleges, and for research and leadership positions in industry and government. The primary aim of the program is to train students in the methods of scientific inquiry and independent research. This is accomplished through advanced coursework and active participation with the faculty in their research programs. Doctor of Philosophy students are expected to have a broad knowledge of all fields of computer science and have a deep understanding of at least one of its areas. In addition to this requirement, a Doctor of Philosophy student must be up to date in all the developments in his/her major area of specialization. The most important component of the Doctor of Philosophy program is learning to perform independent and significant research in one’s area of specialization.
Requirements for the Doctor of Philosophy degree typically are completed in four to five years, depending on whether or not a student enters the program with an M.S. in computer science.
Course Requirements
To ensure sufficient breadth at the graduate level, Ph.D. students must complete at least ten graduate courses (four by the end of their first year) with a GPA of at least 3.5, and a grade in each course of at least 3.0. Of the ten courses, students must take at least two courses in Foundations of Computer Science and two courses in Systems. The set of courses that students plan to take must be endorsed by their academic advisor and the graduate advisor.
Exam Requirements
To earn a Ph.D., students must successfully complete the above course requirements plus three examinations: the major area examination (qualifying examination); the thesis proposal; and the dissertation defense.
After selecting an area of research, a student forms a doctoral committee to supervise dissertation research. The doctoral committee must be chaired by a ladder faculty member from the department and should include a minimum of three UC ladder faculty, two (including the chair) must be in computer science, although faculty from other UCSB departments may also be members. In special circumstances, non-UCSB faculty may be members. After the doctoral committee approves a student’s proposed major area, the major area examination tests the student’s knowledge of this area and supporting areas. As a part of this examination, a student submits a set of relevant papers from the major area and prepares a brief presentation. Passing this oral examination allows the student to advance to candidacy for the doctoral degree.
After passing the major area examination, a student prepares a dissertation proposal that describes the dissertation topic, summarizes relevant background literature, and presents a comprehensive research plan for the doctoral dissertation. The thesis proposal oral examination determines the feasibility of the research plan and the appropriateness of the research topic. This examination is administered by the student’s doctoral committee.
The final examination is the defense of the candidate’s dissertation in a public seminar. The candidate’s doctoral committee evaluates the presentation and dissertation to determine if the student has successfully defended the dissertation.
Optional Graduate Degree Emphasis in Computational Science and Engineering
The Departments of Chemical Engineering, Computer Science, Earth Science, Electrical and Computer Engineering, Mathematics, and Mechanical Engineering offer an interdisciplinary master’s and Ph.D. degree emphasis in computational science and engineering (CSE).
CSE is a rapidly growing multidisciplinary area with connections to the sciences, engineering, mathematics, and computer science. Computer models and simulations have become an important part of the research repertoire, supplementing (and in some cases replacing) experimentation. Going from application area to computational results requires domain expertise, mathematical modeling, numerical analysis, algorithm development, software implementation, program execution, analysis, validation, and visualization of results. CSE addresses these issues.
Although CSE includes elements from computer science, applied mathematics, engineering and science, it focuses on the integration of knowledge and methodologies from all of these disciplines and, as such, is a subject distinct from any of them.
All students pursuing an emphasis in CSE must complete the following:
- Numerical Methods: Computer Science 211A-B-C-D (students must take at least three).
- Parallel Computing: Computer Science 240A-B (students must take at least one).
- Applied Mathematics: Students must take one of the Math 214A-B, Math 215A-B sequences (run concurrently with Math119A-B and Math124A-B, respectively), or Chemical Engineering 230A-B.
- Credit will not be given for more than one of these sequences. Advanced courses may be substituted, with approval, as follows: Math 243 instead of Math 214, and Math 246 instead of Math 215.
CSE master’s and Ph.D. graduates are expected to have a solid grounding in CSE core subjects discussed above. A CSE thesis or dissertation should involve the solution of a real-world problem, using and/or developing tools to advance the CSE discipline. Some examples of such problems include, but are not limited to: data mining, computational biology, parallel computing tools for scientific computation, computational fluid dynamics, computational engineering and materials, and problem solving environments.
The specific requirements for the M.S. in Computer Science (thesis option only) with the CSE emphasis are as follows:
- 42 units in upper division or graduate courses (excluding the 193) including:
- 20 graduate course units from 3 areas: Theory, Systems, Applications (the Computer Science courses in the CSE core are considered to be part of the Applications track for the M.S. degree in Computer Science). These units must include:
- four Computer Science graduate courses from the CSE core.
- at least one course in the theory or systems area.
- 8 units of applied mathematics from Math 214A-B, 215A-B, or 243/246 to complete the CSE core.
- 2 units of Computer Science 595 (seminar).
- 12 units of thesis preparation (596, 598).
- A master’s thesis in CSE.
The thesis must be written under the supervision of a Computer Science CSE ladder faculty member. The thesis committee must include a minimum of three permanent ladder faculty members, at least two from Computer Science and one from CSE (may be CSE faculty member from another department).
Students pursuing a Ph.D. with an emphasis in CSE must:
- Satisfy the course requirements for the general Doctor of Philosophy degree in Computer Science
- Complete the CSE core course sequence
- Pass a major area examination in CSE, pass the proposal oral examination, and write and defend a dissertation in CSE.
The student’s doctoral examination committee (including the chair) must include at least two computer science CSE ladder faculty members and at least one ladder faculty member from another department.
Optional Ph.D. Emphasis in Technology and Society
Students pursuing a Ph.D. in this department may petition to add an Emphasis in Technology and Society. The Emphasis brings together doctoral students in engineering, social sciences, and the humanities to engage in multidisciplinary coursework and research into the cultural and societal changes resulting from the use of new information technologies. The Emphasis features a structured set of courses that may be taught individually and collaboratively by faculty across disciplines: Anthropology, Communication, Computer Science, English, History, Media Arts and Technology, Political Science, and Sociology.
To be eligible for admission to the Emphasis, students must be enrolled in good standing in the department. Petitions for adding the Emphasis can be made at any time in a student’s graduate career, but typically will be made after at least one successful year of study in the home department. Work completed prior to admission that meets Emphasis requirements (as determined by the Ph.D. Emphasis Faculty Executive Steering Committee) may be counted towards its completion.
Requirements for completing the optional Emphasis in Technology and Society include:
1. Gateway Technology and Society Colloquium
Students must complete a 1-unit colloquium that brings together students and faculty from multiple disciplines to explore various approaches to studying technology and society. In addition to helping students understand similarities and differences in conceptualization and knowledge production across disciplines, the seminar promotes interaction among students from different departments.2. Graduate Coursework
Students must complete four 4-unit courses with a grade of B or better, two each from Area 1 (Culture and History) and Area 2 (Society and Behavior). Area 1 courses explore the humanistic study of cultures, histories and meanings as they intersect with technology. Area 2 investigates the social scientific study of technology in relationship to human behavior, organizations, and social structures.
One course from the student’s home department can be applied toward meeting this requirement. Students can petition to substitute a non-listed course, subject to approval by the Technology and Society Faculty Executive Committee.3. Dissertation
A student’s dissertation must have relevance to at least one of the two Emphasis areas. In addition, the student’s dissertation committee must include a member from another department participating in the Emphasis. Exceptions are subject to approval by the Technology and Society Faculty Executive Committee.
For additional information and a current list of courses, please contact the graduate advisor or visit www.technology-society.ucsb.edu.
Computer Science Courses
5AA-ZZ. Introduction to Computer Programming
(4) Staff
Not open for credit to students who have completed Computer Science 10 or Engineering 3. May not be repeated with a different suffix.
Introduction to programming and the organization of computers. Basic programming concepts, algorithms, data and control structures, debugging, program design, documentation, structured programming.
10. Computer Programming
(4) Su
Prerequisite: Mathematics 3A.
Students with no prior programming background are encouraged to take Computer Science 5JA before 10.
Introduction to programming and computers. Basic programming concepts: algorithms, data and control structures, debugging, program design, documentation, structured programming, object oriented programming.
11AA-ZZ. Programming Language Laboratory
(1) Staff
Different sections may be repeated. Sections not always offered.
Recommended preparation: knowledge of at least one programming language.
A self-paced course to allow a student who already possesses a working knowledge of at least one programming language an opportunity to learn other languages of interest.
12. Programming Methods in C
(4) Gonzalez
Prerequisites: Computer Science 5 or 10 or Engineering 3.
Not open for credit to computer science majors or pre-majors. Not open for credit to students who have completed Computer Science 11C, 22, or 60.
Introduction to the UNIX system, C programming language, and data structures. Topics include: introduction to the UNIX system, C shell and shell scripts; UNIX file system and utilities; stacks, queues, lists, and trees.
20. Programming Methods
(4) Agrawal
Prerequisite: Computer Science 10 and
Mathematics 3B.
Programming techniques as follows: specification, representation, and manipulation of basic data structures such as stacks, queues, lists, trees, sets, arrays, etc. Searching and sorting techniques; predicate logic and program correctness; induction and recursion; running time analysis. Students write several medium-sized object-oriented programs.
30. Introduction to Computer Systems
(4) Sherwood, Zheng
Prerequisite: Engineering 3 or Computer Science 5AA-ZZ or 10; and, Mathematics 3C.
Not open for credit to students who have completed ECE 15 or 15B.
Basic computer organization, assembly language programming.Gates, combinational circuits, flip-flops and the design and analysis of sequential circuits.
40. Foundations of Computer Science
(4) Su
Prerequisites: Computer Science 10 or 12; and Mathematics 3C.
Propositional predicate logic, set theory, functions and relations, counting, mathematical induction and recursion (generating functions).
50. Programming Project
(4) Cappello
Prerequisites: Computer Science 10 and 20.
Program design (modularization, designing for changeability, robustness, and testability), basic software engineering practices, principles of user interface design. Students design, implement, and test one or two extensive object-oriented programs.
60. Introduction to C, C++, and UNIX
(4) Hollerer
Prerequisite: Computer Science 20.
Reduced credit of 2 units will be given to students who have completed Computer Science 12.
Syntax and semantics of C and C++. Introduction to basic UNIX utilities and tools. Students complete several small projects that exercise their understanding of the material presented in class.
95AA-ZZ. Undergraduate Seminar in Computer Science
(1-4) Staff
Prerequisites: Open to pre-computer science and pre-computer engineering majors only; consent of instructor.
Seminars on introductory topics in computer science. These seminars provide an overview of the history, technology, applications, and impact in various areas of computer science, including: A. Foundations, B. Software Systems, C. Programming languages and software engineering, D. Information management, E. Architecture, F. Networking, G. Security, H. Scientific computing, I. Intelligent and interactive systems,
J. History. N. General.
111. Introduction to Computational Science
(4) Petzold
Prerequisites: Mathematics 5B; and, Computer Science 12 or 60.
Not open for credit to students who have completed Computer Science 110A.
Introduction to computational science, emphasizing basic numerical algorithms and the informed use of mathematical software. Matrix computation, systems of linear and nonlinear equations, interpolation and zero finding, differential equations, numerical integration. Students learn and use the Matlab language.
123. Overview of Computer Systems: Hardware and Software
(4) El Abbadi
Prerequisites: Computer Science 20 and 60.
Not open for credit to students who have completed Computer Science 30 or Computer Science 170.
Basic computer architecture: CPU, memory, I/O. Basic operating systems concepts: processes, synchronization, memory management, virtual memory, file systems.
130A. Data Structures and Algorithms I
(4) Gonzalez
Prerequisites: Computer Science 20, 40 and 60; PSTAT 120 or ECE 139; open to computer science, computer engineering, and electrical engineering majors only.
The study of data structures and their applications. Correctness proofs and techniques for the design of correct programs. Internal and external searching. Hashing and height balanced trees. Analysis of sorting algorithms. Memory management. Graph traversal techniques and their applications.
130B. Data Structures and Algorithms II
(4) Gonzalez
Prerequisites: Computer Science 40 and 130A.
Design and analysis of computer algorithms. Correctness proofs and solution of recurrence relations. Design techniques: divide and conquer, greedy strategies, dynamic programming, branch and bound, backtracking, and local search. Applications of techniques to problems from several disciplines. NP - completeness.
138. Automata and Formal Languages
(4) Egecioglu
Prerequisites: Computer Science 40; open to computer science and computer engineering majors only.
Not open for credit to students who have completed Computer Science 136.
Formal languages; finite automata and regular expressions; properties of regular languages; pushdown automata and context-free grammars; properties of context-free languages; introduction to computability and unsolvability (Turing machines) and computational complexity.
140. Parallel Scientific Computing
(4) Yang
Prerequisites: Mathematics 5B and Computer Science 20; and, Computer Science 12 or 60.
Not open for credit to students who have completed Computer Science 110B.
Fundamentals of high performance computing and parallel algorithm design for numerical computation. Topics include parallel architecture and clusters, parallel programming with message-passing libraries and threads, program parallelization methodologies, parallel performance evaluation and optimization, parallel numerical algorithms and applications with different performance trade-offs.
153A. Hardware/Software Interface
(4) Krintz
Prerequisite: Computer Science 130A with a minimum grade of C-.
Same course as ECE 153A.
Machine-level structures implementing the operating system abstraction; memory-mappers, multi-level interrupts, direct memory access techniques. Lowest-level software/firmware structures: micro-kernels, interpreters, emulators, threaded-code, real-time scheduling. Compilation and cross-compilation techniques; system initialization; validation and debugging; in-circuit testing.
154. Computer Architecture
(4) Sherwood, Chong
Prerequisite: ECE 152A.
Not open for credit to students who have received credit for ECE 154.
Introduction to the architecture of computer systems. Topics include: central processing units, memory systems, channels and controllers, peripheral devices, interrupt systems, software versus hardware trade-offs.
160. Translation of Programming Languages
(4) Sherwood, bultan
Prerequisites: Computer Science 30 or 123; Computer Science 130A; and Computer Science 136 or 138; open to computer science and computer engineering majors only.
Study of the structure of compilers. Topics include: lexical analysis; syntax analysis including LL and LR parsers; type checking; run-time environments; intermediate code generation; and compiler-construction tools.
162. Programming Languages
(4) Krintz
Prerequisite: Computer Science 130A; open to computer science and computer engineering majors only.
Concepts of programming languages: scopes, parameter passing, storage management; control flow, exception handling; encapsulation and modularization mechanism; reusability through genericity and inheritance; type systems; procedural, object-oriented, functional, and logic programming languages.
165A. Artificial Intelligence
(4) Turk
Prerequisite: Computer Science 130A; open to computer science, computer engineering, and electrical engineering majors only.
An introduction to the field of artificial intelligence which attempts to understand and build intelligent systems. Topics include AI programming languages, search, knowledge representation and reasoning, planning, perception, and intelligent agents.
165B. Machine Learning
(4) Smith
Prerequisite: Computer Science 130A.
Covers the most important techniques of machine learning (ML) and includes discussions of: well-posed learning problems; artificial neural networks; concept learning and general to specific ordering; decision tree learning; genetic algorithms; Bayesian learning; analytical learning; and others.
167. Introduction to Bioinformatics
(4) Singh
Prerequisite: Computer Science 130B.
Not open to students who have completed Computer Science 190
Review of the fundamentals of molecular biology and genetics; pairwise sequence alignment: dynamic programming, database searching; multiple sequence alignment; microarray data analysis; protein structure alignment; phylogeny construction: distance and character based methods; other current topics.
170. Operating Systems
(4) Zhao, Wolski
Prerequisites: Computer Science 130A or 125; and, Computer Science 154 or ECE 154; open to computer science, computer engineering, and EE majors only.
Basic concepts of operating systems. The notion of a process; interprocess communication and synchronization; input-output, file systems, memory management.
171. Distributed Systems
(4) El Abbadi
Prerequisite: Computer Science 170.
Not open for credit to students who have completed ECE 151.
Distributed systems architecture, distributed programming, network of computers, message passing, remote procedure calls, group communication, naming and membership problems, asynchrony, logical time, consistency, fault-tolerance, and recovery.
172. Software Engineering
(4) Bultan
Prerequisites: Computer Science 130A; open to computer science majors only.
Not open for credit to students who have completed Computer Science 189A.
Recommended preparation: Computer Science 130B.
Software engineering is concerned with long-term, large-scale programming projects. Software management, cost estimates, problem specification and analysis, system design techniques, system testing and performance evaluation, and system maintenance. Students will design, manage, and implement a medium-sized project.
174A. Fundamentals of Database Systems
(4) Su
Prerequisite: Computer Science 130A.
Database system architectures, relational data model, relational algebra, relational calculus, SQL, QBE, query processing, integrity constraints (key constraints, referential integrity), database design, ER and object-oriented data model, functional dependencies, lossless join and dependency preserving decompositions, Boyce-Codd and Third Normal Forms.
174B. Design and Implementation Techniques of Database Systems
(4) Su
Prerequisite: Computer Science 130B.
Queries and processing, optimizer, cost models, execution plans, rewriting rules, access methods, spatial indexing, transactions, ACID properties, concurrency control, serializability, two-phase locking, timestamping, logging, checkpointing, transaction abort and commit, crash recovery; distributed databases.
176A. Introduction to Computer Communication Networks
(4) Almeroth, Belding
Prerequisites: PSTAT 120A or ECE 139; open to computer science, computer engineering, and electrical engineering majors only.
Not open for credit to students who have completed Computer Science 176 or ECE 155 or ECE 155A.
Recommended preparation: PSTAT 120B.
Basic concepts in networking, the OSI model, error detection codes, flow control, routing, medium access control, and high-speed networks.
176B. Network Computing
(4) Zhao, Vigna
Prerequisite: Computer Science 176A.
Not open for credit to students who have completed ECE 155B or 194W.
Focus on networking technologies used in the Internet. The OSI model is used as a guide for exploring and understanding how the Internet works. Topics include snooping packets in the network, socket programming, and implementing application-layer protocols.
176C. Advanced Topics in Internet Computing
(4) Belding, Zheng
Prerequisite: Computer Science 176B.
General overview of wireless and mobile networking, multimedia, security multicast, quality of service, IPv6, and web caching. During the second half of the course, one or more of the above topics are studied in greater detail.
177. Computer Security
(4) Kemmerer
Prerequisite: Computer Science 170 (may be taken concurrently).
Introduction to the basics of computer security and privacy. Analysis of technical difficulties of producing secure computer information systems that provide guaranteed controlled sharing. Examination and critique of current systems, methods, certification.
178. Introduction to Cryptography
(4) Egecioglu
Prerequisites: Computer Science 10 and PSTAT 120A or 121A or equivalent courses.
An introduction to the basic concepts and techniques of cryptography and cryptanalysis. Topics include: The Shannon Theory, classical systems, the enigma machine, the data encryption standard, public key systems, digital signatures, file security.
180. Computer Graphics
(4) Wang
Prerequisite: Computer Science 130B.
X Window System; Xlib and widget programming; 2D drawing and painting algorithms; 2D transform and clipping; 3D transform, viewing, and clipping; overview of PHIGS graphics standard; graphics hardware; interactive devices and techniques; half-tone and dithering techniques; hidden surface removal algorithms.
181B. Introduction to Computer Vision
(4) Wang, Turk
Same course as ECE 181B.
Overview of image processing, pattern recognition; image formation, binary images; edge detection, image segmentation, introduction to textured image analysis, optical flow, depth from stereo, shape from shading, shape from motion, shape representation techniques, issues in object recognition, case study of some vision systems.
182. Multimedia Computing
(4) Almeroth
Prerequisites: Computer Science 176B.
Not open for credit to students who have completed ECE 160.
Introduction to multimedia and applications. Topics include streaming media, conferencing, webcasting, digital libraries, multimedia system architectures, standards (including JPEG and MPEG), and multimedia storage and retrieval. A key emphasis is on using the Internet for delivery of multimedia data.
185. Human-Computer Interaction
(4) Hollerer
Prerequisite: open to computer science, computer engineering, and electrical engineering majors.
Recommended preparation: proficiency in the Java/C++ programming language, some experience with user interface programming
The study of human-computer interaction enables system architects to design useful, efficient, and enjoyable computer interfaces. This course teaches the theory, design guidelines, programming practices, and evaluation procedures behind effective human interaction with computers.
186. Theory of Computation
(4) Ibarra
Prerequisite: Computer Science 138; open to computer science majors only.
Not open for credit to students who have completed Mathematics 150A.
Turing machines; computability and unsolvability; computational complexity; intractability and NP-completeness.
189A. Senior Computer Systems Project
(4) Bultan
Prerequisite: senior standing in Computer Engineering, Electrical Engineering, or Computer Science; consent of instructor.
Not open for credit to students who have completed Computer Science 172.
Student groups design a significant computer-based project. Groups work independently with interaction among groups via interface specifications and informal meetings.
189B. Senior Computer Systems Project
(4) Wolski
Prerequisite: senior standing in Computer Engineering, Electrical Engineering, or Computer Science; consent of instructor.
Not open for credit to students who have completed Computer Science 189A-B.
Student groups design a significant computer-based project. Groups work independently with interaction among groups via interface specifications and informal meetings.
190AA-ZZ. Special Topics in Computer Science
(4) Staff
Prerequisite: consent of instructor.
May be repeated with consent of the department chair.
Courses provide for the study of topics of current interest in computer science.
A. Foundations
B. Software Systems
C. Programming languages and software
engineering
D. Information management
E. Architecture
F. Networking
G. Security
H. Scientific computing
I. Intelligent and interactive systems
N. General
192. Projects in Computer Science
(4) Staff
Prerequisite: consent of instructor.
Students must have a minimum 3.0 GPA. May be repeated with consent of the department chair but only 4 units may be applied to the major.
Projects in computer science for advanced undergraduate students.
193. Internship in Industry
(1-4) Staff
Prerequisites: consent of instructor and department chair.
Not more than 4 units per quarter; may not be used as a field elective and may not be applied to science electives. May be repeated with faculty/chair approval to a maximum of 4 units.
Special projects for selected students. Offered in conjunction with selected industrial and research firms under direct faculty supervision. Prior departmental approval required. Written proposal and final report required.
196. Undergraduate Research
(2-4) Staff
Prerequisites: upper-division standing, consent of the instructor.
Must have a minimum 3.0 grade-point average for the preceding three quarters. May be repeated for up to 12 units. No more than 4 units may be applied to departmental electives.
Research opportunities for undergraduate students. Students will be expected to give regular oral presentations, actively participate in a weekly seminar, and prepare at least one written report on their research.
199. Independent Studies in Computer Science
(1-4) Staff
Prerequisites: upper-division standing; must have completed at least two upper-division courses in computer science.
Must have a minimum 3.0 grade-point average for the preceding three quarters. May be repeated with consent of chair. Students are limited to 5 units per quarter and 30 units total in all 198/199 courses combined.
Independent study in computer science for advanced students.
209. Logic and Applications in Computer Science
(4) Su
Prerequisite: Computer Science 138 or 186.
Propositional logic, first order logic, completeness, compactness, incompleteness, undecidability; selected topics from finite model theory, theorem proving, logic programming, program verification, databases, computational complexity.
211A. Matrix Analysis and Computation
(4) Staff
Prerequisite: consent of instructor.
Same course as ECE 210A, ME 210A, Mathematics 206A, Chemical Engineering 211A, and Geology 251A. Students should be proficient in basic numerical methods, linear algebra, mathematically rigorous proofs, and some programming language.
Graduate level-matrix theory with introduction to matrix computations. SVD’s, pseudoinverses, variational characterization of eigenvalues, perturbation theory, direct and iterative methods for matrix computations.
211B. Numerical Simulation
(4) Petzold
Prerequisite: consent of instructor.
Same course as ECE 210B, ME 210B, Mathematics 206B, Chemical Engineering 211B, and Geology 251B. Students should be proficient in basic numerical methods, linear algebra, mathematically rigorous proofs, and some programming language.
Linear multistep methods and Runge-Kutta methods for ordinary differential equations: stability, order, and convergence. Stiffness. Differential algebraic equations. Numerical solution of boundary value problems.
211C. Numerical Solution of Partial Differential Equations - Finite Difference Methods
(4) Staff
Prerequisite: consent of instructor.
Same course as ECE 210C, ME 210C, Mathematics 206C, Chemical Engineering 211C, and Geology 251C. Students should be proficient in basic numerical methods, linear algebra, mathematically rigorous proofs, and some programming language.
Finite difference methods for hyperbolic, parabolic and elliptic PDEs, with application to problems in science and engineering. Convergence, consistency, order and stability of finite difference methods. Dissipation and dispersion. Finite volume methods. Software design and adaptivity.
211D. Numerical Solution of Partial Differential Equations - Finite Element Methods
(4) Staff
Prerequisite: consent of instructor.
Same course as ECE 210D, ME 210D, Mathematics 206D, Chemical Engineering 211D, and Geology 251D. Students should be proficient in basic numerical methods, linear algebra, mathematically rigorous proofs, and some programming language.
Weighted residual and finite element methods for the solution of hyperbolic, parabolic, and elliptical partial differential equations, with application to problems in science and engineering. Error estimates. Standard and discontinuous Galerkin methods.
216. Level Set Methods
(4) Gibou
Prerequisite: Computer Science 211C, or Chemical Engineering 211C, or ECE 210C, or ME 210C.
Same course as Chemical Engineering 226, ECE 226, and ME 216.
Mathematical description of the level set method and design of the numerical methods used in its implementations (ENO-WENO, Godunov, Lax-Friedrich, etc.). Introduction to the Ghost Fluid Method. Applications in CFD, Materials Sciences, Computer Vision and Computer Graphics.
220. Theory of Computation and Complexity
(4) Ibarra
Prerequisite: Computer Science 186.
Topics include: models of computation; time and space complexity classes (e.g., P, NP, Co-NP, and PSPACE), efficient reducibilities, complete problems; lower bounds; the polynomial hierarchy.
225. Information Theory
(4) Van Dam
Prerequisites: ECE 140 or PSTAT 120A-B.
Same course as ECE 205A.
Entropy, mutual information, and Shannon’s coding theorems; lossless source coding, Huffman, Shannon-Fano-Elias, and arithmetic codes; Channel capacity; rate-distortion theory, and lossy source coding; source-channel coding; algorithmic complexity and information; applications of information theory in various fields.
230. Approximations, NP-Completeness and Algorithms
(4) Gonzalez
Prerequisites: Computer Science 130A-B.
Epsilon approximations, PTAS and FPTAS. Techniques for the design of approximation algorithms. P, NP, NP-complete problems, polynomial transformations, Turing reductions, strong NP-completeness, NP-hardness and inapproximability results. Topics in algorithms include: amortized analysis, advanced graph algorithms and data structures.
231. Topics in Combinatorial Algorithms
(4) Suri
Prerequisite: Computer Science 130B.
Advanced topics in algorithm design, including network flows, matchings in graphs, linear and integer programming.
234. Randomized Algorithms
(4) Egecioglu
Prerequisite: Computer Science 186..
Randomized algorithms and applications: Las Vegas and Monte Carlo type algorithms, randomized algorithms for graph problems, matchings, data structures, problems from computational geometry, number theory and primality testing, distributed algorithms, hashing and fingerprinting, random generation, Markov chains and rapid mixing.
235. Computational Geometry
(4) Suri
Prerequisites: Computer Science 130A-B.
Algorithms and lower bound techniques in computational geometry; decision tree models of computation; geometric searching; point location and range search; convex hull and maxima of a point set; proximity algorithms; geometric intersections.
240A. Applied Parallel Computing
(4) Gilbert
Prerequisites: Computer Science 154 and 160.
Interdisciplinary introduction to applied parallel computing on modern supercomputers. Topics include applications-oriented architectural issues, MPI, parallel MATLAB, and parallel numerical algorithms. A course project emphasizes understanding the realities and myths of what is possible on the world’s fastest machines.
240B. Parallel Computing and Program Parallelization
(4) Yang
Prerequisites: Computer Science 130A and 160.
Parallel programming; representation of parallelism, program dependence analysis, loop transformation; program and data partitioning, locality optimization; task scheduling and load balancing; parallelizing compilers and run-time support.
254. Advanced Computer Architecture
(4) Sherwood
Prerequisite: Computer Science 154 or ECE 154.
Advanced instruction set architectures, pipelining, dynamic scheduling, branch prediction, superscalar issue, out-of-order execution, memory-hierarchy design, advanced cache architectures, and prefetching. Several real designs are dissected and simulators are developed for performing quantitative evaluations of design decisions.
260. Advanced Topics in Translation
(4) Staff
Prerequisites: Computer Science 160 and 162.
Theoretical aspects of translation. Topics include: data flow analysis; control flow analysis; interprocedural analysis; optimization; type systems.
263. Modern Programming Languages and Their Implementation
(4) Krintz
Prerequisites: Computer Science 154, 160, and 162.
Recommended preparation: Computer Science 260.
Topics central to modern programming languages and their implementation: garbage collection; memory system performance; characteristics and optimization of object-oriented languages; type systems and type inference; run-time compilation.
265. Advanced Topics in Machine Intelligence
(4) Staff
Prerequisite: Computer Science 165A.
May be repeated for credit.
Topics covered include advanced programming techniques for representing and reasoning about complex objects and various applications of such techniques, including expert systems, natural language processors, image understanding systems, and machine learning.
266. Formal Specification and Verification
(4) Kemmerer
Prerequisites: Computer Science 130A-B; Computer Science 186.
Introduction to existing specification and verification systems, and the underlying theory and techniques of verifying the correctness of algorithms with respect to specifications. This subject can be considered as the combination of specification and verification techniques, programming language semantics, and formal logic.
267. Automated Verification
(4) Bultan
Prerequisites: Computer Science 130A-B and 138.
Covers automated verification algorithms and tools. Topics include: temporal logics, fixpoint characterizations of temporal properties, model checking, symbolic verification, explicit-state verification, verification using automated theorem provers, automated abstraction.
271. Advanced Topics in Distributed Systems
(4) El Abbadi
Prerequisite: Computer Science 170.
Course covers the fundamental problems in distributed systems and the various tools used to solve them. Of primary interest is the issue of fault-tolerance. Topics include event ordering, clocks, global states, agreement, fault tolerance, and peer-to-peer systems.
272. Software Engineering
(4) Bultan
Prerequisite: Computer Science 172.
Principles of software engineering disciplines emphasizing requirements analysis, specification design, coding, testing and correctness proofs, maintenance, and management. Students will use a number of software engineering tools.
273. Data and Knowledge Bases
(4) Su
Prerequisite: Computer Science 186.
The focus is on the study of relational and post-relational data models and their query languages of different styles (algebraic, calculus, and deductive): complexity, expressive power, optimization, and database design.
274. Transaction Management in Distributed Databases
(4) Agrawal
Prerequisite: Computer Science 170.
Topics include: data models, semantics; data integrity; database design; serializability theory, concurrency control, recovery, distributed databases.
276. Advanced Topics in Networking
(4) Belding, Zhao
Prerequisite: Computer Science 176A or 176B.
Focuses on advanced topics in networking. Topics may include, but are not limited to: Internet analysis, routing techniques, multimedia, approaches for network performance enhancements, and communication over new technologies.
279. Network Security and Intrusion Detection
(4) Vigna
Prerequisite: Computer Science 177.
Security analysis of network protocols and network vulnerabilities. Analysis of scanning, spoofing, hijacking, and denial-of-service attacks. Authentication and access control in computer networks. Firewalls and network monitoring tools. Intrusion detection techniques.
280. Computer Graphics
(4) Hollerer
Prerequisite: Computer Science 180.
Special topics in computer graphics including: curves and curved surfaces, visual perception of colors and color models; shading models; shadow generation; texture mapping; solid textures; stereographics; helmet-mounted display; graphics hardware/architecture; solid modeling; physically-based modeling; fractals and graphtals; volume rendering; scientific visualization.
281B. Advanced Topics in Computer Vision
(4) Wang, Turk
Prerequisite: Computer Science 181B.
Same course as ECE 281B.
Advanced topics in computer vision: image sequence analysis, spatio-temporal filtering, camera calibration and hand-eye coordination, robot navigation, shape representation, physically-based modeling, multi-sensory fusion, biological models, expert vision systems, and other topics selected from recent research papers.
284. Mobile Computing
(4) Belding
Prerequisite: Computer Science 176A or 176B.
Recommended preparation: Computer Science 276.
Focuses on mobile computing. Topics may include, but are not limited to: mobile network characteristics, types of mobile networks, challenges and solutions in mobile computing, and power conservation techniques.
290AA-ZZ. Special Topics in Computer Science
(4) Staff
Prerequisite: consent of instructor.
These courses provide for the study of topics of current interest in computer science. Special topics are coded as follows:
A. Foundations
B. Software Systems
C. Programming languages and software
engineering
D. Information management
E. Architecture
F. Networking
G. Security
H. Scientific computing
I. Intelligent and interactive systems
N. General
501. Techniques of Computer Science Teaching
(1) Staff
This course is required for new teaching assistants and may be taken only once. No unit credit allowed toward advanced degree.
An initial 1-2 day workshop on teaching techniques followed by a weekly seminar. Course emphasizes teaching skills, practical experience, and communication skills.
502. Teaching of Computer Science
(1-4) Staff
Prerequisite: Computer Science 501 (may be taken concurrently).
No unit credit allowed toward advanced degree.
Procedures and techniques for teaching computer science gained through actual teaching of lecture courses, leading discussion sections, and/or teaching laboratories. Meetings will be held as needed to discuss problems, methods and procedures.
593. Computer Science Graduate Tutorial
(12) Staff
Prerequisite: consent of instructor or department chair.
Individual studies exploring topics in computer science with a faculty advisor.
594. Seminar in Computer Science
(1-5) Staff
Prerequisite: consent of instructor and department.
A seminar course offered on an irregular basis. Provides an in-depth discussion of advanced topics of general interest and broadens the scope of knowledge in computer science.
595AA-ZZ. Group Studies in Computer Science
(1-2) Staff
Prerequisite: consent of instructor.
May be repeated for credit provided letter designations are different.
Special seminars focusing on topics of interest to faculty and graduate students. These seminars provide critical review of research in various areas of computer science:
A. Foundations
B. Software Systems
C. Programming languages and software
engineering
D. Information management
E. Architecture
F. Networking
G. Security
H. Scientific computing
I. Intelligent and interactive systems
N. General
596. Directed Research
(2-12) Staff
Research, either experimental or theoretical, may be undertaken by properly qualified graduate students under the direction of a faculty member.
597. Individual Studies for M.S. Comprehensive Examinations and Ph.D. Examinations
(1-12) Staff
No unit credit allowed toward advanced degree. Enrollment limited to 24 units per examination. Maximum of 12 units per quarter. Instructor is normally student’s major professor or chair of doctoral committee. S/U grading.
Individual studies for M.S. comprehensive examination and Ph.D. examinations.
598. Master’s Thesis Research and Preparation
(1-12) Staff
Prerequisite: consent of graduate advisor.
For research underlying the thesis and writing of the thesis.
599. Ph.D. Dissertation Research and Preparation
(1-12) Staff
Prerequisite: consent of chair of student’s doctoral committee.
Research and preparation of dissertation.

