UC Riverside

1999-2000 General Catalog
University of California, Riverside

COMPUTER SCIENCE AND ENGINEERING

Subject abbreviation: CS


Mart Molle, Ph.D., Chair
Department Office, A159 Bourns Hall
(909) 787-5639; http://www.cs.ucr.edu

Professors
Marek Chrobak, Ph.D.
Yu-Chin Hsu, Ph.D.
Tao Jiang, Ph.D.
Mart L. Molle, Ph.D.
Teodor C. Przymusinski, Ph.D.

Professor Emeritus
Lawrence L. Larmore, Ph.D.

Associate Professors
Brett D. Fleisch, Ph.D.
Yang-Chang Hong, Ph.D.
Thomas H. Payne, Ph.D.
Vassilis Tsotras, Ph.D.
Frank N. Vahid, Ph.D.

Assistant Professors
Michalis Faloutsos, Ph.D.
Dimitrios Gunopulos, Ph.D.
Scott R. Tilley, Ph.D.

**

Adjunct Associate Professor
Halina Przymusinska, Ph.D.


MAJOR

The Department of Computer Science and Engineering offers a B.S. degree in Computer Science and an M.S. and a Ph.D. degree 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 are dependent 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.

Each Computer Science major is assigned a Departmental Advisor who assists the student in formulating educational goals and who monitors the student's subsequent progress in an academic program. Each quarter a study list must be approved by this advisor and filed by the student in the Department office.

DEGREE REQUIREMENTS

UNIVERSITY REQUIREMENTS

General University requirements are Universitywide requirements which all undergraduates must satisfy. See the Undergraduate Studies section for a complete listing.

COLLEGE REQUIREMENTS

Students must fulfill all breadth requirements of The Bourns College of Engineering. See Degree Requirements under The Marlan and Rosemary Bourns College of Engineering in the Undergraduate Studies section of this catalog.

To fulfill the Humanities and the Social Sciences breadth requirements, students in The Bourns College of Engineering must meet both University criteria and Accreditation Board of Engineering and Technology (ABET) criteria for breadth and depth in their selection of courses. The ABET criteria are implemented in the following manner.

  1. At least two of the Humanities and/or Social Science courses must be upper-division.
  2. At least two courses must be from the same subject area (for example, two courses in History), with at least one of the two being an upper-division course.
  3. Courses must be selected from an approved list available in The Bourns College Office of Student Affairs.

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

MAJOR REQUIREMENTS

The major requirements for the Bachelor of Science in Computer Science are as follows:

1.  Lower-division requirements (59 units)

  • a)  MATH 009A-MATH 009B-MATH 009C, MATH 010A, MATH 046

  • b)  CS 010, CS 012, CS 014, CS 061

  • c)  PHYS 040A, PHYS 040B, PHYS 040C

  • d)  One course of 4 or more units in Chemistry to be selected in consultation with a faculty advisor

  • e)  One course of 4 or more units in an engineering discipline outside the field of computer science to be selected in consultation with a faculty advisor (Either a lower- or an upper-division course may be used to satisfy this requirement.)

2.  Upper-division requirements (67 units)

  • a)  MATH 112, MATH 113

  • b)  STAT 155

  • c)  CS 120A/EE 120A, CS 120B/EE 120B

  • d)  CS 141, CS 150, CS 161, CS 163, CS 181, CS 182

  • e)  Twenty (20) units of technical electives to be chosen from an approved list of courses which currently includes MATH 120, MATH 135A-MATH 135B; CS 121, CS 122A-CS 122B, CS 130, CS 160, CS 164, CS 166, CS 168, CS 170, CS 171, CS 175, CS 177, CS 185, CS 193; EE 140

MINOR

Requirements for the Minor in Computer Science are:

  1. Prerequisite courses:CS 010, CS 012, MATH 009A-MATH 009B-MATH 009C, MATH 112
  2. Core courses:CS 014, CS 061, CS 141
  3. Three elective courses, each of four or more units, such that:
  • a)  Each is an upper-division requirement or a listed technical elective for the Computer Science major, excluding courses numbered 190-199;
  • b)  Only one quarter of any A-B sequence may be used;
  • c)  No course may be an upper-division requirement of the student's major.

Note : Any courses required for the minor may be taken on an S/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.

EDUCATION ABROAD PROGRAM

The Department of Computer Science and Engineering encourages students to participate in the Education Abroad Program (EAP). The EAP is an excellent opportunity to travel and learn more about another country and its culture while taking courses which earn units toward graduation. Because strategy in choosing courses to be taken here and courses to be taken abroad varies depending on personal goals and the country visited, early planning is advised. Consult the department advisor for assistance. For further details, see Education Abroad Program under International Services Center in the Student Services section of this catalog. A list of participating countries is found under Education Abroad Program in the Curricula and Courses section.

