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