next up previous contents
Next: Graduate Courses Up: Course Listings Previous: Intermediate Courses   Contents

Advanced Courses

CPSC 421a   Compilers and Interpreters   Zhong Shao
    MW 1:00-2:15
Compiler organization and implementation: lexical analysis, formal syntax specification, parsing techniques, execution environment, storage management, code generation and optimization, procedure linkage, and address binding. The effect of language-design decisions on compiler construction. After Computer Science 323a.

CPSC 422b   Operating Systems   Zhong Shao
    MW 1:00-2:15
The design and implementation of operating systems. Topics include synchronization, deadlock, process management, storage management, file systems, security, protection, and networking. After Computer Science 323a.

CPSC 424b   Parallel Programming Techniques   David Gelernter
    TTh 1:00-2:15
Software structures, architectures, and algorithms for parallel and distributed applications, focusing on coordination frameworks for asynchronous concurrency (that is, on the code that creates and manages multiple processes and performs the interprocess communication necessary to create integrated ensembles). Coordination languages and program-development environments. The fast-changing WAN-software picture. Parallel and distributed programming exercises on LANs. After Computer Science 323a. Not taught every year.

CPSC 425b   Theory of Distributed Systems   James Aspnes
    MW 2:30-3:45
Models of asynchronous distributed computing systems. Fundamental concepts of concurrency and synchronization, communication, reliability, topological and geometric constraints, time and space complexity, and distributed algorithms. After Computer Science 323a and 365b. Taught in alternate years.

CPSC 428b   Language-Based Security   Zhong Shao
    (Not taught in 2007-2008)
Basic design and implementation of language-based approaches for increasing the security and reliability of systems software. Topics include proof-carrying code; certifying compilation; typed assembly languages; runtime checking and monitoring; high-confidence embedded systems and drivers; and language support for verification of safety and liveness properties. After Computer Science 202a and 323a and Mathematics 222a or b, or equivalent. Not taught every year.

CPSC 429a   Functional Programming   Paul Hudak
    (Not taught in 2007-2008)
Methods for synthesizing functional programs from formal specifications and verifying correctness properties of programs. Topics include higher order functions; pattern-matching; abstract algebraic datatypes; polymorphic types; advanced typing issues such as type classes and higher-order modules; lazy/eager evaluation; equational reasoning; and realization of effects via continuations and monads. The functional languages Haskell and/or ML are used in the course. After Computer Science 201a or b and 223b. Not taught every year.

CPSC 430a   Formal Semantics   Paul Hudak
    TTh 1:00-2:15
Introduction to formal approaches to programming language design and implementation. Topics include the lambda-calculus, type theory, denotational semantics, type-directed compilation, higher-order modules, and application of formal methods to systems software and Internet programming. After Computer Science 202a and 323a. Not taught every year.

CPSC 431a   Fundamentals of Computer Music   Paul Hudak
    (Not taught in 2007-2008)
Study of the theoretical and practical fundamentals of computer-generated music. Music and sound representations, acoustics and sound synthesis, scales and tuning systems, algorithmic and heuristic composition, and programming languages for computer music. Theoretical concepts are supplemented with pragmatic issues expressed in a high-level programming language. After Computer Science 202a and 223b, or with permission of the instructor. Not taught every year.

CPSC 433b   Computer Networks   Yang Richard Yang
    MW 2:30-3:45
An introduction to the design, implementation, analysis, and evaluation of computer networks and their protocols. Topics include layered network architectures, applications, transport, congestion, routing, data link protocols, local area networks, performance analysis, multimedia networking, network security, and network management. Emphasis on protocols used in the Internet. After Computer Science 323a. Taught in alternate years.

CPSC 434a   Mobile Computing and Wireless Networking   Yang Richard Yang
    (Not taught in 2007-2008)
An introduction to the principles of mobile computing and its enabling technologies. Topics include principles of mobile computing; wireless systems; information management; location-independent/dependent computing models; disconnected and weakly connected operation models; human-computer interactions; mobile applications and services; security; power management; and sensor networks. After Computer Science 202a and 323a. Taught in alternate years.

CPSC 437a   Introduction to Database Systems   Avi Silberschatz
    TTh 2:30-3:45
An introduction to database systems. Data modeling. The relational model and the SQL query language. Relational database design, integrity constraints, functional dependencies, and normal forms. Object-oriented databases. Implementation of databases: file structures, indexing, query processing, transactions, concurrency control, recovery systems, and security. After or concurrently with Computer Science 323a and 365b.

CPSC 440b   Numerical Computation I   Vladimir Rokhlin
    MW 2:30-3:45
