DEPARTMENT OF COMPUTER SCIENCE

3019 Donald Bren Hall; (949) 824-0016
Sandy Irani, Department Chair
Lubomir Bic, Department Vice Chair

Undergraduate Major in Computer Science

Undergraduate Major in Computer Science and Engineering

Undergraduate Courses

Graduate Program

Graduate Courses

Faculty

James Arvo: Computer graphics, global illumination, human-computer interaction

Pierre Baldi: Bioinformatics, machine learning

Lichun Bao: Protocol design and performance evaluation of wireless and mobile communication networks

Lubomir Bic: Parallel and distributed computing, mobile agents

Alfred Bork: Computer-based learning; production systems for computer-based learning; screen design; simulation; computer graphics

Elaheh Bozorgzadeh: Design automation and synthesis for embedded systems, VLSI CAD, and reconfigurable computing

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

Nikil Dutt: Design modeling, languages and synthesis, CAD tools, computer architecture

Magda El Zarki: Telecommunications, networks, wireless communication, video transmission

David Eppstein: Analysis of algorithms, computational geometry, graph theory

Stephen Franklin: Computer- and network-based educational technology, IT resource management

Michael Franz: Programming languages and their implementation; extensible systems; software architectures, component-ware and portable software that migrates across computer networks

Daniel Frost: Artificial intelligence, software engineering, computer graphics, teaching of programming

Tony Givargis: Embedded systems, platform-based system-on-a-chip design, low-power electronics

Michael Goodrich: Computer security, algorithm design, data structures, Internet algorithmics, geometric computing, graphic drawing

Richard Granger: Computational and cognitive neuroscience

Ian Harris: Hardware/software covalidation, manufacturing test

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

Sandy Irani: Analysis of algorithms; online algorithms; graph theory and combinatorics

Norman Jacobson: Computer science education, ethics in computing, forensic computing

Ramesh C. Jain: Computer vision, media information systems, experimental environments

Stanislaw Jarecki: Cryptography, security, fault-tolerant distributed computing

David G. Kay: Computer law, computer science education

Dennis Kibler: Machine learning, genomic analysis

Alfred Kobsa: User modeling, human-computer interaction, artificial intelligence, cognitive science, interdisciplinary computer science

Richard Lathrop: Modeling structure and function, machine learning, intelligent systems and molecular biology, protein structure/function prediction

Chen Li: Database systems, data integration, multimedia information systems, Web-based database systems, semi-structured data systems

George Lueker: Computational complexity; probabilistic analysis of algorithms; data structures

Aditi Majumder: Computer graphics and visualization, large area displays, human-computer interaction

Gopi Meenakshisundaram: Geometry and topology for computer graphics, image-based rendering, object representation, surface reconstruction, collision detection, virtual reality, telepresence

Sharad Mehrotra: Multimedia information systems, multidimensional databases, uncertainty processing in databases, data structures, information retrieval, distributed databases, workflow automation

Eric Mjolsness: Neural networks, computational biology, bioinformatics, artificial intelligence, machine learning

Alexandru Nicolau: Architecture, parallel computation, and programming languages and compilers

Natasa Przulj: Biomedical informatics, computational biology

Amelia Regan: Operations research, network optimization, data mining

Isaac Scherson: Parallel computing architectures, massively parallel systems, parallel algorithms, complexity, orthogonal multiprocessing systems

Padhraic Smyth: Statistical pattern recognition, automated analysis of large data sets, applications of probability and statistics to problems in artificial intelligence

Tatsuya Suda: Computer networks; distributed systems; performance evaluation

Shannon Tauro: Embedded computer systems

Alex Thornton: Computer science education, programming languages, compilers

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

Max Welling: Statistical machine learning and probabilistic inference with applications to pattern recognition and computer vision

Xiaowei Yang: Networks, distributed systems, protocol design, performance analysis, and security

Affiliated Faculty

Nader Bagherzadeh: Parallel processing, computer architecture, computer graphics, VLSI design

Pai Chou: Hardware/software co-design, embedded systems, component-based design, specification methodology, interface synthesis, real-time systems

Paul Dourish: Human-computer interaction, computer-supported cooperative work

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

Stephen F. Jenks: Parallel and distributed processing, multithreading, embedded systems

Scott Jordan: Modeling and analysis of behavior, control, and pricing in computer/telecommunication networks

Fadi Kurdahi: VLSI system design, design automation of digital systems

Cristina Videira Lopes: Programming languages, acoustic communications, operating systems, software engineering

Alice Silverberg: Theory of abelian varieties, application of arithmetic algebraic geometry to cryptography

Mark Steyverys: Computational models of memory, reasoning, and perception

Hong-Kai Zhao: Computational applied mathematics

Undergraduate Major in Computer Science

The undergraduate major in Computer Science provides a solid foundation in computer science, focusing especially on algorithms, data structures, programming languages, compilers, operating systems, digital logic, and computer architecture. This major can serve as preparation for either graduate study or a career in industry. Computer Science majors may also choose to complete the Game Culture and Technology concentration, an interdisciplinary course of study requiring a total of eight courses (32 units) from the Bren School of ICS and Claire Trevor School of Arts (Department of Studio Art); admission criteria and course requirements are described on page 346.

The Department also offers a joint undergraduate degree in Computer Science and Engineering, in conjunction with The Henry Samueli School of Engineering; information is available in the Interdisciplinary Studies section of the Catalogue.

ADMISSIONS

Freshman Applicants: See pages 36-40.

Transfer Applicants:

Junior-level applicants with the highest grades overall and who satisfactorily complete course prerequisites will be given preference for admission. Applicants must satisfy the following requirements:

1.   One year of discrete mathematics if available; if not, first-year calculus. (A semester of pre-calculus and a semester of calculus may not be used to fulfill this requirement.)

2.   One year of computer science courses, including a UC-transferable programming course involving concepts such as those found in C++, Java*, Eiffel, or another object-oriented high-level language; programming-only courses such as Basic, Fortran, Cobol, Pascal, and C are not acceptable. Students should select UC-transferable courses that do not focus strictly on learning a programming language but instead focus on topics such as object-oriented design, data structures, algorithms, and computer architecture, if such courses are available. *Java is strongly recommended as it is used in most programming-related courses.

