
DEPARTMENT OF COMPUTER SCIENCE
360 Computer Science Building, (949) 824-4478
Lubomir Bic, Department Co-Chair, Computer Systems Division
David Eppstein, Department Co-Chair, Computing Division
Undergraduate Major in Computer Science
Undergraduate Major and Courses in Computer Science and Engineering
Computer Systems Division Faculty
Nader Bagherzadeh: Parallel processing, computer architecture, computer graphics, VLSI design
Lichun Bao: Protocol design and performance evaluation of wireless and mobile communication networks
Lubomir Bic: Parallel and distributed computing, mobile agents
Elaheh Bozorgzadeh: Design automation and synthesis for embedded systems, VLSI CAD, and reconfigurable computing
Pai Chou: Hardware/software co-design, embedded systems, component-based design, specification methodology, interface synthesis, real-time systems
Nikil Dutt: Design modeling, languages and synthesis, CAD tools, computer architecture
Magda El Zarki: Telecommunications, networks, wireless communication, video transmission
Michael Franz: Programming languages and their implementation; extensible systems; software architectures, component-ware and portable software that migrates across computer networks
Daniel Gajski: Computer and information systems, software/hardware codesign, algorithms and methodologies for embedded systems, CAD environments, science of design
Jean-Luc Gaudiot: Parallel processing, computer architecture, processor architecture
Tony Givargis: Embedded systems, platform-based system-on-a-chip design, low-power electronics
Ian Harris: Hardware/software covalidation, manufacturing test
Ramesh C. Jain: Computer vision, media information systems, experimental environments
Stephen F. Jenks: Parallel and distributed processing, multithreading, embedded systems
Scott Jordan: Modeling and analysis of behavior, control, and pricing in computer/telecommunication networks
David G. Kay: Computer law, computer science education
Alfred Kobsa: User modeling, human-computer interaction, artificial intelligence, cognitive science, interdisciplinary computer science
Fadi Kurdahi: VLSI system design, design automation of digital systems
Chen Li: Database systems, data integration, multimedia information systems, Web-based database systems, semi-structured data systems
Aditi Majumder: Computer graphics and visualization, large area displays, human-computer interaction
Sharad Mehrotra: Multimedia information systems, multidimensional databases, uncertainty processing in databases, data structures, information retrieval, distributed databases, workflow automation
Alexandru Nicolau: Architecture, parallel computation, and programming languages and compilers
Renato Pajarola: 3D computer graphics, scientific visualization, real-time rendering, image-based rendering, remote visualization, geometry and image compression
Isaac Scherson: Parallel computing architectures, massively parallel systems, parallel algorithms, complexity, orthogonal multiprocessing systems
Tatsuya Suda: Computer networks; distributed systems; performance evaluation
Gene Tsudik: Security and cryptography, networks and operating systems
Alexander Veidenbaum: Computer architecture, interconnection networks, compilers, embedded systems
Nalini Venkatasubramanian: Parallel and distributed systems, multimedia servers and applications, internetworking, high-performance architectures, resource management
Xiaowei Yang: Networks, distributed systems, protocol design, performance analysis, and security
Computing Division Faculty
James Arvo: Computer graphics, global illumination, human-computer interaction
Pierre Baldi: Bioinformatics, machine learning
Rina Dechter: Complexity of automated reasoning models, constraint-based reasoning, distributed connectionist models, causal models, probabilistic reasoning
Michael Dillencourt: Computational geometry, analysis of algorithms, data structures
Paul Dourish: Human-computer interaction, computer-supported cooperative work
David Eppstein: Analysis of algorithms, computational geometry, graph theory
Michael Goodrich: Computer security, algorithm design, data structures, Internet algorithmics, geometric computing, graphic drawing
Richard Granger: Computational and cognitive neuroscience
Wayne Hayes: High-performance scientific computing, dynamical systems and chaos, applied mathematics, graph theory, optimization
Daniel Hirschberg: Analysis of algorithms; concrete complexity; data structures; models of computation
Sandra Irani: Analysis of algorithms; online algorithms; graph theory and combinatorics
Stanislaw Jarecki: Cryptography, security, fault-tolerant distributed computing
Dennis Kibler: Machine learning, genomic analysis
Richard Lathrop: Modeling structure and function, machine learning, intelligent systems and molecular biology, protein structure/function prediction
George Lueker: Computational complexity; probabilistic analysis of algorithms; data structures
Gopi Meenakshisundaram: Geometry and topology for computer graphics, image-based rendering, object representation, surface reconstruction, collision detection, virtual reality, telepresence
Eric Mjolness: Neural networks, computational biology, bioinformatics, artificial intelligence, machine learning
Michael Pazzani: Human and machine learning, natural language understanding, cognitive science
Amelia Regan: Operations research, network optimization, data mining
Alice Silverberg: Theory of abelian varieties, application of arithmetic algebraic geometry to cryptography
Padhraic Smyth: Statistical pattern recognition, automated analysis of large data sets, applications of probability and statistics to problems in artificial intelligence
Max Welling: Statistical machine learning and probablistic inference with applications to pattern recognition and computer vision
Hong-Kai Zhao: Computational applied mathematics
The Systems Division faculty in the Department of Computer Science also contribute to the following concentration in the ICS graduate program: Systems. The Computing Division faculty in the Department of Computer Science also contribute to the following concentrations in the ICS graduate program: Algorithms and Data Structures, Artificial Intelligence, and Informatics in Biology and Medicine.
Undergraduate Major in Computer Science
The undergraduate major in Computer Science provides a solid foundation in computer science, focusing especially on algorithms and data structures, programming languages and compilers, operating systems, and digital logic and computer architecture. This can serve as preparation for either graduate study or a career in industry.
Admissions: See page 315.
REQUIREMENTS FOR THE BACHELOR'S DEGREE IN COMPUTER SCIENCE
University Requirements: See pages 56-60.
Major Requirements
Lower-division (some or all of the items listed in A and B are prerequisites for required upper-division ICS courses):
A. Mathematics 6A/ICS 6A, Mathematics 6B, Mathematics 6C or 3A, Mathematics 2A-B, Statistics 67/Mathematics 67, Philosophy 29 or 30 or Mathematics 13.
B. ICS 21, 22, 23, 51, 52.
C. A three-quarter science sequence chosen from Physics 3A-B-C and 3LB-LC; Physics 7A-B and 7D or 7E, with corresponding laboratories where available; Chemistry 1A-B-C and 1LB-LC; or two from Biological Sciences 94, 97, and E106, and completion of Biological Sciences 100L (Biological Sciences 194S is a prerequisite for this course).
Upper-division:
A. ICS 139.
B. ICS 141, 142, 143, 151, 152, 153, 161, 162 or 163, 171.
C. Three project courses selected from the following list: ICS 145A, 145B, 155A, 155B, 156, 165, 175A, 185, 187, 188.
D. Two additional upper-division ICS courses.
No course may be counted toward more than one of the above categories.
CS majors must enroll in ICS 161 no later than the second quarter after they have earned 90 units.
Major and minor restrictions: See page 314.
Undergraduate Major in Computer Science and Engineering
Program Educational Objectives: Graduates of the program will have (1) received a broad fundamental training in the areas of computer science, engineering, mathematics, physical science, and statistics that will serve as the foundation for future professional development; (2) covered in sufficient depth those fundamental areas required to research, develop, and evaluate complex hardware/software systems; (3) gained awareness of contemporary issues in computer science and engineering in a global and societal context and an understanding of the professional and ethical responsibilities of their profession; (4) acquired a skill for effective communication in oral and written forms and responsible multidisciplinary teamwork, to prepare students for a diversified working environment and for lifelong learning. (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. The program is administered jointly by the Department of Electrical Engineering and Computer Science and the Donald Bren School of Information and Computer Sciences.
Career Paths. Most likely careers will involve building the hardware 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 pre-calculus or math analysis and are advised to have completed one year each of chemistry and physics. One semester of programming course work is also advised. That preparation, along with honors courses and advanced placement courses, is fundamental to success in the program.
Beginning with the class of 2006, UCI requires applicants to take two SAT Subject Tests, selected from two different subject areas, for example, science and history/social studies, or literature and language. If one of the selected subject areas is mathematics, applicants must take Math Level 2. Also, The Henry Samueli School of Engineering recommends that freshmen applicants in Engineering majors take the SAT Subject Test, Math Level 2, as one of the two required SAT Subject areas.
Transfer Students. Students are encouraged to complete as many of the lower-division degree requirements as possible prior to transfer, including one year of calculus, one year of engineering physics (with laboratory) including electromagnetism, one year of Java programming, and one additional approved course for the major. Students who enroll at UCI in need of completing lower-division course work 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 (949) 824-5156. NOTE: The major in Computer Science and Engineering will be available to transfer students effective fall 2006.
REQUIREMENTS FOR THE BACHELOR'S DEGREE IN COMPUTER SCIENCE AND ENGINEERING
University Requirements: See pages 56-60.
Major Requirements:
Mathematics and Basic Science Courses:
Mathematics Courses: Students must complete a minimum of 32 units of mathematics including Mathematics 2A-B, 2D, 2J, 6A-B, 6C or 3A, and 67.
Basic Science Courses: Students must complete a minimum of 18 units of basic science courses including Physics 7A-B-D and 7LA-LB-LD.
Students select, with the approval of a faculty advisor, one additional basic science course needed to satisfy school and department requirements.
Engineering and Computer Topics Courses:
Students must complete a minimum of 72 units of engineering topics, which includes 24 units of engineering design, and a minimum of 60 units of computer topics, which includes 36 units of upper-division computer topics. The following courses must be completed:
CSE21, CSE22, CSE23, CSE25, CSE31, CSE31L, CSE70A, CSE90, CSE104, CSE112, CSE120A, CSE121, CSE132, CSE135A, CSE135B, CSE141, CSE142, CSE151, CSE161, CSE181A-B-C, ICS 183 or EECS104, EECS148 or ICS 153.
Students select, with the approval of a faculty advisor, any additional engineering and computer topics courses needed to satisfy school and department requirements.
Tracks: Students must complete one of the tracks listed below.
Algorithms: Students complete ICS 163, ICS 164.
Artificial Intelligence: Students complete ICS 171 and one course from ICS 172, ICS 173, ICS 175A or 175B.
Embedded Systems: Students complete ICS 53, ICS 53L.
Parallel Computing: Students complete EECS117, ICS 158.
(The nominal Computer Science and Engineering program will require 190 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
| FALL | WINTER | SPRING |
| Freshman | ||
| Mathematics 2A | Mathematics 2B | Mathematics 2D |
| Physics 7A, 7LA | Physics 7B, 7LB | Physics 7D, 7LD |
| CSE21 | CSE22 | Breadth |
| CSE25 | Breadth | |
| Sophomore | ||
| Mathematics 6A | Mathematics 6B | Mathematics 6C or 3A |
| Mathematics 2J | CSE23 | Science Elective |
| CSE31 | CSE31L | CSE70A |
| Breadth | CSE90 | Breadth |
| Breadth | ||
| Junior | ||
| CSE112 | CSE104 | EECS148 or ICS 153 |
| CSE121 | CSE132 | CSE120A |
| CSE161 | Mathematics 67 | Breadth |
| Breadth | Breadth | Breadth |
| Senior | ||
| CSE181A | CSE181B | CSE181C |
| CSE135A | CSE141 | CSE142 |
| CSE151 | CSE135B | Breadth |
| ICS 183 or EECS104 | Track | Track |
Courses in Computer Science and Engineering
LOWER-DIVISION
CSE21 Introduction to Computer Science I (6). First of a three-quarter introductory course. Introduces fundamental concepts related to computer software design and construction. Develops initial design and programming skills using a high-level programming language (primarily C++/Java). Introduces useful computer-based tools for analysis, expression, discovery. Same as ICS 21. Only one course from CSE21/ICS 21 and ICS H21 may be taken for credit. (V)
CSE22 Introduction to Computer Science II (6). Second of a three-quarter introductory sequence. Abstract behavior of classic data structures (stacks, queues, priority queues, tables, trees), alternative implementations, analysis of time and space efficiency. Recursion. Object-oriented and functional programming. Models of computation. Prerequisite: CSE21/ICS 21 with a grade of C or better. Same as ICS 22. Only one course from CSE22/ICS 22, ICS H22, or Informatics 42 may be taken for credit. (V)
CSE23 Fundamental Data Structures (4). Focuses on implementation and mathematical analysis of fundamental data structures and algorithms. Covers storage allocation and memory management techniques. Prerequisites: CSE22/ ICS 22 with a grade of C or better or EECS40; Mathematics 6A or ICS 6A. Same as ICS 23. Only one course from CSE23/ICS 23 and ICS H23 may be taken for credit. (V)
CSE25 Computing Tools for Computer Science and Engineering (2). Introduces computer-based mathematical and engineering tool usage and the C programming language. Prerequisites: CSE21/ICS 21 and Mathematics 2A.
CSE31 Introduction to Digital Systems (4) F, Summer. Digital representation of information. Specifications of combinational and sequential systems. Analysis and design of networks of gates and flip flops. Standard modules and their use. Introduction to algorithmic systems: datapath and control. Prerequisite: CSE21/ICS 21, EECS10, or MAE10. Same as EECS31. (Design units: 2)
CSE31L Introduction to Digital Logic Laboratory (3) W. Introduction to common digital building blocks: gates, memory circuits, MSI components. Operating characteristics, specifications, and applications. Design of simple combinational and sequential digital systems (processors state machines). Construction and debugging techniques, using hardware description languages and CAD tools. Corequisite: CSE31/EECS31. Prerequisites: CSE31/EECS31; EECS10 or EECS 12 or CSE22/ICS 22. Same as EECS31L. Formerly CSE31LB. (Design units: 3)
CSE70A Network Analysis I (4) W, Summer. Modeling and analysis of electronic networks. Basic network theorems. Sinusoidal steady state and transient analysis of RLC networks and the impedance concept. Corequisite: Mathematics 2J or 3D. Prerequisites: Physics 7D; CSE21/ICS 21, EECS10, or MAE10. Same as EECS70A. (Design units: 1)
CSE90 Systems Engineering and Technical Communications (2). 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.
UPPER-DIVISION
CSE104 Principles of Operating Systems (4). Principles and concepts of process and resource management, especially as seen in operating systems. Processes, memory management, protection, scheduling, file systems, and I/O systems are covered. Concepts illustrated in the context of several well-known systems. Prerequisites: CSE23/ICS 23, and ICS 51 or CSE31/EECS31 with grades of C or better. Same as ICS 143. Only one course from CSE104/ ICS 143 and EECS111 may be taken for credit.
CSE112 Electronic Devices and Circuits (4). Semiconductor properties, carrier transport, P-N junctions, metal-semiconductor junctions, diodes, MOS transistors, transistor equivalent circuits, amplifiers, invertors, digital circuits, CMOS circuits, and logic gates. Prerequisites: Physics 7D, CSE70A/EECS70A. (Design units: 1)
CSE120A Discrete-Time Signals and Systems (4) W. Analysis of discrete-time linear-time-invariant (DTLTI) systems in the time domain and using z-transforms. Introduction to techniques based on Discrete-Time, Discrete, and Fast Fourier Transforms. Examples of their application to digital signal processing and digital communications. Prerequisite: CSE70A/EECS70A. Same as EECS150B. CSE120A/EECS150B and EECSH150B may not both be taken for credit. (Design units: 0)
CSE121 Software Tools and Methods (4). Concepts and techniques of constructing software in a systematic fashion, including detailed design techniques, specifications, programming methods, quality-inducing procedures, development tools, team techniques, testing, estimation, and performance improvement. Laboratory work involves exercises to illustrate important concepts, methods, and tools. Prerequisites: CSE90 or ICS 52 with a grade of C or better; Mathematics 6A or ICS 6A; Mathematics 6B; Mathematics 6C or 3A; or Informatics 43 with a grade of C or better; and satisfactory completion of the lower-division writing requirement. Same as ICS 121 and Informatics 111.
CSE132 Organization of Digital Computers (4) W. Building blocks and organization of digital computers, the arithmetic, control, and memory units, and input/out devices and interfaces. Microprogramming and microprocessors. Prerequisite: CSE31L/EECS31L. Same as EECS112. Only one course from CSE132/EECS112, CSEH132/EECSH112, and ICS 152 may be taken for credit. (Design units: 4)
CSEH132 Honors Organization of Digital Computers (4) W. Building blocks and organization of digital computers, the arithmetic, control, and memory units, and input/out devices and interfaces, including advanced microarchitecture topics such as: pipelining, superscalar, multithreading, reconfigurable and microprocessor design. Prerequisite: CSE31L/EECS31L. Same as EECSH112. Only one course from CSEH132/EECSH112, CSE132/EECS112, and ICS 152 may be taken for credit. (Design units: 4)
CSE135A Digital Signal Processing (3) F. Nature of sampled data, sampling theorem, difference equations, data holds, z-transform, w-transform, digital filters, Butterworth and Chebychev filters, quantization effects. Prerequisite: CSE120A/EECS150B. Same as EECS152A. (Design units: 2)
CSE135B Digital Signal Processing Design and Laboratory (3) W. Students plan and perform 10 core laboratory exercises covering signal synthesis and analysis with various filter and frequency transform processes. Models of radio and radar/sonar signal processing are included. Prerequisite: CSE135A/ EECS152A. Same as EECS152B. (Design units: 3)
CSE141 Concepts in Programming Languages I (4). In-depth 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 object-oriented programming; implementation strategies, programming environments, and programming style. Prerequisites: CSE23/ICS 23 and CSE31/ EECS31 or ICS 51 with grades of C or better. Same as ICS 141.
CSE142 Compilers and Interpreters (4). Introduction to the theory of programming language processors covering lexical analysis, syntax analysis, semantic analysis, intermediate representations, code generation, optimization, interpretation, and run-time support. Prerequisite: CSE141/ICS 141. Prerequisite for Computer Engineering majors only: EECS40. Same as ICS 142.
CSE151 Introduction to VLSI (4) F. A first course in the design of Very Large Scale Integrated (VLSI) systems and chips. Review of CMOS VLSI technology. Analysis and synthesis of basic and complex CMOS gates. Introduction to CAD methodology and usage of CAD Tools. Prerequisite: CSE132/ EECS112. Same as EECS115. (Design units: 4)
CSE161 Design and Analysis of Algorithms (4). Time and space complexity of algorithms. Models of computation, techniques for efficient algorithm design, effect of data structure choice on efficiency of an algorithm. Fast algorithms for problems such as sorting, set manipulation, graph problems, matrix multiplication, Fourier transforms, and pattern matching. NP-complete problems. Prerequisites: CSE23/ICS 23, and CSE31/EECS31 or ICS 51 with grades of C or better; Mathematics 6B; Mathematics 6C or 3A; Mathematics 2B; satisfactory completion of the lower division writing requirement. Same as ICS 161.
CSE181A-B Senior Design Project (3-3). 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. Corequisite: CSE135A/EECS152A. Prerequisite: CSE104/ICS 143. (Design units: 3-3)
CSE181C Senior Design Project (3). Completion, documentation, and presentation of projects started in CSE181A-B. Teaches engineering documentation writing and presentation skills. Students write comprehensive project reports individually and participate in a public presentation of the project's results. Prerequisites: CSE181A-B and satisfactory completion of the lower-division writing requirement.
