cs.htmlTEXTR*ch@5ѝ)7 UC Riverside 2003-2004 - Computer Science

Computer Science and Engineering

Menu

Subject abbreviation: CS
Thomas H. Payne, Ph.D., Chair
Department Office, A310 Surge Building
(909) 787-5639; www.cs.ucr.edu

Faculty E-mails

Professors
Laxmi Bhuyan, Ph.D.
Marek Chrobak, Ph.D.
Tao Jiang, Ph.D.
Mart L. Molle, Ph.D.
Walid Najjar, Ph.D.
Gurudatta Parulkar, Ph.D.
Teodor C. Przymusinski, Ph.D.
Chinya Ravishankar, Ph.D.
Satish K. Tripathi, Ph.D. William R. Johnson, Jr., Family Chair in Engineering
Vassilis Tsotras, Ph.D.
Professors Emeriti
Yang-Chang Hong, Ph.D.
Lawrence L. Larmore, Ph.D.
Associate Professors
Brett D. Fleisch, Ph.D.
Dimitrios Gunopulos, Ph.D.
Thomas H. Payne, Ph.D.
Frank N. Vahid, Ph.D.
Assistant Professors
Michalis Faloutsos, Ph.D.
Harry Hsieh, Ph.D.
Vasiliki Kalogeraki, Ph.D.
Eamonn Keogh, Ph.D.
Srikanth Krishnamurthy, Ph.D.
Stefano Lonardi, Ph.D.
Christian Shelton, Ph.D.
Jun Yang, Ph.D.
Victor Zordan, Ph.D.
••
Adjunct Associate Professors
Allon Percus, Ph.D.
Halina Przymusinska, Ph.D.
Cooperating Faculty
Alexander Balandin, Ph.D. (Electrical Engineering)
Matthew J. Barth, Ph.D. (Electrical Engineering)
Gerardo Beni, Ph.D. (Electrical Engineering)
Bir Bhanu, Ph.D. (Electrical Engineering)
Ilya Dumer, Ph.D. (Electrical Engineering)
Jay A. Farrell, Ph.D. (Electrical Engineering)
Yingbo Hua, Ph.D. (Electrical Engineering)
Zheng Yuan Xu, Ph.D. (Electrical Engineering)

Information Systems
Marek Chrobak, Ph.D., Chair
Advising Office, A159 Bourns Hall
(909) 787-5651; engr.ucr.edu/progdept
Committee in Charge

Marek Chrobak, Ph.D. (Computer Science and Engineering)
John Gerdes, Ph.D. (Management)
Mart Molle, Ph.D. (Computer Science and Engineering)
Thomas Payne, Ph.D. (Computer Science and Engineering)
Chinya Ravishankar, Ph.D. (Computer Science and Engineering)
Waymond Rodgers, Ph.D. (Management)
Eric Rolland, Ph.D. (Management)
Y. Peter Chung, Ph.D. Dean (Interim), A. Gary Anderson Graduate School of Management, ex officio
Satish K. Tripathi, Ph.D. Dean, The Marlan and Rosemary Bourns College of Engineering, ex officio

MAJOR

The Department of Computer Science and Engineering offers B.S. degrees in Computer Science and in Information Systems, and M.S. and Ph.D. degrees in Computer Science. These programs provide the basis for careers in research and development in the computer science field as well as technical and nontechnical related fields that depend on a working knowledge of computers.

The Computer Science major has been designed to provide the student with a broad background in science and humanities and to provide an understanding of fundamental principles of computing and modern computing technology. It prepares the student for professional work with computer systems as well as for graduate work in computer science.

The Information Systems major is designed for students who wish to combine a rigorous computer science curriculum with fundamental topics from management in a single degree. Graduates of the program would be well prepared for information technology careers that require both technical depth and management knowledge, including entrepreneurs in the high technology industry and technical managers.

The Intersegmental General Education Transfer Curriculum (IGETC) does not meet transfer requirements for Computer Science. Lower-division major preparation is stressed for transfer students.

All undergraduates in the College of Engineering must see an advisor at least annually. See www.engr.ucr.edu/studentaffairs for details.

Degree Requirements

University Requirements

See the Undergraduate Studies section for requirements that all students must satisfy.

College Requirements

See Degree Requirements, The Marlan and Rosemary Bourns College of Engineering, in the Undergraduate Studies Section, for requirements that students must satisfy.

The Computer Science major uses the following major requirements toward the satisfaction of some of the college's Natural Sciences and Mathematics breadth requirements.

  1. MATH 009A
  2. PHYS 040A, PHYS 040B, PHYS 040C

The Information Systems major uses the following major requirements toward the satisfaction of the college's Social Sciences breadth requirements and one of the College's Natural Science and Mathematics breadth requirements.

  1. ECON 002, ECON 003
  2. MATH 009A
  3. SOC 150

B.S. in Computer Science

Major Requirements

1. Lower-division requirements (55 units)

2. Upper-division requirements (74 units minimum)

B.S. in Information Systems

Major Requirements

1. Lower-division requirements (48 units)