The lower-division requirements consist of five quarters of ICS courses, seven quarters of math courses, and three quarters of either physics, chemistry, or biology. These courses must be taken in a certain order and are prerequisites for upper-division courses. Students who transfer to UCI and are still in need of completing any part of this sequence may find that it will take longer than two years to complete their degree.

REQUIREMENTS FOR THE BACHELOR'S DEGREE IN COMPUTER SCIENCE

University Requirements: See pages 57-62.

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 2A-B, ICS 6B/Mathematics 6B, ICS 6D/Mathematics 6D, Mathematics 6G or 3A, 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.   CS Core requirements: CS 132; CS 141; CS 142A; CS 143A; CS 151; CS 152; CS 161*; one of CS 162, 163, 164, 167, or 168; CS 171.

C.   Three project courses selected from the following list: CS 113, CS 114, CS 122B, CS 133, CS 142B, CS 143B, CS 153, CS 154, CS 165, CS 175.

D.   Two additional upper-division courses selected from the following list: CS 111-CS 189, Informatics 101, Informatics 111-119, Informatics 123, Informatics 125, Informatics 131, Informatics 132, Informatics 141, Informatics 153, and Informatics 161-163.

No course may be counted toward more than one of the above categories.

*CS majors must enroll in CS 161 no later than the second quarter after they have earned 90 units.

Major and minor restrictions: See page 345.

Sample Program of Study — Computer Science

FALL

WINTER

SPRING

Freshman

ICS 21

ICS 22

ICS 23

Math 2A

Math 2B

ICS 6B/Math 6B

Writing 39A

Writing 39B

Writing 39C

Breadth (III/VII)

Breadth (III/VII)

Sophomore

ICS 51

ICS 52

CS UD Core

ICS 6D/Math 6D

Math 6G

Stats 67/Math 67

Science Elective

Science Elective

Science Elective

Breadth (III/VII)

Breadth (III/VII)

Breadth (III/VII)

Junior

CS 161*

CS UD Core

CS UD Core

CS UD Core

CS UD Core

CS UD Core

Phil 29/30 or Math 13

CS UD Core

ICS 139

Language 1A (VI)

Language 1B (VI)

Language 1C (VI)

Senior

CS Project

CS Project

CS Project

CS Elective

CS Elective

CS UD Core

Breadth (IV)

Breadth (IV)

Breadth (IV)

Breadth (III/VII)

*CS majors must enroll in CS 161 no later than the second quarter after they have earned 90 units.

NOTE: CS upper-division core, project, and elective requirements may be satisfied by specific Computer Science and Informatics courses. See the requirements listed above.

Undergraduate Major in Computer Science and Engineering (CSE)

This program is administered jointly by the Department of Computer Science in the Bren School of ICS, and the Department of Electrical Engineering and Computer Science (EECS) in The Henry Samueli School of Engineering. For information, see the Interdisciplinary Studies section of the Catalogue,See page 370.

REQUIREMENTS FOR THE BACHELOR'S DEGREE IN COMPUTER SCIENCE AND ENGINEERING

University Requirements: See pages 57-62.

Major Requirements: See page 370.

GRADUATE PROGRAM IN COMPUTER SCIENCE

The field of Computer Science is concerned with the design, analysis, and implementation of computer systems as well as the use of computation as it is applied to virtually every field of study and use in the everyday world. Computer systems can range in scope from small embedded systems to the Internet as a whole. Research in computer science involves mathematical analysis, expirical experimentation, and the implementation of prototype systems. Core research areas include artificial intelligence and machine learning, bioinformatics, computer architecture, embedded systems, graphics and visual computing, databases and information management, multimedia, networked and distributed systems, programming languages and compilers, security and cryptography, design and analysis of algorithms, scientific computing, and ubiquitous computing.

The M.S. and Ph.D. degrees in Computer Science (CS) are broad and flexible programs which offer students opportunities for graduate study in the full spectrum of intellectual activity in computer science.

MASTER OF SCIENCE IN COMPUTER SCIENCE

The course requirements for the M.S. are identical to those of the Ph.D., although completion plans differ. See page 364 for additional information about the M.S. completion plan options, the Bren School of ICS's graduate programs, and general information about admissions.

DOCTOR OF PHILOSOPHY IN COMPUTER SCIENCE

Required Courses

Each student must complete at least 46 units with an average GPA of 3.5 and at least a B in each course. The set of core and elective courses chosen by a student must be approved by the student's research advisor before advancement to candidacy. Faculty associated with each research area will provide suggested curricula for that area to guide students in their selection of courses. These curricula will also help Ph.D. students to prepare for their candidacy examination (see below) which must be taken in a specific research area.

Students must complete ICS 200, four core courses, and seven elective courses. The course requirements are as follows:

Students must select four areas from the list of seven areas given below. From each area, they must select at least one of the courses listed for that area.

   Area         Core Courses
1. Data Structures and Algorithms:    CS 260
2. Computer Architecture and Design:   CS 250A
3. System Software:       CS 241
4. Artificial Intelligence:       CS 271
5. Networks and Distributed Systems:   CS 232 or CS 230
6. Database Systems:      CS 222
7. Scientific and Visual Computing:   CS 206 or CS 211A

Seven elective courses from any set of CS, Informatics, or Statistics courses, including the above core courses, but excluding CS 290, 295, 298, 299, or any course with a suffix of "S." Two of these courses can be graduate courses offered in the Department of Electrical Engineering and Computer Science with consent of the advisor. No more than two CS 295s may be taken to satisfy elective course requirements.

Ph.D. students are required to serve as teaching assistants for at least two quarters.

Research Project for the Ph.D. Degree

Doctoral students must find a faculty advisor and successfully complete a research project with that faculty member by the end of their second year. In coordination with this project the student must also take at least one independent studies course (CS 299) with their faculty advisor. The objective of the research project is to demonstrate early in the program the student's ability to carry out basic research in computer science.

Finally, the student must present the outcome of the research in a technical report, which must be approved by the advisor. The project may or may not be a stepping-stone toward a dissertation, and must be completed by the end of the second year, and prior to advancement to candidacy.

Advancement to Candidacy Examination

The objective of the candidacy examination is to demonstrate in-depth knowledge of an area of computer science and readiness to carry out independent research at the doctoral level in that area. The student must complete all pre-candidacy course requirements and the research project prior to advancing to candidacy. All requirements for candidacy including the candidacy examination must be completed by the end of the second year. If the student does not pass on the first trial, the student will be allowed until the end of the first quarter of the third year to advance to candidacy. The Candidacy Committee will consist of five faculty members, the majority of whom must be members of the student's program, who will administer the examination according to UCI Senate regulations. The format is an oral examination during which the student is tested on knowledge relevant to the chosen area of specialization. Each area is defined by a set of topics and reading list, which are maintained by the Computer Science Department office. New areas or changes to existing areas must be approved by a majority vote of the CS faculty in accor