GRADUATE PROGRAM

All applicants for graduate status must supply Graduate Record Examination scores for the general aptitude tests prior to their admission.

MASTER'S DEGREE

General requirements are listed in the Graduate Studies section of this catalog. Specific requirements of the Department are as follows:

  1. Satisfactory completion of the computer science breadth requirement by the end of the third quarter in graduate residence at UCR (Students must complete CS 120A/EE 120A, CS 141, CS 150, CS 161, CS 163, CS 181, CS 182, and MATH 113 or MATH 131 or their equivalents with grades of "B" or better if they have not already taken these courses. These courses will not apply toward the degree.)
  2. At least 36 units of approved lecture courses, including 20 units of core courses (CS 201, CS 202, CS 203, CS 215, and CS 218) and 16 units of elective courses at the graduate or upper-division level. At least one elective course must be taken at the graduate level.
  3. A mandatory attendance of CS 287 (Colloquium in Computer Science) and 12 additional units of CS 260-269 (graduate seminars in Computer Science)
  4. One of the following two options:
    • a) Satisfactory completion of a thesis in a field of computer science to be chosen in consultation with a faculty advisor (The thesis shall be approved by a thesis committee designated by the Department. Students must register for thesis research, CS 299; a maximum of 8 units of CS 299 may be applied toward the 36-unit requirement of approved lecture courses listed above. Students may replace a core course with an appropriate graduate lecture course on the recommendation of the thesis advisor and approval by the thesis committee. Students must defend the thesis before a faculty committee selected by the Department.)
    • b) Satisfactory performance on two written comprehensive examinations in the areas of Algorithms and Theory of Computation and Computer Systems

DOCTORAL DEGREE

The course requirements are the same as those for M.S. students, except that (a) Ph.D. students cannot replace elective courses by units for CS 299, and (b) at least two elective courses must be taken at the graduate level. Ph.D. students must pass all core courses with a grade of "B" or better. Course requirements may be waived at the discretion of the graduate advisor for students holding the M.S. degree in Computer Science from other schools and who have taken the same or equivalent courses.

Additional requirements are as follows:

1.  Comprehensive Field Examinations. All Ph.D. students must pass three comprehensive field examinations. Two of these examinations are in the core areas of (a) Computer Systems and (b) Algorithms and Theory of Computation. The third examination can be chosen from the current list of elective areas and needs to be approved by the graduate advisor. Ph.D. students must pass two field examinations at the Ph.D. level. A third one can be passed at the M.S. or Ph.D. level.

2.  Qualifying Examination. The qualifying examination is given by the Doctoral Committee. It is designed to test the student's knowledge of the area of interest and to evaluate the student's ability to successfully conduct the research outlined in the prospectus.

  The exam consists of two parts. The first part is an oral examination in the area of research. The second part is an oral presentation of the research prospectus followed by questions from the members of the Doctoral Committee. The student must pass satisfactorily both parts of the qualifying examination.

  After passing the qualifying examination, the student is advanced to candidacy.

3.  Dissertation. After being advanced to candidacy, the student can concentrate on research and on writing the Ph.D. dissertation. The Ph.D. dissertation should contain original and creative scholarly work and should be approved by the Doctoral Committee before the final oral examination.

4.  Final Oral Examination. The student defends the dissertation in a final oral examination that consists of a public seminar followed by questions from the audience. After a satisfactory performance on the final oral examination, the Doctoral Committee recommends granting the Ph.D. degree.

  The normative time to the Ph.D. is 15 quarters.


LOWER-DIVISION COURSES

CS 008. Introduction to Computing. (4)

