UC Santa Barbara General CatalogUniversity of California, Santa Barbara

Computer Science - Engineering

Department of Computer Science, Harold Frank Hall, Room 2104;
Telephone (805) 893-4321
Web site: www.cs.ucsb.edu
Chair: Subhash Suri
Vice Chair: Elizabeth Belding


 

Some courses displayed may not be offered every year.
For actual course offerings by quarter, please consult the Schedule of Classes - Class Search or GOLD (for current students).

Computer Science
 (
Show All
 | 
Hide All
)
Collapse Courses Lower DivisionĀ 
CMPSC 1. Seminar on the Field of Computer Science
(1) FRANKLIN
Overviews the potential of, and opportunities available from, the field of computer science. Topics include an overview of how computers work and the interesting ways in which computers can be applied to solve important and high-impact technological, social, and cutting-edge research problems.
CMPSC 8. Introduction to Computer Science
(4) CONRAD, FRANKLIN
Enrollment Comments: Not open for credit to students who have completed Computer Science 16 or Engineering 3.
Repeat Comments: Legal repeat for CMPSC 5AA-ZZ.
Introduction to computer program development for students with little to no programming experience. Basic programming concepts, variables and expressions, data and control structures, algorithms, debugging, program design, and documentation.
CMPSC 11AAZZ. Programming Language Laboratory
(1) STAFF
Prerequisite: Knowledge of at least one programming language.
Enrollment Comments: Different sections may be repeated. Sections not always offered.
A self-paced course to allow a student who already possesses a working knowledge of at least one programming language an opportunity to learn other languages of interest. Each section studies a different programming language.
CMPSC 11AD. Programming Language Laboratory: ADA
CMPSC 11AP. Programming Language Laboratory: APL
CMPSC 11C. Programming Language Laboratory
CMPSC 11CO. Programming Language Laboratory: COBOL
CMPSC 11FO. Programming Language Laboratory: Fortran
CMPSC 11JA. Programming Language Laboratory
CMPSC 11LI. Programming Language Laboratory: LISP
CMPSC 11PA. Programming Language Laboratory: Pascal
CMPSC 11PL. Programming Language Laboratory: PL/1
CMPSC 11SN. Programming Language Laboratory: SNOBOL
CMPSC 16. Problem Solving with Computers I
(4) CONRAD, KRINTZ
Prerequisite: Mathematics 3A with a grade of C or better (may be taken concurrently)
Recommended Preparation: Students with no experience with computer programming are encouraged to take Computer Science 8 before Computer Science 16.
Repeat Comments: Legal repeat of CMPSC 10.
Fundamental building blocks for solving problems using computers. Topics include basic computer organization and programming constructs: memory CPU, binary arithmetic, variables, expressions, statements, conditionals, iteration, functions, parameters, recursion, primitive and composite data types, and basic operating system and debugging tools.
CMPSC 24. Problem Solving with Computers II
(4) FRANKLIN, COSTANZO
Prerequisite: Computer Science 16 with a grade of C or better; and Mathematics 3B with a grade of C or better (may be taken concurrently).
Enrollment Comments: Not open for credit to students who have completed Computer Science 20.
Intermediate building blocks for solving problems using computers. Topics include data structures, object-oriented design and development, algorithms for manipulating these data structures and their runtime analyses. Data structures introduced include stacks, queues, lists, trees, and sets.
CMPSC 32. Object Oriented Design and Implementation
(4) HOLLERER
Prerequisite: Computer Science 24 with a grade of C or better
Repeat Comments: Computer Science 32 is a legal repeat for Computer Science 60
Advanced topics in object-oriented computing. Topics include encapsulation, data hiding, inheritance, polymorphism, compilation, linking and loading, memory management, and debugging; recent advances in design and development tools, practices, libraries, and operating system support.
CMPSC 40. Foundations of Computer Science
(4) SU, VAN DAM
Prerequisite: Computer Science 16 with a grade of C or better and Mathematics 4A with a grade of C or better.
Introduction to the theoretical underpinnings of computer science. Topics include propositional predicate logic, set theory, functions and relations, counting, mathematical induction and recursion (generating functions).
CMPSC 48. Computer Science Project
(4) CAPPELLO
Prerequisite: Computer Science 32 with a grade of C or better
Team-based project development. Topics include software engineering and professional development practices, interface design, advanced library support; techniques for team-oriented design and development, testing and test-driven development, and software reliability and robustness. Students present and demonstrate final projects.
CMPSC 56. Advanced Applications Programming
(4) CONRAD
Prerequisite: Computer Science 24 with a grade of C or better
Recommended Preparation: Students are encouraged to complete Computer Science 32 prior to enrolling in Computer Science 56.
Enrollment Comments: Not open for credit to students who have completed Computer Science 20.
Advanced application programming using a high-level, virtual-machine-based language. Topics include generic programming, exception handling, programming language implementation; automatic memory management, and application development, management, and maintenance tools; event handling, concurrency and threading, and advanced library use.
CMPSC 64. Computer Organization and Logic Design
(4) ZHENG, FRANKLIN
Prerequisite: Computer Science 16 with a grade of C or better; and Mathematics 3C or 4A with a grade of C or better.
Enrollment Comments: Not open for credit to students who have completed ECE 15 or ECE 15B or Computer Science 30.
Repeat Comments: Course counts as a legal repeat of CMPSC 30.
Assembly language programming and advanced computer organization; Digital logic design topics including gates, combinational circuits, flip-flops, and the design and analysis of sequential circuits.
CMPSC 99. Independent Studies in Computer Science
(1-4) STAFF
Enrollment Comments: Must have a minimum 3.0 grade point average. May be repeated. Students are limited to 5 units per quarter and 30 units total in all 99/198/199 courses combined.
Independent studies in computer science for advanced students.
Collapse Courses Upper DivisionĀ 
CMPSC 111. Introduction to Computational Science
(4) PETZOLD
Prerequisite: Mathematics 5A or 4B with a grade of C or better; Mathematics 5B or 6A with a grade of C or better; Computer Science 24 with a grade of C or better.
Enrollment Comments: Not open for credit to students who have completed Computer Science 110A.
Introduction to computational science, emphasizing basic numerical algorithms and the informed use of mathematical software. Matrix computation, systems of linear and nonlinear equations, interpolation and zero finding, differential equations, numerical integration. Students learn and use the Matlab language.
CMPSC 130A. Data Structures and Algorithms I
(4) GONZALEZ
Prerequisite: Computer Science 40 with a grade of C or better; Computer Science 32 with a grade of C or better; PSTAT 120A or ECE 139; open to computer science, computer engineering, and electrical engineering majors only.
The study of data structures and their applications. Correctness proofs and techniques for the design of correct programs. Internal and external searching. Hashing and height balanced trees. Analysis of sorting algorithms. Memory management. Graph traversal techniques and their applications.
CMPSC 130B. Data Structures and Algorithms II
(4) GONZALEZ, SURI
Prerequisite: Computer Science 130A.
Design and analysis of computer algorithms. Correctness proofs and solution of recurrance relations. Design techniques; divide and conquer, greedy strategies, dynamic programming, branch and bound, backtracking, and local search. Applications of techniques to problems from several disciplines. NP - completeness.
CMPSC 138. Automata and Formal Languages
(4) EGECIOGLU
Prerequisite: Computer Science 40 with a grade of C or better; open to computer science and computer engineering majors only.
Enrollment Comments: Not open for credit to students who have completed Computer Science 136.
Formal languages; finite automata and regular expressions; properties of regular languages; pushdown automata and context-free grammars; properties of context-free languages; introduction to computability and unsolvability. Introduction to Turing machines and computational complexity.
CMPSC 140. Parallel Scientific Computing
(4) GILBERT
Prerequisite: Mathematics 4B or 5A with a grade of C or better; Mathematics 6A or 5B with a grade of C or better; Computer Science 130A.
Enrollment Comments: Not open for credit to students who have completed Computer Science 110B.
Fundamentals of high performance computing and parallel algorithm design for numerical computation. Topics include parallel architectures and clusters, parallel programming with message-passing libraries and threads, program parallelization methodologies, parallel performance evaluation and optimization, parallel numerical algorithms and applications with different performance tradeoffs.
CMPSC 153A. Hardware/Software Interface
(4) BREWER, KRINTZ
Prerequisite: Upper division standing in Computer Science, Computer Engineering or Electrical Engineering.
Enrollment Comments: Same course as ECE 153A.
Issues in interfacing computing systems and software to practical I/O interfaces. Rapid response, real-time events and management of tasks, threads, and scheduling required for efficient design of embedded software and systems is discussed. Techniques for highly constrained systems.
CMPSC 154. Computer Architecture
(4) CHONG, SHERWOOD
Prerequisite: ECE 152A.
Enrollment Comments: Not open for credit to students who have received credit for ECE 154, ECE 154A or ECE 154B.
Introduction to the architecture of computer systems. Topics include: central processing units, memory systems, channels and controllers, peripheral devices, interrupt systems, software versus hardware tradeoffs.
CMPSC 160. Translation of Programming Languages
(4) SHERWOOD
Prerequisite: Computer Science 64 or Electrical Engineering 154; Computer Science 130A; and Computer Science 138; open to computer science and computer engineering majors only.
Study of the structure of compilers. Topics include: lexical analysis; syntax analysis including LL and LR parsers; type checking; run-time environments; intermediate code generation; and compiler-construction tools.
CMPSC 162. Programming Languages
(4) KRINTZ, HARDEKOPF
Prerequisite: Computer Science 130A and 138; open to computer science and computer engineering majors only.
Concepts of programming languages: scopes, parameter passing, storage management; control flow, exception handling; encapsulation and modularization mechanisms; reusability through genericity and inheritance; type systems; programming paradigms (imperative, object-oriented, functional, and others). Emerging programming languages and their development infrastructures.
CMPSC 165A. Artificial Intelligence
(4) TURK
Prerequisite: Computer Science 130A
Introduction to the field of artificial intelligence, which seeks to understand and build intelligent computational systems. Topics include intelligent agents, problem solving and heuristic search, knowledge representation and reasoning, uncertainty, probabilistic reasoning, and applications of AI.
CMPSC 165B. Machine Learning
(4) SINGH
Prerequisite: Computer Science 130A.
Covers the most important techniques of machine learning (ML) and includes discussions of: well-posed learning problems; artificial neural networks; concept learning and general to specific ordering; decision tree learning; genetic algorithms; Bayesian learning; analytical learning; and others.
CMPSC 167. Introduction to Bioinformatics
(4) SINGH
Prerequisite: Computer Science 130B.
Enrollment Comments: Not open to students who have completed Computer Science 190N.
Review of the fundamentals of molecular biology and genetics; pairwise sequence alignment: dynamic programming, database searching; multiple sequence alignment; microarray data analysis; protein structure alignment; phylogeny construction: distance and character based methods; other current topics.
CMPSC 170. Operating Systems
(4) KRUEGEL, ZHAO
Prerequisite: Computer Science 130A; and, Computer Science 154 or ECE 154A (may be taken concurrently); open to computer science, computer engineering or electrical engineering majors only.
Basic concepts of operating systems. The notion of a process; interprocess communication and synchronization; input-output, file systems, memory management.
CMPSC 171. Distributed Systems
(4) EL ABBADI
Prerequisite: Computer Science 170.
Enrollment Comments: Not open for credit to students who have completed ECE 151.
Distributed systems architecture, distributed programming, network of computers, message passing, remote procedure calls, group communication, naming and membership problems, asynchrony, logical time, consistency, fault-tolerance, and recovery.
CMPSC 172. Software Engineering
(4) BULTAN
Prerequisite: Computer Science 130A. Open to computer science majors only or by consent odepartment.
Recommended Preparation: Computer Science 130B.
Enrollment Comments: Not open for credit to students enrolled in or who have completed CMPSC 189A.
Software engineering is concerned with long-term, large-scale programming projects. Software management, cost estimates, problem specification and analysis, system design techniques, system testing and performance evaluation, and system maintenance. Students will design, manage, and implement a medium-sized project.
CMPSC 174A. Fundamentals of Database Systems
(4) SU
Prerequisite: Computer Science 130A.
Recommended Preparation: Students are strongly encouraged to complete Computer Science 56 prior to enrolling in Computer Science 174A
Database system architectures, relational data model, relational algebra, relational calculus, SQL, QBE, query processing, integrity constraints (key constraints, referential integrity), database design, ER and object- oriented data model, functional dependence, lossless join and dependency preserving decompositions, Boyce-Codd and Third Normal Forms.
CMPSC 174B. Design and Implementation Techniques of Database Systems
(4) SU, YAN
Prerequisite: Computer Science 130B.
Recommended Preparation: Students are strongly encouraged to complete Computer Science 56 prior to enrolling in Computer Science 174B
Queries and processing, optimizer, cost models, execution plans, rewriting rules, access methods, spatial indexing; transactions, ACID properties, concurrency control, serializability, two-phase locking, timestamping, logging,checkpointing, transaction abort and commit, crash recovery; distributed databases.
CMPSC 176A. Introduction to Computer Communication Networks
(4) ALMEROTH, BELDING
Prerequisite: CMPSC 32 with a grade of C or better; PSTAT 120A or ECE 139; open to computer science, electrical engineering, and computer engineering majors only.
Recommended Preparation: PSTAT 120B.
Enrollment Comments: Not open for credit to students who have completed Computer Science 176 or ECE 155 or ECE 155A.
Basic concepts in networking, the OSI model, error detection codes, flow control, routing, medium access control, and high-speed networks.
CMPSC 176B. Network Computing
(4) VIGNA, ZHAO
Prerequisite: Computer Science 176A.
Enrollment Comments: Not open for credit to students who have completed ECE 155B or 194W.
Focus on networking and web technologies used in the Internet. The class covers socket programming and web-based techniques that are used to build distributed applications.
CMPSC 176C. Advanced Topics in Internet Computing
(4) BELDING, ZHENG
Prerequisite: Computer Science 176B.
General overview of wireless and mobile networking, multimedia, security, multicast, quality of service, IPv6, and web caching. During the second half of the course, one or more of the above are studied in greater detail.
CMPSC 177. Computer Security
(4) KEMMERER
Prerequisite: Computer Science 170 (may be taken concurrently).
Introduction to the basics of computer security and privacy. Analysis of technical difficulties of producing secure computer information systems that provide guaranteed controlled sharing. Examination and critique of current systems, methods, certification.
CMPSC 178. Introduction to Cryptography
(4) EGECIOGLU
Prerequisite: Computer Science 24 with a grade of C or better; Computer Science 40 with a grade of C or better; and PSTAT 120A or 121A or ECE 139 or permission of instructor.
An introduction to the basic concepts and techniques of cryptography and cryptanalysis. Topics include: The Shannon Theory, classical systems, the enigma machine, the data encryption standard, public key systems, digital signatures, file security.
CMPSC 180. Computer Graphics
(4) WANG
Prerequisite: Computer Science 130A or consent of instructor.
Overview of OpenGL graphics standard, OpenGL state machine, other 3D graphics libraries, 3D graphics pipeline, 3D transformations and clipping, color model, shading model, shadow algorithms, texturing, curves and curved surfaces, graphics hardware, interaction devices and techniques
CMPSC 181B. Introduction to Computer Vision
(4) TURK, WANG
Prerequisite: Upper-division standing.
Enrollment Comments: Same course as ECE 181B.
Overview of computer vision problems and techniques for analyzing the content of images and video. Topics include image formation, edge detection, image segmentation, pattern recognition, texture analysis, optical flow, stereo vision, shape representation and recovery techniques, issues in object recognition, and case studies of practical vision systems.
CMPSC 182. Multimedia Computing
(4) ALMEROTH, ZHENG
Enrollment Comments: Not open for credit to students who have completed ECE 160.
Introduction to multimedia and applications. Topics include streaming media, conferencing, webcasting, digital libraries, multimedia system architectures, standards (including JPEG and MPEG), and multimedia storage and retrieval. A key emphasis is on using the internet for delivery of multimedia data. (First offered 2003-2004)
CMPSC 185. Human-Computer Interaction
(4) HOLLERER
Prerequisite: Upper division standing; Open to computer science, computer engineering, and electrical engineering majors.
Recommended Preparation: Students are strongly encouraged to complete Computer Science 56 prior to enrolling in Computer Science 185. Proficiency in the Java/C++ programming language, some experience with user interface programming.
The study of human-computer interaction enables system architects to design useful, efficient, and enjoyable computer interfaces. This course teaches the theory, design guidelines, programming practices, and evaluation procedures behind effective human interaction with computers.
CMPSC 186. Theory of Computation
(4) IBARRA
Prerequisite: Computer Science 138. Open to computer science majors only or consent of department.
Enrollment Comments: Not open for credit to students who have completed Mathematics 150A.
Turing machines; computability and unsolvability; computational complexity; intractability and np-completeness.
CMPSC 189A. Senior Computer Systems Project
(4) BULTAN
Prerequisite: Senior standing in computer engineering, computer science, or electrical engineering; consent of instructor.
Enrollment Comments: Not open for credit to students who have completed CMPSC 172 or ECE 189A.
Student groups design a significant computer-based project. Multiple groups may cooperate toward one large project. Each group works independently; interaction among groups is via interface specifications and informal meetings. Project for follow-up course may be different.
CMPSC 189B. Senior Computer Systems Project
(4) BULTAN
Prerequisite: CMPSC 172 or CMPSC 189A; Senior standing in computer engineering, computer science, or electrical engineering; consent of instructor.
Enrollment Comments: Not open for credit to students who have completed ECE 189A or ECE 189B.
Student groups design a significant computer-based project. Multiple groups may cooperate toward one large project. Each group works independently; interaction among groups is via interface specifications and informal meetings. Project for course may be different from that in first course.
CMPSC 190AAZZ. Special Topics in Computer Science
(4) STAFF
Prerequisite: Consent of instructor.
Enrollment Comments: May be repeated with consent of department chair.
Provides for the study of topics of current interest in computer science: A. Foundations; B. Software Systems; C. Programming Languages and Software Engineering; D. Information Management; E. Architecture; F. Networking; G. Security; H. Scientific Computing; I. Intelligent and Interactive Systems; N. General.
CMPSC 190A. Special Topics in Computer Science: Foundations
CMPSC 190B. Special Topics in Computer Science: Software Systems
CMPSC 190C. Special Topics in Computer Science: Programming Languages and Software Engineering
CMPSC 190D. Special Topics in Computer Science: Information Management
CMPSC 190E. Special Topics in Computer Science: Architectures
CMPSC 190F. Special Topics in Computer Science: Networking
CMPSC 190G. Special Topics in Computer Science: Security
CMPSC 190H. Special Topics in Computer Science: Scientific Computing
CMPSC 190I. Special Topics in Computer Science: Intelligent and Interactive Systems
CMPSC 190J. Special Topics in Computer Science: General
CMPSC 190K. Special Topics in Computer Science: Computer Systems Modeling and Analysis
CMPSC 190N. Special Topics in Computer Science: General
CMPSC 192. Projects in Computer Science
(4) STAFF
Prerequisite: Consent of instructor.
Enrollment Comments: May be repeated to a maximum of 8 units with consent of department chair. Students must have a minimum 3.0 GPA.
Projects in computer science for advanced undergraduate students.
CMPSC 193. Internship in Industry
(1-4) STAFF
Prerequisite: Consent of instructor and department chair.
Enrollment Comments: Not more than 4 units per quarter; may not be applied to science electives. May be repeated with faculty/chair approval to a maximum of 4 units.
Special projects for selected students. Offered in conjunction with selected industrial and research firms and under direct faculty supervision. Written proposal and final report required.
CMPSC 196. Undergraduate Research
(2-4) STAFF
Prerequisite: Students must: (1) have attained upper-division standing (2) have a minimum3.0 grade-point average for preceding three quarters, (3) have consent of instructor.
Enrollment Comments: May be repeated for up to 12 units. No more than 4 units may be applied to departmental electives.
Research opportunities for undergraduate students. Students will be expected to giveregular oral presentations, actively participate in a weekly seminar, and prepare at least one written report on their research.
CMPSC 199. Independent Studies in Computer Science
(1-5) STAFF
Prerequisite: Upper-division standing; students must have completed at least two upper- division courses in computer science. May be repeated with consent of chair.
Enrollment Comments: Students are limited to five units per quarter and 30 units total in all 198/199 courses combined. Students must have a minimum 3.0 GPA for the preceding three quarters. May not be used for credit towards the major.
Independent studies in computer science for advanced students.
Collapse Courses GraduateĀ 
CMPSC 209. Logic and Applications in Computer Science
(4) SU
Propositional logic, first order logic, completeness, compactness, incompleteness, undecidability; selected topics from finite model theory, theorem proving, logic programming, program verification, databases, computational complexity.
CMPSC 211A. Matrix Analysis and Computation
(4) STAFF,
Prerequisite: Consent of instructor.
Enrollment Comments: Students should be proficient in basic numerical methods, linear algebra, mathematically rigorous proofs, and some programming language. Same course as ECE 210A, ME 210A, Mathematics 206A, Chemical Engineering 211A, and Geology 251A.
Graduate level-matrix theory with introduction to matrix computations. SVD's, pseudoinverses, variational characterization of eigenvalues, perturbation theory, direct and iterative methods for matrix computations.
CMPSC 211B. Numerical Simulation
(4) PETZOLD
Prerequisite: Consent of instructor.
Enrollment Comments: Students should be proficient in basic numerical methods, linear algebra, mathematically rigorous proofs, and some programming language. Same course as ECE 210B, ME 210B, Mathematics 206B, Chemical Engineering 211B, and Geology 251B.
Linear multistep methods and Runge-Kutta methods for ordinary differential equations: stability, order and convergence. Stiffness. Differential algebraic equations. Numerical solution of boundary value problems.
CMPSC 211C. Numerical Solution of Partial Differential Equations--Finite Difference Methods
(4) STAFF,
Prerequisite: Consent of instructor.
Enrollment Comments: Students should be proficient in basic numerical methods, linear algebra, mathematically rigorous proofs, and some programming language. Same course as ECE 210C, ME 210C, Mathematics 206C, Chemical Engineering 211C, and Geology 251C.
Finite difference methods for hyperbolic, parabolic and elliptic PDE's, with application to problems in science and engineering. Convergence, consistency, order and stability offinite difference methods. Dissipation and dispersion. Finite volume methods. Software design and and adaptivity.
CMPSC 211D. Numerical Solution of Partial Differential Equations--Finite Element Methods
(4) STAFF,
Prerequisite: Consent of instructor.
Enrollment Comments: Students should be proficient in basic numerical methods, linear algebra, mathematically rigorous proofs, and some programming language. Same course as ECE 210D, ME 210D, Mathematics 206D, Chemical Engineering 211D, and Geology 251D.
Weighted residual and finite element methods for the solution of hyperbolic, parabolic and elliptical partial differential equations, with application to problems in science and engineering. Error Estimates. Standard and discontinuous Galerkin methods.
CMPSC 216. Level Set Methods
(4) GIBOU
Prerequisite: CMPSC 211C or CH E 211C or ECE 210C or ME 210C.
Enrollment Comments: Same course as CH E 226, ECE 226, and ME 216.
Mathematical description of the level set method and design of the numerical methods used in its implementations (ENO-WENO, Godunov, Lax-Friedrich, etc.). Introduction to the Ghost Fluid Method. Applications in CFD, Materials Sciences, Computer Vision and Computer Graphics.
CMPSC 219. Sparse Matrix Algorithms
(4) GILBERT
Theory, implementation, and applications of sparse matrix algorithms. Direct, iterative, preconditioned, and multilevel methods for solving large, sparse systems of linear equations. Tools include graph theory, linear algebra, and computer architecture; applications range from physical modeling to data mining.
CMPSC 220. Theory of Computation and Complexity
(4) IBARRA
Prerequisite: Computer Science 186.
Topics include: models of computation; time and space complexity classes (e.g., P, NP, CO-NP, and Pspace), efficient reducibilities, complete problems lower bounds; the polynomial hierarchy.
CMPSC 225. Information Theory
(4) VAN DAM
Prerequisite: ECE 139 or equivalent, or PSTAT 120A-B.
Enrollment Comments: Same course as ECE 205.
Entropy, mutual information, and Shannon's coding theorems; lossless source coding, Huffman, Shannon-Fano-Elias, and arithmetic codes; Channel capacity; rate-distortion theory, and lossy source coding; source-channel coding; algorithmic complexity and information; applications of information theory in various fields.
CMPSC 230. Approximations, NP-Completeness and Algorithms
(4) GONZALEZ
Prerequisite: Computer Science 130A-B.
Epsilon approximations, PTAS and FPTAS. Techniques for the design of approximation algrorithms. P, NP, NP-complete problems, polynomial transformations, Turing reductions, strong NP-completeness, NP-hardness and inapproximability results. Topics in algorithms include: amortized analysis, advanced graph algorithms and data structures.
CMPSC 231. Topics in Combinatorial Algorithms
(4) SURI
Prerequisite: Computer Science 130B.
Advanced topics in algorithm design, including network flows, matchings in graphs, linear and integer programming.
CMPSC 235. Computational Geometry
(4) SURI
Prerequisite: Computer Science 130A-B.
Algorithms and lower bound techniques in computational geometry; decision tree models of computation; geometric searching; point location and range search; convex hull and maxima of a point set; proximity algorithms; geometric intersections.
CMPSC 240A. Applied Parallel Computing
(4) GILBERT
Prerequisite: Computer Science 154 and 160.
Interdisciplinary introduction to applied parallel computing on modern supercomputers. Topics include applications-oriented architectural issues, MPI, parallel MATLAB, and parallel numerical algorithms. A course project emphasizes understanding the realities and myths of what is possible on the world's fastest machines.
CMPSC 240B. Parallel Computing and Program Parallelization
(4) STAFF
Prerequisite: Computer Science 130A and 160, or consent of instructor.
Parallel programming; representation of parallelism, program dependence analysis, loop transformation; program and data partitioning; locality optimization; task scheduling and load balancing; parallelizing compilers and run-time support.
CMPSC 254. Advanced Computer Architecture
(4) SHERWOOD
Prerequisite: CMPSC 154 or ECE 154.
Advanced instruction set architectures, pipelining, dynamic scheduling, branch prediction, superscalar issue, out-of-order execution, memory-hierarchy design, advanced cache architectures and prefetching. Several real designs are dissected and simulators are developed for performing quantitative evaluations of design decisions.
CMPSC 260. Advanced Topics in Program Analysis
(4) HARDEKOPF
Prerequisite: Computer Science 160 and 162.
Theoretical aspects of translation. Topics include: data flow analysis; control flow analysis; interprocedural analysis; optimization; type systems.
CMPSC 263. Modern Programming Languages and Their Implementation
(4) KRINTZ
Prerequisite: Computer Science 154, 160, and 162.
Recommended Preparation: Conmputer Science 260.
Enrollment Comments: Computer Science 260 recommended.
Topics central to modern programming languages and their implementation: garbage collection; memory system performance; characteristics and optimization of object-oriented languages; type systems and type inference; run-time compilation.
CMPSC 266. Formal Specification and Verification
(4) KEMMERER
Prerequisite: Computer Science 130A-B; Computer Science 186.
Introduction to existing specification and verification systems, and the underlying theory and techniques of verifying the correctness of algorithms with respect to specifications. This subject can be considered as the combination of specification and verification techniques, programming language semantics and formal logic.
CMPSC 267. Automated Verification
(4) BULTAN
Prerequisite: Computer Science 130A-B and 138.
Covers automated verification algorithms and tools. Topics include: temporal logics, fixpoint characterizations of temporal properties, model checking, symbolic verification, explicit-state verification, verification using automated theorem provers, automated abstraction.
CMPSC 270. Operating Systems
(4) WOLSKI
Prerequisite: Computer Science 170
Develops an understanding of operating systems and operating systems research at both a conceptual level and from an engineering perspective. Fundamental design principles, culled primarily from the research literature, motivate an analysis of previous and current systems. This analysis is further validated through empirical investigation.
CMPSC 271. Advanced Topics in Distributed Systems
(4) EL ABBADI
Prerequisite: cmpsc 170.
Covers the fundamental problems in distributed systems and the various tools used to solve them. Of primary interest is the issue of fault-tolerance. Topics include event ordering, clocks, global states, agreement, fault-tolerance, and peer-to-peer systems.
CMPSC 272. Software Engineering
(4) BULTAN
Principles of software engineering disciplines emphasizing requirements analysis, specification design, coding, testing and correctness proofs, maintenance, and management. Students use a number of software engineering tools.
CMPSC 273. Data and Knowledge Bases
(4) SU
The focus is on the study of relational and post-relational data models and their query languages of different styles (algebraic, calculus, and deductive): complexity, expressive power, optimization, and database design.
CMPSC 274. Advanced Topics in Database Systems
(4) AGRAWAL, EL ABBADI
Prerequisite: Computer Science 170.
Topics include: data models, semantics, data integrity, database design, serializability theory, concurrency control, recovery, distributed databases.
CMPSC 276. Advanced Topics in Networking
(4) BELDING, ZHAO
Prerequisite: Computer Science 176A or 176B.
Focuses on advanced topics in networking. Topics may include, but are not limited to: Internet analysis, routing techniques, multimedia, approaches for network performance enhancements, and communication over new technologies.
CMPSC 279. Advanced Topics in Security
(4) VIGNA
Prerequisite: Computer Science 177.
Security analysis of networked systems. Analysis of techniques for network scanning, spoofing, hijacking, and denial-of-service attacks. Vulnerability analysis of applications and web-based systems. Intrusion detection and prevention techniques.
CMPSC 280. Computer Graphics
(4) HOLLERER
Prerequisite: Computer Science 180.
Special topics in computer graphics including: curves and curved surfaces; visual perception of colors and color models; shading models; shadow generation; texture mapping; solid textures; stereographics; helmet-mounteddisplay; graphics hardware/architecture; solid modeling; physically based modeling; fractals and graphtals; volume rendering; scientific visualization.
CMPSC 281B. Advanced Topics in Computer Vision
(4) TURK, WANG
Enrollment Comments: Same course as ECE 281B.
Advanced topics in computer vision: image sequence analysis, spatio-temporal filtering, camera calibration and hand-eye coordination, robot navigation, shape representation, physically-based modeling, regularization theory, multi-sensory fusion, biological models, expert vision systems, and other topics selected from recent research papers.
CMPSC 284. Mobile Computing
(4) BELDING
Prerequisite: Computer Science 176A or 176B.
Recommended Preparation: Computer Science 276.
Focuses on mobile computing. Topics may include, but are not limited to: mobile network characteristics, types of mobile networks, challenges and sollutions in mobile computing, and power conservation techniques.
CMPSC 290AAZZ. Special Topics in Computer Science
(4) STAFF
Prerequisite: Consent of instructor.
These courses provide for the study of topics of current interest in computer science. Topics are coded as follows: A. Foundations; B. Software Systems; C. Programming Languages and Software Engineering; D. Information Management; E. Architecture; F. Networking; G. Security; H. Scientific Computing; I. Intelligent and Interactive Systems; N. General
CMPSC 290A. Special Topics in Computer Science: Foundations
CMPSC 290B. Special Topics in Computer Science: Software Systems
CMPSC 290C. Special Topics in Computer Science: Programming Languages and Software Engineering
CMPSC 290D. Special Topics in Computer Science: Information Management
CMPSC 290E. Special Topics in Computer Science: Architecture
CMPSC 290F. Special Topics in Computer Science: Networking
CMPSC 290G. Special Topics in Computer Science: Security
CMPSC 290H. Special Topics in Computer Science: Scientific Computing
CMPSC 290I. Special Topics in Computer Science: Intelligent and Interactive Systems
CMPSC 290J. Special Topics in Computer Science: General
CMPSC 290K. Special Topics in Computer Science: Computer Systems Modeling and Analysis
CMPSC 290L. Special Topics in Computer Science: Scientific Computation
CMPSC 290N. Special Topics in Computer Science: General
CMPSC 501. Techniques of Computer Science Teaching
(1) STAFF
Enrollment Comments: This course is required for new teaching assistants, and may be taken only once. No unit credit allowed toward advanced degree.
An initial 1-2 day workshop on teaching techniques followed by a weekly seminar. Course emphasizes teaching skills, practical experience, and communication skills.
CMPSC 502. Teaching of Computer Science
(1-4) STAFF
Prerequisite: Computer Science 501.
Enrollment Comments: May be taken concurrently with Computer Science 501. No unit credit allowed toward advanced degree.
Procedures and techniques for teaching computer science gained through actual teaching of lecture courses, leading discussion sections, and/or teaching laboratories. Meetings will be held as needed to discuss problems,methods, and procedures.
CMPSC 592. Group Studies: Controls, Dynamical Systems, and Computation
(1) STAFF
Enrollment Comments: Same course as Chemical Engineering 295, ECE 295, and ME 295.
A series of weekly lectures given by university staff and outside experts in the fields of control systems, dynamical systems, and computation.
CMPSC 593. Computer Science Graduate Tutorial
(1-12) STAFF
Prerequisite: Consent of instructor or department chair.
Individual studies exploring topics in computer science with a faculty advisor.
CMPSC 594. Seminar in Computer Science
(1-5) STAFF
Prerequisite: Consent of instructor and advisor.
A seminar course offered on an irregular basis. Provides an in-depth discussion of advanced topics of general interest and broadens the scope ofknowledge in computer science.
CMPSC 595AAZZ. Group Studies in Computer Science
(2) STAFF
Prerequisite: Consent of instructor.
Special seminars focusing on topics of interest to faculty and graduate students. These seminars provide critical review of research in various areas of computer science: A. Foundations; B. Software Systems; C. Programming Languages and Software Engineering; D. Information Management; E. Architecture; F. Networking; G. Security; H. Scientific Computing; I. Intelligent and Interactive Systems; N. General
CMPSC 595A. Group Studies in Computer Science: Foundations
CMPSC 595B. Group Studies in Computer Science: Software Systems
CMPSC 595C. Group Studies in Computer Science: Programming Languages and Software Engineering
CMPSC 595D. Group Studies in Computer Science
CMPSC 595E. Group Studies in Computer Science: Architecture
CMPSC 595F. Group Studies in Computer Science: Networking
CMPSC 595G. Group Studies in Computer Science: Security
CMPSC 595H. Group Studies in Computer Science: Scientific Computing
CMPSC 595I. Group Studies in Computer Science: Intelligent and Interactive Systems
CMPSC 595J. Group Studies in Computer Science: General
CMPSC 595K. Group Studies in Computer Science: Computer Systems Modeling and Analysis
CMPSC 595L. Group Studies in Computer Science
CMPSC 595N. Group Studies in Computer Science: General
CMPSC 595R. Group Studies in Computer Science
CMPSC 596. Directed Research
(2-12) STAFF
Research, either experimental or theoretical, may be undertaken by properlyqualified graduate students under the direction of a faculty member.
CMPSC 597. Individual Studies for Master of Science Comprehensive Examinations and Ph.D Examinations
(1-12) STAFF
Enrollment Comments: No unit credit allowed toward advanced degree. Enrollment limited to 24 units per examination. Maximum of 12 units per quarter. S/U grading. Instructor is normally student's major professor or chair of doctoral committee.
Individual studies for M.S. comprehensive examination and Ph.D.
CMPSC 598. Master's Thesis Research and Preparation
(1-12) STAFF
Prerequisite: Consent of graduate advisor.
For research underlying the thesis and writing of the thesis.
CMPSC 599. Ph.D. Dissertation Research and Preparation
(1-12) STAFF
Prerequisite: Consent of chair of student's doctoral committee.
Research and preparation of dissertation.