dance with the Department's bylaws. The current areas include the following: Algorithms and Data Structures; Computer Architecture and Embedded Systems; Database Systems and Multimedia; Computer Networks; Distributed Systems; Artificial Intelligence and Machine Learning; Informatics in Biology and Medicine; Computer Graphics and Visual Computing; Cryptography and Computer Security; Computational Neuroscience; Scientific Computing.

The examination is graded pass or fail. In order to pass, the Candidacy Committee must unanimously approve the final outcome. In the case of a fail, the examination may be retaken once. Students who fail on the second try will be recommended for disqualification from the doctoral program.

Dissertation Topic Defense

The student must produce a substantial written document representing the dissertation plan. This must include the proposed dissertation abstract, a dissertation outline, and a detailed plan for completing the work. A dissertation defense committee is formed in accordance with UCI Senate regulations. The dissertation committee must unanimously approve the student's proposal. At the discretion of the student's advisor, the student may be required to give an oral presentation of the proposed plan to the committee. This must be completed by the end of the fourth year. It is expected that this will be done at least a year prior to the final examination and before most of the dissertation research and writing are undertaken. The idea is for students to demonstrate that they have a clear plan for carrying out the research for their dissertation. It also gives the student an understanding of what will be expected for final approval of the dissertation.

Doctoral Dissertation and Final Examination

Ph.D. students are required to complete a Ph.D. dissertation in accordance with Academic Senate regulations. In addition, they must pass an oral dissertation defense which consists of a public seminar presenting results followed by a private examination by the doctoral committee and other interested members of the Computer Science Department faculty.

The normative time for advancement to candidacy is two years. The normative time for completion of the Ph.D. is five years, and the maximum time permitted is six years.

Graduate Program in Mathematical and Computation Biology

The graduate program in Mathematical and Computational Biology (MCB) is a one-year "gateway" program designed to function in concert with selected department programs, including the Ph.D. in Computer Science. Detailed information is available online at http://mcsb.bio.uci.edu/.

See page 363 for additional information about the Bren School of ICS's graduate programs and general information about admissions.

Courses in Computer Science

UPPER-DIVISION

111 Digital Image Processing (4). Introduction to the fundamental concepts of digital signal and image processing as applicable in areas such as multimedia, graphics, AI, data mining, databases, vision, or video games. Topics include image representation, space- and frequency-domain transformations, filters, segmentation, and compression. Prerequisites: ICS 23/CSE23, ICS 6D/Mathematics 6D, and Mathematics 6G or 3A with grades of C or better. CS 111 and EECS107 may not both be taken for credit. Formerly ICS 181.

112 Computer Graphics (4). Introduction to the fundamental principles of 3D computer graphics including polygonal modeling, geometric transformations, visibility algorithms, illumination models, texturing, and rasterization. Use of an independently-learned 3D graphics API to implement these techniques. Prerequisite: ICS 52 with a grade of C or better. Formerly ICS 183.

113 Computer Game Development (4). Introduction to the principles of interactive two- and three-dimensional computer game development. Concepts in computer graphics, algorithms, software engineering, art and graphics, music and sound, story analysis, and artificial intelligence are presented and are the basis for student work. Prerequisites: either CS 112, CS 171, Informatics 122, Studio Art 135, or consent of instructor. Same as Informatics 125. Formerly ICS 187.

114 Projects in Advanced 3D Computer Graphics (4). Projects in advanced 3D graphics such as illumination, geometric modeling, visualization, and animation. Topics may include physically based and global illumination, solid modeling, curved surfaces, multiresolution modeling, image-based rendering, basic concepts of animation, and scientific visualization. Prerequisite: CS 112 or equivalent; recommended: CS 161/CSE161, CS 164,  CS 165. Formerly ICS 188.

115 Computer Simulation (4). Discrete event-driven simulation; continuous system simulation; basic probability as pertaining to input distributions and output analysis; stochastic and deterministic simulation; static and dynamic system simulation. Prerequisites: ICS 6B/Mathematics 6B, Mathematics 6G, Mathematics 67/Statistics 67, ICS 51 and 52, all with grades of C or better; upper-division standing.

121 Information Retrieval (4). An introduction to information retrieval including indexing, retrieval, classifying, and clustering text and multimedia documents. Prerequisites: ICS 23/CSE23/ICS H23 or Informatics 43; Statistics 7/Mathematics 7 or Statistics 67/Mathematics 67. Same as Informatics 141. Formerly ICS 177.

122A Introduction to Data Management (4). Introduction to the design of databases and the use of database management systems (DBMS) for applications. Topics include entity-relationship modeling for design, relational data model, relational algebra, relational design theory, and Structured Query Language (SQL) programming. Prerequisites: either ICS 52 or Informatics 43 with a grade of C or better (for ICS or Informatics majors); either ICS 23/ICS H23 or EECS114 with a grade of C or better (for Computer Engineering majors). Same as Engineering EECS116. Formerly ICS 184.

122B Project in Database Management (4). Introduces students to advanced database technologies. Students gain experience in programming complex applications using database management systems. Topics include object-oriented and object-related technologies, XML, and Internet databases. Prerequisite: CS 122A/EECS116. Formerly ICS 185.

131 Distributed Computing (4). Introduction to systems implemented within network-based computer architectures. Issues in distributed programming, operating systems, and applications. Specific topics covered include programming constructs, timing/coordination problems, data/service replication, transactions/concurrency control, fault-tolerance, recovery, file systems, security. Prerequisite: CS 141/CSE141/Informatics 101. Recommended: CS 132. Formerly ICS 148.

132 Computer Networks (4). An introductory course on computer network architectures. Layering approach of communication protocols is introduced, and the function of each layer is explained. Various examples are shown from long-haul networks and local area networks to B-ISDN and high speed networks. Prerequisites: ICS 23/CSE23 or ICS H23 with a grade of C or better; ICS 51 with a grade of C or better, or CSE132/EECS112; ICS 6D/Mathematics 6D; ICS 6B/Mathematics 6B; Mathematics 6G or 3A. Formerly ICS 153.

