DEPARTMENT OF COMPUTER SCIENCE

3019 Donald Bren Hall; (949) 824-1546
http://www.cs.uci.edu/
Sandy Irani, Department Chair
Nikil Dutt, Department Vice Chair

Faculty / Undergraduate Program / Graduate Program / Courses

Undergraduate Major in Computer Science

The Computer Science major emphasizes the principles of computing that underlie our modern world, and provides a strong foundational education to prepare students for the broad spectrum of careers in computing. This major can serve as preparation for either graduate study or a career in industry. Students receive a solid background in low-level architecture and systems; middle-level infrastructure, algorithms, and mathematical foundations. This is a highly flexible degree that allows students to explore a broad range of topics in modern computing. In order to achieve some focus in their upper-division studies, students are required to satisfy the requirements for one of the eight specializations described below. Additional electives can be used to satisfy a second specialization or obtain a broader understanding of the field.

Algorithms. This specialization focuses on fundamental computational techniques, including their analysis and applications to topics in computer vision, computer games, graphics, artificial intelligence, and information retrieval. Topics include data structures, graph and network algorithms, computational geometry, probabilistic algorithms, complexity theory, and cryptography.

Architecture and Embedded Systems. This specialization integrates principles of embedded systems, software, hardware, computer architecture, distributed systems and networks, and prepares students to design and create efficient hardware/software architectures for emerging application areas. Students in this specialization will build upon a strong foundation in software and hardware and learn how to design networked embedded systems, and efficient computer architectures for a diverse set of application domains such as gaming, visualization, search, databases, transaction processing, data mining, and high-performance and scientific computing.

Bioinformatics. This specialization introduces students to the interdisciplinary intersection of biology and medicine with computer science and information technology. Students who complete the specialization will understand biomedical computing problems from the computer science perspectives, and be able to design and develop software that solves computational problems in biology and medicine.

Information. This specialization is intended to prepare students for working with and developing a wide variety of modern data and information systems. Topics covered by this concentration include database management, information retrieval, Web search, data mining, and data-intensive computing.

Intelligent Systems. This specialization will introduce students to the principles underlying intelligent systems, including topics such as representing human knowledge, building automated reasoning systems, developing intelligent search techniques, and designing algorithms that adapt and learn from data. Students in this specialization will use these principles to solve problems across a variety of applications such as computer vision, information retrieval, data mining, automated recommender systems, bioinformatics, as well as individually designed projects.

Networked Systems. This specialization focuses on Internet architecture, Internet applications, and network security. It also encourages students to learn about operating systems, databases, search, programming, embedded systems, and performance.

Systems and Software. This specialization deals with principles and design of systems and software. It emphasizes the interaction between software and the computing infrastructure on which it runs and the performance impact of design decisions. Core topics include the hardware/software interface, languages and compilers, operating systems, parallel and distributed computing. Elective topics include networking, security, graphics, and databases.

Visual Computing. This specialization encompasses the digital capture, processing, synthesis and display of visual data such as images and video. This specialization includes computer vision, image processing, and graphics, and covers such topics as the representation of 3D objects, visual recognition of objects and people, interactive and photo-realistic image rendering, and physics and perception of light and color.

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 33-37.

Transfer Applicants:

Junior-level applicants who satisfactorily complete course requirements will be given preference for admission. Applicants must satisfy the following requirements:

1.   Complete one year of approved college-level math, preferably courses in calculus equivalent to UCI's Mathematics 2A-B; if not available, two semester courses equivalent to other major-related math courses are acceptable.

2.   Completion of one year of transferable computer science courses* with at least one course involving concepts such as those found in Java, Python, Scheme, C++, or other object-oriented or high-level programming language.

*NOTE: Additional computer science courses beyond the two required are strongly recommended, particularly those that align with the major(s) 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.

Additional courses beyond those required for admission must be taken to fulfill the lower-division degree requirements, as many are prerequisites for upper-division courses. For some transfer students, this may mean that it will take longer than two years to complete their degree.

REQUIREMENTS FOR THE B.S. DEGREE IN COMPUTER SCIENCE

