Undergraduate Major in Computer Science and Engineering
Overview
The undergraduate program in Computer Science and Engineering is administered by faculty from two academic units: the Department of Computer Science (CS) in the Donald Bren School of Information and Computer Sciences, and the Department of Electrical Engineering and Computer Sciences (EECS) in The Henry Samueli School of Engineering. Successful completion of the program leads to a B.S. in Computer Science and Engineering.
Program Educational Objectives: Graduates of the program will: (1) establish a productive Computer Science and Engineering career in industry, government, or academia; (2) engage in professional practice of computer systems engineering and software systems engineering; (3) promote the development of innovative systems and solutions using hardware and software integration; (4) promote design, research, and implementation of products and services in the field of Computer Science and Engineering through strong communication, leadership, and entrepreneurial skills.
(Program educational objectives are those aspects of computer science and engineering that help shape the curriculum; achievement of these objectives is a shared responsibility between the student and UCI.)
This program is designed to provide students with the fundamentals of computer science, both hardware and software, and the application of engineering concepts, techniques, and methods to both computer systems engineering and software system design. The program gives students access to multidisciplinary problems in engineering with a focus on total systems engineering. Students learn the computer science principles that are critical to development of software, hardware, and networking of computer systems. From that background, engineering concepts and methods are added to give students exposure to circuit design, network design, and digital signal processing. Elements of engineering practice include systems view, manufacturing and economic issues, and multidisciplinary engineering applications.
Career Paths. Most likely careers will involve building the computerbased infrastructure—computers, networks, embedded devices, as well as operating systems, compilers, and networking software. The focus is on cooperation between hardware and software to yield the highest performance. Examples of such problem areas would be in traffic management, flight control, earthquake monitoring, automotive control, and smart homes.
Admissions
High School Students: Students must have completed four years of mathematics through precalculus or math analysis and are advised to have completed one year each of chemistry and physics. One semester of programming coursework is also advised. That preparation, along with honors courses and advanced placement courses, is fundamental to success in the program.
The Henry Samueli School of Engineering recommends that freshmen applicants in Engineering majors take the SAT Subject Test, Math Level 2.
Transfer Students. Students are encouraged to complete as many of the lowerdivision degree requirements as possible prior to transfer, including one year of approved calculus; one year of calculusbased physics with laboratories (mechanics, electricity and magnetism); one year of transferable computer science courses^{1} involving concepts such as those found in Java, Python, C++, or other objectoriented, highlevel programming language, and one additional approved transferable course for the major (an approved math, science, or CSE course).
^{1}  Additional computer science courses beyond the two required are strongly recommended, particularly those that align with the major of interest. Java and C++ are used in the curriculum; therefore, transfer students should plan to learn these languages by studying on their own or by completing related programming courses prior to their first quarter at UCI. 
Students who enroll at UCI in need of completing lowerdivision coursework may find that it will take longer than two years to complete their degrees. For further information, contact the Donald Bren School of Information and Computer Sciences at 9498245156 or The Henry Samueli School of Engineering at 9498244334.
Change of Major
Students interested in changing their major to Computer Science and Engineering should contact the Student Affairs Office in the Bren School of ICS or The Henry Samueli School of Engineering for information about changeofmajor requirements. Information is also available at UCI Change of Major Criteria website.
Requirements for the B.S. in Computer Science and Engineering
All students must meet the University Requirements.
Major Requirements
Mathematics and Basic Science Courses  
Mathematics Courses: Students must complete a minimum of 32 units of mathematics including:  
Boolean Algebra and Logic  
Discrete Mathematics for Computer Science  
SingleVariable Calculus and SingleVariable Calculus 

Multivariable Calculus  
Introduction to Linear Algebra  
Elementary Differential Equations  
Introduction to Probability and Statistics for Computer Science  
Basic Science Courses: Students must complete a minimum of 18 units of basic science courses including:  
Classical Physics and Classical Physics Laboratory 

Classical Physics and Classical Physics Laboratory 

Students select, with the approval of a faculty advisor, two additional basic science courses needed to satisfy school and department requirements from two courses in General Education II, except those offered by Computer Science and Engineering, Economics, Engineering, Information and Computer Sciences, or Math.