133 Advanced Computer Networks (4). Fundamental principles in computer networks are applied to obtain practical experience and skills necessary for designing and implementing computer networks, protocols, and network applications. Various network design techniques, simulation techniques, and UNIX network programming are covered. Prerequisite: CS 132 or equivalent, or consent of instructor. Formerly ICS 156.

134 Computer and Network Security (4). Overview of modern computer and networks security, attacks, and countermeasures. Authentication, identification, data secrecy, data integrity, authorization, access control, computer viruses, network security. Also covers secure e-commerce and applications of public key methods, digital certificates, and credentials. Prerequisites: ICS 6D/Mathematics 6D; ICS 22/CSE22 or Informatics 42; and one from CS 122A/EECS 116, CS 132, or CS 143A/CSE104. Formerly ICS 168.

141 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: Informatics 43 with a grade of C or better; or ICS 23/CSE23/ICS H23 with a grade of C or better and either ICS 51 or CSE31/EECS31 with a grade of C or better. Same as CSE141/Informatics 101. Formerly ICS 141.

142A 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: CS 141/CSE141/Informatics 101. Prerequisite for Computer Engineering majors only: EECS40. Same as CSE142. Formerly ICS 142.

142B Language Processor Construction (4). Project course which provides working laboratory experience with construction and behavior of compilers and interpreters. Students build actual language processors and perform experiments which reveal their behaviors. Prerequisite: CS 142A/CSE142. Formerly ICS 145A.

143A 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: ICS 23/CSE23, and ICS 51 or EECS31/CSE31 with grades of C or better. Same as CSE104. Only one course from CS 143A/CSE104 and EECS111 may be taken for credit. Formerly ICS 143.

143B Project in Operating System Organization (4). Detailed specification and design of critical components of an actual operating system including a memory manager, a process server, and a file/IO subsystem. Hardware/software tradeoffs. Emphasis on logical organization of system and communication. Prerequisite: CS 143A/CSE104. Formerly ICS 145B.

144 High-Performance Computers and Program Optimization (4). Analyzes the relationship between computer architecture and program optimization. High-performance and parallelizing compilers for RISC, Superscalar, and VLIW architectures are discussed. Prerequisite: ICS 51 with a grade of C or better. Recommended: CS 142A. Formerly ICS 144.

145A Embedded Computing Systems (4). Principles of embedded computing systems: embedded systems architecture, hardware/software components, system software and interfacing, real-time operating systems, hardware/software co-development, and communication issues. Examples of embedded computing in real-world application domains. Simple programming using an embedded systems development environment. Prerequisites: ICS 23/CSE23, ICS 51. Formerly ICS 53.

145B Embedded Computing System Laboratory (2). Laboratory to accompany CS 145A. Corequisite: CS 145A. Formerly ICS 53L.

146 Programming in Multitasking Operating Systems (4). User- and systems-level programming of modern Internet-connected, multi-user, multitasking operating systems. Shells, scripting, filters, pipelines, programmability, extensibility, concurrency, inter-process communication. Concrete examples of a modern operating system (such as, but not necessarily, Unix programmed in C) are used. Prerequisites: ICS 23/CSE23 and ICS 151 with grades of C or better. Recommended: CS 143A.

151 Digital Logic Design (4). Boolean algebra. Design/analysis of combinational and sequential systems using SSI/MSI/LSI modules. Number systems. Error detecting and correction codes. Arithmetic algorithms. Hardware/ firmware implementation of algorithms. Prerequisites: ICS 23/CSE23 and ICS 51 with grades of C or better; ICS 6D/Mathematics 6D; ICS 6B/Mathematics 6B. Formerly ICS 151.

152 Computer Systems Architecture (4). Design of computer elements: ALU, control unit, and arithmetic circuits. Memory hierarchy and organization. Caches. Function unit sharing and pipelining. I/O and interrupt processing. RTL and behavioral modeling using hardware description languages. Microprocessor organization and implementation techniques. Prerequisite: CS 151. Only one course from CS 152, CSE132/EECS112, and CSEH132/EECSH112 may be taken for credit. Formerly ICS 152.

153 Logic Design Laboratory (4). Introduction to standard integrated circuits: gates, flip-flops, shift registers, counters, latches. Construction and debugging techniques. Design of digital systems using LSI and MSI components. Practical use of circuits in a laboratory environment, including implementation of small digital systems such as arithmetic modules, displays, and timers. Prerequisites: CS 151 or concurrent enrollment; satisfactory completion of the lower-division writing requirement. Formerly ICS 155A.

154 Computer Design Laboratory (4). Design of basic computer components and small complete digital systems. Emphasis on practical use of Computer-Aided Design (CAD) tools, modeling of computer systems, and design practices in a laboratory environment. Prerequisite or corequisite: CS 151. Formerly ICS 155B.

161 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: ICS 23/CSE23 and ICS 51 or CSE31/EECS31 with grades of C or better; ICS 6D/Mathematics 6D; Mathematics 6B; Mathematics 6G or 3A; Mathematics 2B; satisfactory completion of the lower division writing requirement. Same as CSE161.

162 Formal Languages and Automata (4). Formal aspects of describing and recognizing languages by grammars and automata. Parsing regular and context-free languages. Ambiguity, nondeterminism. Elements of computability; Turing machines, random access machines, undecidable problems, NP-completeness. Prerequisites: ICS 23/CSE23 and ICS 51 with grades of C or better; Mathematics 2A-B and Statistics 67/Mathematics 67; ICS 6D/Mathematics 6D; ICS 6B/Mathematics 6B; Mathematics 6G or 3A. Same as Linguistics 102. Formerly ICS 162.

163 Graph Algorithms (4). Algorithms for solving fundamental problems in graph theory. Graph representations, graph traversal, network flow, connectivity, graph layout, matching problems. Prerequisite: CS 161/CSE161. Formerly ICS 163.

164 Principles of Computational Geometry (4). Algorithms and data structures for geometric computation and graphics programming. Fundamental problems of computational geometry such as convex hulls, Voronoi diagrams, Delaunay triangulations, polygon partitioning, arrangements, geometric searching, hidden surface elimination, motion planning. Prerequisite: CS 161/CSE161 or equivalent. Formerly ICS 164.

