Computer Science

Undergraduate Study

The Computer Science and Engineering, Computer Engineering, and Computer Science majors are designated capstone majors. Computer Science and Engineering students complete a major product design course, while Computer Science students complete either a software engineering or a major product design course. Computer Engineering majors complete a design course in which they integrate their knowledge of the discipline and engage in creative design within realistic and professional constraints. Graduates are expected to apply the basic mathematical and scientific concepts that underlie modern computer science and engineering; design a software or digital hardware system, component, or process to meet desired needs within realistic constraints; function productively with others as part of a team; identify, formulate, and solve computer software- and hardware-related engineering problems; and demonstrate effective communication skills.

The Computer Engineering major is a designated capstone major that is jointly administered by the Computer Science and Electrical and Computer Engineering departments. Undergraduate students complete a design course in which they integrate their knowledge of the discipline and engage in creative design within realistic and professional constraints. Students apply their knowledge and expertise gained in previous mathematics, science, and engineering coursework. Students identify, formulate, and solve engineering problems and present their projects to the class.

Computer Science and Engineering B.S.

Capstone Major

The computer science and engineering curriculum at UCLA provides the education and training necessary to design, implement, test, and utilize the hardware and software of digital computers and digital systems. The curriculum has components spanning both the Computer Science and Electrical and Computer Engineering Departments. Within the curriculum students study all aspects of computer systems from electronic design through logic design, MSI, LSI, and VLSI concepts and device utilization, machine language design, implementation and programming, operating system concepts, systems programming, networking fundamentals, higher-level language skills, and application of these to systems. Students are prepared for employment in a wide spectrum of high-technology industries.

Learning Outcomes

The Computer Science and Engineering major has the following learning outcomes:

Preparation for the Major

Required: Computer Science 1, 31, 32, 33, 35L, M51A; Electrical and Computer Engineering 3; Mathematics 31A, 31B, 32A, 32B, 33A, 33B, 61; Physics 1A, 1B, 1C, and 4AL or 4BL.

The Major

Required: Computer Science 111, 118, 131, M151B, M152A, 180, 181, Electrical and Computer Engineering 100, 102, 115C; one course from Civil and Environmental Engineering 110, Electrical and Computer Engineering 131A, Mathematics 170A, or Statistics 100A; one capstone design course (Computer Science 152B); a minimum of 4 units of at least one elective course selected from Electrical and Computer Engineering 101A through M185; a minimum of 12 units of at least three elective courses selected from Computer Science 111 through CM187; and 12 units of technical breadth courses selected from an approved list available in the Office of Academic and Student Affairs.

Students who want to deepen their knowledge of electrical engineering are encouraged to select that discipline as their technical breadth area.

Credit is not allowed for both Computer Science 170A and Electrical and Computer Engineering 133A unless at least one of them is applied as part of the technical breadth area. Electrical and Computer Engineering 110, 131A, and CM182 may not satisfy elective credit. A petition may be submitted to consider four units of Computer Science 194 or 199 for an elective. Credit is not guaranteed and subject to vice chair review.

A multiple-listed (M) course offered in another department may be used instead of the same computer science course (e.g., Electrical and Computer Engineering M116C may be taken instead of Computer Science M151B). Credit is applied automatically.

For information on UC, school, and general education requirements, see Requirements for B.S. Degrees on page 22 or the Registrar’s GE Requirement web page.

Computer Science B.S.

Capstone Major

The computer science curriculum is designed to accommodate students who want professional preparation in computer science but do not necessarily have a strong interest in computer systems hardware. The curriculum consists of components in computer science, a minor or technical support area, and a core of courses from the social sciences, life sciences, and humanities. Within the curriculum, students study subject matter in software engineering, principles of programming languages, data structures, computer architecture, theory of computation and formal languages, operating systems, distributed systems, computer modeling, computer networks, compiler construction, and artificial intelligence. Majors are prepared for employment in a wide range of industrial and business environments.

Learning Outcomes

The Computer Science major has the following learning outcomes:

Preparation for the Major

Required: Computer Science 1, 31, 32, 33, 35L, M51A; Mathematics 31A, 31B, 32A, 32B, 33A, 33B, 61; Physics 1A, 1B, 1C, and 4AL or 4BL.

