Courses in Engineering: Computer Science (ECS)

Lower Division Courses

10. Basic Concepts of Computing (4)

Lecture—3 hours; discussion—1 hour. Prerequisite: two years of high school algebra. Introduction to principles of computing. Methods and algorithms for solving problems by use of a digital computer. Not open for credit to students who have completed course 30 or Engineering 6.—I, II, III. (I, II, III.) Amenta, Ludaescher, Gertz

15. Introduction to Computers (4)

Lecture—3 hours; laboratory—3 hours. Computer uses in modern society. Emphasis on uses in non-scientific disciplines. Includes word processing, spreadsheets, web-page creation, elementary programming, basic computer organization, the uses of computers and their influence on society. Not intended for computer science majors. Not open for credit to students who have completed course 30. Only two units of credit allowed to students who have completed Plant Sciences 21. GE credit: SciEng, Wrt.—I, II, III. (I, II, III.) Liu

20. Discrete Mathematics for Computer Science (4)

Lecture—3 hours; discussion—1 hour. Prerequisite: Mathematics 21A. Discrete structures and applications in computer science. Proofs, particularly induction. Introduction to propositional logic, logic circuit design, combinatorics, recursion and solution of recurrence relations, analysis of algorithms, graph theory and trees, finite state machines. Not open for credit to students who have completed course 100.—I, II, III. (I, II, III.) Bai, Gusfield, Koehl, Max, Rogaway

30. Introduction to Programming and Problem Solving (4)

Lecture—3 hours; discussion—1 hour. Prerequisite: Mathematics 16A or 21A (may be taken concurrently); prior experience with basic programming concepts (variable, loops, conditional statements) recommended. Introduction to computers and computer programming, algorithm design, and debugging. Elements of good programming style. Programming in the C language. Use of basic UNIX tools.—I, II, III. (I, II, III.) Bai, Wu

40. Introduction to Software Development and Object-Oriented Programming (4)

Lecture—3 hours; discussion—1 hour. Prerequisite: course 30 or the equivalent with a grade of C- or better. Elements of program design, style, documentation, efficiency. Methods for debugging and verification. Operating system tools. Principles and use of object-oriented programming in C++. Basic data structures and their use.—I, II, III. (I, II, III.)

50. Computer Organization and Machine-Dependent Programming (4)

Lecture—3 hours; discussion—1 hour. Prerequisite: course 40. Comparative study of different hardware architectures via programming in the assembly languages of various machines. Role of system software in producing an abstract machine. Only one unit of credit allowed for students who have taken Electrical and Computer Engineering 70.—I, II, III. (I, II, III.) Farrens, Matloff

60. Data Structures and Programming (4)

Lecture—3 hours; discussion—1 hour. Prerequisite: courses 20, 40 (C++ and UNIX); grade of C- or better in each course. Design and analysis of data structures for a variety of applications. Trees, heaps, searching, sorting, hashing, graphs. Extensive programming. Not open for credit to students who have completed course 110.—I, II, III. (I, II, III.) Chen, Joy, Rogaway

89A-L. Special Topics in Computer Science
(1-5)

Lecture, laboratory or combination. Prerequisite: consent of instructor. Special topics in (A) Computer Science Theory; (B) Architecture; (C) Programming Languages and Compilers; (D) Operating Systems; (E) Software Engineering; (F) Databases; (G) Artificial Intelligence; (H) Computer Graphics; (I) Networks; (J) Computer-Aided Design; (K) Scientific Computing; (L) Computer Science. May be repeated for credit when the topic is different.—I, II, III. (I, II, III.)

92. Internship in Computer Science (1-5)

Internship. Prerequisite: lower division standing; project approval prior to period of internship. Supervised work experience in computer science. May be repeated for credit. (P/NP grading only.)

98. Directed Group Study (1-5)

(P/NP grading only.)

99. Special Study for Lower Division Students (1-5)

(P/NP grading only.)

Upper Division Courses

120. Introduction to the Theory of Computation (4)

Lecture—3 hours; discussion—1 hour. Prerequisite: course 20; Mathematics 108 recommended. Fundamental ideas in the theory of computation, including formal languages, computability and complexity. Reducibility among computational problems.—I, II, III. (I, II, III.) Bai, Franklin, Gusfield, Rogaway, Martel

122A. Algorithm Design and Analysis (4)

Lecture—3 hours; discussion—1 hour. Prerequisite: courses 20, 60. Complexity of algorithms, bounds on complexity, algorithms for searching, sorting, pattern matching, graph manipulation, combinatorial problems, randomized algorithms, introduction to NP-complete problems.—I, II, III. (I, II, III.) Gusfield, Martel, Rogaway

122B. Algorithm Design and Analysis (4)