2. Upper-division requirements (89 units)

Students may petition for exceptions to the above degree requirements. Exceptions to Computer Science course requirements must be approved by the Computer Science and Engineering undergraduate advisor or chair, and exceptions to the Business Administration course requirements must be approved by the Graduate School of Management dean. Exceptions to other requirements require the approval of both the Department of Computer Science and Engineering and the Graduate School of Management.

Minor

Requirements for the minor in Computer Science are:

  1. Prerequisite courses: CS 010, CS 012, CS 014, CS 061, MATH 009A, MATH 009B, MATH 009C
  2. Core courses: CS 141, MATH 112
  3. Three elective courses, each of four or more units, such that:

Note Any courses required for the minor may be taken on a Satisfactory (S)/No Credit (NC) basis only on approval of the dean. Students with a minor in Computer Science must obtain approval from the undergraduate advisor in Computer Science and Engineering for a specific program of electives consistent with their career goals.

GRADUATE PROGRAM

All applicants for graduate status in the Department of Computer Science and Engineering must supply GRE General Test scores prior to admission. The GRE subject test in Computer Science is recommended but not required. Applicants should have at least an undergraduate degree in computer science or a closely related field, but applicants who fail to meet this criterion may sometimes be admitted with deficiencies. To be considered for admission, applicants must have a sound understanding of programming, data structures, and computer organization. The graduate committee may prescribe additional remedial course work beyond the requirements specified below for applicants admitted with deficiencies.

Master's Degree

General requirements are listed in the Graduate Studies section of this catalog. Specific requirements for the M.S. in Computer Science consist of the satisfactory completion of the breadth requirement, the course requirements, attendance in the colloquium series, and the capstone experience (project or thesis).

Specialty Areas The department offers the following breadth courses and has active research programs in these specialty areas:

1. Algorithms and Theory of Computation

2. Computer Architecture: CS 203A (Advanced Computer Architecture)

3. Embedded Systems and Computer-Aided Design; CS 220 (Synthesis of Digital Systems)

4. Databases/Data Mining

5. Operating Systems: CS 202 (Advanced Operating Systems)

6. Networking:

7. Software Engineering: CS 245 (Software Evolution)

8. Programming Languages/Compilers: CS 201 (Compiler Construction)

9. Artificial Intelligence: CS 205 (Artificial Intelligence)

1. Breadth Requirements All students must demonstrate breadth in Computer Science by passing approved breadth courses, with a grade of "B" or better, in four of the specialty areas listed above and selected according to the following scheme:

A list of approved graduate and undergraduate breadth courses is available from the graduate secretary. Students may also petition to satisfy the breadth requirement in any area by passing a Ph.D. depth examination in that area or by demonstrating knowledge equivalent to the breadth requirement based on prior course work or other experience.

2. Mandatory enrollment in CS 287 (Colloquium in Computer Science) each quarter.

3. Course Requirements Students showing good performance in the program may petition to replace some of these course requirements by courses taken at other universities or in other departments at UCR. For students interested in interdisciplinary research, individual study programs can be approved.

4. Capstone Experience All students must complete a capstone experience that synthesizes and integrates the knowledge and skills obtained throughout the master's program, according to one of the following options. It is the responsibility of the student to find a faculty member willing to supervise the master's project or thesis, to form the faculty examining committee, and to schedule the oral examination.

Doctoral Degree

The course requirements for the Ph.D. degree include all of the requirements for the M.S. degree, thesis option, except for the master's thesis. Some course requirements may be waived at the discretion of the graduate committee for students holding the M.S. degree in Computer Science from other schools and who have taken equivalent courses. Additional requirements are as follows:

The Ph.D. program in Computer Science is divided into two stages. The first stage is the qualifying process, during which students must demonstrate the necessary intellectual ability and mastery of an appropriate body of knowledge to undertake a major independent research project in their chosen specialty area. More specifically, the student must demonstrate a broad understanding of the discipline (by completing the breadth requirement), significant depth of knowledge in the chosen specialty area (by further course work and successfully completing the written depth examination), and the ability to work independently under the guidance of a faculty member (through the directed study project that will be presented at the oral qualifying examination). Once all these requirements have been met, the student is advanced to candidacy and enters the second stage, which is devoted to independent research leading to the preparation and defense of the dissertation.

Students in the Ph.D. program must find a faculty member who will agree to supervise their research. This must be done before the start of their second year. They should then devote at least half their time to research and develop a plan for completing the qualifying process in consultation with their thesis advisor. The student must attain candidate status by the end of the seventh quarter following formal admission to the graduate program in Computer Science.

Written Qualifying Examination The student must pass a written depth examination, prepared by the respective cognizant faculty, in one of the specialty areas listed above. Depth examinations may be offered in specialty areas not listed above in response to student petitions, given sufficient faculty and student interest. The depth examination must be passed in no more than two attempts.