165 Project in Algorithms and Data Structures (4). Design, implementation, execution, and analysis of algorithms for problems such as sorting, searching, data compression, and data encryption. Time-space-structure trade-offs. Prerequisite: CS 161/CSE161. Formerly ICS 165.

167 Introduction to Applied Cryptography (4). An introduction to the essential aspects of applied cryptography, as it is used in practice. Topics include classical cryptography, block ciphers, stream ciphers, public-key cryptography, digital signatures, one-way hash functions, basic cryptographic protocols, and digital certificates and credentials. Prerequisites: ICS 6D/Mathematics 6D; ICS 22/CSE22 or Informatics 42; CS 161/CSE161 and/or upper-division standing.

168 Network Optimization (4). Network modeling techniques and related algorithms for solving large-scale integer programming problems. Exact methods and heuristic techniques. Applications include computer and communications networks and transportation and logistics networks. Prerequisite: upper-division standing or consent of instructor.

171 Introduction to Artificial Intelligence (4). Different means of representing knowledge and uses of representations in heuristic problem solving. Representations considered include predicate logic, semantic nets, procedural representations, natural language grammars, and search trees. Prerequisites: ICS 52 with a grade of C or better; Mathematics 2A-B and Statistics 67/Mathematics 67. Formerly ICS 171.

172 Programming Techniques in Artificial Intelligence (4). The study of methods for implementing artificial intelligence programs in high-level languages. Exercises on implementation of data structures for representing rules, frames, grammars, networks, and algorithms for search, inference, language processing, and learning. Prerequisite: CS 171. Formerly ICS 172.

173 Neural Networks (4). An introduction to the rapidly growing field of neural networks, i.e., algorithms derived from brain circuitry. Models covered include the Hopfield model, delta rule, perceptrons, backpropagation, competitive learning. Mathematical analysis, applications, and biological bases of neural network algorithms. Prerequisites: ICS 52 with a grade of C or better; Mathematics 2A-B and Statistics 67/Mathematics 67; Mathematics 6G or 3A. Formerly ICS 173.

174 Bioinformatics (4). Introduces fundamental problems in biology that lend themselves to computational approaches. The lectures present the necessary biological background to understand the importance of the problem and the data available for algorithmic analysis. Prerequisites: ICS 21/CSE21, ICS 22/CSE22, and ICS 23/CSE23; CS 171 with a grade of C or better. Formerly ICS 174.

175 Project in Artificial Intelligence (4). Construction of a working artificial intelligence system. Evaluation of capabilities of the system including impact of knowledge representation. Prerequisite: CS 171. Formerly ICS 175A.

176 Introduction to Expert Systems (4). Introduction to the methodology of design and implementation of expert systems. Laboratory work uses expert system shells to construct knowledge-based systems. Emphasis on techniques for representing and organizing domain and control knowledge as opposed to the theory and implementation of inference engines. Prerequisite: CS 171. Formerly ICS 175B.

177 Applications of Probability in Computer Science (4). Application of probability to real-world problems in computer science. Typical topics include analysis of algorithms and graphs, probabilistic language models, network traffic modeling, data compression, and reliability modeling. Prerequisites: Mathematics 2A-B and Statistics 67/Mathematics 67; ICS 6D/Mathematics 6D; ICS 6B/Mathematics 6B; and either Mathematics 6G or 3A. Formerly ICS 178.

178 Machine Learning and Data Mining (4). Introduction to principles of machine learning and data mining applied to real-world datasets. Typical applications include spam filtering, object recognition, and credit scoring. Prerequisites: ICS 6D/Mathematics 6D, ICS 6B/Mathematics 6B, Mathematics 6G or 3A, Mathematics 2A-B, and Statistics 67/Mathematics 67.

190 Special Topics in Information and Computer Science (4). May be repeated for credit if title or topic varies. Prerequisites vary. Formerly ICS 180.

196 Tutoring in ICS (1 to 4). Offers opportunities to tutor both on an individual, as needed basis and as part of regularly scheduled courses. Specific tutoring assignments depend on the courses with which the student is working, as determined by the instructor in charge. In most cases includes time in individual tutoring and a term paper or project. May be taken for credit for a total of eight units. Pass/Not Pass only. Formerly ICS 196.

H198 Honors Research (4). Directed independent research in computer science for honors students. Prerequisites: upper-division standing and satisfactory completion of the lower-division writing requirement; participation in the Bren School of ICS Honors Program or Campuswide Honors Program; consent of instructor.

199 Individual Study (2 to 5)

GRADUATE

201 Foundations of Cryptographic Protocols (4). Introduction to cryptographic protocols, including encryption, signature schemes, message authentication, and identification. Topics are presented using a provable security paradigm where one identifies security goals and designs cryptographic schemes along with proofs. They achieve these goals under clearly stated assumptions. Prerequisites: CS 260 or 263, or consent of instructor. Formerly ICS 268.

202 Applied Cryptography (4). Design and analysis of algorithms for applied cryptography. Topics include symmetric and asymmetric key encryption, digital signatures, one-way hash functions, digital certificates and credentials, and techniques for authorization, non-repudiation, authentication, identification, data integrity, proofs of knowledge, and access control. Prerequisites: CS 260 and 263, or consent of instructor. Formerly ICS 247.

203 Network and Distributed Systems Security (4). Overview of modern computer and networks security: attacks and countermeasures. Authentication, identification, data secrecy, data integrity, authorization, access control, computer viruses, network security. Group communication and multicast security techniques. Also covers secure e-commerce and applications of public key methods, digital certificates, and credentials. Prerequisite: CS 132 or EECS148. Same as Networked Systems 240. Formerly ICS 243G.

206 Principles of Scientific Computing (4). Overview of widely used principles and methods of numerical and scientific computing, including basic concepts and computational methods in linear algebra, optimization, and probability. Prerequisites: basic courses in multivariate calculus, linear algebra, and probability. CS 206 and Statistics 230 may not both be taken for credit. Formerly ICS 282.

211A Computer Graphics (4). Euler characteristics, genus, manifolds; graphics, pipeline; lighting; texture-, bump-, and mip-mapping; spatial hierarchies; back-face/view-frustum culling; color theory; anti-aliasing, dithering; introduction to certain advanced topics like Monte Carlo methods, radiosity, ray tracing. Formerly ICS 285.