The Major

Required: Computer Science 111, 118, 131, M151B, M152A, 180, 181; one course from Civil and Environmental Engineering 110, Electrical and Computer Engineering 131A, Mathematics 170A, or Statistics 100A; one capstone software engineering or design course from Computer Science 130 or 152B; a minimum of 20 units of at least five elective courses selected from Computer Science 111 through CM187; a minimum of 12 units of at least three science and technology courses (not used to satisfy other requirements) that may include 12 units of upper-division computer science courses or 12 units of courses selected from an approved list available in the Office of Academic and Student Affairs.

Students must take at least one course from Computer Science 130 or 132. Computer Science 130 or 152B may be applied as an elective only if it is not taken as the capstone course. Credit is not allowed for both Computer Science 170A and Electrical and Computer Engineering 133A unless at least one of them is applied as part of the science and technology requirement or as part of the technical breadth area. A petition may be submitted to consider four units of Computer Science 194 or 199 for an elective. Credit is not guaranteed and subject to vice chair review.

A multiple-listed (M) course offered in another department may be used instead of the same computer science course (e.g., Electrical and Computer Engineering M116C may be taken instead of Computer Science M151B). Credit is applied automatically.

For information on UC, school, and general education requirements, see Requirements for B.S. Degrees on page 22 or the Registrar’s GE Requirement web page.

Computer Engineering B.S.

Capstone Major

The undergraduate curriculum provides all computer engineering students with preparation in the mathematical and scientific disciplines that lead to a set of courses that span the fundamentals of the discipline in the major areas of data science and embedded networked systems. These collectively provide an understanding of many inventions of importance to our society, such as the Internet of things, human-cyber-physical systems, mobile/wearable/implantable systems, robotic systems, and more generally smart systems at all scales in diverse spheres. The design of hardware, software, and algorithmic elements of such systems represents an already dominant and rapidly growing part of the computer engineering profession. Students are encouraged to make use of their computer science and electrical and computer engineering electives and a two-quarter capstone design course to pursue deeper knowledge within one of these areas according to their interests, whether for graduate study or preparation for employment.

Learning Outcomes

The Computer Engineering major has the following learning outcomes:

Preparation for the Major

Required: Computer Science 1 (or Electrical and Computer Engineering 1), 31, 32, 33, 35L, M51A (or Electrical and Computer Engineering M16); Electrical and Computer Engineering 3; Engineering 96C; Mathematics 31A, 31B, 32A, 32B, 33A, 33B, 61; Physics 1A, 1B, 1C, and 4AL or 4BL.

The Major

Required: Computer Science 111, 118 (or Electrical and Computer Engineering 132B), M151B (or Electrical and Computer Engineering M116C), M152A (or Electrical and Computer Engineering M116L), 180; Electrical and Computer Engineering 100, 102, 113, 115C; one course from Civil and Environmental Engineering 110, Electrical and Computer Engineering 131A, Mathematics 170A, Statistics 100A; 8 units of computer science and 8 units of electrical and computer engineering upper-division electives; three technical breadth courses (12 units) selected from an approved list available in the Office of Academic and Student Affairs; 8 units capstone design from either Electrical and Computer Engineering 180DA/180DB or 183DA/183DB.

For information on UC, school, and general education requirements, see Requirements for B.S. Degrees on page 22 or the Registrar’s GE Requirement web page.

Suggested Tracks

Networked Embedded Systems: This track targets two related trends that have been a significant driver of computing, namely stand-alone embedded devices becoming networked and coupled to physical systems, and the Internet evolving toward a network of things (the IoT). These may broadly be classified as cyber physical systems, and includes a broad category of systems such as smart buildings, autonomous vehicles, and robots, which interact with each other and other systems. This trend in turn is driving innovation both in the network technologies (new low-power wireless networks for connecting things, and new high-speed networks and computing infrastructure to accommodate the transport and processing needs of the deluge of data resulting from continual sensing), and in embedded computing (new hardware and software stack catering to requirements such as ultra-low power operation, and embedded machine learning).