University Requirements: See pages 54-61.

Major Requirements

Lower-division:

A.   Core: ICS 31, 32, 33, 51, 45C, 46, 53, 53L, 90, and Informatics 43.

B.   Mathematics 2A-B, ICS 6B, ICS 6D, ICS 6N or Mathematics 3A, and Statistics 67.

C.   Two courses approved for General Education category II except those offered by CSE, Economics, ICS, or Mathematics. University Studies courses can be used with the approval of the CS Vice Chair for Undergraduate Studies.

Upper-division:

A.   Core: CS 161 and ICS 139W.

B.   Electives: Eleven courses chosen from CS 111-189 or Informatics 102, 113, 115, 121, 122, 123, 131, 133, 134.

C.   The upper-division electives must satisfy the following criteria:

1.   At least two project courses from CS 113, CS 114, CS 117, CS 122B, CS 133, CS 142B, CS 143B, CS 153, CS 154, CS 165, CS 175, CS 189, Informatics 134.

2.   The set of chosen electives should satisfy at least one of the following specializations:

Algorithms
Two courses from CS 111, CS 112, CS 116, CS 121, CS 125, CS 171, CS 178, CS 184A;

At least four courses from CS 162, 163, 164, 165, 167, 168, 169, 177, 179.

Architecture and Embedded Systems
Computer Science 145A-B (counts as one course), CS 151, CS 152;

Two courses from: CS 131, CS 132, CS 142A, 143A, CS 144;

Three courses from: CS 113, CS 133, CS 142B, CS 143B, CS 144, CS 146, CS 153, CS 154.

Bioinformatics
CS 178, CS 184A, CS 189;

Three courses from CS 122A, CS 163, CS 171, CS 175, CS 184B, CS 184C, one of which must be CS 184B or CS 184C.

Information
CS 121, CS 122A, CS 178;

Three courses selected from CS 122B, CS 125, CS 132, CS 134, CS 141, CS 142A, CS 143A, CS163, CS 165, CS 167, CS 179, at least one of which must be CS 122B, CS 125, or CS 179.

Intelligent Systems
CS 171, CS 175, CS 178;

At least one course from CS 177, CS 179;

At least one course from CS 162, CS 163, CS164, CS 168,CS 169;

At least one course from CS 116, CS 121, CS 125, CS 174, CS 184B;

Networked Systems
CS 132, CS 133, CS 143A;

Four courses from 115, 121, 122A, 122B, 125, 131, 134, 137, 141, 143B, 145A, 146, 163, 167, 168, 169, 177, including at least two from 131, 134, 137, 143B, 167.

Systems and Software
CS 131, CS 141, CS 142A, CS 143A, CS 152;

Two of CS 112, CS 122A, CS 122B, CS 132, CS 134, CS 142B, CS 143B, CS 144, CS 145A-B, CS 146, at least one of which must be CS 142B or CS 143B.

Visual Computing
CS 111, CS 112, CS 116;

Three courses from CS 114, CS 115, CS 117, CS 163, CS 164, CS 169, CS 171, CS 178, ICS 160, ICS 161, ICS 162, at least one of which must be CS 114 or CS 117.

Sample Program of Study — Computer Science

FALL

WINTER

SPRING

Freshman

ICS 31

ICS 32

ICS 33

Math 2A

Math 2B

Informatics 43

Writing 39A

Writing 39B

ICS 6B

ICS 90

GE III

Writing 39C

Sophomore

ICS 51

ICS 46

CS 161

ICS 6D

ICS 53

Stats 67

ICS 45C

ICS 53L

GE III

ICS 6N

Junior

CS Spec./Elective

CS Spec./Elective

CS Spec./Elective

Science Elective

CS Spec./Elective

CS Spec./Elective

GE III

ICS 139W

Science Elective

GE VII

GE VIII

GE VI

Senior

CS Spec./Elective

CS Spec./Elective

CS Spec./Elective

CS Spec./Elective

CS Spec./Elective

CS Spec./Elective

GE IV

GE IV

GE IV

 