Engineering and Computing Topics Courses  
Students must complete a minimum of 72 units of engineering topics, 24 units of engineering design, and 63 units of computing topics. All courses below qualify as engineering topics; those marked with an asterisk (*) qualify as computing topics also. The following courses must be completed:  
Computer Networks ^{*}  
Principles of Operating Systems ^{*}  
or EECS 111 
System Software 
Introduction to Digital Systems ^{*}  
Introduction to Digital Logic Laboratory ^{*}  
Introduction to Programming ^{*}  
Programming with Software Libraries ^{*}  
Intermediate Programming ^{*}  
Programming in C/C++ as a Second Language ^{*}  
Data Structure Implementation and Analysis ^{*}  
DiscreteTime Signals and Systems  
Network Analysis I  
Systems Engineering and Technical Communications  
Electronic Devices and Circuits  
Organization of Digital Computers ^{*}  
Organization of Digital Computers Laboratory ^{*}  
Digital Signal Processing  
Digital Signal Processing Design and Laboratory  
Concepts in Programming Languages I ^{*}  
Compilers and Interpreters ^{*}  
Embedded Software  
Embedded Software Laboratory  
Design and Analysis of Algorithms ^{*}  
Senior Design Project I and Senior Design Project II 

Communications in the Professional World  
Introduction to Software Engineering ^{*}  
Students select, with the approval of a faculty advisor, any additional engineering and computer topics courses needed to satisfy school and department requirements.  
Technical Elective Courses:  
Students must complete a minimum of two courses (with 3 or more units each) of technical electives. A technical elective may be any upperdivision course from the Departments of Computer Science, Electrical Engineering and Computer Science, or Informatics, not otherwise used for the CSE degree, chosen from the following ranges:  
Computer Science: 100–189


Electrical Engineering and Computing Science: 100–189


Informatics: 100–139

(The nominal Computer Science and Engineering program will require 188 units of courses to satisfy all university and major requirements. Because each student comes to UCI with a different level of preparation, the actual number of units will vary).
NOTE: Students majoring in Computer Science and Engineering may not complete the major in Computer Engineering, the major in Computer Science, the major or minor in Information and Computer Science, or the minor in Informatics.
Sample Program of Study — Computer Science and Engineering
Freshman  