211B Advanced Topics in 3D Computer Graphics (4) F, W, S. Advanced topics in 3D graphics on rendering, geometric modeling, and visualization. Subjects range from illumination and shading, and multiresolution representations, to other advanced algorithms and data structures in graphics. Also looks at trends that go beyond traditional computer graphics. Prerequisites: CS 161, 164, or 211A, and 266. Formerly ICS 286.

212 Multimedia Systems and Applications (4). Organization and structure of modern multimedia systems; audio and video encoding/compression; quality of service concepts; scheduling algorithms for multimedia; resource management in distributed and multimedia systems; multimedia protocols over high-speed networks; synchronization schemes; multimedia applications and teleservices. Prerequisites: undergraduate degree in computer science or CS 143A and 161; CS 131, 132, and 133 recommended. Formerly ICS 218.

213 Introduction to Visual Perception (4). Introduction to the process of human visual perception. Offers the physiological and psychophysical approach to understand vision, introducing concepts of perception of color, depth, movement. Examples of the quantification and application of these models in computer vision, computer graphics, multimedia, HCI. Prerequisite: Mathematics 121A. Formerly ICS 288.

221 Information Retrieval, Filtering, and Classification (4). Algorithms for the storage, retrieval, filtering, and classification of textual and multimedia data. The vector space model, Boolean and probabilistic queries, and relevance feedback. Latent semantic indexing; collaborative filtering; and relationship to machine learning methods. Prerequisites: B.S. degree in computer science, or CS 161, 171; Mathematics 3A or 6G; and a course in basic probability.

222 Principles of Data Management (4). Covers fundamental principles underlying data management systems. Content includes key techniques including storage management, buffer management, record-oriented file system, access methods, query optimization, and query processing. Prerequisites: CS 122A 131, 143A, and 152. Formerly ICS 214A.

223 Transaction Processing and Distributed Data Management (4). Covers fundamental principles underlying transaction processing including database consistency, concurrency control, database recovery, and fault-tolerance. Includes transaction processing in centralized, distributed, parallel, and client-server environments. Prerequisite: CS 222. Formerly ICS 214B.

224 Advanced Topics in Data Management (4). Selected advanced topics in data management. Content differs in each offering and with instructor's interests. Intended for students interested in data management with focus on reading and critiquing recent research papers, presentations, and substantial research projects. Prerequisites: CS 143A, 152, 161, 222, 223, or consent of instructor. Formerly ICS 215.

230 Distributed Computer Systems (4). Principles of distributed computing systems. Topics covered include message-passing, remote procedure calls, distributed shared memory synchronization, resource and process/thread management, distributed file systems, naming and security. Prerequisite: consent of instructor. Formerly ICS 242.

231 Queueing Networks (4). Probability, random processes, and queueing theory applied to computer networks. Poisson processes, Markov chains, queues, queueing networks, simulation. Prerequisites: ICS 243A and an introductory course in probability. Same as Networked Systems 251.

232 Internet (4). A broad overview of basic Internet concepts. Internet architecture and protocols, including addressing, routing, TCP/IP, quality of service, and streaming. Prerequisite: EECS148, CS 132, or consent of instructor. Same as EECS248A and Networked Systems 201. Formerly ICS 243A.

233 Networking Laboratory (4). A laboratory-based introduction to basic networking concepts such as addressing, sub-netting, bridging, ARP, and routing. Network simulation and design. Structured around weekly readings and laboratory assignments. Prerequisite: CS 132 or EECS148. Same as Networked Systems 202. Formerly ICS 234B.

234 Advanced Networks (4). Fundamental concepts of switching, advanced medium access control methods, virtual circuits, integrated services, quality of service, performance models, simulation, measurement. Prerequisite: CS 232. Same as Networked Systems 210. Formerly ICS 243C.

235 Internet Technology (4). Application layer Internet protocols, potentially including client/server, WWW, file sharing, group communications, Internet programming. Prerequisite: CS 232. Same as Networked Systems 220. Formerly ICS 243D.

236 Wireless and Mobile Networking (4). Introduction to wireless networking. The focus is on layers 2 and 3 of the OSI reference model, design, performance analysis, and protocols. Topics covered include: an introduction to wireless networking, digital cellular, next generation cellular, wireless LANs, and mobile IP. Prerequisites: CS 132 or EECS148, and an introductory course in probability or consent of instructor. Same as Networked Systems 230. Formerly ICS 243E.

237 Middleware for Networked and Distributed Systems (4). Discusses concepts, techniques, and issues in developing distributed systems middleware that provides high performance and Quality of Service for emerging applications. Also covers existing standards (e.g., CORBA, DCOM, Jini, Espeak) and their relative advantages and shortcomings. Prerequisite: undergraduate-level course in operating systems and networks or consent of instructor. Same as Networked Systems 260. Formerly ICS 243F.

239S Seminar in Parallel Distributed and Network Systems (2). Current research and research trends in parallel distributed and network systems. Forum for presentation and criticism by students of research work in progress. May be repeated for credit. Formerly ICS 249.

240 Language-Based Security (4). Teaches state-of-the art language-based techniques for increasing the security and reliability of software systems. Covers static (e.g., bytecode verification, proof-carrying code) and dynamic (e.g., reference monitors, stack inspection) techniques. Also discusses information flow and securing legacy code. Prerequisite: either CS 230, 242, or 262, or consent of instructor.

241 Advanced Compiler Construction (4). Advanced study of programming language implementation techniques: optimizations such as common sub-expression elimination, register allocation, and instruction scheduling. Implementation of language features such as type-directed dispatch, garbage collection, dynamic linking, and just-in-time code generation. Prerequisite: CS 142 or equivalent. Formerly ICS 211.

242 Parallel Computing (4). Definition of parallel processing systems. Theory and application of arrays, trees, and hypercubes. Computational models, applications: sorting, integer arithmetic, matrix operations, Fast Fourier Transform, and others. Interconnection networks: a framework for the description, analysis, and construction of hypercube-derived networks. Formerly ICS 244.

243 High-Performance Architectures and Their Compilers (4). Emphasis on the development of automatic tools (i.e., compilers/environments) for the efficient exploitation of parallel machines, and the trade-offs between hardware and software in the design of supercomputing and high-performance machines. Formerly ICS 245.

244 Introduction to Embedded and Ubiquitous Systems (4). Embedded and ubiquitous system technologies including processors, DSP, memory, and software. System interfacing basics; communication strategies; sensors and actuators, mobile and wireless technology. Using pre-designed hardware and software components. Design case studies in wireless, multimedia, and/or networking domains. Prerequisites: B.S. degree in computer science; or ICS 51, CS 152; Mathematics 3A or 6G or ICS 6D/Mathematics 6D; CS 161. Same as Informatics 244. Formerly ICS 212.