Minor in Bioinformatics

The minor provides a focused study of bioinformatics to supplement a student's major program of study and prepares students for a profession, career, or academic pursuit in which biomedical computing is an integral part but is not the primary focus. The Bioinformatics minor contributes to students' competence in computing applied to biomedical problems and data, as well as exposing them to the fundamentals of the life sciences from a computer science perspective. The minor allows students sufficient flexibility to pursue courses that complement their major field or address specific interests.

Students who complete the minor requirements will be able to do the following: synthesize computer science, quantitative methods, and biological science; understand the synergistic set of reciprocal influences between life and computational sciences and technologies; discuss biomedical computing problems and corresponding computer science perspectives; and employ principles, methods, and technologies fundamental to biomedical computing.

Requirements: Either ICS 21 and ICS 22 or ICS 31/CSE 41, ICS 32/CSE 42, and ICS 33/CSE 43, Biological Sciences 93, CS 183/Biological Sciences M123, CS 184A, CS 184B or CS 184C, and CS 189.

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, page 371.

REQUIREMENTS FOR THE B.S. DEGREE IN COMPUTER SCIENCE AND ENGINEERING

University Requirements: See pages 54-61.

Major Requirements: See page 375 in the Interdisciplinary Studies section of the Catalogue.

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, empirical 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 pages 351-352 for additional information about the M.S. completion plan options.

See page 351 for additional information about 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 47 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 three quarters of CS 200S, 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, CS 261 or CS 263

2. Architecture/Embedded Systems:

CS 250A or CS 244

3. System Software:

CS 241, CS 243 or CS 230

4. Artificial Intelligence:

CS 271 or CS 273A

5. Networks/Multimedia:

CS 232, CS 203 or CS 212

6. Database Systems:

CS 222 or CS 223

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, 298, 299, or any course with a suffix of "S."

Two of these courses can be graduate courses offered by a department outside of ICS, with written consent of the advisor (M.S. students must obtain written consent from the Computer Science Vice Chair for Graduate Studies).

Two of the courses can be undergraduate courses from the following list: CS 111, CS 112, CS 122A, CS 132, CS 142A, CS 143A, CS 152, CS 161, CS 171, CS 178, ICS 161, ICS 162, ICS 163, ICS 166. Students may not retake courses they have used toward an undergraduate degree and receive credit toward the graduate requirements.

