For admission information, see Graduate Programs Admission on page 27.
The following introductory information is based on 2021-22 program requirements for UCLA graduate degrees. Complete program requirements are available at Program Requirements for UCLA Graduate Degrees. Students are subject to the detailed degree requirements as published in program requirements for the year in which they enter the program.
The Department of Computer Science offers Master of Science (MS) and Doctor of Philosophy (PhD) degrees in Computer Science and participates in a concurrent degree program (Computer Science MS/Management MBA) with the John E. Anderson Graduate School of Management.
Course Requirement. A total of nine courses is required for the MS degree, including a minimum of five graduate courses. No specific courses are required, but a majority of both the total number of formal courses and the total number of graduate courses must consist of courses offered by the Computer Science Department.
Undergraduate Courses. No lower-division courses may be applied toward graduate degrees. In addition, the following upper-division courses are not applicable toward graduate degrees: Chemical Engineering 102A, 199, Civil and Environmental Engineering 108, 199, Computer Science M152A, 152B, 199, Electrical and Computer Engineering 100, 101A, 102, 110L, M116L, 199, Materials Science and Engineering 110, 120, 130, 131, 131L, 132, 141L, 150, 160, 161L, 199, Mechanical and Aerospace Engineering 102, 103, 105A, 105D, 199.
Breadth Requirement. MS degree students must satisfy the computer science breadth requirement by the end of the third term in graduate residence at UCLA. The requirement is satisfied by mastering the contents of five undergraduate courses or equivalent: Computer Science 180, two courses from 111, 118, and M151B, one course from 130, 131, or 132, and one course from 143, 161, or 174A. A UCLA undergraduate course taken by graduate students cannot be used to satisfy graduate degree requirements if students have already received a grade of B– or better for a course taken elsewhere that covers substantially the same material.
For the MS degree, students must also complete at least three terms of Computer Science 201 with grades of Satisfactory.
Competence in any or all courses in breadth requirements may be demonstrated in one of three ways:
In the comprehensive examination plan, at least five of the nine courses must be 200-series courses. The remaining four courses may be either 200-series or upper-division courses. No units of 500-series courses may be applied toward the comprehensive examination plan requirements.
In the thesis plan, seven of the nine courses must be formal courses, including at least four from the 200 series. The remaining two courses may be 598 courses involving work on the thesis.
The thesis is a report on the results of student investigation of a problem in the major field of study under the supervision of the thesis committee, which approves the subject and plan of the thesis and reads and approves the complete manuscript. While the problem may be one of only limited scope, the thesis must exhibit a satisfactory style, organization, and depth of understanding of the subject. Students should normally start to plan the thesis at least one year before the award of the MS degree is expected. There is no examination under the thesis plan.
The Department of Computer Science and the John E. Anderson Graduate School of Management offer a concurrent degree program that enables students to complete the requirements for the MS in Computer Science and the MBA (Master of Business Administration) in three academic years. Students should request application materials from both the MBA Admissions Office, John E. Anderson Graduate School of Management, and the Department of Computer Science.
Artificial intelligence; computational systems biology; computer networks; computer science theory; computer system architecture; graphics and vision; data science computing; and software systems.
Normally, students take courses to acquire the knowledge needed to prepare for the written and oral examinations and for conducting PhD research. The basic program of study for the PhD degree is built around the major field requirement and two minor fields. The major field and at least one minor field must be in computer science.
The fundamental examination is common for all PhD candidates in the department and is also known as the written qualifying examination.
To satisfy the major field requirement, students are expected to attain a body of knowledge contained in five courses, as well as the current literature in the area of specialization. In particular, students are required to take a minimum of three graduate courses in the major field of PhD research, selecting these courses in accordance with guidelines specific to the major field. Guidelines for course selection in each major field are available from the departmental Student Affairs Office. Grades of B– or better, with a grade-point average of at least 3.33 in all courses used to satisfy the major field requirement, are required. Students are required to satisfy the major field requirement within the first nine terms after enrolling in the graduate program.
Each minor field normally embraces a body of knowledge equivalent to two courses, at least one of which is a graduate course. Grades of B– or better, with a grade-point average of at least 3.33 in all courses included in the minor field, are required. By petition and administrative approval, a minor field may be satisfied by examination.
Breadth Requirement. PhD degree students must satisfy the computer science breadth requirement by the end of the third term in graduate residence at UCLA. The requirement is satisfied by mastering the contents of five undergraduate courses or equivalent: Computer Science 180, two courses from 111, 118, and M151B, one course from 130, 131, or 132, and one course from 143, 161, or 174A. A UCLA undergraduate course taken by graduate students cannot be used to satisfy graduate degree requirements if students have already received a grade of B– or better for a course taken elsewhere that covers substantially the same material.
For the PhD degree, students must also complete at least three terms of Computer Science 201 with grades of Satisfactory (in addition to the three terms of 201 that may have been completed for the MS degree).
Competence in any or all courses may be demonstrated in one of three ways:
For requirements for the Graduate Certificate of Specialization, see Engineering Schoolwide Programs.
The written qualifying examination consists of a high-quality paper, solely authored by the student. The paper can be either a research paper containing an original contribution or a focused critical survey paper. The paper should demonstrate that the student understands and can integrate and communicate ideas clearly and concisely. It should be approximately 10 pages single-spaced, and the style should be suitable for submission to a first-rate technical conference or journal. The paper must represent work that the student did as a graduate student at UCLA. Any contributions that are not the student’s own, including those of the student’s adviser, must be explicitly acknowledged in detail. Prior to submission, the paper must by reviewed by the student’s adviser on a cover page with the adviser’s signature indicating review. After submission, the paper must be reviewed and approved by at least two other members of the faculty. There are two deadlines a year for submission of papers.
After passing the preliminary examination and coursework for the major and minor fields, the student should form a doctoral committee and prepare to take the University Oral Qualifying Examination. A doctoral committee consists of a minimum of four members. Three members, including the chair, must hold appointments in the department. The remaining member must be a UCLA faculty member in another department. The nature and content of the oral qualifying examination are at the discretion of the doctoral committee but ordinarily include a broad inquiry into the student’s preparation for research. The doctoral committee also reviews the prospectus of the dissertation at the oral qualifying examination.
Artificial intelligence (AI) is the study of intelligent behavior. While other fields such as philosophy, psychology, neuroscience, and linguistics are also concerned with the study of intelligence, the distinguishing feature of AI is that it deals primarily with information processing models. Thus the central scientific question of artificial intelligence is how intelligent behavior can be reduced to information processing. Since even the simplest computer is a completely general information processing device, the test of whether some behavior can be explained by information processing mechanisms is whether a computer can be programmed to produce the same behavior. Just as human intelligence involves gathering sensory input and producing physical action in the world, in addition to purely mental activity, the computer for AI purposes is extended to include sense organs such as cameras and microphones, and output devices such as wheels, robotic arms, and speakers.
The predominant research paradigm in artificial intelligence is to select some behavior that seems to require intelligence on the part of humans, to theorize about how the behavior might be accounted for, and to implement the theory in a computer program to produce the same behavior. If successful, such an experiment lends support to the claim that the selected behavior is reducible to information processing terms, and may suggest the program’s architecture as a candidate explanation of the corresponding human process.
The UCLA Computer Science Department has active research in the following major subfields of artificial intelligence:
The computational systems biology (CSB) field can be selected as a major or minor field for the PhD or as a specialization area for the MS degree in Computer Science.
Graduate studies and research in the CSB field are focused on computational modeling and analysis of biological systems and biological data.
Core coursework is concerned with the methods and tools development for computational, algorithmic, and dynamic systems network modeling of biological systems at molecular, cellular, organ, whole organism, or population levels—and leveraging them in biosystem and bioinformatics applications. Methodological studies include bioinformatics and systems biology modeling, with focus on genomics, proteomics, metabolomics, and higher levels of biological/physiological organization, as well as multiscale approaches integrating the parts.
Typical research areas with a systems focus include molecular and cellular systems biology, organ systems physiology, medical, pharmacological, pharmacokinetic (PK), pharmacodynamic (PD), toxicokinetic (TK), physiologically based PBPK-PD, PBTK, and pharmacogenomic system studies; neuro-systems, imaging and remote sensing systems, robotics, learning and knowledge-based systems, visualization, and virtual clinical environments. Typical research areas with a bioinformatics focus include development of computational methods for analysis of high-throughput molecular data, including genomic sequences, gene expression data, protein-protein interaction, and genetic variation. These computational methods leverage techniques from both statistics and algorithms.
The computer networks field involves the study of computer networks of different types, in different media (wired, wireless), and for different applications. Besides the study of network architectures and protocols, this field also emphasizes distributed algorithms, distributed systems, and the ability to evaluate system performance at various levels of granularity (but principally at the systems level). In order to understand and predict systems behavior, mathematical models are pursued that lead to the evaluation of system throughput, response time, utilization of devices, flow of jobs and messages, bottlenecks, speedup, power, etc. In addition, students are taught to design and implement computer networks using formal design methodologies subject to appropriate cost and objective functions. The tools required to carry out this design include probability theory, queueing theory, distributed systems theory, mathematical programming, control theory, operating systems design, simulation methods, measurement tools, and heuristic design procedures. The outcome of these studies provides the following:
A central problem in the design and evaluation of computer networks deals with the allocation of resources among competing demands (e.g., wireless channel bandwidth allocation to backlogged stations). In fact, resource allocation is a significant element in most of the technical (and nontechnical) problems we face today.
Most of our resource allocation problems arise from the unpredictability of the demand for the use of these resources, as well as from the fact that the resources are geographically distributed (as in computer networks). The computer networks field encounters such resource allocation problems in many forms and in many different computer system configurations. Our goal is to find allocation schemes that permit suitable concurrency in the use of devices (resources) so as to achieve efficiency and equitable allocation. A very popular approach in distributed systems is allocation on demand, as opposed to pre-scheduled allocation. On-demand allocation is found to be effective, since it takes advantage of statistical averaging effects. It comes in many forms in computer networks and is known by names such as asynchronous time division multiplexing, packet switching, frame relay, random access, and so forth.
Computer science is in large measure concerned with information processing systems, their applications, and the corresponding problems of representation, transformation, and communication. The computer science fields are concerned with different aspects of such systems, and each has its own theoretical component with appropriate models for description and analysis, algorithms for solving the related problems, and mathematical tools. Thus in a certain sense computer science theory involves all of computer science and participates in all disciplines.
The term theoretical computer science has come to be applied nationally and intentionally to a certain body of knowledge emphasizing the interweaving themes of computability and algorithms, interpreted in the broadest sense. Under computability, one includes questions concerning which tasks can and cannot be performed by information systems of different types restricted in various ways, as well as the mathematical analysis of such systems, their computations, and the languages for communication with them. Under algorithms, one includes questions concerning (1) how a task can be performed efficiently under reasonable assumptions on available resources (e.g., time, storage, type of processor); (2) how efficiently a proposed system performs a task in terms of resources used; and (3) the limits on how efficiently a task can be performed. These questions are often addressed by first developing models of the relevant parts of an information processing system (e.g., the processors, their interconnections, their rules of operation, the means by which instructions are conveyed to the system, or the way the data is handled) or of the input/output behavior of the system as a whole. The properties of such models are studied both for their own interest and as tools for understanding the system and improving its performance or applications.
Computer science theory emphasizes
Computer system architecture deals with the design, implementation, and evaluation of computer systems and their building blocks. It deals with general-purpose systems as well as embedded special-purpose systems. The field also encompasses the development of tools to enable system designers to describe, model, fabricate, and test highly complex computer systems from single-chip to computing clouds.
Computer systems are implemented as a combination of hardware and software. Hence, research in the field of computer architecture often involves both hardware and software issues. The requirements of application software and operating systems, together with the capabilities of compilers, play a critical role in determining the features implemented in hardware. At the same time, the computer architect must also take into account the capabilities and limitations of the underlying implementation technology as well as of the design tools.
The goal of research in computer architecture is to develop building blocks, system organizations, design techniques, and design tools that lead to improved performance and reliability as well as reduced power consumption and cost.
Corresponding to the richness and diversity of computer systems architecture research at UCLA, a comprehensive set of courses is offered in the areas of advanced processor architecture, arithmetic processor systems, parallel and distributed architectures, fault-tolerant systems, reconfigurable systems, embedded systems, and computer-aided design of VLSI circuits and systems.
The data science computing field focuses on basic problems of modeling and managing data and knowledge, and their relation with other fundamental areas of computer science, such as operating systems and networking, programming languages, and human-computer interface design.
A data management system embodies a collection of data, devices in which the data are stored, and logic or programs used to manipulate that data. Information management is a generalization of data management in which the data being stored are permitted to be arbitrarily complex data structures, such as rules and trees. In addition, information management goes beyond simple data manipulation and query and includes inference mechanisms, explanation facilities, and support for distributed and web-based access.
The need for rapid, accurate information is pervasive in all aspects of modern life. Modern systems are based on the coordination and integration of multiple levels of data representation, from characteristics of storage devices to conceptual and abstract levels. As human enterprises have become more complex, involving more complicated decisions and trade-offs among decisions, the need for sophisticated information and data management has become essential.
The graphics and vision field focuses on the synthesis and analysis of image and video data by computer. Graphics includes the topics of rendering, modeling, animation, visualization, and interactive techniques, among others, and it is broadly applicable in the entertainment industry (motion pictures and games) and elsewhere. Vision includes image/video representation and registration, feature extraction, three-dimensional reconstruction, object recognition, and image-based modeling, among others, with application to real-time vision/control for robots and autonomous vehicles, medical imaging, visual sensor networks and surveillance, and more. Several of the projects undertaken by our researchers in this field unify graphics and vision through mathematical modeling, wherein graphics is considered a models-to-images synthesis problem and vision the converse images-to-models analysis problem.
The software systems field is concerned with the study of theory and practice in the development of software systems. Well-engineered systems require appreciation of both principles and architectural trade-offs. Principles provide abstractions and rigor that lead to clean designs, while systems-level understanding is essential for effective design.
Principles here encompass the use of programming systems to achieve specified goals, the identification of useful programming abstractions or paradigms, the development of comprehensive models of soft-ware systems, and so forth. The thrust is to identify and clarify concepts that apply in many programming contexts.
Development of software systems requires an understanding of many methodological and architectural issues. The complex systems developed today rely on concepts ßand lessons that have been extracted from years of research on programming languages, operating systems, database systems, knowledge-based systems, real-time systems, and distributed and parallel systems.