Master's Degree

M.S. Degree Diagram Thesis Project ExamCoursesCoursesCoursesResearchResearchResearch


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 and for further graduate study. The program is designed to accommodate students with training in diverse scientific and engineering disciplines, and in this regard the graduate program relies on the undergraduate program to provide the necessary course work for graduate students with deficiencies in their computer science backgrounds.

The Master of Science degree program may be completed with a thesis, with a comprehensive examination, or with a project.

Plan One: Thesis

In addition to the course requirements, the student must submit an acceptable thesis, completed under the supervision of a Computer Science permanent faculty member, and approved by a thesis committee composed of 3 UC ladder faculty members, two of which (including the Chair) must be from the Computer Science Department. At most 12 units of 596 and 598 can be used towards unit requirements.

A public defense of the thesis is required.

Plan Two: Comprehensive Examination

Besides the course requirements required for all tracks, twelve additional units of coursework must be completed with 100 (excluding 193) and 200 level courses. Of these, eight units must be at 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 need to be correctly answered in order to pass. If a student does not pass, s/he may take the exam the next time it is offered. Only two attempts will be allowed.

Plan Three: Project

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. A Project Committee consisting of two permanent faculty members of the Computer Science Department must approve the project. Approval is based on the project's deliverables:
    • a report
    • a 30-minute public presentation describing the project.


Requirement for all three plans

  • 42 units of upper-division (excluding 193 level courses) 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 from three major areas: Theory, Systems, and Applications. 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 both major area and breadth requirements.
  • The grade in each major area course must be at least a B.
  • At least two units and at most six units of 595 seminar units must be included in the unit requirements (excluding 595N: Faculty Research Seminar).
  • The study plan must be approved by the faculty advisor.

Theory / Foundations Area

Course ID Title
CS 209 Logic and Applications in Computer Science
CS 216 Level Set Methods
CS 220 Theory of Computation and Complexity
CS 225 Information Theory
CS 230 Approximations, NP-Completeness and Algorithms
CS 231 Topics in Combinatorial Algorithms
CS 234 Randomized Algorithms
CS 235 Computational Geometry
CS 260 Advanced Topics in Program Analysis
CS 266 Formal Specification and Verification
CS 267 Automated Verification
CS 290 Special Topics

Systems Area

Course ID Title
CS 254 Advanced Computer Architecture
CS 263 Modern Programming Languages and Their Implementation
CS 270 Advanced Topics in Operating Systems
CS 271 Advanced Topics in Distributed Systems
CS 272 Software Engineering
CS 273 Data and Knowledge Bases
CS 274 Advanced Topics in Database Systems
CS 276 Advanced Topics in Networking
CS 279 Advanced Topics in Computer Security
CS 284 Mobile Computing
CS 290 Special Topics

Applications Area

Course ID Title
CS 211A Matrix Analysis and Computation
CS 211B Numerical Simulation
CS 211C Numerical Solution of Partial Differential Equations--Finite Difference Methods
CS 211D Numerical Solution of Partial Differential Equations--Finite Element Methods
CS 219 Sparse Matrix Algorithms
CS 240A Applied Parallel Computing
CS 265 Advanced Topics in Machine Intelligence
CS 280 Computer Graphics
CS 281B Advanced Topics in Computer Vision
CS 290 Special Topics

Note: the contents of a course may change over time; the course will be reclassified in such cases or students may petition to this effect.


Both the Thesis and Project track require research. Students planning to use either track for their completion of the MS should begin looking for a research advisor in the first year. Beginning research should not be delayed until the second year when coursework is completed.

Research is about pushing the limits of our understanding in the field of computer science. This can involve the design and execution of experiments, the proving of new theorems, the solving of open problems, the gathering and analysis of data sets, the invention of novel systems, the creation of new algorithms, the discovery of new applications of computing and/or among many other things. Students must manage their time wisely between research, course work, and growing their personal networks. It is important to start the process of finding a research adviser early, and to stay engaged with both other students and their M.S. committees throughout the process.