Lecture, three hours; laboratory, three hours. Prerequisite(s): none. Includes operating system basics (Windows and Unix), word processing, spreadsheets, data bases (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 awarded for only one of CS 008 or STAT 150. 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, three hours; laboratory, three 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, three hours; laboratory, three 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. Data Structures. (4)

Lecture, three hours; laboratory, three hours. Prerequisite(s): CS 012 with a grade of "C-" or better; MATH 009A or MATH 09HA. Topics include basic data structures including arrays, lists, stacks, and queues; dictionaries including binary search trees and hashing; priority queues (heaps); sorting algorithms; object-oriented programming including abstract data types, inheritance, and polymorphism. Also covers solving complex problems through structured software development.

CS 061. Machine Organization and Assembly Language Programming. (4)

Lecture, three hours; laboratory, three hours. Prerequisite(s): CS 010. An introduction to computer architecture, to include the topics of binary, decimal, and hexadecimal numbering systems; register transfer and computer operations; computer instructions and addressing modes; memory organization; interrupt and trap processing; input/output (I/O) and communications; assembly language programming; basic data structures; assembler directives, macros, procedures, and system calls; high-level language interfaces; assemblers, linkers, and debuggers; and simulating high-level languages in assembly language.


UPPER-DIVISION COURSES

CS 120A. Logic Design. (5)

Lecture, three hours; laboratory, six hours. Prerequisite(s): CS 010. Number systems and binary codes. Boolean algebra. Digital circuits. Combinational and sequential logic design principles and practices. Combinational and sequential programmable logic devices. Computer-aided design (CAD) and engineering of digital systems. Cross-listed with EE 120A.

CS 120B. Digital Systems. (5)

Lecture, three hours; laboratory, eight hours. Prerequisite(s): CS 120A/EE 120A. Design methodology and practice of digital systems at the register and processor level. Arithmetic processors. Micro-code controlled digital units. Hardware specification languages. Microprocessor architecture, memory, Input/Output (I/O) support and peripherals. Digital to Analog (D/A) and Analog to Digital (A/D) convertors. Serial and parallel data transmission. Memory access. Microprocessor-based digital systems. Cross-listed with EE 120B.

CS 121. Rapid Prototyping of Digital Systems. (4)

Lecture, three hours; laboratory, three 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-CS 122B. Advanced Microcomputer System Design. (5-5)

Lecture, three hours; laboratory, six hours. Prerequisite(s): CS 120B/EE 120B. Design and use of embedded systems. Interfacing central processing units with intelligent peripheral devices. Real-time constraints on system design. Hardware and software codesign techniques. Interfacing systems with real world devices.

CS 130. Computer Graphics. (4)

Lecture, three hours; laboratory, three hours. Prerequisite(s): MATH 113 (may be taken concurrently), CS 012; or consent of instructor. Graphical user interfaces, software, and design. Graphics hardware. Raster graphics algorithms, including scan-converting graphics primitives, anti-aliasing, and clipping. Geometrical transformations in two and three dimensions. Three-dimensional viewing, graphics software, and programming. Solid modeling techniques. Hidden-surface removal algorithms. Color models. Illumination and shading. Individual and Group projects.

CS 141. Algorithms. (4)

Lecture, three hours; laboratory, three hours. Prerequisite(s): CS 014 with a grade of "C-" or better; MATH 009C or MATH 09HC; MATH 112. Topics include trees and tree traversal; graphs and graph algorithms including searching, connectivity, shortest paths, minimum spanning trees, and maximum flow; algorithm design techniques including divide and conquer and dynamic programming; linear programming; heuristic techniques including greedy algorithms and simulated annealing; NP-completeness; classic problems including traveling salesman, graph coloring, knapsack, RSA, FFT, convex hulls, text compression, and string matching.

CS 143. Multimedia Technologies and Programming. (4)

Lecture, three hours; laboratory, three 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, three hours; discussion, one hour. Prerequisite(s): CS 014. 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 160. Concurrent Programming and Parallel Systems. (4)

Lecture, three hours; laboratory, three hours. Prerequisite(s): CS 014, CS 061. 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, data bases, and computer networking.

CS 161. Design and Architecture of Computer Systems. (4)

Lecture, three hours; laboratory, three hours. Prerequisite(s): CS 061, CS 120B/EE 120B. A study of fundamentals of computer design. Topics include cost and performance tradeoffs, instruction set design and measurements of use, processor implementation techniques, pipelining, pipeline hazards and control, memory hierarchy, and input/output (I/O) systems. Students complete a design project.

CS 163. Design of Operating Systems. (4)

Lecture, three hours; laboratory, three hours. Prerequisite(s): C++ programming proficiency (e.g., satisfactory completion of CS 012), CS 014, CS 061, CS 141 (CS 141 may be taken concurrently). Principles and practice of operating system design, including concurrency, memory management, file systems, protection, security, command languages, scheduling, and topics in system performance. Course project involves design and implementation of timeshared operating-system kernal.

CS 164. Computer Networks. (4)

Lecture, three hours; laboratory, three 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 166. Data Base Management Systems. (4)

Lecture, three hours; laboratory, three hours. Prerequisite(s): CS 014. Topics include architecture of data base management systems; relational, network, and hierarchical models; distributed data base concepts; query languages; implementation issues; and privacy and security of the data base.

CS 168. Introduction to Very Large Scale Integration (VLSI) Design. (5)

Lecture, three hours; laboratory, six hours. Prerequisite(s): CS 120A/EE 120A or consent of instructor. Basic electrical properties of metal-oxide-semiconductor (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, three hours; laboratory, three hours. Prerequisite(s): CS 014 or equivalent. 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, three hours; discussion, one 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 175. Information Theory. (4)

Lecture, three hours; discussion, one hour. Prerequisite(s): CS 012. An introduction to information theory from the point of view of Shannon's fundamental theorems on the rate of transmission of information in the presence of noise and from the point of view of coding theory. Both error detecting and error correcting codes are treated. The emphasis throughout will be on the applications of this theory in the design and use of computers.

CS 177. Modeling and Simulation. (4)

Lecture, three hours; laboratory, three hours. Prerequisite(s): CS 012 or familiarity with C++ or consent of instructor; MATH 009A-MATH 009B-MATH 009C. Validation of random number sequences. Concepts in modeling and systems analysis; conceptual models and their mathematical and computer realizations. Simulation modeling techniques including object-oriented modeling, discrete-event modeling, and equation-based modeling for continuous systems. Emphasis is on the use of simulation libraries used with programming languages such as C++. Examples are taken from physical, chemical, biological, and engineering systems, and from problems of resource allocation. A term project consisting of the development, computer implementation, and analysis of a model is required.

CS 180. Introduction to Software Engineering. (4)

Lecture, three hours; laboratory, three 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, three hours; laboratory, three 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 182. Compiler Design. (4)

Lecture, three hours; laboratory, three hours. Prerequisite(s): CS 181. Fundamentals of compiler design, including lexical analysis, parsing, semantic analysis, compile-time memory organization, run-time memory organization, code generation, and compiler portability issues. Project involves design and implementation of a compiler for a simple block-structured language using appropriate compiler generation tools.

CS 183. UNIX System Administration. (4)

Seminar, three hours; laboratory, three 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, three hours; laboratory, three 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)

Prerequisite(s): consent of instructor. To be taken with the consent of the Chair of the Department as a means of meeting special curricular problems.

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, one to six hours; scheduled research, one to three hours; individual study, one to three 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, three to twelve 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. Graded Satisfactory (S) or No Credit (NC). Course is repeatable up to a maximum of 8 units.


GRADUATE COURSES

CS 201. Compiler Construction. (4)

Lecture, three hours; research, three hours. Prerequisite(s): CS 182. Theory of parsing and translation. Compiler construction, including lexical analysis, syntax analysis, code generation and optimization.

CS 202. Advanced Operating Systems. (4)

Lecture, three hours; outside research,three hours. Prerequisite(s): CS 163. Recent developments in operating systems. Multiprogramming, parallel programming, time sharing, scheduling and resource allocation, and selected topics.

CS 203. Advanced Computer Architecture. (4)

Lecture, three hours; outside research, three hours. Prerequisite(s): CS 161. Contemporary computer systems architecture including stack computers, parallel computers, pipeline processing, database machines, and multiprocessor architecture. Performance evaluation.

CS 204. Advanced Computer Networks. (4)

Lecture, three hours; consultation, one 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 data bases, case studies.

CS 205. Artificial Intelligence. (4)

Lecture, three hours; discussion, one 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 data bases.

CS 213. Parallel and Distributed Processing. (4)

Lecture, three hours; discussion, one hour. Prerequisite(s): CS 161 or equivalent. Parallel programming languages. Pipelining and supercomputing. Multiprocessing control, scheduling, and algorithms. Dataflow computing including models of computation, languages, and architectures. Very large scale integration (VLSI) computing structures including systolic/wavefront array processors, mapping algorithms, and reconfigurable processor arrays.

CS 215. Theory of Computation. (4)

Lecture, three hours; outside research, three 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, three hours; outside research, three hours. Prerequisite(s): CS 014, MATH 131. 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 and other methods. Upper and lower bounds.

CS 220. Silicon Compilation. (4)

Lecture, three hours; scheduled research, three hours. Prerequisite(s): graduate standing. Emphasizes the synthesis and simulation of a digital system. Synthesis section covers recent progress in automatic synthesis on system level, Register Transfer Level (RTL), and logic level. Simulation section discusses the simulation model for the two most popular simulation languages: VHDL and Verilog.

CS 236. Data Base Management Systems. (4)

Lecture, three hours; outside research, three hours. Prerequisite(s): CS 014, CS 163 or equivalent, CS 166; or consent of instructor. Principles of file systems, architecture of data base management systems, data models, relational data bases, logical and physical design of data bases, hardware and software implementation of data base systems, distributed data bases (query processing, concurrences, recovery).

CS 237. Advanced Topics in Modeling and Simulation. (4)

Lecture, three hours; scheduled research, three 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 260. Seminar in Computer Science. (1-4)

Seminar, one to four 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, four 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, four hours. Prerequisite(s): CS 218, CS 215; or consent of instructor. Selected topics in theoretical computer science. Course is repeatable.

CS 263. Seminar in Distributed Systems. (4)

Seminar, four hours. Prerequisite(s): graduate standing; CS 163 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, four 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 Data Bases. (4)

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

CS 268. Seminar in Computer-Aided Design and Design Automation. (4)

Seminar, four 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, four 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, one 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, one to six 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, three to eighteen 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 299. Research for Thesis or Dissertation. (1-12)

Individual study, three to thirty-six 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, one 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, one to four 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).