2024-2025 Computer Science Undergraduate Study

student take part in programming contest

Students participate in CodeSprint LA at UCLA, the annual ICPC beginner-friendly algorithmic programming contest.

Computer Engineering BS

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.

Capstone Major

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.

Educational Objectives

The computer engineering undergraduate program educational objectives are that our alumni (1) understand fundamental computing concepts and make valuable contributions to the practice of computer engineering; (2) design, analyze, and implement complex computer systems for a variety of application areas and cyberphysical domains; (3) demonstrate the ability to work effectively in a team and communicate their ideas; (4) continue to learn as part of a graduate program or otherwise in the world of constantly evolving technology.

Learning Outcomes

The Computer Engineering major has the following learning outcomes:

Preparation for the Major

Complete 19 courses as follows. Students may select Computer Science M51A or Electrical and Computer Engineering M16.

Computer Science 1 or Electrical and Computer Engineering 1

Select one course from:

Physics 4AL or 4BL

Select one course from:

The Major

Computer Science

Complete five courses as follows:

Computer Science 118 or Electrical and Computer Engineering 132B

Select one course from:

Computer Science M151B or Electrical and Computer Engineering M116C

Select one course from:

Computer Science M152A or Electrical and Computer Engineering M116L

Select one course from:

Electrical and Computer Engineering

Complete the following four courses:

Probability

Select one course from:

Electives

Complete 8 units of computer science and 8 units of electrical and computer engineering upper-division electives.

Technical Breadth

Complete three technical breadth courses (12 units) selected from approved lists available on the technical breadth web page.

Capstone Design

Complete eight units from one of the following groups:

Systems Design
Design of Robotic Systems

Policies

The Major Policies

Approved lists of technical breadth courses are available on the technical breadth web page.

For information on UC, school, and general education requirements, see Requirements for BS Degrees or the 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 C121, 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.

Computer Science BS

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.

The computer science program is accredited by the Computing Accreditation Commission of ABET.

Capstone Major

The Computer Science major is a designated capstone major. Students complete either a software engineering or a major product design course. 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.

Educational Objectives

The computer science undergraduate program educational objectives are that our alumni (1) make valuable technical contributions to design, development, and production in their practice of computer science and related engineering or application areas, particularly in software systems and algorithmic methods, (2) demonstrate strong communication skills and the ability to function effectively as part of a team, (3) demonstrate a sense of societal and ethical responsibility in their professional endeavors, and (4) engage in professional development or postgraduate education to pursue flexible career paths amid future technological changes.

Learning Outcomes

The Computer Science major has the following learning outcomes:

Preparation for the Major

Complete 17 courses as follows:

Computer Science M51A or Electrical and Computer Engineering M16

Select one course from:

Physics 4AL or 4BL

Select one course from:

The Major

Complete the following seven required courses, one probability course, five courses (20 units) of computer science electives, three courses (12 units) of science and technology courses, and 12 units of technical breadth courses:

Computer Science M151B or Electrical and Computer Engineering M116C

Select one course from:

Computer Science M152A or Electrical and Computer Engineering M116L

Select one course from:

Probability

Select one course from:

Capstone Software Engineering or Design

Select one course from:

Computer Science Electives

Complete a minimum of 20 units and five elective courses from Computer Science 111 through CM187, and up to 8 units of Computer Science 188.

Science and Technology

Complete a minimum of 12 units and 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.

Technical Breadth

Complete three technical breadth courses (12 units) selected from approved lists available on the technical breadth web page.

Policies

The Major Policies

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.

Approved lists of technical breadth courses are available on the technical breadth web page.

For information on UC, school, and general education requirements, see Requirements for BS Degrees or the GE Requirement web page.

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.

Computer Science and Engineering BS

The computer science and engineering curriculum at UCLA provides students with 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. The curriculum covers all aspects of computer systems from electronic design through logic design, MSI, LSI, and VLSI concepts; device utilization, machine language design, implementation and programming, operating system concepts, systems programming, networking fundamentals, and higher-level language skills; and their application. Students are prepared for employment in a wide spectrum of high-technology industries.

The computer science and engineering program is accredited by the Computing Accreditation Commission and the Engineering Accreditation Commission of ABET.

Capstone Major

The Computer Science and Engineering major is a designated capstone major. Computer Science and Engineering students complete a major product design course. 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.

