DEPARTMENT OF COMPUTER SCIENCE

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

Faculty / Undergraduate Program: Biomedical Computing / Computer Science /
Graduate Program / Courses

Undergraduate Major in Biomedical Computing

Biomedical Computing (BMC) is the intersection of computer science and information technology with biology and medicine. The immense growth and impact of biomedical information has led to a critical need for people who can understand the languages, tools, and techniques of both life sciences and computational sciences. The Biomedical Computing program aims to create a new generation of professionals with these complementary cross-disciplinary skills.

The degree program in Biomedical Computing will (1) provide students with a solid foundation in computer science, quantitative methods, and biomedical computing; (2) introduce students to biomedical computing problems and the corresponding computer science perspective; (3) teach students the fundamental principles, methods, and technologies for addressing these problems; and (4) provide students with extensive practice in biomedical computing.

In the lower-division program, students acquire a firm quantitative grounding in mathematics, statistics, and computation; become familiar with the basic foundations of physics and chemistry; and learn the fundamentals of molecular biology from a computational perspective. In the upper-division program, students take a year-long Biomedical Computing sequence; study theory, algorithms, data mining, and machine learning; and take several quantitative and biological electives. The year-long immersive capstone Senior Project unifies theory and practice as applied to an intensive and meaningful real-world biomedical computing problem. By the end of the four-year degree program students will have mastered the theory, context, application, and practice of Biomedical Computing.

Students who complete the major 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; employ principles, methods, and technologies fundamental to biomedical computing; and design and develop software that solves biomedical computing problems.

Career Paths. Graduates have considerable opportunities in the employment sector. The combined health care and biomedical industry is the nation's largest industrial sector, and computational methods increasingly play a driving role. For example, in the fast-paced pharmaceutical or biotechnology industries, the highest projected recruiting demand is for medical, biological, and computer research personnel. Students also would flow easily into many different graduate degree programs.

ADMISSIONS

Freshmen Applicants:

Completion of four years of mathematics through at least the pre-calculus level. Students should have strong reading, writing, and math skills including critical, logical thinking. Course work in computer science or computer programming is not expected of incoming students.

Transfer Applicants:

Applicants who satisfactorily complete course requirements will be given preference for admission. Applicants must satisfy at least the following minimum requirements:

1.   Completion of 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* involving concepts such as those found in Java, Scheme, C++, or other object-oriented or high-level programming language.

3.   Completion of one year of calculus-based physics and corresponding labs covering at least the concepts of units, vectors, motion, force, energy momentum, rotation, gravity, electricity and magnetism.

4.   Completion of an introductory biology course covering at least the concepts of genetics, replication and expression of DNA, cell division, gene transmission, mutation, and recombination in diploid organisms.

Knowledge of basic concepts in molecular biology is also highly recommended.

*NOTE: Additional computer science courses beyond the two required are strongly recommended, particularly those that align with the major(s) of interest. Transfer students must enter UCI with knowledge of Java since it is used in many of the lower-division Biomedical Computing requirements and serves as a foundation for upper-division programming-related courses.

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. Knowledge of basic concepts in molecular biology is also highly recommended.

REQUIREMENTS FOR THE B.S. DEGREE IN BIOMEDICAL COMPUTING

University Requirements: See pages 54-61.

Major Requirements

Lower-division (some or all of these are prerequisites for required upper-division courses):

A.   ICS 21, ICS 22, ICS 23, ICS 51, and ICS 52.

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

C.   Physics 7C, 7LC and Physics 7D, 7LD.

D.   Chemistry 1A-B and Chemistry 1LE.

E.   Biological Sciences 9C, 93, 94, and 97 (students may substitute one additional biology elective from the list in Upper-Division section A below, not already used to satisfy a degree requirement of the major, for Biological Sciences 9C).

Upper-division:

A.   CS 183/Biological Sciences M123 and one biology elective from the following list: Biological Sciences N110, M133, D137, D155, or E153.

B.   Three quantitative electives from the following list: CS 121/Informatics 141, CS 122A, CS 122B, CS 163, CS 169, CS 171, CS 177, Informatics 111, Informatics 115, Informatics 131, Informatics 143, Informatics 161, Informatics 171, Statistics 110, Mathematics 3D, Mathematics 13, Biomedical Engineering 110A-B-C, Biomedical Engineering 145, Biomedical Engineering 146.

C.   CS 161, CS 178, CS 184A, CS 184B, CS 184C, CS 189A-B-C.

Major and minor restrictions: See pages 342-343.

Sample Program of Study — Biomedical Computing

FALL

WINTER

SPRING

Freshman

ICS 21

ICS 22

ICS 23

Math 2A

Math 2B

Math 2D

Bio. Sci. 93

Bio. Sci. 94

Bio. Sci. 9C

(Physics 2 if needed)

Writing 39B

Sophomore

ICS 6D

Math 6G or 3A

Stats 67

ICS 6B

ICS 51

ICS 52

Writing 39C

Physics 7C, 7LC

Physics 7D, 7LD

Bio. Sci. 97