Students pursuing this track are strongly encouraged to take Electrical and Computer Engineering M119 or Computer Science M119 in junior year, and to choose three electives from courses such as Computer Science 117, 130, 131, 132, 133, 136, 181, 188, Electrical and Computer Engineering 2, 115A, 115B, 115C, 132A, 133A, 141, 142, 188.

Students who pursue a technical breadth area in either electrical and computer engineering or computer science can choose an additional three courses from this list.

Data Science: This track targets the trend toward the disruptive impact on computing systems, both at the edge and in the cloud, of massive amounts of sensory data being collected, shared, processed, and used for decision making and control. Application domains such as health, transportation, energy, etc. are being transformed by the abilities of inference-making and decision-making from sensory data that is pervasive, continual, and rich. This track will expose students to the entire data-to-decision pathway spanning the entire stack from hardware and software to algorithms, applications, and user experience.

Students pursing this track are strongly advised to take Computer Science 143 and M146 or Electrical and Computer Engineering M146, and to additionally choose two electives from courses such as Computer Science CM121, 136, 144, 145, 161, 188, Electrical and Computer Engineering 114, 133A, 133B, 134, 188.

Students who pursue a technical breadth area in either electrical and computer engineering or computer science can choose an additional three courses from this list.

Students are also free to design ad hoc tracks. The technical breadth area requirement provides an opportunity to combine elective courses in electrical and computer engineering and computer science with those from another UCLA Samueli major to produce a specialization in an interdisciplinary domain. As noted above, students can also select a technical breadth area in either Electrical and Computer Engineering or Computer Science to deepen their knowledge in either discipline.

Bioinformatics Minor

The Bioinformatics minor introduces undergraduate students to the emerging interdisciplinary field of bioinformatics, an active area of research at UCLA combining elements of the computational sciences with the biological sciences. The minor organizes the many course offerings in different UCLA departments into a coherent course plan providing students with significant training in bioinformatics in addition to the training they obtain from their major. Students who complete the minor will be strong candidates for admission to Ph.D. programs in bioinformatics as well as have the relevant training to obtain jobs in the biotechnology industry.

Students complete a core curriculum and an elective course and are strongly encouraged to participate in undergraduate research as early as possible in one of the many groups offering research opportunities in bioinformatics.

To enter the minor, students must be (1) in good academic standing (2.0 grade point av-erage or better), (2) have completed at least two of the lower-division requirements with minimum grades of C, and (3) file a petition in the Office of Academic and Student Affairs of the Henry Samueli School of Engineering and Applied Science, 6426 Boelter Hall.

Required Lower-Division Courses (17 units minimum): Computer Science 32 or Program in Computing 10C, Life Sciences 3 or 7A, Mathematics 33A, 61.

Required Upper-Division Courses (18 units minimum): Computer Science 180 (or Mathematics 182), M184, two courses selected from Computer Science CM121, CM122, and CM124, and one course selected from Chemistry and Biochemistry C100, 153B, Civil and Environmental Engineering 110, Computer Science CM121, CM122, CM124, 170A, CM186, CM187, Ecology and Evolutionary Biology C135, Electrical and Computer Engineering 102, 131A, 141, Human Genetics C144, Mathematics 170A, Microbiology, Immunology, and Molecular Genetics 132, Molecular, Cell, and Developmental Biology 144, 187AL, Physiological Science 125, Statistics 100A, 100B. Eight units of either Bioinformatics 199 or Computer Science 194 or 199 may be applied as an elective by petition.Students are strongly encouraged to take Computer Science M184 as early as possible to obtain an overview of computational biology.

If students apply any of Civil and Environmental Engineering 110, Electrical and Computer Engineering 131A, Mathematics 170A, or Statistics 100A toward major requirements or another minor, then no other course from that set may be applied toward the minor requirements.

A minimum of 20 units applied toward the minor requirements must be in addition to units applied toward major requirements or another minor.

All minor courses must be taken for a letter grade (unless not offered on that grading basis), and students must have a minimum grade of C– in each and an overall C (2.0) grade-point average in all courses taken for the minor. Successful completion of the minor is indicated on the transcript and diploma.