Algorithms for numerical problems in the physical, biological, and social sciences: solution of linear and nonlinear systems of equations, interpolation and approximation of functions, numerical differentiation and integration, optimization. After Computer Science 112a or b or an equivalent introductory programming course; Mathematics 120a or b; and Mathematics 222a or b or 225a or b or Computer Science 202a.

CPSC 445b   Introduction to Data Mining   Martin Schultz
    TTh 2:30-3:45
A study of algorithms and systems that allow computers to find patterns and regularities in databases, to perform prediction and forecasting, and to improve their performance generally through interaction with data. After Computer Science 202a and 223b and Mathematics 222a or b, or equivalents.

CPSC 450b   Computing and Philosophy   David Gelernter
    (Not taught in 2007-2008)
Software challenges our understanding of the mind; philosophy of mind enlightens us (maybe) about the limits and possibilities of software. We study the Turing Test and machine intelligence; Searle's Chinese Room (and the alleged impossibility of machine intelligence); the ‘basic analogy’ that deals with software and underlies much modern cognitive science and philosophy of mind; and contemporary theories about thought, mind, and consciousness by philosophers and computer scientists. After Computer Science 201 or equivalent. Not taught every year.

CPSC 452b/MB&B 452b /MCDB 452b   Genomics and Bioinformatics   Mark Gerstein, Michael Snyder, and Dieter Söll
    MW 1:00-2:15
Genomics describes the determination of the nucleotide sequence as well as many further analyses used to discover functional and structural gene information about all the genes of an organism. Topics include the methods and results of analysis on a genome-wide scale as well as a discussion of the implications of this research. Bioinformatics describes the computational analysis of gene sequences and protein structures on a large scale. Topics include sequence alignment, biological database design, geometric analysis of protein structure, and macromolecular simulation. After MB&B 301b and MATH 115a or b, or with permission of the instructor.

CPSC 455b   Economics and Computation   Joan Feigenbaum
    (Not taught in 2007-2008)
A mathematically rigorous investigation of the interplay of economic theory and computer science with an emphasis on the relationship of incentive-compatibility and algorithmic efficiency. Particular attention will be paid to the formulation and solution of mechanism-design problems that are relevant to data networking and Internet-based commerce. After Computer Science 365b or equivalent background in algorithms and complexity theory. Familiarity with basic microeconomics and game theory is desirable but not required. Not taught every year.

CPSC 457b   Sensitive Information in a Wired World   Joan Feigenbaum
    (Not taught in 2007-2008)
Research-oriented course that addresses issues of ownership, control, privacy, and accuracy of the huge amount of sensitive information about people and organizations that is collected, stored, and used by today's ubiquitous information systems. Students will read research papers that explore both the power and the limitations of existing privacy-enhancing technologies such as encryption and ‘trusted platforms.’ Suitable for advanced undergraduates and first- and second-year graduate students in Computer Science and computationally sophisticated students in related fields. Not taught every year.

CPSC 461b   Foundations of Cryptography   Michael Fischer
    (Not taught in 2007-2008)
Foundations of modern cryptography and their application to computer and network security. Topics include randomized models of computation, indistinguishability, computationally hard problems, one-way and trapdoor functions, pseudorandom generators, zero-knowledge, secure computation, and probabilistic proofs. After Computer Science 467a. Not taught every year.

CPSC 462a/AMTH 462a   Graphs and Networks   Daniel Spielman
    TTh 2:30-3:45
A mathematical examination of graphs and their applications in the sciences. Families of graphs include social networks, small-world graphs, Internet graphs, planar graphs, well-shaped meshes, power-law graphs, and classic random graphs. Phenomena include connectivity, clustering, communication, ranking, and iterative processes. Prerequisites: Linear algebra and discrete mathematics; a course in probability is recommended.

CPSC 463a   Introduction to Machine Learning   Dana Angluin
    (Not taught in 2007-2008)
Paradigms and algorithms for learning classification rules and more complex behaviors from examples and other kinds of data. Topics may include version spaces, decision trees, artificial neural networks, Bayesian networks, instance-based learning, genetic algorithms, reinforcement learning, inductive logic programming, the MDL principle, the PAC model, VC dimension, sample bounds, boosting, support vector machines, queries, grammatical inference, and transductive and inductive inference. After Computer Science 202a and 223b, or with permission of the instructor. Computer Science 365b is recommended. Taught in alternate years.

CPSC 465b   Topics in Algorithms   Staff
    MWF 11:35-12:25
Introduction to the fundamental tools used in approximation algorithms: linear, convex, and semi-definite programming; dynamic programming; and geometric tools. Recent progress in the design of approximation algorithms for graph problems, combinatorial problems, and other NP-hard optimization problems. Results on the hardness of approximation based on probabilistically checkable proofs. After Computer Science 365b. Taught in alternate years.