CS 183/Bio. Sci. M123

Junior

CS 184A

CS 184B

CS 184C

Chem 1A

Chem 1B, 1LE

Biology Elective

CS 178

CS 161

Gen. Ed. (III/VII/VIII)

Gen. Ed. (III/VII/VIII)

Senior

CS 189A

CS 189B

CS 189C

Quantitative Elective

Quantitative Elective

Quantitative Elective

Gen. Ed. (VI)

Gen. Ed. (III/VII/VIII)

Upper-Div. Writing

Gen. Ed. (IV)

Gen. Ed. (IV)

Gen. Ed. (IV)

Minor in Biomedical Computing

The minor provides a focused study of biomedical computing 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 Biomedical Computing 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 for the Minor: ICS 21, ICS 22, ICS 23; Biological Sciences 9C, 93, 94; CS 183/Biological Sciences M123, CS 184A, CS 184B, and CS 184C.

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. Students receive a balance of knowledge in low-level architecture and systems; middle-level infrastructure such as programming languages, databases, and networks; and high-level topics such as artificial intelligence, computer graphics, and network security. Subsequent courses allow students to concentrate in one or more such directions. This major can serve as preparation for either graduate study or a career in industry.

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

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, 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 is used extensively in the curriculum; therefore, transfer students should plan to learn it by studying on their own or by completing a Java-related programming course 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 (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, ICS 6D, Mathematics 6G or 3A, Statistics 67, Philosophy 29 or 30 or Mathematics 13.

B.   ICS 21, 22, 23, 51, 52.

C.   A science sequence chosen from Physics 3A-B-C and 3LB-LC; Physics 2, 7C and 7D or 7E with corresponding laboratories; or Chemistry 1A-B-C and 1LC-LD or Chemistry H2A-B-C and H2LA-LB-LC.

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, 168, or 169; CS 171.

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

D.   Eight additional upper-division units selected from the following list: CS 111-189, Informatics 102, 111, 113, 115, 117, 118A, 118B, 119, 123, 125, 131, 132, 141, 153, 161, 162, and 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 pages 342-343.

Sample Program of Study — Computer Science

FALL

WINTER

SPRING

Freshman

ICS 21

ICS 22

ICS 23

Math 2A

Math 2B

ICS 6B

UC Entry Level Writing

Gen. Ed. (I)

Gen. Ed. (I)

Sophomore

ICS 51

ICS 52

CS UD Core

ICS 6D

Math 6G

Stats 67

Science Elective

Science Elective

Science Elective

Gen. Ed. (III/VII/VIII)

Gen. Ed. (III/VII/VIII)

Gen. Ed. (III/VII/VIII)

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

Gen. Ed. (III/VII/VIII)

Gen. Ed. (III/VII/VIII)

Gen. Ed. (VI)

Senior

CS Project

CS Project

CS Project

CS Elective

CS Elective

CS UD Core

Gen. Ed. (IV)

Gen. Ed. (IV)

Gen. Ed. (IV)

Gen. Ed.

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

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

University Requirements: See pages 54-61.

Major Requirements: page 371 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 page 347 for additional information about the M.S. completion plan options.

See page 347 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).

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

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, ICS 6D, and Mathematics 6G or 3A 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 and Mathematics 6G or 3A, 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 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, Statistics 67, ICS 51, and either ICS 52 or Informatics 43, all with 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, Mathematics 2A-B, ICS 23.

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. Prerequisite: CS 116 or consent of instructor.

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 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. Prerequisites: one from ICS 22, ICS H22, or Informatics 42, or EECS114, with a grade of C or better. Recommended: one or both of ICS 23/CSE23 or ICS H23, and Informatics 45. Same as Engineering EECS116.

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 and Ruby on Rails), XML, and Ajax. Prerequisite: CS 122A/EECS116.

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 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 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; ICS 6B; Statistics 67.

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/CSE22 or Informatics 42; and one from CS 122A/EECS 116, 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 Interoperabilty. 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). 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, and Informatics 45 or ICS23/CSE23 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, 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.

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, ICS 51 or CSE31 and CSE132.

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

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 51 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 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). 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 6B; ICS 6D; Mathematics 6G or 3A; 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 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 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 65.

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

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. Prerequisites: ICS 23; Mathematics 2A-B and Statistics 67.

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.

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.

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, 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; 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. Prerequisites: CS 184B. Concurrent with CS 284C.

189A-B-C Biomedical Computing Project I, II, III (3-3-3).
189A-B:
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 biomedical computing problem. Lectures include engineering values, discussions, and ethical ramifications of biomedical computing issues. Prerequisite: CS 184C. 189C: Completion, documentation, and presentation of projects started in CS 189A-B. Teaches writing and presentation skills. Students write comprehensive project reports individually. Each student participates in a public presentation of the project's results. Prerequisites: CS 189A-B and satisfactory completion of the lower-division writing requirement. CS 189A-B-C must be taken in the same academic year.

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 131, 143A, and 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. Prerequisite: 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 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 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.

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.

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.

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.

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

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.