Oral Qualifying Examination The student must demonstrate research aptitude by undertaking a research study on some topic (typically a problem from the student's chosen research specialty that may be a promising area in which to conduct the dissertation research), under the guidance of the faculty advisor. The research must be presented to a qualifying committee, which is appointed by the Graduate Division. The committee evaluates the merits of the work and the student's aptitude for research. The work must represent significant progress toward original and publishable research. The student must complete this requirement in no more than two attempts.

Students advance to candidacy after they have completed all the course requirements described above and passed both the written depth examination and oral qualifying examination. These examinations are designed to test the student's knowledge of a chosen specialty area and to evaluate the student's ability to conduct research.

Dissertation and Final Oral Examination After advancement to candidacy, the student should focus on dissertation research. Satisfactory progress to the degree requires the student to present a formal thesis proposal to the dissertation committee and successfully defend it in an oral presentation within a year of advancement to candidacy. After satisfactory performance on the final oral examination, the dissertation committee recommends granting the Ph.D. degree.


LOWER-DIVISION COURSES

CS 005. Introduction to Computer Programming (4) Lecture, 3 hours; laboratory, 3 hours. Prerequisite(s): MATH 003 or equivalent. An introduction to computer programming for nonengineering and nonscience majors and for students considering taking CS 010 but needing additional preparation. Topics include the history of computing, basic computer operation, the notion of an algorithm, and programming constructs such as variables, expressions, input/output, branches, loops, functions, parameters, arrays, and strings. Credit is not awarded for CS 005 if it has already been awarded for CS 010.

CS 008. Introduction to Computing (4) Lecture, 3 hours; laboratory, 3 hours. Prerequisite(s): none. Includes operating system basics (Windows and Unix), word processing, spreadsheets, databases (e.g., Access), E-mail, the Internet, and the World Wide Web. Designed for students not majoring in computer science, engineering, mathematics, or science. Credit is not awarded for CS 008 if it has already been awarded for CS 010.

CS 010. Introduction to Computer Science for Science, Mathematics, and Engineering I (4) Lecture, 3 hours; laboratory, 3 hours. Prerequisite(s): MATH 009A (may be taken concurrently). Solving problems through structured programming of algorithms on computers, using the C++ object-oriented language. Topics include variables, expressions, input/output (I/O), branches, loops, functions, parameters, arrays, strings, file I/O, and classes. Also covers software design, testing, and debugging.

CS 012. Introduction to Computer Science for Science, Mathematics, and Engineering II (4) Lecture, 3 hours; laboratory, 3 hours. Prerequisite(s): CS 010 with a grade of "C-" or better; familiarity with C or C++ language. Structured and object-oriented programming in C++, emphasizing good programming principles and development of substantial programs. Topics include recursion, pointers, linked lists, abstract data types, and libraries. Also covers software engineering principles.

CS 014. Introduction to Data Structures and Algorithms (4) Lecture, 3 hours; laboratory, 3 hours. Prerequisite(s): CS 012 with a grade of "C-" or better; MATH 009A or MATH 09HA; proficiency in C++. Topics include basic data structures such as arrays, lists, stacks, and queues; dictionaries including binary search trees and hashing; priority queues (heaps); introductory analysis of algorithms; sorting algorithms; and object-oriented programming including abstract data types, inheritance, and polymorphism. Also covers solving complex problems through structured software development.

CS 020. Web Site Construction (4) Lecture, 3 hours; laboratory, 3 hours. Prerequisite(s): CS 010. An introduction to web site design, deployment, management, and evolution. Topics include creation; graphics and streaming media; CSS; HTML and Dynamic HTML; SMIL; XML; Java and JavaScript; VB Script; DOM; World Wide Web Consortium; servers and applets; CGI; bandwidth; ISP; security and log files; electronic commerce; standards; user interfaces and human-computer interaction.

CS 061. Machine Organization and Assembly Language Programming (4) Lecture, 3 hours; laboratory, 3 hours. Prerequisite(s): CS 010 with a grade of "C-" or better. An introduction to computer organization. Topics include number representation, combinational and sequential logic, computer instructions, memory organization, addressing modes, interrupt, input/output (I/O), assembly language programming, assemblers, and linkers.


UPPER-DIVISION COURSES

CS 100. Software Construction (4) Lecture, 3 hours; laboratory, 3 hours. Prerequisite(s): CS 141. Development and construction of software products. Topics include design, coding layout, and style; implementation strategies; quality attributes; prototyping, reuse, and components; debugging, testing, and performance; integration and maintenance; documentation; standards, analysis, and selection of tools and environment; and personal software processes.

CS 120A. Logic Design (5) Lecture, 3 hours; laboratory, 6 hours. Prerequisite(s): CS 061. Design of digital systems. Topics include Boolean algebra; combinational and sequential logic design; design and use of arithmetic-logic units, carry-lookahead adders, multiplexors, decoders, comparators, multipliers, flip-flops, registers, and simple memories; state-machine design; and basic register-transfer level design. Laboratories involve use of hardware description languages, synthesis tools, programmable logic, and significant hardware prototyping. Cross-listed with EE 120A.

CS 120B. Introduction to Embedded Systems (5) Lecture, 3 hours; laboratory, 8 hours. Prerequisite(s): CS 120A/EE 120A. Introduction to hardware and software design of digital computing systems embedded in electronic devices (such as digital cameras or portable video games). Topics include custom and programmable processor design, standard peripherals, memories, interfacing, and hardware/software tradeoffs. Laboratory involves use of synthesis tools, programmable logic, and microcontrollers and development of working embedded systems. Cross-listed with EE 120B.

CS 121. Rapid Prototyping of Digital Systems (4) Lecture, 3 hours; laboratory, 3 hours. Prerequisite(s): CS 120B/EE 120B. Top-down design methodology, hardware description languages, functional-level simulation, partitioning, high-level synthesis, finite state machine synthesis, logic synthesis, placement and routing, timing simulation, testing, rapid prototyping using field-programmable gate arrays.

CS 122A. Intermediate Embedded and Real-Time Systems (5) Lecture, 3 hours; laboratory, 6 hours. Prerequisite(s): CS 012, CS 120B/EE 120B. Covers software and hardware design of embedded computing systems. Topics include hardware and software codesign, advanced programming paradigms including state machines and concurrent processes, real-time programming and operating systems, basic control systems, and modern chip and design technologies. Laboratories involve use of microcontrollers, embedded microprocessors, programmable logic and advanced simulation, and debug environments.

CS 122B. Advanced Embedded and Real-Time Systems (5) Lecture, 3 hours; laboratory, 6 hours. Prerequisite(s): CS 012, CS 122A. Further exploration of state-of-the-art aspects of building embedded computer systems. Topics include real-time programming, synthesis of coprocessor cores, application-specific processors, hardware and software cosimulation and codesign, low-power design, reconfigurable computing, core-based design, and platform-based methodology.

CS 130. Computer Graphics (4) Lecture, 3 hours; laboratory, 3 hours. Prerequisite(s): CS 141, MATH 113 (MATH 113 may be taken concurrently); or consent of instructor. A study of the fundamentals of computer graphics necessary to design and build graphics applications. Examines raster graphics algorithms including scan-converting graphics primitives, anti-aliasing, and clipping. Also covers geometric transformations, viewing, solid modeling techniques, hidden-surface removal algorithms, color models, illumination, and shading. Individual and group projects are assigned.

CS 133. Computational Geometry (4) Lecture, 3 hours; laboratory, 3 hours. Prerequisite(s): CS 141, MATH 113, or equivalents. Introduction to the design of geometry algorithms. Covers the basic computational geometry concepts and techniques used in graphics, robotics, and engineering design. Topics include polygons and polytops, convex hulls, and voronoi diagrams.

CS 141. Intermediate Data Structures and Algorithms (4) Lecture, 3 hours; laboratory, 3 hours. Prerequisite(s): CS 014 with a grade of "C-" or better; MATH 009C or MATH 09HC; MATH 112; proficiency in C++. Explores basic algorithm analysis using asymptotic notations, summation and recurrence relations, and algorithms and data structures for discrete structures including trees, strings, and graphs. Also covers general algorithm design techniques including "divide-and-conquer," the greedy method, and dynamic programming. Homework and programming assignments integrate knowledge of data structures, algorithms, and programming.

CS 143. Multimedia Technologies and Programming (4) Lecture, 3 hours; laboratory, 3 hours. Prerequisite(s): CS 010 or knowledge of an object-oriented or fourth-generation (scripting) programming language, for example C++, Hypertalk, Supertalk, Lingo, Openscript, ScriptX. Introduces multimedia technologies and programming techniques, multimedia hardware devices, authoring languages and environments, temporal and nontemporal media (interactivity in text, graphics, audio, video, and animation), applications, and trends. A term project is required. Cross-listed with EE 143.

CS 150. The Theory of Automata and Formal Languages (4) Lecture, 3 hours; discussion, 1 hour. Prerequisite(s): CS 014, MATH 009C or MATH 09HC, MATH 112. A study of formal grammars, finite-state automata, push-down automata, Turing machines, time- and storage-bounded Turing machines, semantics of programming languages, elements of recursive function theory, and complexity of computation.

CS 152. Compiler Design (4) Lecture, 3 hours; laboratory, 3 hours. Prerequisite(s): CS 061, CS 141, CS 150. Covers the fundamentals of compiler design, including lexical analysis, parsing, semantic analysis, compile-time memory organization, run-time memory organization, code generation, and compiler portability issues. Laboratory work involves exercises covering various aspects of compilers.

CS 153. Design of Operating Systems (4) Lecture, 3 hours; laboratory, 3 hours. Prerequisite(s): CS 061, CS 141, C++ programming proficiency. Principles and practice of operating system design, including concurrency, memory management, file systems, protection, security, command languages, scheduling, and system performance. Laboratory work involves exercises covering various aspects of operating systems.

CS 160. Concurrent Programming and Parallel Systems (4) Lecture, 3 hours; laboratory, 3 hours. Prerequisite(s): CS 061, CS 141. Study of concurrent and parallel systems. Topics include modular structure and design, interprocess communication, synchronization, failures and persistence, concurrency control, atomic transactions, recovery, language support, distributed interprocess communication, and implementation mechanisms. Provides preparation for the study of operating systems, databases, and computer networking.

CS 161. Design and Architecture of Computer Systems (4) Lecture, 3 hours; laboratory, 3 hours. Prerequisite(s): CS 061 with a grade of "C-" or better, CS 120A/EE 120A. A study of the fundamentals of computer design. Topics include the performance evaluation of microprocessors, instruction set design and measurements of use, microprocessor implementation techniques including multicycle and pipelined implementations, memory hierarchy, and input/output (I/O) systems. The laboratory component includes the design of a microprocessor using a hardware description language.

CS 162. Computer Architecture (4) Lecture, 3 hours; laboratory, 3 hours. Prerequisite(s): CS 161 with a grade of "C-" or better. The study of advanced processor design. Topics include CPU pipelining, data and control hazards, instruction-level parallelism, branch prediction, and dynamic scheduling of instructions. Also covers Very Long Instruction Word (VLIW) processing, multimedia support, design of network and embedded processors, basic multiprocessor design, shared memory and message passing, and network topologies.

CS 164. Computer Networks (4) Lecture, 3 hours; laboratory, 3 hours. Prerequisite(s): CS 141. Fundamentals of computer networks. Topics include layered network architecture, communication protocols, local area networks, UNIX network programming, verification, and performance studies.

CS 165. Computer Security (4) Lecture, 3 hours; laboratory, 3 hours. Prerequisite(s): CS 141, CS 153. Examines the ways in which information systems are vulnerable to security breaches. Topics include attacks; security labels, lattices, and policies; safeguards and countermeasures; intrusion detection; authorization and encryption techniques; networks; digital signatures, certificates, and passwords; privacy issues, firewalls, and spoofing; Trojan horses and computer viruses; CERT Coordination Center; and electronic commerce.

CS 166. Database Management Systems (4) Lecture, 3 hours; laboratory, 3 hours. Prerequisite(s): CS 141. Topics include architecture of database management systems; relational, network, and hierarchical models; distributed database concepts; query languages; implementation issues; and privacy and security of the database.

CS 168. Introduction to Very Large Scale Integration (VLSI) Design (5) Lecture, 3 hours; laboratory, 6 hours. Prerequisite(s): CS 120A/EE 120A or consent of instructor. Basic electrical properties of metal-oxide-semi conductor (MOS) circuits. MOS circuit design processes. Basic circuit concepts. Subsystem design and layout. Aspects of system design. Memory, registers, and aspects of systems timing. Very large scale integration design.

CS 170. Introduction to Artificial Intelligence (4) Lecture, 3 hours; laboratory, 3 hours. Prerequisite(s): CS 141. Introduction to fundamental problems underlying the design of intelligent systems and to one of the languages of artificial intelligence such as Prolog or LISP. Topics include brute force and heuristic search, problem solving, knowledge representation, predicate logic and logical interference, frames, semantic nets, natural language processing, and expert systems.

CS 171. Introduction to Expert Systems (4) Lecture, 3 hours; discussion, 1 hour. Prerequisite(s): CS 170 or equivalent. Introduction to methodology of design and implementation of expert systems. Rule-based and frame-based expert systems. Knowledge acquisition and knowledge engineering. Design of expert system shells. Use of expert system shells to construct knowledge-based systems.

CS 177. Modeling and Simulation (4) Lecture, 3 hours; laboratory, 3 hours. Prerequisite(s): CS 141, C++ programming proficiency. Topics include validation of random number sequences; concepts in modeling and systems analysis; and conceptual models and their mathematical and computer realizations. Examines simulation modeling techniques including object-oriented modeling and discrete-event modeling. Emphasis is on the use of simulation libraries used with programming languages such as C++. Requires a term project consisting of the development, computer implementation, and analysis of a model.

CS 179 (E-Z). Project in Computer Science (4) Discussion, 1 hour; laboratory, 9 hours. Prerequisite(s): CS 141 with a grade of "C-" or better; 12 additional upper-division units in Computer Science. Additional prerequisites may be required for some segments of this course; see department. Under the direction of a faculty member, students (individually or in small teams with shared responsibilities) propose, design, build, test, and document software and/or hardware devices or systems. Requires a written report, giving details of the project and test results, and an oral presentation of the design aspects. Emphasizes teamwork, making technical presentations, and developing oral and written communication skills.

CS 180. Introduction to Software Engineering (4) Lecture, 3 hours; laboratory, 3 hours. Prerequisite(s): CS 141. A study of software engineering techniques for the development, maintenance, and evolution of large software systems. Topics include requirements and specification; system design and implementation; debugging, testing, and quality assurance; reengineering; project management; software process; tools; and environments.

CS 181. Principles of Programming Languages (4) Lecture, 3 hours; laboratory, 3 hours. Prerequisite(s): CS 061, CS 141 (CS 141 may be taken concurrently), CS 150. Principles of programming language design. Study and comparison of several programming languages, their features, and their implementations.

CS 183. UNIX System Administration (4) Seminar, 3 hours; laboratory, 3 hours. Prerequisite(s): CS 141. Technical aspects of system administration on a Unix system including advanced Unix, managing system devices, operating system installation, communications, and networking.

CS 185. Commercial Software Development (4) Lecture, 3 hours; laboratory, 3 hours. Prerequisite(s): CS 141. Topics include software design, development, testing, documentation, maintenance, marketing, and production, with an emphasis on the economic impact of decisions in the development phase. Also examines software piracy, copyrights, patents, and similar issues. Students develop, test, and market a commercial-quality piece of software.

CS 190. Special Studies (1-5) Individual study, 3-15 hours. Prerequisite(s): consent of instructor and department chair. Individual study to meet special curricular needs. Course is repeatable to a maximum of 9 units.

CS 191 (E-Z). Seminar in Computer Science (1-4) Prerequisite(s): consent of instructor. Consideration of current topics in computer science.

CS 193. Design Project (1-4) Laboratory, 1-6 hours; scheduled research, 1-3 hours; individual study, 1-3 hours. Prerequisite(s): CS 141; consent of instructor. Individual hardware or software design project to include establishment of objectives and criteria, synthesis, analysis, implementation, testing, and documentation. Course is repeatable to a maximum of 8 units.

CS 194. Independent Reading (1-4) Prerequisite(s): consent of instructor. Independent reading in material not covered in course work. Normally taken in senior year. Total credit for CS 194 may not exceed 8 units.

CS 198-I. Individual Internship in Computer Science (1-4) Internship, 3-12 hours. Prerequisite(s): upper-division standing; at least 12 units in Computer Science courses. An academic internship to provide the student with career experience as a computer scientist in a governmental, industrial, or research unit under the joint supervision of an off-campus sponsor and a faculty member in Computer Science. Each individual program must have the prior approval of both supervisors and the Department chair. A final written report is required. Course is repeatable to a maximum of 8 units.


GRADUATE COURSES

CS 201. Compiler Construction (4) Lecture, 3 hours; research, 3 hours. Prerequisite(s): CS 152. Theory of parsing and translation. Compiler construction, including lexical analysis, syntax analysis, code generation and optimization.

CS 202. Advanced Operating Systems (4) Lecture, 3 hours; outside research, 3 hours. Prerequisite(s): CS 153. Recent developments in operating systems. Multiprogramming, parallel programming, time sharing, scheduling and resource allocation, and selected topics.

CS 203A. Advanced Computer Architecture (4) Lecture, 3 hours; scheduled research, 3 hours. Prerequisite(s): CS 161. Covers contemporary computer systems architecture including stack computers, parallel computers, pipeline processing, database machines, and multiprocessor architecture. Includes evaluation of computer performance.

CS 203B. Advanced Computer Architecture (4) Lecture, 3 hours; scheduled research, 3 hours. Prerequisite(s): CS 203A with a grade of "B" or better. Covers advanced topics in general-purpose computer architecture including instruction-level parallel architectures; very-long-instruction-word, explicitly parallel instruction computing, and multithreaded architectures; dataflow machines; and vector and single instruction multiple data architectures, including multimedia extensions. Also discusses network processors, multimedia processors, and advanced embedded processors.

CS 204. Advanced Computer Networks (4) Lecture, 3 hours; consultation, 1 hour. Prerequisite(s): CS 014, CS 164. Advanced topics in computer networks, layering, Integrated Services Digital Networks (ISDN), high-speed networks, performance models and analysis, distributed systems and databases, case studies.

CS 205. Artificial Intelligence (4) Lecture, 3 hours; discussion, 1 hour. Prerequisite(s): CS 170 or equivalent. Knowledge representation and automated reasoning and their use in capturing common sense and expert knowledge. Predicate and nonmonotonic logics. Resolution and term rewriting. Reasoning under uncertainty. Theorem provers, planning systems, and belief networks. Special topics include natural language processing, perception, logic programming, expert systems, deductive databases.

CS 213. Parallel Processing Architectures (4) Lecture, 3 hours; discussion, 1 hour. Prerequisite(s): CS 161 or CS 203A. A study of parallel processing. Topics include static and dynamic interconnection networks; shared memory multiprocessors, and cache coherence and synchronization; prefetching, memory management, message-passing architectures, workstation clusters, and scheduling and mapping algorithms; and load balancing in web servers.

CS 215. Theory of Computation (4) Lecture, 3 hours; outside research, 3 hours. Prerequisite(s): CS 150. Phrase structure grammars and languages. Turing machines. Relation of languages to automata. Solvable and unsolvable problems. Theoretical limitations of computers. Algorithmic complexity theory. Polynomial reducibility. The classes P and NP. Correctness proofs.

CS 218. Design and Analysis of Algorithms (4) Lecture, 3 hours; outside research, 3 hours. Prerequisite(s): CS 141. Study of efficient data structures and algorithms for solving problems from a variety of areas such as sorting, searching, selection, linear algebra, graph theory, and computational geometry. Worst-case and average-case analysis using recurrence relations, generating functions, upper and lower bounds, and other methods.

CS 220. Synthesis of Digital Systems (4) Lecture, 3 hours; outside research, 3 hours. Prerequisite(s): CS 141, CS 161. Covers the synthesis and simulation of digital systems. Topics include synthesis at the system, behavioral, register-transfer, and logic levels; application-specific processors; simulation; and emerging system-on-a-chip design methodologies.

CS 230. Computer Graphics (4) Lecture, 3 hours; outside research, 3 hours. Prerequisite(s): CS 141 or CS 218; MATH 113 or MATH 131; graduate standing or consent of instructor. Covers advanced topics related to graphics and necessary fundamentals including geometry representations, affine and perspective transforms, rendering with global illumination and other light models, shading and texture mapping, rasterization and anti-aliasing techniques, and hierarchical and keyframe animation. Includes projects and/or in-depth programming assignments.

CS 231. Computer Animation (4) Lecture, 3 hours; outside research, 3 hours. Prerequisite(s): CS 130 or CS 230. Covers topics in computer animation, including motion capture, inverse kinematics, and dynamic simulation; deformable systems and other natural phenomena; facial animation; high-level behavior control; creature evolution; and procedural techniques.

CS 234. Computational Methods for Biomolecular Data (4) Lecture, 3 hours; outside research, 3 hours. Prerequisite(s): CS 141 or CS 218; MATH 112; STAT 155 or STAT 160A. A study of computational and statistical methods aimed at automatically analyzing, clustering, and classifying biomolecular data. Topics include combinatorial algorithms for pattern discovery, Hidden Markov models for sequence analysis, analysis of expression data, and prediction of the three-dimensional structure of RNA and proteins.

CS 235. Data Mining Techniques (4) Lecture, 3 hours; term paper, 1.5 hours; project, 1.5 hours. Prerequisite(s): CS 141, CS 166; CS 170 is recommended. Provides students with a broad background in the design and use of data mining algorithms and tools. Topics include clustering, classification, association rules mining, time series clustering, and Web mining.

CS 236. Database Management Systems (4) Lecture, 3 hours; outside research, 3 hours. Prerequisite(s): CS 141, CS 153 or equivalent, CS 166; or consent of instructor. Topics include principles of file systems, architecture of database management systems, data models, relational databases, logical and physical design of databases, hardware and software implementation of database systems, and distributed databases (query processing, concurrences, recovery).

CS 237. Advanced Topics in Modeling and Simulation (4) Lecture, 3 hours; scheduled research, 3 hours. Prerequisite(s): CS 177. Formal computer simulation models, such as Discrete Event Specified Models and differential equation models. Current developments in simulation languages. Integrated model development and applications to complex, large-scale problems.

CS 238. Algorithmic Techniques in Computational Biology (4) Lecture, 3 hours; scheduled research, 3 hours. Prerequisite(s): CS 141 or CS 218; MATH 112. Study of fundamental algorithms for solving combinatorial or computational problems in molecular biology and genomics. Topics include sequence alignment and multiple alignment, bio-database search, gene and regulatory signal recognition, DNA sequence assembly, physical mapping, and reconstruction of evolutionary trees.

CS 239. Performance Evaluation of Computer Networks (4) Lecture, 3 hours; outside research, 3 hours. Prerequisite(s): CS 164. Offers models and analytical techniques for evaluating the performance of computer networks. Covers basic and intermediate queuing theory and queuing networks and their application to practical systems.

CS 240. Network Routing (4) Lecture, 3 hours; outside research, 3 hours. Prerequisite(s): CS 164; CS 141 or CS 204. An in-depth study of routing in computer networks. Examines general principles and specific routing protocols and technologies. Topics include Internet, Asynchronous Transfer Mode (ATM), optical, wireless, and ad hoc networks.

CS 245. Software Evolution (4) Lecture, 3 hours; scheduled research, 3 hours. Prerequisite(s): CS 180 or equivalent; graduate standing. Covers the principles, tools, and techniques for disciplined software evolution. Topics include migration strategies, change patterns, software maintenance, legacy system reengineering, reverse engineering for program understanding, middleware, source code analysis, software visualization, and program transformation tools.

CS 253. Distributed Systems (4) Lecture, 3 hours; outside research, 3 hours. Prerequisite(s): CS 153. Integrates the theory and practice of distributed systems with a focus on recent developments in distributed systems. Topics include middleware architectures, distributed process management and real-time scheduling, dependability, group communication protocols, distributed process management, replication, large-scale peer-to-peer systems, Internet content delivery, and web caching.

CS 255. Computer Security (4) Seminar, 3 hours; outside research, 3 hours. Prerequisite(s): CS 153 or CS 164 or CS 165. Discusses the theoretical and practical issues arising in the context of computer systems security and the principles underlying the design of secure computing environments. Topics include cryptography, security models, authentication protocols, network security, intrusion detection, attacks and their countermeasures, and secure systems design.

CS 257. Wireless Networks and Mobile Computing (4) Lecture, 3 hours; outside research, 3 hours. Prerequisite(s): CS 141; CS 164 or 204. Introduces basic and advanced concepts of wireless networks and mobile computing. Covers both wireless cellular and ad hoc networks. Topics include protocols for medium access control, resource allocation, and routing; transport layer optimizations for the wireless environment; and standards, Bluetooth, and the IEEE 802.11 for wireless local area networks.

CS 260. Seminar in Computer Science (1-4) Seminar, 1-4 hours. Prerequisite(s): consent of department. Seminar on current research topics in Computer Science. Course is repeatable.

CS 261. Seminar in Artificial Intelligence and the Design of Expert Systems (4) Seminar, 4 hours. Prerequisite(s): graduate standing or consent of instructor. A review of recent research topics in the fields of artificial intelligence and logic programming with a particular emphasis on expert systems, automated reasoning, and knowledge representation.

CS 262. Algorithms and Data Structures (4) Seminar, 4 hours. Prerequisite(s): CS 218, CS 215A; or consent of instructor. Selected topics in theoretical computer science. Course is repeatable.

CS 263. Seminar in Distributed Systems (4) Seminar, 4 hours. Prerequisite(s): graduate standing; CS 153 or previous operating systems course. A project-oriented course that introduces students to the fundamental topics in distributed computer systems and provides practical experience. Topics include distributed file systems, replicated data, load management, and distributed shared memory.

CS 265. Seminar in Parallel Computer Architectures (4) Seminar, 4 hours. Prerequisite(s): graduate standing or consent of instructor. Focuses on the problems of building a general purpose, massively parallel architecture. Discusses proposed solutions to the problems of massively parallel architectures, including implementation and compilation. Covers the recent progress made in the field.

CS 267. Seminar in Databases (4) Seminar, 4 hours. Prerequisite(s): CS 236 or consent of instructor. Focuses on recent research and development issues in the database area such as object-oriented databases, heterogenous databases, parallel databases, benchmarks, transaction processing, query optimization, and performance evaluation.

CS 268. Seminar in Computer-Aided Design and Design Automation (4) Seminar, 4 hours. Prerequisite(s): graduate standing or consent of instructor. Emphasizes recent research in automatic synthesis of digital systems. Covers recent progress and results in the synthesis of digital systems in the systems level, register transfer level, logic design level, and physical design.

CS 269. Software and Hardware Engineering of Embedded Systems (4) Seminar, 4 hours. Prerequisite(s): CS 120A/EE 120A; consent of instructor. Presents state-of-the-art software and hardware design techniques for embedded computing systems. Topics include specification models, languages, simulation, partitioning algorithms, estimation methods, model refinement, and design methodology.

CS 287. Colloquium in Computer Science (1) Colloquium, 1 hour. Prerequisite(s): graduate standing. Lectures on current research topics in computer science presented by faculty members and visiting scientists. Graded Satisfactory (S) or No Credit (NC). Course is repeatable.

CS 290. Directed Studies (1-6) Seminar, 1-6 hours. Prerequisite(s): consent of instructor. Research and special studies in computer science. Graded Satisfactory (S) or No Credit (NC). Course is repeatable.

CS 297. Directed Research (1-6) Individual study, 3-18 hours. Prerequisite(s): graduate standing. Directed research on selected problems in computer science under the sponsorship of specific faculty members. Graded Satisfactory (S) or No Credit (NC).

CS 298-I. Individual Internship (1-12) Written work, 1-12 hours; internship, 2-24 hours. Prerequisite(s): graduate standing; consent of instructor. Individual apprenticeship in computer science. Includes fieldwork with an approved professional individual or organization, and academic work under the direction of a faculty member. A final written report is required. Graded Satisfactory (S) or No Credit (NC). Course is repeatable to a maximum of 12 units.

CS 299. Research for Thesis or Dissertation (1-12) Individual study, 3-36 hours. Prerequisite(s): graduate standing and consent of instructor. Research in computer science under the direction of a faculty member. This research is to be included as part of the thesis or dissertation. Graded Satisfactory (S) or No Credit (NC). Course is repeatable.


PROFESSIONAL COURSES

CS 301. Teaching Computer Science at the College Level (1) Seminar, 1 hour. Prerequisite(s): graduate standing. A program of weekly meetings and individual formative evaluation required of new Computer Science Teaching Assistants. Covers instructional methods and classroom/section activities most suitable for teaching Computer Science. Conducted by departmental faculty. Graded Satisfactory (S) or No Credit (NC). Course is repeatable.

CS 302. Apprentice Teaching (1-4) Seminar, 1-4 hours. Prerequisite(s): enrollment limited to teaching assistants and associates in Computer Science. Supervised teaching in upper- and lower-division Computer Science courses. Required each quarter of all Computer Science teaching assistants and associates. The course is intended to aid in the learning of effective teaching methods such as the handling of Computer Science discussion sections, preparation and grading of examinations, and student relations. Graded Satisfactory (S) or No Credit (NC). hhFits/Traveling_Exhibits/traveling_main.htm" LAST_VISIT="1034372786" ADD_DATE="1034372786" VISITATION_COUNT="2" OBJECT_TYPE="LINK">California Science Center Traveling Exhibits