Fall  Winter  Spring 
MATH 2A  MATH 2B  MATH 2D 
CSE 41  CSE 42  CSE 43 
General Education  PHYSICS 7C 7LC  PHYSICS 7D 7LD 
General Education  General Education  CSE 31 
Sophomore  
Fall  Winter  Spring 
MATH 3A  MATH 3D  CSE 50 
CSE 31L  CSE 46  CSE 90 
CSE 45C  CSE 70A  I&C SCI 6D 
I&C SCI 6B  Science Elective  General Education 
Junior  
Fall  Winter  Spring 
IN4MATX 43  STATS 67  COMPSCI 143A 
CSE 112  CSE 132L  CSE 142 
CSE 132  CSE 141  CSE 145 145L 
CSE 161  General Education  
Senior  
Fall  Winter  Spring 
CSE 181A  CSE 181B  ENGR 190W 
CSE 135A  CSE 135B  Technical Elective 
EECS 148  Technical Elective  Science Elective 
General Education  General Education  General Education 
General Education 
Courses
CSE 31. Introduction to Digital Systems. 4 Units.
Digital representation of information. Specification, analysis, design and optimization or combinational and sequential logic, registertransfer components and registertransfer systems with datapaths and controllers. Introduction to highlevel and algorithmic statemachines and custom processors.
(Design units: 2)
Prerequisite: CSE 41 or I&C SCI 31 or EECS 10 or EECS 12 or ENGRMAE 10 or CSE 21 or I&C SCI 21 or I&C SCI H21
Same as EECS 31.
Restriction: Computer Engineering Majors have first consideration for enrollment. Computer Science Engineering Majors have first consideration for enrollment. Electrical Engineering Majors have first consideration for enrollment.
CSE 31L. Introduction to Digital Logic Laboratory. 3 Units.
Introduction to common digital integrated circuits: gates, memory circuits, MSI components. Operating characteristics, specifications, applications. Design of simple combinational and sequential digital systems (arithmetic processors gameplaying machines). Construction and debugging techniques using hardware description languages and CAD tools. Materials fee.
(Design units: 3)
Prerequisite: (EECS 31 or CSE 31) and (EECS 10 or EECS 12 or (CSE 22 or I&C SCI 22) or (CSE 42 or I&C SCI 32))
Same as EECS 31L.
Restriction: Computer Science Engineering Majors have first consideration for enrollment. Electrical Engineering Majors have first consideration for enrollment. Computer Engineering Majors have first consideration for enrollment.
CSE 41. Introduction to Programming. 4 Units.
Introduction to fundamental concepts and techniques for writing software in a highlevel programming language. Covers the syntax and semantics of data types, expressions, exceptions, control structures, input/output, methods, classes, and pragmatics of programming.
Same as I&C SCI 31.
Overlaps with I&C SCI 21, CSE 21, I&C SCI H21, EECS 10, EECS 12.
(II and VB ).
CSE 42. Programming with Software Libraries. 4 Units.
Construction of programs for problems and computing environments more varied than in CSE41. Using library modules for applications such as graphics, sound, GUI, database, Web, and network programming. Language features beyond those in CSE41 are introduced as needed.
Prerequisite: I&C SCI 31 or CSE 41. I&C SCI 31 with a grade of C or better. CSE 41 with a grade of C or better
Same as I&C SCI 32.
Overlaps with I&C SCI 22, CSE 22, I&C SCI H22, IN4MATX 42.
(II and (VA or VB) ).
CSE 43. Intermediate Programming. 4 Units.
Intermediatelevel language features and programming concepts for larger, more complex, higherquality software. Functional programming, name spaces, modules, class protocols, inheritance, iterators, generators, operator overloading, reflection. Analysis of time and space efficiency.
Prerequisite: I&C SCI 32 or CSE 42. I&C SCI 32 with a grade of C or better. CSE 42 with a grade of C or better
Same as I&C SCI 33.
Overlaps with I&C SCI 22, CSE 22, I&C SCI H22, IN4MATX 42.
(II and VB ).
CSE 45C. Programming in C/C++ as a Second Language. 4 Units.
An introduction to the lexical, syntactic, semantic, and pragmatic characteristics of the C/C++ languages for experienced programmers. Emphasis on objectoriented programming, using standard libraries, and programming with manual garbage collection. Formerly ICS 65.
Prerequisite: I&C SCI 22 or CSE 22 or IN4MATX 42 or I&C SCI 33 or CSE 43 or EECS 40. I&C SCI 22 with a grade of C or better. CSE 22 with a grade of C or better. IN4MATX 42 with a grade of C or better. I&C SCI 33 with a grade of C or better. CSE 43 with a grade of C or better. EECS 40 with a grade of C or better
Same as I&C SCI 45C.
CSE 46. Data Structure Implementation and Analysis. 4 Units.
Focuses on implementation and mathematical analysis of fundamental data structures and algorithms. Covers storage allocation and memory management techniques.
Prerequisite: CSE 45C or I&C SCI 45C. CSE 45C with a grade of C or better. I&C SCI 45C with a grade of C or better
Same as I&C SCI 46.
Overlaps with I&C SCI H23.
(Vb)
CSE 50. DiscreteTime Signals and Systems. 4 Units.
Analysis of discretetime lineartimeinvariant (DTLTI) systems in the time domain and using ztransforms. Introduction to techniques based on DiscreteTime, Discrete, and Fast Fourier Transforms. Examples of their application to digital signal processing and digital communications.
(Design units: 0)
Prerequisite: EECS 70A or CSE 70A
Same as EECS 50.
Restriction: Computer Engineering Majors have first consideration for enrollment. Computer Science Engineering Majors have first consideration for enrollment. Electrical Engineering Majors have first consideration for enrollment.
CSE 70A. Network Analysis I. 4 Units.
Modeling and analysis of electrical networks. Basic network theorems. Sinusoidal steady state and transient analysis of RLC networks and the impedance concept.
(Design units: 1)
Corequisite: MATH 3D
Prerequisite: PHYSICS 7D and (EECS 10 or EECS 12 or ENGRMAE 10 or CSE 41 or I&C SCI 31)
Same as EECS 70A.
Overlaps with ENGRMAE 60.
Restriction: Aerospace Engineering Majors have first consideration for enrollment. Biomedical Engineering Majors have first consideration for enrollment. Civil Engineering Majors have first consideration for enrollment. Computer Engineering Majors have first consideration for enrollment. Electrical Engineering Majors have first consideration for enrollment. Environmental Engineering Majors have first consideration for enrollment. Materials Science Engineering Majors have first consideration for enrollment. Mechanical Engineering Majors have first consideration for enrollment.
CSE 90. Systems Engineering and Technical Communications . 2 Units.
Introduces systems engineering concepts, including specifications and requirements, hardware and software design, integration, testing, and documentation. Emphasizes organization and writing of reports and effective presentations.
Restriction: Computer Science Engineering Majors have first consideration for enrollment.
CSE 112. Electronic Devices and Circuits. 4 Units.
A first course in the design of Very Large Scale Integrated (VLSI) systems. Introduction to CMOS technology; MOS transistors and CMOS circuits. Analysis and synthesis of CMOS gates. Layout design techniques for building blocks and systems. Introduction to CAD tools.
(Design units: 4)
Prerequisite: PHYSICS 7D and (CSE 70A or EECS 70A)
Overlaps with EECS 119, EECS 170D.
Restriction: Computer Science Engineering Majors have first consideration for enrollment.
CSE 132. Organization of Digital Computers. 4 Units.
Building blocks and organization of digital computers, the arithmetic, control, and memory units, and input/out devices and interfaces. Microprogramming and microprocessors.
(Design units: 4)
Prerequisite: EECS 31L or CSE 31L
Same as EECS 112.
Overlaps with COMPSCI 152.
Restriction: Computer Engineering Majors have first consideration for enrollment. Computer Science Engineering Majors have first consideration for enrollment. Electrical Engineering Majors have first consideration for enrollment.
CSE 132L. Organization of Digital Computers Laboratory. 3 Units.
Specification and implementation of a processorbased system using a hardware description language such as VHDL. Handson experience with design tools including simulation, synthesis, and evaluation using testbenches.
(Design units: 3)
Prerequisite: EECS 112 or CSE 132
Same as EECS 112L.
Restriction: Computer Science Engineering Majors have first consideration for enrollment. Computer Engineering Majors have first consideration for enrollment.
CSE 135A. Digital Signal Processing. 3 Units.
Nature of sampled data, sampling theorem, difference equations, data holds, ztransform, wtransform, digital filters, Butterworth and Chebychev filters, quantization effects.
(Design units: 2)
Prerequisite: EECS 50 or CSE 50
Same as EECS 152A.
Restriction: Computer Engineering Majors have first consideration for enrollment. Electrical Engineering Majors have first consideration for enrollment. Computer Science Engineering Majors have first consideration for enrollment.
CSE 135B. Digital Signal Processing Design and Laboratory. 3 Units.
Design and implementation of algorithms on a DSP processor and using computer simulation. Applications in signal and image processing, communications, radar, etc.
(Design units: 3)
Prerequisite: (EECS 22 or CSE 45C or I&C SCI 45C) and (EECS 152A or CSE 135A)
Same as EECS 152B.
Restriction: Computer Science Engineering Majors have first consideration for enrollment. Electrical Engineering Majors have first consideration for enrollment. Computer Engineering Majors have first consideration for enrollment.
CSE 141. Concepts in Programming Languages I. 4 Units.
Indepth study of several contemporary programming languages stressing variety in data structures, operations, notation, and control. Examination of different programming paradigms, such as logic programming, functional programming and objectoriented programming; implementation strategies, programming environments, and programming style.
Prerequisite: (I&C SCI 51 or CSE 31 or EECS 31) and (I&C SCI 46 or CSE 46). I&C SCI 51 with a grade of C or better. CSE 31 with a grade of C or better. EECS 31 with a grade of C or better. I&C SCI 46 with a grade of C or better. CSE 46 with a grade of C or better
Same as IN4MATX 101, COMPSCI 141.
Restriction: Computer Science Engineering Majors have first consideration for enrollment. School of Info & Computer Sci students have first consideration for enrollment.
CSE 142. Compilers and Interpreters. 4 Units.
Introduction to the theory of programming language processors covering lexical analysis, syntax analysis, semantic analysis, intermediate representations, code generation, optimization, interpretation, and runtime support.
Prerequisite: CSE 141 or COMPSCI 141 or IN4MATX 101
Same as COMPSCI 142A.
CSE 145. Embedded Software. 4 Units.
Principles of embedded computing systems: embedded systems architecture, hardware/software components, system software and interfacing, realtime operating systems, hardware/software codevelopment, and communication issues. Examples of embedded computing in realworld application domains. Simple programming using an embedded systems development environment.
Corequisite: COMPSCI 145L
Prerequisite: (CSE 46 or I&C SCI 46) and (I&C SCI 51 or CSE 132 or EECS 112)
Same as COMPSCI 145.
Restriction: Computer Science Engineering Majors have first consideration for enrollment. Computer Science Majors have first consideration for enrollment.
CSE 145L. Embedded Software Laboratory. 2 Units.
Laboratory section to accompany CSE 145 or COMPSCI 145.
(Design units: 0)
Corequisite: CSE 145 or COMPSCI 145.
Same as COMPSCI 145L.
CSE 161. Design and Analysis of Algorithms. 4 Units.
Techniques for efficient algorithm design, including divideandconquer and dynamic programming, and time/space analysis. Fast algorithms for problems applicable to networks, computer games, and scientific computing, such as sorting, shortest paths, minimum spanning trees, network flow, and pattern matching.
Prerequisite: (I&C SCI 46 or CSE 46) and I&C SCI 6B and I&C SCI 6D and MATH 2B. I&C SCI 46 with a grade of C or better. CSE 46 with a grade of C or better
Same as COMPSCI 161.
Restriction: School of Info & Computer Sci students have first consideration for enrollment. Computer Science Engineering Majors have first consideration for enrollment.
CSE 181A. Senior Design Project I. 3 Units.
Teaches problem definition, detailed design, integration, and testability with teams of students specifying, designing, building, and testing complex systems. Lectures include engineering values, discussions, and ethical ramifications of engineering decisions. Materials fee.
(Design units: 3)
Prerequisite: EECS 113 or EECS 170C or CSE 145A or COMPSCI 145A
Same as EECS 159A.
Restriction: Computer Science Engineering Majors have first consideration for enrollment. Electrical Engineering Majors have first consideration for enrollment. Computer Engineering Majors have first consideration for enrollment.
CSE 181B. Senior Design Project II. 3 Units.
Teaches problem definition, detailed design, integration, and testability with teams of students specifying, designing, building, and testing complex systems. Lectures include engineering values, discussions, and ethical ramifications of engineering decisions. Materials fee.
(Design units: 3)
Prerequisite: EECS 159A or CSE 181A
Same as EECS 159B.
Restriction: Computer Science Engineering Majors have first consideration for enrollment. Electrical Engineering Majors have first consideration for enrollment. Computer Engineering Majors have first consideration for enrollment.
CSE H198. Honors Research in CSE. 4 Units.
Directed independent research in computer science and engineering for honors students.
Repeatability: May be repeated for credit unlimited times.
Restriction: Campuswide Honors Program students only. Bren School of ICS Honors students only. Upperdivision students only. Computer Science Engineering Majors only.
CSE 199. Individual Study. 14 Units.
Supervised independent reading, research, or design for undergraduate Engineering majors. Students taking individual study for design credit are to submit a written paper to the instructor and to the Undergraduate Student Affairs Office in the School of Engineering.
(Design units: 14)
Repeatability: May be taken for credit for 8 units.