245 Software for Embedded Systems (4). Embedded computing elements, device interfaces, time-critical IO handling. Embedded software design under size, performance, and reliability constraints. Software timing and functional validation. Programming methods and compilation for embeddable software. Embedded runtime systems. Case studies of real-time software systems. Prerequisites: B.S. degree in computer science; or ICS 51, CS 152; Mathematics 3A or 6G or ICS 6D/Mathematics 6D; CS 161. Formerly ICS 213.

246 Validation and Testing of Embedded Systems (4). Embedded system building blocks including IP cores. Co-simulation. Formal verification using model checking. Verification environments. Test challenges in core integration: compliance, feature, random, and collision testing. Core access and test integration. Interface-based verification and standards. Prerequisite: B.S. degree in computer science or basic courses in algorithms and data structures, calculus, discrete mathematics, linear algebra, symbolic logic. Formerly ICS 216.

247 Design Automation and Prototyping of Embedded Systems (4). System representation and modeling. Abstract and language models. Simulation as a modeling activity. Computation and hw/sw systems prototypes. System analysis using models. Constraint and interface modeling. Behavioral compilation and synthesis. Prerequisites: B.S. degree in computer science or ICS 6D/Mathematics 6D, 51; CS 152, 161, 244; and Mathematics 3A or 6G. Formerly ICS 217.

248A Introduction to Ubiquitous Computing (4). The "disappearing computer" paradigm. Differences to the desktop computing model: applications, interaction in augmented environments, security, alternate media, small operating systems, sensors, and embedded systems design. Evaluation by project work and class participation. Same as Informatics 241.

248B Ubiquitous Computing and Interaction (4). Principles and design techniques for ubiquitous computing applications. Conceptual basis for tangible and embodied interaction. Interaction in virtual and augmented environments. Design methods and techniques. Design case studies. Examination by project work. Prerequisites: Informatics 231 and 241. Same as Informatics 242.

249S Seminar in Compilers and Operating Systems (2). Current research and research trends in system-level software such as compilers and operating systems. Forum for presentation and criticism by students of new published research and work in progress. Prerequisites: undergraduate degree in computer science or CS 142 and 143. May be taken for credit four times. Formerly ICS 219.

250A Computer Systems Architecture (4). Study of architectural issues and their relation to technology and software: design of processor, interconnections, and memory hierarchies. Prerequisites: CS 132 and 143A, or equivalent. Formerly ICS 241A.

250B Modern Microprocessors (4). Fundamental concepts and recent advances in computer architecture necessary to understand and use modern microprocessors. Topics span out-of-order execution, multiple instruction issue, control/data speculation, predication, advanced cache and DRAM organizations, embedded systems, DSP and multi-media instructions. Prerequisite: CS 250A or equivalent. Formerly ICS 241B.

251 Digital System Verification and Testing (4). Techniques for simulation, verification, and testing of hardware and mixed-mode systems. Fault models, test generation, algorithms, and functional testing. Design for testability. Prerequisite: consent of instructor. Formerly ICS 251.

252 Introduction to Computer Design (4). The methodology and use of CAD tools for computer design, accomplished by a lab in which students practice design using commercially available silicon compilers and other tools. Prerequisite: CS 151 and 152 or equivalent. Formerly ICS 252.

253 Design Description and Modeling (4). Introduction to design modeling. Overview of design description languages and demonstration of design modeling at different abstraction levels. Techniques and methodologies for simulating and testing of design. Prerequisites: CS 151, 152, and 250A; or consent of instructor. Formerly ICS 253.

254 Design Synthesis (4). Methods, algorithms, and tools for design synthesis on different levels of design: logic, register-transfer, behavioral, and system. CAD laboratory assignments using design tools for exploration of different synthesis algorithms. Prerequisites: CS 152 , 250A, or 252, or consent of instructor. Formerly ICS 256.

255 System Tools (4). Specification and requirement analysis of integrated systems. Support for early system-design decisions. Estimation and prediction of design metrics. System partitioning, modeling of hardware/software codesign. Synthesis from executable specifications. Prerequisites: CS 252 and 253; or consent of instructor. Formerly ICS 257.

258 Combinatorial Algorithms for Design Synthesis (4). Combinatorial optimization techniques and graph algorithms with application in design synthesis and development of CAD tools for design synthesis such as network flow theory, integer programming, SAT solvers, and more. Prerequisite: CS 161, 252, or familiarity with general area of design synthesis and algorithms.

259S Seminar in Design Science (2). Current research and research trends in design science. Forum for presentation and criticism by students of research work in progress. May be repeated for credit. Formerly ICS 259.

260 Fundamentals of the Design and Analysis of Algorithms (4). Covers fundamental concepts in the design and analysis of algorithms and is geared toward non-specialists in theoretical computer science. Topics include: deterministic and randomized graph algorithms, fundamental algorithmic techniques like divide-and-conquer strategies and dynamic programming, and NP-completeness. Prerequisite: CS 161 or equivalent undergraduate algorithms course. Formerly ICS 260.

261 Data Structures (4). An in-depth treatment of data structures and their associated management algorithms including resource complexity analysis. Prerequisite: ICS 23 and CS 161. Formerly ICS 261.

262 Computational Complexity (4). Advanced course in computational models and complexity classes. Covers the fundamentals of Turing Machines, Decidability, and NP-completeness. Includes discussion of more advanced topics including polynomial hierarchy, randomized complexity classes, #P-completeness and hardness of approximation. Prerequisite: CS 162. Formerly ICS 262.

263 Analysis of Algorithms (4). Analysis of correctness and complexity of various efficient algorithms; discussion of problems for which no efficient solutions are known. Prerequisites: CS 161 and 261. Formerly ICS 263.

265 Graph Algorithms (4). Graph definitions, representation methods, graph problems, algorithms, approximation methods, and applications. Prerequisites: CS 161 and 261. Formerly ICS 265.

266 Computational Geometry (4). An overview of some of the basic problems in computational geometry and of some algorithmic and data-structuring techniques appropriate to their solution. Prerequisites: CS 161 and 261. Formerly ICS 266.