Educational Objectives

The computer science and engineering undergraduate program educational objectives are that our alumni (1) make valuable technical contributions to design, development, and production in their practice of computer science and computer engineering, in related engineering or application areas, and at the interface of computers and physical systems; (2) demonstrate strong communication skills and the ability to function effectively as part of a team; (3) demonstrate a sense of societal and ethical responsibility in their professional endeavors; and (4) engage in professional development or postgraduate education to pursue flexible career paths amid future technological changes.

Learning Outcomes

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

Preparation for the Major

Complete 18 courses as follows:

Computer Science M51A or Electrical and Computer Engineering M16

Select one course from:

Physics 4AL or 4BL

Select one course from:

The Major

Complete 19 courses as follows: 10 required courses, one probability course, one capstone design course, one electrical and computer engineering elective, three computer science electives, and three courses (12 units) of technical breath.

Computer Science M151B or Electrical and Computer Engineering M116C

Select one course from:

Computer Science M152A or Electrical and Computer Engineering M116L

Select one course from:

Probability

Select one course from:

Capstone Design

Complete the following course:

Electrical and Computer Engineering Elective

Complete a minimum of 4 units and one elective course from Electrical and Computer Engineering 101A through M185.

Computer Science Elective

Complete a minimum of 12 units and three elective courses from Computer Science 111 through CM187, and up to 8 units of Computer Science 188.

Technical Breadth

Complete three technical breadth courses (12 units) selected from approved lists available on the technical breadth web page. Students who want to deepen their knowledge of electrical engineering are encouraged to select that discipline as their technical breadth area.

Policies

The Major Policies

Approved lists of technical breadth courses are available on the technical breadth web page.

For information on UC, school, and general education requirements, see Requirements for BS Degrees or the GE Requirement web page.

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.

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

Admission

To enter the minor, students must be (1) in good academic standing (2.0 grade-point average or better), (2) have completed at least two of the lower-division requirements with minimum grades of C, and (3) file a petition through Message Center. Steps to apply are outlined on the Office of Academic and Student Affairs website. Information about the minor and the application are available on the minor website.

The Minor

Required Lower-Division Courses (17 units minimum)

Complete the following four courses. Students may select Computer Science 32 or Program in Computing 10C.

Required Upper-Division Courses (18 units minimum)

Complete either Computer Science 180 or Mathematics 182; Computer Science M184; two additional computer science courses; and one elective course. Students are strongly encouraged to take Computer Science M184 as early as possible to obtain an overview of computational biology.

Additional Computer Science

Select two courses from:

Elective

Select one course from:

The Minor Policies

Eight units of either Bioinformatics 199 or Computer Science 194 or 199 may be applied as an elective by petition.

If students apply any of Civil and Environmental Engineering 110, Electrical and Computer Engineering 131A, Mathematics 170A, 170E, 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.

Data Science Engineering Minor

The minor is intended to expose students to the entire data science life cycle from both foundational and application perspectives. The foundational courses provide the engineering skills to collect, cleanse, and store data; analyze and draw inference from data; and take action and make decisions. A wide-ranging list of interdisciplinary courses focuses on various data-science applications using these skills.

Admission

To apply for the minor, students must have an overall grade-point average of 3.0 or better, have completed or be in the process of completing in the present quarter the two lower-division required courses with the grade B- or better, and file a petition through Message Center. Steps to apply are outlined on the Office of Academic and Student Affairs website. Information about the minor and the application are available on the minor website.

The Minor

Required Lower-Division Courses (8 units)

Complete the following two courses:

Required Upper-Division Courses (12 units minimum)

Complete three courses as follows:

Probability

Select one course from:

Data Science

Select one course from:

Data Mining or Machine Learning

Select one course from:

Elective Upper-Division Courses (8 units minimum)

Select two courses from following list. Electrical and Computer Engineering 183DA and 183DB must both be taken to satisfy the requirement. Courses used to satisfied the required upper-division courses may not be used to satisfy the elective courses.

The Minor Policies

Variable topics courses may be taken as topics apply.

Transfer credit for any of the above is subject to approval; consult with the undergraduate counselors before enrolling in any courses for the minor.

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

Each minor course must be taken for a letter grade, and student must have a minimum grade of C in each and an overall grade-point average of 2.0 or better in the minor. Successful completion of the minor is indicated on the transcript and diploma.