No more than two undergraduate courses or 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 third year (or, for students entering the program with an M.S. in Computer Science, 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 fourth year to advance to candidacy. Consult the ICS Graduate Office for policies regarding committee membership. 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 accordance 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; Systems Software.

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.

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

Students entering the Ph.D. program with an M.S. in Computer Science must advance to candidacy within two years. All others must advance within three years. The normative time for completion of the Ph.D. is five years, and the maximum time permitted is seven years.

Graduate Program in Mathematical and Computational Biology

The graduate program in Mathematical and Computational Biology (MCB) is a one-year "gateway" program designed to function in concert with selected graduate programs, including the Ph.D. in Computer Science. The time to degree for students entering the Ph.D. program in Computer Science from MCB begins when the student first transfers to the Computer Science program. Detailed information is available online at http://mcsb.bio.uci.edu/ and in the School of Biological Sciences section of the Catalogue, page 153.

Courses in Computer Science

(Schedule of Classes designation: CompSci)

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 or ICS 46/CSE46; ICS 6D; and Mathematics 6G or 3A or ICS 6N, all with grades of C or better.

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. Prerequisites: ICS 22/CSE22 or ICS H22 or ICS 33/CSE43; ICS 65 or ICS 45C/CSE45C; and either Mathematics 6G or 3A or ICS 6N, each with a grade of C or better.

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. Prerequisite: either CS 112, CS 171, Informatics 121, Studio Art 135, or consent of instructor. Same as Informatics 125.

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. Prerequisites: CS 112 or equivalent; ICS 65 or ICS 45C/CSE45C with a grade of C or better, or consent of instructor; recommended: CS 161/CSE161, CS 164, CS 165.

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 6G or ICS 6N, Statistics 67, ICS 51, and either ICS 52 or Informatics 43, all with a grade of C or better; upper-division standing.

116 Computational Photography and Vision (4). Introduces the problems of computer vision through the application of computational photography. Specific topics include photo-editing (image warping, compositing, hole filling), panoramic image stitching, and face detection for digital photographs. Prerequisites: ICS 6D, Mathematics 6G or 3A or ICS 6N, Mathematics 2A-B, ICS 23/CSE23 or ICS 46/CSE46, all with a grade of C or better.

117 Project in Computer Vision (4). Students undertake construction of a computer vision system. Topics may include automatically building 3D models from photographs, searching photo collections, robot navigation, and human motion tracking. Prerequisites: ICS 6D, Mathematics 6G or 3A or ICS 6N, Mathematics 2A-B, ICS 23/CSE23 or ICS H23 or ICS 46/CSE46, all with a grade of C or better; one of CS 112, CS 116, CS 171, or CS 178.

121 Information Retrieval (4). An introduction to information retrieval including indexing, retrieval, classifying, and clustering text and multimedia documents. Prerequisites: one from Informatics 45 or ICS 46/CSE46, or both ICS 33/CSE43 and ICS 45J, all with a grade of C or better; Statistics 7 or 67. Same as Informatics 141.

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. Prerequisite: one of ICS 23/CSE23 or ICS H23 or Informatics 45 or ICS 33/CSE43 or EECS114, with a grade of C or better. Same as EECS 116.

122B Project in Databases and Web Applications (4). Introduces students to advanced database technologies and Web applications. Topics include but are not limited to database connectivity (ODBC/JDBC), extending databases using stored procedures, database administration, Web servers, Web programming languages (Java servlets, XML, Ajax, and mobile platforms). Prerequisites: ICS 45J and CS 122A/EECS 116.

125 Next Generation Search Systems (4). Discusses concepts and techniques related to all aspects of search systems. After considering basic search technology and the state-of-art systems, rapidly developing techniques for multimedia search, local search, event-search, and video-on-demand are explored. Prerequisites: ICS 21/CSE 21 or ICS 31/CSE 41 or Informatics 41 or consent of instructor; upper-division standing. Concurrent with CS 225.

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.

132 Internet (4). Internet architecture, protocols, and applications. Congestion control, addressing, and routing. Local area networks. Multimedia networking. Prerequisite: Statistics 67 or EECS140.

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.

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; ICS 22/CSE 22 or ICS 33/CSE 43 or Informatics 42; and one from CS 122A/EECS116, CS 132, or CS 143A/CSE104.

137 Internet Applications Engineering (4). Concepts in Internet applications engineering with emphasis on the Web. Peer-to-Peer and Interoperability. Topics include HTTP and REST, Remote Procedure/Method Calls, Web Services, data representations, content distribution networks, identity management, relevant W3C/IETF standards, and relevant new large-scale computing styles. Prerequisites: CS 132 or consent of instructor, and upper-division standing. Same as Informatics 124.

141 Concepts in Programming Languages I (4). Course may be offered online. 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 42 or ICS 51 or CSE31/EECS31 with a grade of C or better; Informatics 45 or ICS 23/CSE23 or ICS 33/CSE43 with a grade of C or better. Same as CSE141/Informatics 101.

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

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

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.

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.

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 or ICS 46/CSE46, ICS 51 or CSE31/EECS31, all with a grade of C or better, and CSE132/EECS112. Same as CSE145A.

145B Embedded Computing System Laboratory (2). Laboratory to accompany CS 145A. Corequisite: CS 145A. Same as CSE145B.

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 or ICS 46/CSE46, and ICS 51, all 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 or ICS 33/CSE43, and ICS 51, all with grades of C or better; ICS 6B; ICS 6D.

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.

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. Prerequisite or corequisite: CS 151.

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.

161 Design and Analysis of Algorithms (4). Techniques for efficient algorithm design, including divide-and-conquer and dynamic programming, and time and space analysis of algorithms. Fast algorithms for problems having applications in networks, computer games, graphics, and scientific computing, such as sorting, shortest paths, minimum spanning trees, network flow, and pattern matching. Prerequisites: ICS 23/CSE 23 or ICS 46/CSE 46 with a grade of C or better; ICS 6B; ICS 6D; Mathematics 2B. 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 or ICS 46/CSE46 with a grade of C or better; Mathematics 2A-B; ICS 6B; ICS 6D. Same as Linguistics 102.

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.

164 Computational Geometry and Geometric Modeling (4). Algorithms and data structures for computational geometry and geometric modeling, with applications to game and graphics programming. Topics include convex hulls, Voronoi diagrams, arrangements, algorithms for triangulation, visibility, and motion planning, and data structures for geometric searching and modeling of 2D and 3D objects. Prerequisite: ICS 23/CSE23 or ICS H23 or ICS 46/CSE46, each with a grade of C or better, or equivalent.

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; recommended: ICS 45C/CSE45C.

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: CS 161/CSE161 and 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.

169 Introduction to Optimization (4). A broad introduction to optimization. Unconstrained and constrained optimization. Equality and inequality constraints. Linear and integer programming. Stochastic dynamic programming. Prerequisites: Mathematics 2D, Mathematics 3A or 6G, Statistics 67. Concurrent with CS 268.

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. Corequisite: Statistics 67. Prerequisites: ICS 23/CSE23 or ICS 46/CSE46; Mathematics 2A-B.

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. Prerequisite: CS 171 with a grade of C or better.

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.

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; ICS 6B; ICS 6D; and either Mathematics 6G or 3A or ICS 6N.

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 6B; ICS 6D; Mathematics 6G or 3A or ICS 6N; Mathematics 2A-B and Statistics 67.

179 Algorithms for Probabilistic and Deterministic Graphical Models (4). Graphical model techniques dealing with probabilistic and deterministic knowledge representations. Focuses on graphical models, such as constraint networks, Bayesian networks, and Markov networks that have become a central paradigm for knowledge representation and reasoning in artificial intelligence and general computer science. Prerequisites: ICS 23/CSE23 or ICS 46/CSE46 with a grade of C or better; Mathematics 2A-B and Statistics 67.

183 Introduction to Computational Biology (4). The use of theories and methods based on computer science, mathematics, and physics in molecular biology and biochemistry. Basics in biomolecular modeling. Analysis of sequence and structural data of biomolecules. Analysis of biomolecular functions. Prerequisite: Mathematics 2D or 2J or Statistics 7 or 8. Same as Biological Sciences M123. Concurrent with Molecular Biology and Biochemistry 223.

184A 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: Biological Sciences M123 or CS 183. Concurrent with CS 284A.

184B 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: CS 184A. Concurrent with CS 284B.

184C 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. Prerequisite: CS 184A. Concurrent with CS 284C.

189 Project in Bioinformatics (4). Teaches problem definition and analysis, data representation, algorithm design, component integration, solution validation, and testability with teams of students specifying, designing, building, and testing a solution to a bioinformatics problem. Lectures include engineering values, discussions, and ethical ramifications of biomedical computing issues. Prerequisites: CS 184A with a C or better.

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

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

200S Seminar in Computer Science Research (1). Graduate colloquium series. Includes weekly talks by notable computer scientists. Satisfactory/Unsatisfactory only. May be repeated for credit as topics vary.

201 Foundations of Cryptographic Protocols (4). Explores fundamental cryptographic tools, including encryption, signatures, and identification schemes. Students are introduced to the provable security paradigm of modern cryptography, focusing on understanding of security properties provided by cryptographic tools, and on proving security (or insecurity) of cryptographic constructions. Prerequisites: CS 260 or 263, or consent of instructor.

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.

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.

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.

211A Visual Computing (4). Fundamentals of image processing (convolution, linear filters, spectral analysis), vision geometry (projective geometry, camera models and calibration, stereo reconstruction), radiometry (color, shading, illumination, BRDF), and visual content synthesis (graphics pipeline, texture- bump-, mip-mapping, hidden surface removal, anti-aliasing).

211B Advanced Topics in 3D Computer Graphics (4). 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.

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.

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.

216 Image Understanding (4). The goal of image understanding is to extract useful semantic information from image data. Course covers low-level image and video processing techniques, feature descriptors, segmentation, objection recognition, and tracking. Prerequisites: ICS 6D, Mathematics 6G or 3A, Mathematics 2A-B, ICS 23.

217 Light and Geometry in Computer Vision (4). Examines the issues of light transport and multiview geometry in computer vision. Applications include camera calibration, 3D understanding, stereo reconstruction, and illumination estimation. Prerequisites: ICS 6D, Mathematics 6G or 3A, Mathematics 2A-B, ICS 23, CS 211A.

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, CS 143A, and CS 152.

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. Prerequisites: CS 131 and CS 222.

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.

225 Next Generation Search Systems (4). Discusses concepts and techniques related to all aspects of search systems. After considering basic search technology and the state-of-art systems, rapidly developing techniques for multimedia search, local search, event-search, and video-on-demand are explored. Prerequisites: ICS 21/CSE 21 or ICS 31/CSE 41 or Informatics 41 or consent of instructor. Concurrent with CS 125.

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.

232 Computer and Communication Networks (4). Network architecture of the Internet, telephone networks, cable networks, and cell phone networks. Network performance models. Advanced concepts and implementations of flow and congestion control, addressing, internetworking, forwarding, routing, multiple access, streaming, and quality-of-service. Prerequisite: EECS148, CS 132, or consent of instructor. Same as EECS248A and Networked Systems 201.

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.

234 Advanced Networks (4). Design principles of networked systems, advanced routing and congestion control algorithms, network algorithms, network measurement, management, security, Internet economics, and emerging networks. Prerequisite: CS 232 or Networked Systems 201 or EECS248A. Same as Networked Systems 210.

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.

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.

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 142A or equivalent.

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.

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.

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; CS 161. Same as Informatics 244.

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; CS 161.

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.

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, ICS 51; CS 152, 161, 244; and Mathematics 3A or 6G.

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 142A and 143A. May be taken for credit four times.

250A Computer Systems Architecture (4). Study of architectural issues and their relation to technology and software: design of processor, interconnections, and memory hierarchies. Prerequisite: CS 152 or equivalent.

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.

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.

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.

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.

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.

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.

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.

264 Quantum Computation and Information (4). Basic models for quantum computation and their foundations in quantum mechanics. Quantum complexity classes and quantum algorithms including algorithms for factoring and quantum simulation. Introduction to quantum information theory and quantum entanglement. Prerequisites: basic courses in linear algebra and algorithms.

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

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.

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.

268 Introduction to Optimization (4). A broad introduction to optimization. Unconstrained and constrained optimization. Equality and inequality constraints. Linear and integer programming. Stochastic dynamic programming. Prerequisites: Mathematics 2D, Mathematics 3A or 6G, Statistics 67. Concurrent with Computer Science 169.

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.

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.

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.

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.

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.

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.

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.

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.

278 Probability Models (4). Advanced probability, discrete time Markov chains, Poisson processes, continuous time Markov chains. Queuing or simulation as time permits. Prerequisite: Statistics 120A. Concurrent with Statistics 121.

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

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. Concurrent with CS 184A.

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. Concurrent with CS 184B.

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. Concurrent with CS 184C.

285 Mathematical and Computational Biology (4). Analytical and numerical methods for dynamical systems, temporal-spatial dynamics, steady state, stability, stochasticity. Application to life sciences: genetics, tissue growth and patterning, cancers, ion channels gating, signaling networks, morphogen gradients. Probabilistic methods. Prerequisite: Mathematics 227A or consent of instructor. Same as Mathematics 227C.

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

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.

295 Special Topics in Information and Computer Science (4).

296 Elements of Scientific Writing (4). Introduces the concepts and principles of good scientific writing, demonstrates them by examples drawn from the literature, and uses a hands-on approach to apply them to documents being written by the participants. Satisfactory/Unsatisfactory only.

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.

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