Lecture—3 hours; discussion—1 hour. Prerequisite: course 122A. Theory and practice of hard problems, and problems with complex algorithm solutions. NP-completeness, approximation algorithms, randomized algorithms, dynamic programming and branch and bound. Students do theoretical analysis, implementation and practical evaluations. Examples from parallel, string, graph, and geometric algorithms.—I. (I.) Rogaway, Gusfield, Martel

124. Theory and Practice of Bioinformatics (4)

Lecture—3 hours; laboratory—1 hour. Prerequisite: course 10 or 30 or Engineering 6; Statistics 12 or 13 or 32 or 100 or 131A or Mathematics 135A; Biological Science 1A or Molecular and Cellular Biology 10. Fundamental biological, mathematical and algorithmic models underlying bioinformatics; sequence analysis, database search, gene prediction, molecular structure comparison and prediction, phylogenetic trees, high throughput biology, massive datasets; applications in molecular biology and genetics; use and extension of common bioinformatics tools.—III. (III.) Filkov, Gusfield

129. Computational Structural Bioinformatics (4)

Lecture—3 hours; discussion—1 hour. Prerequisite: college level programming course; Biological Science 1A or Molecular and Cellular Biology 10. Fundamental biological, chemical and algorithmic models underlying computational structural biology; protein structure and nucleic acids structure; comparison of protein structures; protein structure prediction; molecular simulations; databases and online services in computational structural biology.—I. (I.) Koehl

130. Scientific Computation (4)

Lecture—3 hours; discussion—1 hour. Prerequisite: course 30 or Engineering 6; Mathematics 22A. Matrix-vector approach using MATLAB for floating point arithmetics, error analysis, interpolations, numerical integration, matrix computations, nonlinear equations and optimization. Parallel computing for matrix multiplication and the Cholesky factorization.—III. (III.) Bai

132. Probability and Statistical Modeling for Computer Science (4)

Lecture—3 hours; discussion—1 hour. Prerequisite: courses 50 or Engineering Electrical and Computer 70; course 60; Mathematics 21C; Mathematics 22A or Mathematics 67. Univariate and multivariate distributions. Estimation and model building. Markov/Hidden Markov models. Applications to data mining, networks, security, software engineering and bioinformatics.—II. (II.) Davidson, Ghosal, Matloff

140A. Programming Languages (4)

Lecture—3 hours; discussion—1 hour. Prerequisite: course 50 or Electrical Computer Engineering 70; course 60. Syntactic definition of programming languages. Introduction to programming language features including variables, data types, data abstraction, object-orientedness, scoping, parameter disciplines, exception handling. Comparative study of several high-level programming languages.—I, III. (I, III.) Olsson, Pandey, Su

140B. Programming Languages (4)

Lecture—3 hours; discussion—1 hour. Prerequisite: course 140A. Continuation of programming language principles. Further study of programming language paradigms such as functional and logic; additional programming language paradigms such as concurrent (parallel), dataflow, and constraint; key implementation issues for those paradigms; and programming language semantics.—I. (I.) Olsson, Pandey

142. Compilers (4)

Lecture—3 hours; discussion—1 hour. Prerequisite: courses 20, 140A; course 120 recommended. Principles and techniques of lexical analysis, parsing, semantic analysis, and code generation. Implementation of compilers.—II. (II.) Pandey, Su

145. Scripting Languages And Their Applications (4)