CPSC 467a   Cryptography and Computer Security   Michael Fischer
    (Not taught in 2007-2008)
A survey of such private and public key cryptographic techniques as DES, RSA, and zero-knowledge proofs, and their application to problems of maintaining privacy and security in computer networks. Focus on technology, with consideration of such societal issues as balancing individual privacy concerns against the needs of law enforcement, vulnerability of societal institutions to electronic attack, export regulations and international competitiveness, and development of secure information systems. Some programming may be required. After Computer Science 202a and 223b.

CPSC 468a   Computational Complexity   Joan Feigenbaum
    TTh 1:00-2:15
Introduction to the theory of computational complexity. Basic complexity classes, including Polynomial Time, Nondeterministic Polynomial Time, Probabilistic Polynomial Time, Polynomial Space, Logarithmic Space, and Nondeterminstic Logarithmic Space. The roles of reductions, completeness, randomness, and interaction in the formal study of computation. After Computer Science 365b or with permission of the instructor.

CPSC 469b   Randomized Algorithms   Ravindran Kannan
    (Not taught in 2007-2008)
Beginning with an introduction to tools from probability theory including some inequalities like Chernoff bounds, the course will cover randomized algorithms from several areas: graph algorithms, algorithms in algebra, approximate counting, probabilistically checkable proofs, and matrix algorithms. After Computer Science 365b; a solid background in mathematics is desirable. Taught in alternate years.

CPSC 470a   Artificial Intelligence   Drew McDermott
    (Not taught in 2007-2008)
An introduction to artificial intelligence research, focusing on reasoning and perception. Topics include knowledge representation, predicate calculus, temporal reasoning, vision, robotics, planning, and learning. After Computer Science 201a or b and 202a.

CPSC 473b   Intelligent Robotics   Brian Scassellati
    MWF 10:30-11:20
An introduction to the construction of intelligent, autonomous systems. Sensory-motor coordination and task-based perception. Implementation techniques for behavior selection and arbitration, including behavior-based design, evolutionary design, dynamical systems, and hybrid deliberative-reactive systems. Situated learning and adaptive behavior. After Computer Science 202a and 223b.

CPSC 475b/EENG 475b   Computational Vision and Biological Perception   Steven Zucker
    MW 1:00-2:15
An overview of computational vision with a biological emphasis. Suitable as an introduction to biological perception for computer science and engineering students, as well as an introduction to computational vision for mathematics, psychology, and physiology students. After Computer Science 112a or b and Mathematics 120a or b, or with permission of the instructor.

CPSC 477a   Neural Networks for Computing   Willard Miranker
    TTh 11:35-12:50
Artificial neural networks as a computational paradigm studied with application to problems in associative memory, learning, pattern recognition, perception, robotics, and other areas. Development of models for the dynamics of neurons and methods such as learning for designing neural networks. Concepts, designs, and methods compared and tested in software simulation. Brain and consciousness studies are optional topics. Programming and knowledge of linear algebra and calculus required.

CPSC 478b   Computer Graphics   Holly Rushmeier
    TTh 1:00-2:15
An introduction to the basic concepts of two- and three-dimensional computer graphics. Topics include affine and projective transformations, clipping and windowing, visual perception, scene modeling and animation, algorithms for visible surface determination, reflection models, illumination algorithms, and color theory. Assumes solid C or C++ programming skills and a basic knowledge of calculus and linear algebra. After Computer Science 202a and 223b. Mathematics 222a or b recommended.

CPSC 479a   Advanced Topics in Computer Graphics   Holly Rushmeier
    MW 2:30-3:45
An in-depth study of advanced algorithms and systems for rendering, modeling, and animation in computer graphics. Topics vary and may include reflectance modeling, global illumination, subdivision surfaces, NURBS, physically-based fluids systems, and character animation. After Computer Science 323a and 365b, or Computer Science 478b, or with permission of the instructor.

CPSC 480a or b   Directed Reading   By arrangement with faculty
Individual study for qualified students who wish to investigate an area of computer science not covered in regular courses. A student must be sponsored by a faculty member who sets the requirements and meets regularly with the student. Requires a written plan of study approved by the faculty advisor and the director of undergraduate studies. May be taken more than once for credit.

CPSC 490a or b   Special Projects   By arrangement with faculty
Individual research. Requires a faculty supervisor and the permission of the class advisor or the director of undergraduate studies. The student must submit a written report about the results of the project. May be taken more than once for credit.


next up previous contents
Next: Graduate Courses Up: Course Listings Previous: Intermediate Courses   Contents