267 Data Compression (4). An introduction to the theory and practice of modern data compression techniques. Topics include codes, coding, modeling, text compression, lossless and lossy image compression standards and systems, audio compression. Prerequisite: CS 161, 260, or 261. Formerly ICS 267.

269S Seminar in the Theory of Algorithms and Data Structures (2). Current research and research trends in the theory of algorithms and data structures. May be repeated for credit. Formerly ICS 269.

271 Introduction to Artificial Intelligence (4). The study of theories and computational models for systems which behave and act in an intelligent manner. Fundamental subdisciplines of artificial intelligence including knowledge representation, search, deduction, planning, probabilistic reasoning, natural language parsing and comprehension, knowledge-based systems, and learning. Formerly ICS 270A.

273A Machine Learning (4). Computational approaches to learning algorithms for classifications, regression, and clustering. Emphasis is on discriminative classification methods such as decision trees, rules, nearest neighbor, linear models, and naive Bayes. Prerequisites: CS 206 and 271. Formerly ICS 273A.

273B Kernel-Based Learning (4). Principles of kernel methods, support vector machines, and related machine learning methods. Applications to regression, classification, prediction, and other data analysis problems. Typical areas of application range from bioinformatics, to image analysis, to pattern recognition. Prerequisites: CS 273A or consent of instructor. Formerly ICS 273B.

274A Probabilistic Learning: Theory and Algorithms (4). An introduction to probabilistic and statistical techniques for learning from data, including parameter estimation, density estimation, regression, classification, and mixture modeling. Prerequisite: CS 206 or consent of instructor. Formerly ICS 274A.

274B Learning in Graphical Models (4). Models for data analysis are presented in the unifying framework of graphical models. The emphasis is on learning from data but inference is also covered. Real world examples are used to illustrate the material. Prerequisite: CS 274A or consent of instructor. Formerly ICS 274B.

275 Network-Based Reasoning/Constraint Networks (4). Study of the theory and techniques of constraint network model. Covers techniques for solving constraint satisfaction problems: backtracking techniques, consistency algorithms, and structure-based techniques. Tractable subclasses. Extensions into applications such as temporal reasoning, diagnosis, and scheduling. Prerequisite: a basic course in algorithm design and analysis, or consent of instructor. Formerly ICS 275A.

276 Network-Based Reasoning/Belief Networks (4). Focuses on reasoning with uncertainty using "Bayes Networks" that encode knowledge as probabilistic relations between variables, and the main task is, given some observations, to update the degree of belief in each proposition. Prerequisite: a basic course in probability or consent of instructor. Formerly ICS 275B.

277 Data Mining (4). Introduction to the general principles of inferring useful knowledge from large data sets (commonly known as data mining or knowledge discovery). Relevant concepts from statistics, databases and data structures, optimization, artificial intelligence, and visualization are discussed in an integrated manner. Prerequisite: CS 273A or 274A or consent of instructor. Formerly CS 215.

279S Seminar in Artificial Intelligence (2). Current research and research trends in artificial intelligence. May be repeated for credit. Formerly ICS 279.

281 Neural Networks (4). Introduction to concepts of artificial neural networks (ANNs). Architectures of supervised and unsupervised networks. Basic math of learning and performance rules. Formerly ICS 276A.

282 Models of the Brain (4). Basic neural anatomy and physiology. Fundamental cell types and their channel properties. Organization of telencephalic circuitry. Cortico-Hippocampal pathways. Synaptic plasticity: long-term potentiation. Behavioral implications of plasticity, interpretation of lesion experiments, computational network models based on physiology of plasticity. Formerly ICS 276B.

283 Cognitive and Computational Neuroscience (4). Computational analysis and simulation of physiological rules as sited in anatomical circuitries. Synaptic plasticity in the brain and its behavioral and psychological consequents in learning and memory. Theories of hippocampal function; thalamocortical function and interactions among neocortical layers. Formerly ICS 276C.

284A Representations and Algorithms for Molecular Biology (4). Introduction to computational methods in molecular biology, aimed at those interested in learning about this interdisciplinary area. Covers computational approaches to understanding and predicting the structure, function, interactions, and evolution of DNA, RNA, proteins, and related molecules and processes. Prerequisite: a basic course in algorithms, or a basic course in molecular biology, or consent of instructor. Formerly ICS 277A.

284B Probabilistic Modeling of Biological Data (4). A unified Bayesian probabilistic framework for modeling and mining biological data. Applications range from sequence (DNA, RNA, proteins) to gene expression data. Graphical models, Markov models, stochastic grammars, structure prediction, gene finding, evolution, DNA arrays, single- and multiple-gene analysis. Prerequisite: a basic course in algorithms and molecular biology, or CS 284A or equivalent, or consent of instructor. Formerly ICS 277B.

284C Computational Systems Biology (4). Computational inference and modeling of gene regulation networks, signal transduction pathways, and the effects of regulatory networks in cellular processes, development, and disease. Introduction of required mathematical, computational, and data handling tools. Prerequisites: CS 284A or 284B or Biological Sciences 99 and Mathematics 2D and 2J, or consent of instructor. Formerly ICS 277C.

288A Biological Networks (4). Introduces the basics of primarily graph theoretic analysis and modeling of biological networks. Presents the necessary biological background for understanding different types of biological networks as well as mathematical, algorithmic, and computational complexity issues associated with them. Prerequisites: ICS 6D/Mathematics 6D and CS 161/CSE161 or equivalent, and Biological Sciences M123 or equivalent.

289S Seminar for Informatics in Biology and Medicine (2). Current research and research trends in bioinformatics and medical informatics. Forum for presentation and criticism by students of recently published research and work in progress. Prerequisite: CS 284A or 284B, or a basic understanding of bioinformatics or medical informatics. May be repeated for credit. Formerly ICS 209.

290 Research Seminar (2). Forum for presentation and criticism by students of research work in progress. Presentation of problem areas and related work. Specific goals and progress of research. Satisfactory/Unsatisfactory only. Formerly ICS 290.

291 Directed Research (2 to 12). Formerly ICS 291.

295 Special Topics in Information and Computer Science (4) F, W, S. Formerly was ICS 280.

298 Thesis Supervision (2 to 12). Individual research or investigation conducted in preparation for the M.S. thesis option or the dissertation requirements for the Ph.D. program. Formerly ICS 298.

299 Individual Study (2 to 12). Individual research or investigation under the direction of an individual faculty member. Formerly ICS 299.