Lecture—3 hours; discussion—1 hour. Prerequisite: programming skill at the level of course 60. Goals and philosophy of scripting languages, with Perl and Python as prime examples. Applications include networking, threaded programming, and graphical user interfaces (GUI's). Offered in alternate years.—III. Matloff

150. Operating Systems and System Programming (4)

Lecture—3 hours; discussion—1 hour. Prerequisite: course 40; course 154A or Electrical and Computer Engineering 70; course 154B or Electrical and Computer Engineering 170 strongly recommended. Basic concepts of operating systems and system programming. Processes and interprocess communication/synchronization; virtual memory, program loading and linking; file and I/O subsystems; utility programs. Study of a real operating system.—I, II, III. (I, II, III.) Levitt, Matloff, Wu

152A. Computer Networks (4)

Lecture—3 hours; discussion—1 hour. Prerequisite: course 60; Mathematics 135A or Statistics 131A or Statistics 120 or Statistics 32. Overview of local and wide-area computer networks. IS0 seven-layer model. Physical aspects of data transmission. Data-link layer protocols. Network architectures. Routing. TCP/IP protocol suite. Local area networks. Medium access protocols. Network performance analysis. Only two units of credit for students who have taken course 157. (Same course as Electrical and Computer Engineering 173A.)—I, II, III. (I, II, III.) Chuah, Ghosal, Liu, Matloff, Mohapatra, Mukherjee

152B. Computer Networks (4)

Lecture—3 hours; discussion—1 hour. Prerequisite: course 152A, 150. TCP/IP protocol suite, network layer protocols, transport layer protocols, transport layer interfaces, sockets, UNIX network programming, computer networking applications, remote procedure calls and network management.—I, II, III. (I, II, III.) Mukherjee, Ghosal, Matloff, Mohapatra

152C. Design Projects in Communication Networks (4)

Lecture—3 hours; discussion—1 hour. Prerequisite: course 152A or Electrical and Computer Engineering 173A. Advanced topics and design projects in communication networks. Example topics include wireless networks, multimedia networking, network design and management, traffic analysis and modeling, network simulations and performance analysis. Offered in alternate years. (Same course as Electrical and Computer Engineering 173B.)—(III.) Chuah, Liu, van der Schaar, Mukherjee

153. Computer Security (4)

Lecture—3 hours; discussion—1 hour. Prerequisite: courses 150 and 152A. Principles, mechanisms, and implementation of computer security and data protection. Policy, encryption and authentication, access control, and integrity models and mechanisms; network security; secure systems; programming and vulnerabilities analysis. Study of an existing operating system. Not open for credit to students who have completed course 155.—II, III. (II, III.) Bishop, Chen

154A. Computer Architecture (4)

Lecture—3 hours; discussion—1 hour. Prerequisite: course 50 or Electrical and Computer Engineering 70; and course 110. Introduction to digital design. Interfacing of devices for I/O, memory and memory management. Input/output programming, via wait loops, hardware interrupts and calls to operating system services. Hardware support for operating systems software. Only one unit of credit allowed for students who have taken Electrical and Computer Engineering 170.—I, II, III. (I, II, III.) Farrens

154B. Computer Architecture (4)

Lecture—3 hours; discussion—1 hour. Prerequisite: course 154A or Electrical and Computer Engineering 170; and course 110. Hardwired and microprogrammed CPU design. Memory hierarchies. Uniprocessor performance analysis under varying program mixes. Introduction to pipelining and multiprocessors. I, II, III. (I, II, III.) Farrens

155. Computer Security for Non-Majors (4)

Lecture—3 hours; discussion—1 hour. Prerequisite: programming skill at the level of course 30; Mathematics 21C. Principles, mechanisms, implementation, and sound practices of computer security and data protection. Cryptography. Authentication and access control. Internet security. Malicious software. Common vulnerabilities. Practical security in everyday life. Not open for credit to students who have completed course 153.—I. (I.) Chen, Bishop

156. Discrete-Event Simulation (4)

Lecture—3 hours; discussion—1 hour. Prerequisite: programming skill at the level of course 60; calculus-based course in probability theory, such as Statistics 120 or 130A or 131A or Mathematics 135A or Engineering Civil and Environmental 114. Design of discrete-event simulation software. Random number generators. Event, process and activity-scanning approaches. Data structures and algorithms for event lists. Statistical output analysis. Applications to computer systems and networks; reliable systems; transportation; business management.—I. (I.) Matloff

157. Computer Networks for Non-Majors (4)

Lecture—3 hours; discussion—1 hour. Prerequisite: programming skills on the level of course 30. Shorter version of course 152AB featuring World Wide Web and e-mail examples. Local and wide-area computer network structures. ISO seven-layer model. Network protocols for data transmission and internetworking. Introduction to basic TCP/IP and Web programming. No credit allowed to students who have completed courses 152A or 152B.—III. (III.) Ghosal, Liu, Matloff, Mohapatra, Mukherjee

158. Programming on Parallel Architectures (4)

Lecture—3 hours; discussion—1 hour. Prerequisite: course 150; course 154B recommended. Techniques for software development using the shared-memory and message-passing paradigms, on parallel architectures and networks of workstations. Locks, barriers, and other techniques for synchronization. Introduction to parallel algorithms.—III. (III.) Farrens, Ma, Matloff, Pandey

160. Introduction to Software Engineering (4)

Lecture—3 hours; discussion—1 hour. Prerequisite: course 140A. Requirements, specification, design, implementation, testing, and verification of large software systems. Study and use of software engineering methodologies. Team programming.—I, II, III. (I, II, III.) Levitt, Devanbu

163. Information Interfaces (4)

Lecture—3 hours; discussion—1 hour. Prerequisite: course 60; 175 recommended. Art and science of information visualization and interfaces for information systems. Design principles of human-computer interaction. Visual display and navigation of nonspatial and higher dimensional data. Implementations, performance issues, tradeoffs, and evaluation of interactive information systems.—III. (III.) Amenta, Ma

165A. Database Systems (4)

Lecture—3 hours; discussion—1 hour. Prerequisite: course 60. Database design, entity-relationship and relational model, relational algebra, query language SQL, storage and file structures, query processing, system architectures.—II. (II.) Gertz, Ludaescher

165B. Database Systems (4)

Lecture—3 hours; discussion—1 hour. Prerequisite: course 165A. Advanced database systems: object-oriented and object-relational database systems; distributed and multidatabase systems; advanced database applications: Web-based database access, data warehouses.—III. (III.) Gertz, Ludaescher

166. Scientific Data Management (4)

Lecture—3 hours; discussion—1 hour. Prerequisite: programming skills at course level 40; Mathematics 21C. Relational databases, SQL, non-standard databases, XML, scientific workflows, interoperability, data analysis tools, metadata.—I. (I.) Gertz, Ludaescher

170. Introduction to Artificial Intelligence (4)

Lecture—3 hours; discussion—1 hour. Prerequisite: course 140A. Design and implementation of intelligent computer systems. Knowledge representation and organization. Memory and inference. Problem solving. Natural language processing.—II. (II.) Davidson, Levitt

175. Computer Graphics (4)

Lecture—3 hours; discussion—1 hour. Prerequisite: course 60; Mathematics 22A. Principles of computer graphics. Current graphics hardware, elementary operations in two-and three-dimensional space, transformational geometry, clipping, graphics system design, standard graphics systems, individual projects.—I, II. (I, II.) Amenta, Hamann, Joy

177. Introduction to Visualization (4)

Lecture—3 hours; discussion—1 hour. Prerequisite: course 175. Graphics techniques for generating images of various types of measured or computer-simulated data. Typical applications for these graphics techniques include study of air flows around car bodies, medical data, and molecular structures.—II. (II.) Joy, Hamann, Ma

178. Introduction to Geometric Modeling (4)

Lecture—3 hours; discussion—1 hour. Prerequisite: course 175. Interactive graphics techniques for defining and manipulating geometrical shapes used in computer animation, car body design, aircraft design, and architectural design.—I. (I.) Joy, Hamann, Max

188. Ethics and the Information Age (3)

Seminar—3 hours. Prerequisite: upper division standing. Foundations of ethics. Views of technology. Technology and human values. Costs and benefits of technology. The character of technological change. The social context of work in computer science and engineering.—I, II, III. (I, II, III.) Chen, Devanbu, Mukherjee, Rogaway

189A-L. Special Topics in Computer Science (1-5)

Lecture, laboratory or combination. Prerequisite: consent of instructor. Special topics in (A) Computer Science Theory; (B) Architecture; (C) Programming Languages and Compilers; (D) Operating Systems; (E) Software Engineering; (F) Data Bases; (G) Artificial Intelligence; (H) Computer Graphics; (I) Networks; (J) Computer-Aided Design; (K) Scientific Computing; (L) Computer Science. May be repeated for credit when topic differs.—I, II, III. (I, II, III.)

190C. Research Group Conferences in Computer Science (1)

Discussion—1 hour. Prerequisite: upper division standing in Computer Science and Engineering; consent of instructor. Research group conferences. May be repeated for credit. (P/NP grading only.)—I, II, III. (I, II, III.)

190X. Senior Seminar (2)

Seminar—2 hours. Prerequisite: senior standing. Examination of a special topic in a small group setting.

192. Internship in Computer Science (1-5)

Internship. Prerequisite: completion of a minimum of 84 units; project approval prior to period of internship. Supervised work experience in computer science. May be repeated for credit. (P/NP grading only.)

197T. Tutoring in Computer Science (2-3)

Discussion—1 hour; laboratory/discussion—3-6 hours. Prerequisite: upper division standing, consent of instructor. Tutoring in computer science courses, especially introductory courses. (P/NP grading only.)

198. Directed Group Study (1-5)

Prerequisite: consent of instructor. (P/NP grading only.)

199. Special Study for Advanced Undergraduates (1-5)

(P/NP grading only.)

Graduate Courses

201A. Advanced Computer Architecture (4)

Lecture—3 hours; term paper. Prerequisite: course 154B or Electrical and Computer Engineering 170; course 150. Modern research topics and methods in computer architecture. Design implications of memory latency and bandwidth limitations. Performance enhancement via within-processor and between-processor parallelism. Term project involving student-proposed extensions/modifications of work in the research literature. Not open for credit to students who have completed course 250A.—I. Farrens

201B. High-Performance Uniprocessing (4)

Lecture—3 hours; term paper. Prerequisite: course 201A. Maximizing uniprocessor performance. Barriers to high performance; solutions to the problems; historical and current processor designs. Not open for credit to students who have completed course 250B.—II. Farrens

201C. Parallel Architectures (4)

Lecture—3 hours; project—1 hour. Prerequisite: course 201A. Evolution of parallel architectures from special-purpose machines to commodity servers. Emphasis on recent machines and applications that drive them. Not open for credit to students who have completed course 250C.—III.

203. Novel Computing Technologies (4)

Lecture—3 hours; project—1 hour. Prerequisite: course 201A. Novel computing technologies that could revolutionize computer architecture. Quantum computing technologies, including algorithms, devices, and fault tolerance. A survey of other unconventional technologies including nanoscale electronics, MEMS devices, biological devices, and nanotechnology. Offered in alternate years.—II.

220. Theory of Computation (4)

Lecture—3 hours; discussion—1 hour. Prerequisite: course 120, 122A. Time and space complexity classes. Reductions, completeness, and the role of randomness. Logic and undecidability.—III. Rogaway

222A. Design and Analysis of Algorithms (4)

Lecture—3 hours; discussion—1 hour. Prerequisite: course 122A; Statistics 131A recommended. Techniques for designing efficient algorithms, analyzing their complexity and applying these algorithms to a broad range of applications. Methods for recognizing and dealing with difficult problems.—I, II. (I, II.) Amenta, Franklin, Gusfield, Martel, Rogaway

222B. Advanced Design and Analysis of Algorithms (4)

Lecture—3 hours; project—1 hour. Prerequisite: course 222A. Advanced topics in complexity theory. Problem classification. The classes P, NP, P-space, co-NP. Matching and network flow algorithms. Matrix multiplication. Approximation algorithms.—III. (III.) Gusfield, Franklin, Martel, Rogaway

223. Parallel Algorithms (4)

Laboratory/discussion—3 hours; project—1 hour. Prerequisite: course 222A. Models of parallel computer systems including PRAMs, loosely coupled systems and interconnection networks. Parallel algorithms for classical problems and general techniques for their design and analysis. Proving lower bounds on parallel computation in several settings.—II. (II.) Martel

224. String Algorithms and Applications in Computational Biology (4)

Lecture—3 hours; discussion—1 hour. Prerequisite: course 122A. Algorithms that operate on strings. Pattern matching, sets of patterns, regular expression pattern matching, suffix trees and applications, inexact similarity, parametric sequence alignment, applications to DNA sequencing and protein database searching. Offered in alternate years—I, III.
Gusfield, Filkov

225. Graph Theory (3)

Lecture—3 hours. Prerequisite: graduate standing in electrical engineering or computer science or consent of instructor. Fundamental concepts. Vector spaces and graphs. Planar graphs: Whitney’s and Kuratowski’s theorems. Topological parameters: packings and coverings. Connectivity: Menger’s theorem. Hamilton graphs: Posa’s and Chvatal’s theorems. Graph factorization: Tutte’s theorem. Graph coloring: Brooks; and Vizing’s theorem.—II. (II.) Franklin

226. Computational Geometry (4)

Lecture—3 hours; discussion—1 hour. Prerequisite: course 175, 222A. Mathematics of unstructured data. Algorithms for data structures such as Voronoi diagrams, oct-trees, and arrangements. Applications in computer graphics, concentrating on problems in three-dimensions. Offered in alternate years.—III. Amenta, Max

227. Modern Cryptography (4)

Lecture—3 hours; discussion—1 hour. Prerequisite: course 220 or 222A. Modern cryptography as a discipline emphasizing formal definitions and proofs of security. One-way functions, pseudo-randomness, encryption, digital signatures, zero-knowledge, secure protocols.—II. (II.) Rogaway

228. Cryptography for E-Commerce (4)

Lecture—3 hours; discussion—1 hour. Prerequisite: course 222A. Cryptographic primitives and protocols of importance to e-commerce, present and future, including content distribution mechanisms, payment mechanisms, pricing mechanisms, anonymity and privacy mechanisms, fair exchange mechanisms. Offered in alternate years.—II. Franklin

229. Advanced Computational Structural Bioinformatics (4)

Lecture—3 hours; discussion—1 hour. Prerequisite: graduate standing. Algorithmic problems in structural biology; protein structure classification; protein structure prediction (including comparative modeling and ab initio protein structure prediction); molecular simulations (molecular dynamics and Monte Carlo simulations).—II. (II.) Koehl

230. Applied Numerical Linear Algebra (4)

Laboratory/discussion—3 hours; discussion—1 hour. Prerequisite: course 130 or Engineering Applied Science 209 or Mathematics 167. Numerical linear algebra (NLA) with emphasis on applications in engineered systems; matrix factorizations; perturbation and rounding error analyses of fundamental NLA algorithms. Offered in alternate years.—(I.) Bai

231. Large-Scale Scientific Computation (4)

Lecture—3 hours; discussion—1 hour. Prerequisite: course 130. Algorithms and techniques for large-scale scientific computation, including basics for high performance computing, iterative methods, discrete approximation, fast Fourier transform, Poisson solvers, particle methods, spectral graph partition and its applications. Offered in alternate years.—II. Bai

234. Computational Functional Genomics (4)

Lecture—3 hours; discussion—1 hour. Prerequisite: course 124; graduate standing in Computer Science or Life Sciences. Bioinformatics methods for analysis and inference of functional relationships among genes using large-scale genomic data, including methods for integration of gene expression, promoter sequence, TF-DNA binding and other data, and approaches in modeling of biological networks.—II. (II.) Filkov

235A. Computer and Information Security (4)

Lecture—3 hours; project. Prerequisite: course 150; course 152A recommended. Modern topics in computer security, including: protection, access control, operating systems security, network security, applied cryptography, cryptographic protocols, secure programming practices, safe languages, mobile code, malware, privacy and anonymity, and case studies from real-world systems. Not open for credit to students who have taken course 235.—I. (I.) Chen

235B. Foundations of Computer and Information Security (4)

Lecture—3 hours; project. Prerequisite: course 235A; courses 120, 150 recommended. Theoretical foundations of methods used to protect data in computer and communication systems. Access control matrix and undecidability of security; policies; Bell-LaPadula, Biba, Chinese Wall models; non-interference and non-deducibility; information flow and the confinement problem. Not open for credit to students who have taken course 235.—II. (II.) Bishop

236. Computer Security: Intrusion Detection Based Approach (4)

Lecture—3 hours; discussion—1 hour. Prerequisite: course 150; course 153 recommended. Concepts of intrusion detection, anomaly detection based on machine learning, signature-based detection using pattern matching, automated response to attacks using artificial intelligence planning, tracing intruders based on principal component analysis, security policy languages. Offered in alternate years.—I. Levitt

240. Programming Languages (4)

Lecture—3 hours; discussion—1 hour. Prerequisites: courses 140A, 142. Advanced topics in programming languages, including formal syntax and semantics, the relation between formal semantics and verification, an introduction to the lambda calculus. Additional topics will include language design principles, alternative programming languages, in-depth semantic theory and models of language implementation.—II. (II.) Pandey

242. Translation of Programming Languages (4)

Lecture—3 hours; laboratory—3 hours. Prerequisite: course 240. Lexical analysis, parsing, storage management, symbol table design, semantic analysis and code generation. LR, LALR grammars. Compiler-compilers.—III. (III.) Pandey

243. Code Generation and Optimization (4)

Lecture—3 hours; discussion—1 hour. Prerequisite: course 201A or Engineering Electrical and Computer 270. Compiler optimizations for performance, code size and power reduction. Topics include control- and data-flow analysis, redundancy elimination, loop and cache optimizations, register allocation, local and global instruction scheduling, and modulo scheduling.—II. (II.) Wilken

244. Principles of Concurrent Programming (4)

Lecture—3 hours; laboratory—3 hours. Prerequisite: courses 20, 150. Fundamental concepts and applications of concurrent programs; concurrent program verification and derivation; synchronization mechanisms in programming languages; distributed programming techniques; case studies of languages.—I. (I.) Olsson, Pandey, Su

247. Concurrent Programming Languages (4)

Lecture—3 hours; laboratory—3 hours. Prerequisite: course 140A, 150. Language design parameters. Models of parallel machines. Load balancing. Scalability. Portability. Efficiency measures. Design and implementation techniques for several classes of concurrent programming languages (such as object-oriented, functional, logic, and constraint programming languages).—I. (I.) Pandey, Olsson, Su

251. Operating Systems (4)

Lecture—3 hours; discussion—1 hour. Prerequisite: course 150. Models, design, implementation, performance evaluation in operating systems. Algorithms, internal architectures for single processor OS and distributed systems. Concurrency control, recovery, security. OS kernel-level programming. Special topics embedded systems, real-time system, device driver, NPU (Network Processor Unit).—III. (III.)
Pandey, Wu

252. Computer Networks (4)

Lecture—3 hours; laboratory—3 hours. Prerequisite: course 152B. Internet protocol based computer networks applications, transport, network layer protocols. High speed LAN technologies: Ethernet, Asynchronous Transfer Mode (ATM). Delay models in data networks: analysis of multiaccess techniques in polling, ring, random access networks. Multimedia applications requirements and design.—II. Mukherjee, Mohapatra, Ghosal

256. Performance Evaluation (4)

Lecture—3 hours; project—1 hour. Prerequisite: courses 20, 152A, 154A-154B or Electrical and Computer Engineering 170, Statistics 131A; course 150 recommended. Use of simulation and queueing theory in computer and communication system design. Applications to processor scheduling, memory hierarchies; I/O systems; packet and circuit switched networks; fault-tolerance; computer networks applications. Not open for credit to students who have completed course 256A.—I, II. (I, II.) Matloff, Ghosal, Mohapatra, Mukherjee

257. Mobile and Wireless Networks (4)

Lecture—3 hours; independent study. Prerequisite: course 252. Fundamental techniques in design of second generation wireless networks: cellular network and protocols, medium access techniques, handoff control, signaling and mobility management, wireless data works, Internet mobility and Personal Communication Services (PCS). Third generation wideband systems, novel technologies, adhoc networks. Offered in alternate years.—I. Ghosal, Mohapatra, Mukherjee

258. Internet Quality of Service (4)

Lecture—3 hours; independent study. Prerequisite: course 252. Fundamentals of Internet technology, resource management issues in the Internet, techniques for supporting quality of service in the Internet and Internet servers, traffic engineering, future research issues. Offered in alternate years.—(III.) Mohapatra, Ghosal

259. Optical Networks (4)

Lecture—3 hours; independent study. Prerequisite: course 252. Optical networks. Enabling technologies. Multiplexing techniques. WDM. Broadcast networks. Wavelength-routed networks. Network architectures. Protocols. Network algorithms. Device-network interface. Optimization problems.—I. (I,) Mukherjee, Ghosal

260. Software Engineering (4)

Lecture—3 hours; project. Prerequisite: course 142; course 160 recommended. Advanced techniques for domain-specific software reuse.—I. (I.) Devanbu

261. Program Verification (4)

Lecture—3 hours; discussion—1 hour. Prerequisite: Mathematics 125 or Philosophy 112 or familiarity with first-order logic; knowledge of an iterative and functional programming language. Methods of proving correctness of programs with respect to formal specifications, with attention to those suited for employing automated deduction. Logic background, symbolic execution, techniques suited to iterative programming, methods from denotational semantics, termination, dynamic logic and proofs of concurrent programs.—I. (I.) Levitt

262. Formal Specification (3)

Lecture—3 hours. Prerequisite: course 261. Formal specification of modules, and its relationship to top-down programming development and verification. Abstract data types, together with methods for specifying them. Implementations and proofs of implementation. Using specifications to reason about programs. Parameterized types. Constructing good formal specifications. Offered in alternate years.—II. Levitt

265. Distributed Database Systems (4)

Lecture—3 hours; discussion—1 hour. Prerequisite: course 165A. Concepts of distributed database systems and architectures, distributed database design, distributed query processing and optimization, transaction management and concurrency control, heterogeneous and multidatabase systems.—I, III. (III.) Gertz, Ludaescher

266. Spatial Databases (4)

Lecture—3 hours; discussion—1 hour. Prerequisite: course 165A. Concepts, models, and architectures for spatial databases, spatial access methods, query processing, spatio-temporal data management, moving objects, spatial data mining. Offered in alternate years.—(II.) Gertz, Ludaescher

267. Wide-Area Distributed Information Systems (4)

Lecture—3 hours; discussion—1 hour. Prerequisite: course 152B or 165A. Wide-area distributed information systems, data broadcast, multicast, publish/subscribe, service differentiation, information retrieval, Web caching. Offered in alternate years.—III. Askoy

268. Scientific Data And Workflow Management (4)

Lecture—3 hours; discussion—1 hour. Prerequisite: course 165A. Scientific data integration, metadata, knowledge representation, ontologies, scientific workflow design and management. Offered in alternate years.—(II.) Gertz, Ludaescher

270. Artificial Intelligence (3)

Lecture—3 hours. Prerequisite: courses 140A, 172. Concepts and techniques underlying the design and implementation of models of human performance on intelligent tasks. Representation of high-level knowledge structures. Models of memory and inference. Natural language and story understanding. Common sense planning and problem solving.—II. (II.) Davidson, Levitt

271. Machine Learning and Discovery (4)

Lecture—3 hours; project—1 hour. Prerequisite: course 170. Artificial intelligence techniques for knowledge acquisition by computers. Fundamental problems in machine learning and discovery. Systems that learn from examples, analogies, and solved problems. Systems that discover numerical laws and qualitative relationships. Projects centering on implementation and evaluation.—III. Levitt, Vemuri

272. Information Visualization (4)

Lecture—3 hours; laboratory—3 hours. Prerequisite: course 163 or 175 recommended. Advanced topics in information visualization: perceptually effective display methods, color design and selection, interaction models and techniques, focus-context techniques, distortion methods, large graph visualization techniques, visual data mining methods, and evaluation methods.—II. (II.) Ma

273. Applied Visual Computing (4)

Lecture—3 hours; laboratory—3 hours. Prerequisite: graduate standing. Visual computing paradigms, current visualization technologies, principles of 3-D graphics, user interface designs, and exploratory visualization. Offered in alternate years.—I. Hamann, Joy, Ma, Max

274. Automated Deduction (4)

Lecture—3 hours; discussion—1 hour. Prerequisite: Mathematics 125 or Philosophy 112 or familiarity with first-order logic. Techniques of mechanical theorem proving. Methods based on resolution and term-rewriting. Decision procedures. Induction. Applications to program verification, question/answering and plan generation. Study existing mechanical theorem provers. Offered in alternate years.—III. Levitt

275A. Advanced Computer Graphics (4)

Lecture—3 hours; laboratory—3 hours. Prerequisite: course 175 or 177 or 178. Advanced topics in computer graphics. Hidden surface models, rendering of various surface types, subdivision methods, shading techniques, anti-aliasing, modeling techniques.—II. (II.) Joy, Hamann, Ma

275B. Advanced Computer Graphics (4)

Lecture—3 hours; laboratory—3 hours. Prerequisite: course 175 or 177 or 178. Advanced topics in computer graphics and geometric modeling. Topics taken from advanced research papers in computer graphics, image synthesis, visualization and geometric modeling. Discussion of current research in the field. Offered in alternate years.—(II.) Joy, Hamann, Ma

276. Advanced Volume Visualization (4)

Lecture—3 hours; discussion—1 hour. Prerequisite: course 177. Applications, available tools and techniques, the challenges confronting the field of volume visualization, and some of the advanced topics in the field. Primary emphasis on advanced software and hardware techniques to achieve interactive visualization.—III. (III.) Hamann, Joy, Ma, Max

277. Advanced Visualization (4)

Lecture—3 hours; discussion—1 hour. Prerequisite: course 177. Visualization of 3D data, including scalar fields, vector fields, and medical data.—III. (III.) Hamann, Joy

278. Computer-Aided Geometric Design (4)

Lecture—3 hours; laboratory—3 hours. Prerequisite: course 175 or 177 or 178. Mathematical techniques for the definition and manipulation of curves and surfaces. Coon’s patches, Bezier curves and surfaces. B-spline curves and surfaces, beta-splines, box-splines. Integration into various computer graphics rendering models, and computer-aided design systems. Offered in alternate years.—(III.) Joy, Hamann

279. Computer Animation (4)

Lecture—3 hours; laboratory—3 hours. Prerequisite: course 175 or 177 or 178. Control of camera and object motion necessary to produce computer animation, modeling of articulated objects made from jointed segments, and of deformable objects. Students will complete a final animation project. Offered in alternate years.—III. Hamann, Joy, Max, Ma

280. Virtual Reality Technology (4)

Lecture—3 hours; discussion—1 hour. Prerequisite: course 175. Fundamentals and principles of Virtual Reality (VR) technology. Potential and limits for its useful application. Developing a complete virtual reality application. Offered in alternate years.—III. Joy

289A-M. Special Topics in Computer Science (1-5)

Lecture, laboratory, or combination. Prerequisite: consent of instructor. Special topics in (A) Computer Science Theory; (B) Architecture; (C) Programming Languages and Compilers; (D) Operating Systems; (E) Software Engineering; (F) Data Bases; (G) Artificial Intelligence; (H) Computer Graphics; (I) Networks; (J) Computer-Aided Design; (K) Scientific Computing; (L) Computer Science; (M) Security. May be repeated for credit when topic differs.—I, II, III. (I, II, III.)

290. Seminar in Computer Science (1)

Seminar—1 hour. Participating seminar; discussion and presentation of current research and development in computer science. (S/U grading only.)—I, II, III. (I, II, III.)

290C. Graduate Research Group Conference (1)

Discussion—1 hour. Research problems, progress and techniques in computer science. May be repeated for credit. (S/U grading only.)—I, II, III. (I, II, III.)

293A. Research in Computer Science (1)

Lecture—1 hour. Prerequisite: graduate standing in computer science. Study of research topics in computer science, Ph.D. level research methodologies (experimental, applied and theoretical). Study skills necessary to successfully find/solve significant research problems. Finding and successful interacting with a research advisor. Ethical issues in research/collaborative work. (S/U grading only.)—I. (I.) Martel

293B. Research in Computer Science (1)

Lecture—1 hour. Prerequisite: graduate standing in computer science; course 293A recommended. Study of Ph.D. level research methodologies (experimental, applied and theoretical), presenting research results for the computer science community. Study skills necessary to successfully find/solve significant research problems. (S/U grading only.)—II. (II.) Martel

298. Group Study (1-5)

Lecture, laboratory, or combination. Prerequisite: consent of instructor. (S/U grading only.)

299. Research (1-12)

(S/U grading only.)

Professional Courses

315. Teaching Computer Science (3)

Lecture—2 hours; discussion/laboratory—1 hour. Prerequisite: course 110. Fundamentals of instructional methodology applied to teaching computer science, especially at the introductory level. Behavioral objectives, testing methods, course design, evaluation, technology in instruction.—I. (I.)

390. The Teaching of Computer Science (1)

Discussion—1 hour. Prerequisite: meet qualifications for teaching assistant and/or associate-in in Computer Science. Participation as a teaching assistant or associate-in in a designated engineering course. Methods of leading discussion groups or laboratory sections, writing and grading quizzes, use of laboratory equipment, and grading laboratory reports. May be repeated for credit. (S/U grading only.)—I, II, III. (I, II, III.)

396. Teaching Assistant Training Practicum (1-4)

Prerequisite: graduate standing. May be repeated for credit. (S/U grading only.)

Page content manager can be reached at Catalog-Comment@ucdavis.edu.

Updated: August 6, 2008 2:23 PM