NOTE: These are the course
offerings from the Stanford Bulletin 1999-2000. They are subject to change, so
please check the online listings for
updated information.
Computer Science Department List of Courses
(WIM) indicates that the
course meets the Writing in the Major requirement.
(AU) indicates that the
course is subject to the University Activity Unit limitations (8 units
maximum).
GUIDE TO SELECTING INTRODUCTORY COURSES
Students arriving at Stanford
have widely differing backgrounds and goals, but most find that the ability to
use computers effectively is beneficial to their education. The department
offers many introductory courses to meet the needs of these students.
For students whose principal
interest is an exposure to the fundamental ideas behind computer science and
programming, CS 105 is the most appropriate course. It is intended for students
in non-technical disciplines who expect to make some use of computers, but who
do not expect to go on to more advanced courses. CS 105 meets the Area 2b
General Education Requirement and includes an introduction to programming and
the use of modern Internet-based technologies. Students interested in learning
to use the computer should consider CS 1C (Introduction to Computing at
Stanford) or 1U (Introduction to Unix).
Students who intend to pursue
a serious course of study in computer science may enter the program at a
variety of levels, depending on their background. Students with little prior
experience or who wish to take more time to study the fundamentals of
programming should take 106A followed by 106B. Students in 106A need not have
prior programming experience. Students with significant prior exposure to
programming or those who want an intensive introduction to the field should
take 106X, which covers most of the material in 106A and B in a single quarter.
All instruction in CS 106 uses ANSI C, although the prior programming
experience required for 106X may be in any language. In all cases, students are
encouraged to discuss their background with the instructors responsible for
these courses.
After the introductory
sequence, Computer Science majors and those who need a significant background
in computer science for related majors in engineering should take 103 (or 109),
107 and 108. 103 offers an introduction to the mathematical and theoretical
foundations of computer science. CS107 exposes students to a variety of
programming paradigms that illustrate critical strategies used in systems
development; 108 builds on this material, focusing on the development of large
interactive programs based on the object-oriented programming paradigm.
In summary:
For exposure–1C or 1U
For nontechnical use–105.
For scientific use–106A
For a technical
introduction–106A
For significant use–106A,B or
106X, along with 103, 107 and 108.
NUMBERING SYSTEM
The first digit of a CS
course number indicates its general level of sophistication:
0-99 service courses for
nontechnical majors
100-199 other service
courses, basic undergraduate
200-299 advanced
undergraduate/ beginning graduate
300-399 advanced graduate
400-499 experimental
500-599 graduate seminars
The tens digit indicates the
area of Computer Science it addresses:
00-09 Introductory,
miscellaneous
10-19 Hardware Systems
20-29 Artificial Intelligence
30-39 Numerical Analysis
40-49 Software Systems
50-59 Mathematical
Foundations of Computing
60-69 Analysis of Algorithms
70-79 Typography and
Computational Models of Language
90-99 Independent Study and
Practicum
NONMAJOR
1C. Introduction to Computing
at Stanford–For those with limited experience on computers. Introduction to the
basics of computing, and a variety of programs encouraging individual
exploration of the programs covered. Topics: word processing, spread sheets,
using the WWW and the Internet, and computing resources at Stanford. Macintosh
and PC systems. One-hour lecture/demonstration in dormitory clusters. Weekly
short assignments and final project. Not a programming course.
1 unit, Aut (Roberts,
Shimizu)
1I. The Internet–For a
computer-literate but not technical audience. What is the Internet and what is
it good for? The foundations, resources, and uses of the Internet, emphasizing
practical skills for finding, reading, and [authoring Internet material. Topics
include: HTML, FTP, HTTP, World Wide Web publishing and searching; evolution
and future directions; security and privacy issues.] Programming-oriented
course is 193I. Prerequisites: basic computer skills at level of 1C, e.g., file
editing, and access to a computer on the Internet.
1 unit, Win (Zelenski)
1U. Introduction to
Unix–Tutorial on using the Unix operating system. Topics: text editors, the
file system, the C shell, standard Unix utilities, PERL. Includes simple shell
programming, but is not a programming course and assumes no prior exposure to
programming.
1 unit, Spr (Zelenski)
9. Undergraduate Journal
Club–Weekly discussion led by students; encourage juniors and seniors to read
and discuss research papers in small, informal format. Topics are selected by
participants with advice from faculty sponsor.
1 unit, Spr (Caspi)
50. Problem Solving with
Mathematica–For engineers, physicists, mathematicians, and others who need to
solve mathematical or quantitative problems. Comprehensive introduction to
Mathematica, an interactive mathematical software package that includes a
high-level programming language. Symbolic, numerical, graphical, animation, and
programming capabilities, including use of Mathematica to manipulate
expressions, find roots, solve differential equations, visualize functions and
data, import and export data in arbitrary formats, work with expressions in
standard mathematical notation, and perform statistical analyses.
2 units (Williams) alternate
years, given 2000-01
51. Introduction to Quantum Computing
and Quantum Information Theory–For computer scientists, physicists,
mathematicians, engineers, and others who want to learn the capabilities of
quantum computers and the necessary quantum mechanics and complexity theory.
Topics: quantum algorithms (including Shor’s polynomial time algorithm for
integer factorization, Grover’s database search algorithm, quantum tree search,
quantum wavelets), quantum information theory, quantum cryptography, breaking
the RSA cryptosystem, quantum teleportation, circuit design, quantum error
correction, and examples of prototype quantum computers. Prerequisites:
familiarity with elementary matrix algebra and complex numbers.
2 units, Win (Williams)
99A. Stanford Introductory
Seminar: The Downside of Computing Systems–Preference to freshmen. Computers
are critical components of our world in such tasks as surgery, air traffic
control, and international banking. How computing systems fail, how such
failures may affect our society in the future, and how to build and maintain
systems to avoid failures. Case studies of computer-related disasters,
including the Therac-25 accidents, the Internet worm, and the Ariane 5 crash.
Topics: computer security, robust distributed systems, fault-tolerant
architectures, organizational behavior.
3 units, Aut (Baker)
99C. Stanford Introductory
Seminar: Computers–Fact and Fiction–Preference to freshmen. The question of
what computers can and cannot do. Popular culture and the media represent the
capabilities of computers in an unscientific way that tends to obscure the
promise and the limitations of the technology. Scientists have disagreed about
the range of tasks that computers can deal with, and that computers cannot
learn to do what they were not explicitly programmed to do (e.g., play championship
chess, or create art or music). Conversely, extremely optimistic forecasts and
claims have also been made. Students evaluate the relationship between these
claims and the current and future state of technology. Prerequisite: 106A.
3 units (Koller) not given
1999-2000
99D. Stanford Introductory
Seminar: The Science of Art–Preference to freshmen. The interwoven histories of
science and Western art from the Renaissance to the 19th century. Emphasis is
on the revolutions in science and mathematics that have inspired parallel
revolutions in the visual arts (e.g., Brunelleschi's invention of linear
perspective, Newton's discoveries in geometric optics, and the theories of
color vision proposed by Goethe, Young, Helmholtz, etc.). The scientific
principles behind image making, including a survey of digital image synthesis
(a.k.a. computer graphics). Using graphics workstations and commercial software
packages, experiments are performed in image making. GER:2b (DR:6)
3 units, Win (Levoy)
99E. Stanford Introductory
Seminar: Great Ideas in Computer Science–Preference to freshmen. The power and
limitations of computers; concrete strategies for solving problems using
computers. What can a computer do efficiently? Why are programs hard to test?
How can we make computers appear clairvoyant? How do you keep secrets in
computers? Should tables be sorted? When is it a good idea to be greedy? These
questions involve ideas whose impact ranges from the philosophical foundations
of computation to concrete applications in everyday life. Prerequisite:
mathematical maturity (e.g., AP Math) and exposure to computer programming.
3 units, Win (Motwani,
Raghavan)
99F. Stanford Introductory
Seminar: Paradox–Bug or Feature?–Preference to freshmen. Conflict in thought is
as inevitable as in territory and relationships. The discovery, influence, and
use of paradoxes in mathematics, logic, nature, cognition, and computation. The
paradoxical continuum: Zeno, Democritus, Newton, Leibniz, Cohen, Itano. Logical
paradoxes: Eubulides’ liar, the set of all sets, incompleteness of arithmetic,
the halting problem. Paradoxes in nature: quantum mechanics, chaos. Cognition:
mind-body interaction, free will, and determinism. Computer hardware and
software: cyclic circuits and the fixpoint operator. Prerequisite: AP Math.
3 units (Pratt) not given
1999-2000
99G. Stanford Introductory
Seminar: The Two Cultures–Bridging the Gap–Preference to freshmen. In 1959, the
British physicist and novelist C.P. Snow delivered a lecture at Cambridge
University in which he argued that "the intellectual life of the whole of
western society is increasingly being split into two polar groups." In
Snow’s view, these groups, which can be characterized roughly as humanists and
scientists, exist as separate cultures that have "almost ceased to
communicate at all." Professors in Computer Science and English
collaborate to examine the nature of this split, reflected at Stanford by the
tendency to divide the campus community into "techies" and
"fuzzies," and explore ways to bridge this cultural gap.
3 units, (Roberts, Saldivar)
not given 1999-2000
99H. Stanford Introductory
Seminar: Programming and Problem Solving Seminar–Preference to freshmen.
Students are given five problems to solve. Each involves programming, but
programming is not sufficient to solve the problem (i.e., the approach to the
problem is at least as important). Students experiment individually and as a
group with techniques, and write a working program as a solution. Group
discussions include general problem-solving approaches and concepts relevant to
the problem at hand. Prerequisite: 106B or 106X.
3 units, Spr (Ullman) not
given 1999-2000
99I. Stanford Introductory
Seminar: Business on the Information Highways–Preference to freshmen.
Understanding the capabilities of the Internet and its services. The effect on
commerce, education, and healthcare. Technical and business alternatives. Who
will be hurt and who will benefit from the changes occuring? The central
project develops a Web publication.
3 units, Win (Wiederhold)
alternate years, not given 2000-01
99J. Stanford Introductory
Seminar: Computer Security in the Electronic Age–Preference to sophomores.
Based on readings and discussions of current issues in computer security.
Topics: the history of codes and ciphers and a summary of basic mathematics
used in current cryptography; causes of computer vulnerabilities, including
program errors, design flaws, and inherent network and browser limitations;
policies and practices that restrict or monitor access to information.
3 units, Win (Mitchell)
99K. Stanford Introductory
Seminar: Digital Actors–Preference to sophomores. Digital actors are an
emerging field, with applications to video games, movies, simulation and
training, manufacturing, and animated web pages. Introduces the computational
techniques used to create and animate robotics, geometric computing, computer
vision, and graphics. The problem of creating/animating digital actors,
technical sub-problems. Prerequisite: knowledge of elementary geometry.
Recommended: some programming experience.
2 units, Spr (Latombe)
99L. Stanford Introductory
Seminar: How Are We to Know?–Preference to sophomores. The scientific method is
a set of cultural practices that helps scientists construct, criticize, and
refine theories about the universe in which we live. The question of whether
analogous methods might be useful in helping construct, criticize, and refine
everyday, non-scientific beliefs. Selections from the late philosopher of
science, Sir Karl Popper, who counsels scientists to devote as much, if not
more, effort to disproving their pet scientific hypotheses as they do trying to
buttress them. The ways in which evidence for and against beliefs can be
adduced. Discussions, presentations, and a term essay.
3 units, Win (Nilsson)
99M. Stanford Introductory
Seminar: Computer Security–Preference to freshmen. Topics: Aspects of computer
security including the damage caused by break-ins, common holes in computer
systems, technological solutions for preventing attacks, cryptography, and
legal issues in computer security.
3 units, Aut (Boneh)
99N. Stanford Introductory
Seminar: Ruler, Compass, and Computer -- Computational Representations of
Geometry–Preference to sophomores. In all parts of computer science dealing
with the physical world, representations of geometry play an important role.
Models of physical objects and processes, as used in computer graphics,
computer vision, and robotics, invariably use geometry as an essential
component of representing shape, motion, and other physical modalities. Purpose
of seminar is to introduce students to the beautiful mathematical ideas behind
commonly used representations andalgorithms for geometric objects, while
focusing on intuitive understanding as opposed to formal development. Prerequisite:
Students should have taken an introductory CS class, such as 106A, B or X.
General background knowledge in mathematics and physics will be useful, though
there are no specific requirements.
2 units, Spr (Guibas)
99P. Stanford Introductory
Seminar: Smart Computers and Other Technological Opportunities–Preference to
freshmen. How smart are computers now? How smart can we make them, and how
soon, and what good will they be? Of the current "smart" things, how
smart are they, and what genuine benefits are offered? Outside of computers
what are the technological opportunities for humanity? To what extent is
humanity in difficulty with natural resources? What significant threats are
there to humanity?
3 units, Aut (McCarthy)
UNDERGRADUATE
103A. Discrete Mathematics
for Computer Science–Covers the fundamental mathematical foundations required
for serious study of computer science. Topics include logic, relations,
functions, basic set theory, proof techniques, combinatorics, recursion, and
recurrence relations.
3 units, not given 1999-2000
103B. Discrete
Structures–Continuation of 103A. Topics include analysis of algorithms,
mathematical formulations of basic data models (linear models, trees, graphs,
and sets), regular expressions, grammars. Corequisite: 106B or 106X.
3 units, not given 1999-2000
103X. Discrete Structures
(Accelerated)–Covers the material in 103A and B in a single quarter. Students
who take 103X should feel comfortable with mathematical formalism.
*4 units, Spr (Mitchell,
Dill))
105. Introduction to
Computers–For non-technical majors. Develops an understanding of what computers
are and how they work. Practical experience in programming. Construction of
computer programs and basic design techniques. A survey of Internet technology
and the basics of computer hardware. No previous knowledge of computer science
is assumed. Students in technical fields and students looking to acquire
programming skills should take 106A or 106X. Prerequisite: minimal math skills.
GER:2b (DR:6)
*5 units, Aut, Spr (Young)
106A. Programming
Methodology–For students in technical disciplines; no prior experience is
assumed. Broad introduction to the engineering of computer applications,
emphasizing software engineering principles: design, decomposition, information
hiding, procedural abstraction, testing, and reusable software components. Uses
the programming language C and concentrates on the development of good
programming style and on understanding the basic facilities provided by the
language. Alternatives: 105, 106X. GER:2b (DR:6)
*5 units, Aut (Roberts)
Win (Zelenski)
Spr (Staff)
106B. Programming
Abstractions–Abstraction and its relation to programming. The software
engineering principles of data abstraction, modules, certain fundamental data
structures (e.g., stacks and queues), and data-directed design. Recursion and
recursive data structures (linked lists and binary trees). Brief introduction
to time and space complexity analysis. Prerequisite: 106A or consent of the
instructor, based on prior exposure to ANSI C. GER:2b (DR:6)
*5 units, Aut (Staff), Win
(Plummer), Spr (Zelenski)
106X. Programming Methodology
and Abstractions (Accelerated)–Covers most of the material in 106A,B. Students
are expected to have previous programming experience at a level that allows
them to understand the concepts presented in 106A, usually in a language other
than C. First three weeks focus on understanding how the concepts are expressed
in ANSI C. 106B material is covered for the balance. Students who complete 106A
should enroll in 106B. 106X can be taken after 106A only with consent of
instructor. GER:2b (DR:6)
*5 units, Aut (Plummer), Win
(Young), Spr (Staff)
107. Programming
Paradigms–Introduces a variety of programming language paradigms and their
implementations. Topics: structure and implementation of compiled languages,
basic concurrent programming, the functional paradigm, and the object-oriented
paradigm. Substantial programming projects. Prerequisite: 106B or 106X.
*5 units, Aut, Spr (Cain)
[108. Object-Oriented Systems
Design– Software design and construction in the context of large OOP libraries.
May be taught in C++ or Java. Topics: review of OOP, the structure of Graphical
User Interface (GUI) OOP libraries, GUI application design and construction,
OOP software engineering strategies, approaches to programming in teams.
Prerequisite: 107.
*4 units, Aut, Win
(Parlante)]
109. Introduction to Computer
Science–The mathematical and theoretical foundations of computer science.
Topics: logic, proof techniques, recursion and recurrence relations, analysis
of algorithms, combinatorics, basic data models (sets, relations, linear
models, trees and graphs), and introductory computer theory. Prerequisite: 106B
or 106X. GER:2b (DR:6)
*4 units, Aut (Staff), Win
(Johnson)
110. Introduction to Computer
Systems and Assembly Language Programming–Organization of digital computers,
buses, registers, processors, I/O, memory systems, and paged memory. Data
representation, data structures, and computer arithmetic. Instruction sets and
execution; addressing modes. Assembly language programming, including
subroutines, co-routines, interrupts, and traps. Operating systems issues and
principles of storage management; combines general principles and practice in
implementations. Prerequisite: 106B or 106X.
*4 units, Spr (Staff)
112. Computer Organization
and Design–(Enroll in Electrical Engineering 182.)
4 units, Aut, Spr
121. Introduction to
Artificial Intelligence–Introduction to the history, literature, and
fundamental concepts of artificial intelligence (AI), from elementary reactive
systems to increasingly complex artificial "agents." Topics:
production systems, neural networks, genetic programming, computer vision,
heuristic search, logic, knowledge representation and reasoning, Bayes
networks, automatic planning and multi-agent communication. Focuses on ideas
rather than applications. Prerequisite: fundamental knowledge of computer
science as covered in 103 or 109. Recommended: facility with differential
calculus, vector algebra and probability theory. Only one of 121 or 221 counts
towards CS degree requirements. Students intending further work in AI should
take 221.
3 units, Aut (Nilsson)
137. Introduction to
Scientific Computing–The fundamental issues of numerical computation for the
mathematical, computational, and physical sciences, and engineering. Emphasis
is from the perspective of the computer scientist. Use of numerical algorithms
in engineering practice. Problems of accurately computing solutions in the
presence of rounding errors and of computing discrete approximations of
solutions which are defined on the continuum. The taxonomy of problem classes
with methods for their solution and principles useful for analysis of
performance and algorithmic development. Topics: error analysis, the solution
of linear and nonlinear equations, interpolation and numerical differentiation,
the approximation of integrals, and the solution of differential equations.
Prerequisites: 106A; Math. 103 or 113 or equivalents.
*4 units, Aut (Oliger), Spr
(Golub)
138. Matlab and Maple for
Science and Engineering Applications–Introduction to use of Matlab and Maple in
engineering applications. Emphasis is on the use of software to solve real
problems; limited background on how the algorithms work, primarily so user may
understand their possible limitations. How to use packages to solve a variety
of introductory but important problems in: linear systems, eigenvalue problems,
ordinary differential equations, elementary statistics, elementary signal
processing (Fourier transforms, wavelets), computer algebra, graphical
interfaces. Applications for the engineering and physical sciences.
Prerequisites: undergraduate linear algebra and a willingness to program.
*4 units, Win (Moler)
140. Operating Systems and
Systems Programming–The fundamentals of operating systems design and
implementation. Basic structure; synchronization and communication mechanisms;
implementation of processes, process management, scheduling, and protection;
memory organization and management, including virtual memory; I/O device
management, secondary storage, and file systems. Prerequisite: 108.
Recommended: Electrical Engineering 182.
*4 units, Aut, Win (Engler)
143. Compilers–Principles and
practices in the design of programming language compilers. Topics: lexical analysis,
parsing theory (LL, LR, and LALR parsing), symbol tables, type checking, common
representations for records, arrays, and pointers, runtime conventions for
procedure calls, storage allocation for variables, and generation of
unoptimized code. Students construct simple compiler as programming project.
Prerequisites: 103 (or 109), 107.
*4 units, Aut (Johnson), Spr
(Dill)
145. Introduction to
Databases–Object-oriented, entity-relationship, relational data models, and
approaches to database design. Relational, object-relational, and
object-oriented query languages. SQL and ODMG standards. Algebraic query
languages and some database theory. Integrity constraints and triggers;
functional dependencies and normal forms. Database transactions and security
from the application perspective. Designing a database for an application.
Interactive and programmatic interfaces to database systems. Individual
database application programming project with extensive use of SQL.
Prerequisites: 103 (or 109), 107.
*4 units, Aut (Ullman), Spr
(Widom)
147. Introduction to
Human-Computer Interaction Design–Introduction to the concepts underlying the
design of human-computer interaction: usability and affordances, direct
manipulation, systematic design methods, user conceptual models and interface
metaphors, design languages and genres, human cognitive and physical
ergonomics, information and interactivity structures, design tools and
environments. Structured around a set of case studies in which notable
interface designs and/or projects are analyzed as illustrative of underlying
principles. Students participate in discussions of cases and do weekly
interface analysis and design exercises which do not require programming.
3-4 units, Aut (Winograd)
148. Introductory Computer
Graphics–Introduction to two- and three-dimensional computer graphics. Topics:
fundamentals of input and display devices, scan conversion of geometric
primitives, two- and three-dimensional transformations and clipping, windowing
techniques, curves and curved surfaces, three-dimensional viewing and
perspective, hidden surface removal, illumination and color models, OpenGL,
VRML, and 3-D modeling tools. Emphasis is on the development of practical
skills in using graphics libraries and tools. Programming on Macintosh using C,
OpenGL, and VRML, with demos in SoftImage. Prerequisites: 107, Math. 103. For
undergraduates; M.S. students or students with a strong interest in continuing
in graphics should take 248. Only one of 148 or 248 counts towords CS degree
requirements.
3 units, Aut (Johnson)
150. Introduction to Computer
Theory for non-CS Majors–Continuation of 109 for non-CS majors. Introduction to
the material covered in 154 and 161. Topics: computer theory, computability,
data structures, analysis of algorithms and NP-completeness. Prerequisite: 109.
*4 units, Spr (Cain)
154. Introduction to Automata
and Complexity Theory–Regular sets: finite automata, regular expressions,
equivalences among notations, methods of proving a language not to be regular.
Context free languages: grammars, pushdown automata, normal forms for grammars,
proving languages non-context free. Turing machines; equivalent forms,
undecidability. Nondeterministic Turing machines: properties, the class NP,
complete problems for NP, Cook’s theorem, reducibilities among problems.
Prerequisite: 103 or 109.
*4 units, Win (Ullman), Spr
(Motwani)
154N. Introduction to NP
Completeness–Turing machines: equivalent forms, undecidability.
Nondeterministic Turing machines: properties, the class NP, complete problems
for NP, Cook’s theorem, reducibilities among problems. Students participate in
approximately the last half of 154. Prerequisite: a knowledge of formal
languages and automata as in the first part of 154.
2 units, Win (Ullman), Spr
(Motwani)
156. Introduction to
Verification and Concurrency–A taste of logic: propositional, predicate,
temporal. Specification and verification of sequential programs: correctness
and termination. Concurrent programming: communication and synchronization,
principles and algorithms. Specification of concurrent programs: safety and
progress. Verification of safety properties: invariants. Prerequisite: 103 or
109.
3 units (Manna)
157. Logic and Automated
Reasoning–Introduction to logic for computer scientists. An elementary
exposition, from a computational point of view, of propositional logic,
predicate logic, axiomatic theories, and theories with equality and induction.
Interpretations, models, validity, proof. Automated deduction: polarity,
skolemization, unification, resolution, equality. Strategies. Applications.
Prerequisite: 103 or 109.
*4 units, Aut (Manna), Spr
(Genesereth)
157L. Logic and Automated
Reasoning Laboratory
1 unit
161. Design and Analysis of
Algorithms–Efficient algorithms for sorting, searching, and selection. Algorithm
analysis: worst and average case analysis. Recurrences and asymptotics. Data
structures: balanced trees, heaps, etc. Algorithm design techniques:
divide-and-conquer, dynamic programming, greedy algorithms, amortized analysis.
Algorithms for fundamental graph problems, e.g., depth-first search, connected
components, topological sort, shortest paths. Possible topics: network flow,
string searching, parallel computation. Prerequisite: 103 or 109, Statistics
116.
*4 units, Aut (Plotkin), Win
(Guibas)
191. Senior
Project–Restricted to Computer Science students. Group or individual projects
under faculty direction. Register using the section number associated with the
instructor.
1-6 units, any quarter
(Staff)
191W. Writing Intensive
Senior Project–Restricted to Computer Science students. Group or individual
projects under faculty direction. Register using the section number of an
Academic Council member. (WIM)
1-6 units, any quarter
(Staff)
192. Programming Service
Project–Restricted to Computer Science students. Appropriate academic credit
(without financial support) is given for volunteer computer programming work of
public benefit and educational value.
1-3 units, any quarter
(Staff)
193D. C++ and Object-Oriented
Programming–C++ programming language and object-oriented programming paradigm.
Covers all the major features of C++ 3.0 and the object design principles which
apply generally in Object Oriented Languages. Intensive programming
assignments. Prerequisites: knowledge of C and basic programming methodology as
developed in 106B or 106X.
3 units, Win (Cain)
193I. Internet
Technologies–Survey of contemporary Internet technologies. Programmer-oriented
survey of the authoring, distributing, and browsing technologies. The role,
use, and implementation of current Internet tools. Topics: TCP/IP: namespace,
connections, and protocols. Client/server structures. World Wide Web/HTTP/HTML
techniques for text, images, links, and forms. Server side programming, CGI
scripts. Dynamic content with Java. Security and privacy issues. Programming
projects on client- and server-side projects. Some projects may be done in C,
but the emphasis will be on Perl and Java. Emphasis on understanding,
exploiting, and extending Internet technologies. Prerequisites: programming
fundamentals at the level of 106B or 106X, and UNIX at the level of 1U.
3 units, Spr (Parlante)
193J. Programming in
Java–Hands-on experience. Topics: object-oriented programming (classes,
objects, messaging, inheritance), Java language features (interfaces, exceptions,
packages, concurrency, garbage collection), use of the built-in packages (lang,
util, io, networking, awt), understanding applications and applets, security
and verification, Java implementation and the virtual machine. Intensive
programming assignments. Prerequisite: knowledge of C language and programming
experience at the level of 106B/X.
3 units, Aut (Zelenski)
[193K. Advanced Java
Applications - Tour of some of the advanced applications possible in Java.
Possible topics: portable GUIs in Swing and distributed applications with RMI,
and the various supporting technologies such as concurrency, reflection and
serialization. Prerequisite: mastery of Java and/or 193J.
2 units, Spr (Parlante)]
193L. Programming in
LISP–Introduction to problem solving in the LISP language, focusing on the
functional programming paradigm. Topics: recursion, list manipulation, mapping,
functional arguments, destructive processing, macros, I/O, Lisp implementation,
environments, packages, efficiency, object-oriented programming, classes, and
methods. Term project. Prerequisite: 106B or 106X, or equivalent.
3 units (McCarthy) not given
1999-2000
193U. Software Engineering in
C–C programming language and the UNIX/C programming environment. C programming
language issues: data types, control structures, pointers, dynamic memory
allocation, libraries, performance, bit operations, and the interface to the
UNIX shell. UNIX systems programming issues: file system, processes, signals,
interprocess communication, and C interfaces to these capabilities. Includes a
significant programming project. Prerequisite: knowledge of programming at the
level of 106B, experience in a high-level language other than BASIC and as a
UNIX user.
3 units, Win (Staff)
193W. Microsoft Windows
Programming–The fundamentals of programming on the Microsoft Windows platform,
focusing on the use of Microsoft Foundation Class (MFC) framework. Other
aspects of Windows programming including Microsoft’s COM and OLE object models
and the ODBC database interface. Requires a significant amount of programming.
Prerequisites: knowledge of C++ at the level of 108 or 193D.
3 units, Spr (Young)
194. Software Project–Student
teams complete a significant programming project through the phases of
specification, coding, and testing under faculty supervision. Lectures on
software engineering methodologies. In addition to implementation, students
must provide well-written design specifications and user documentation; they
must also demonstrate both a prototype design and the final product.
Prerequisite: 108. (WIM)
3 units, Win, Spr (Plummer)
196. Microcomputer
Consulting–Overview of computer consulting, focusing on Macintosh and
IBM-compatible systems. Topics: operating systems, networks, troubleshooting,
and consulting methodology. Biweekly lectures emphasize on-campus computing
environments. Students work as consultants in campus computer clusters and in
residences. Prerequisite: 1C.
2 units, Aut (Brown), Spr
(Staff)
197. Mainframe and
Workstation Computer Consulting–Computer consulting in a workstation and server
environment, focusing on the UNIX operating system under the SUN, HP, and SGI
hardware systems. Topics: UNIX fundamentals, consulting tips, networking, and
systems administration. Students work as on-duty consultants at the Sweet Hall
and Terman computer clusters. Pre- or corequisite: 1U.
2 units, Win, Spr (Staff)
198. Teaching of Computer
Science–Teach a small discussion section of 106A while learning the
fundamentals of teaching a programming language at the introductory level. Two
workshops/one meeting weekly on introductory material in general, 106
specifically, and teaching techniques. Application and interview required; see
the 198 coordinator in CS for information. Prerequisite: 106B or 106X.
4 units, Aut, Win, Spr (Roberts,
Ranganath, Chong)
199. Independent Work–Special
study under faculty direction, usually leading to a written report. Letter
grade given; if this is not appropriate, enroll in 199P. Register using the
section number associated with the instructor.
any quarter (Staff)
199P. Independent Work–Like
199, but graded Satisfactory/No Credit.
any quarter (Staff)
UNDERGRADUATE AND GRADUATE
200. Undergraduate
Colloquium–Strongly recommended for junior-year CS majors as a way to build
contacts with faculty. Weekly presentations by faculty and people from industry
informally describing their views of computer science as a field and their
experience as computer scientists. (AU)
1 unit, Aut, Win (Zelenski)
201. Computers, Ethics, and
Social Responsibility–Primarily for majors entering computer-related fields.
Analysis of the ethical and social issues related to the development and use of
computer technology. Introduction to the relevant background in ethical theory,
and the social, political, and legal considerations. Analysis of scenarios in
specific problem areas: privacy, reliability and risks of complex systems, and
the responsibility of professionals for the applications and consequences of
their work. Prerequisite: 106B or 106X. (WIM)
*4 units, Spr (Johnson)
202. Law for Computer Science
Professionals–Equips computer science professionals with the information and
framework to make law-related decisions affecting their work, while remaining
full participants in design or development decision-making when these legal issues
arise. Problem-oriented. Topics: signing invention assigment and nondisclosure
agreements, protecting intellectual property, distinguishing between
independent contractors and employees, and negotiating software development and
publishing agreements.
1 unit, Win (Heckman)
205. Mathematical Methods for
Robotics and Vision–Overview of some of the mathematical background necessary
for research in robotics and vision. Possible topics: geometric meaning of
linear algebra concepts; Singular Value Decomposition; Schur Decomposition;
differential equations; dynamic systems and stochastic estimation (Kalman
filtering); vector and tensor calculus; calculus of variations. Prerequisites:
106B or X; Math. 51 and 113; or equivalents.
3 units, Aut (Tomasi)
206. Applied Electronic
Commerce–As the internet and wide-area networks are increasingly used to
conduct commerce, computer scientists need to understand the nature of economic
mechanisms, e.g., auctions, and devise the ways to implement them efficiently.
Relevant economic theories. Lab to design and implement a substantial
application in small groups. Prerequisites: sufficient mathematical maturity to
follow basic combinatorial and probabilistic arguments, and ability to code in
either C++ or Java.
3 units, Win (Shoham)
211. Logic Design–(Enroll in
Electrical Engineering 275.)
3 units, Aut, Win
212. Computer Architecture
and Organization–(Enroll in Electrical Engineering 282.)
3 units, Aut, Win
221. Artificial Intelligence:
Principles and Techniques–Broad technical introduction to core concepts and
techniques in artificial intelligence. Topics: search, planning, knowledge
representation, managing uncertainty, machine learning, neural networks,
vision, robotics, natural language understanding, and intelligent architectures.
Prerequisites: 103 or 109, 157 or Philosophy 160A, and exposure to basic
concepts in probability. Only one of 121 or 221 counts towards CS degree
requirements.
*4 units, Aut (Koller)
222. Knowledge
Representation–Declarative knowledge representation methods in artificial
intelligence. Topics: time and action, nonmonotonic logics, causality,
inheritance and description logics, ontologies, contexts, knowledge
reformulation, multiple views, abstraction, deduction vs. abduction, knowledge
and other mental attitudes. Prerequisites: basic familiarity with logic.
Recommended: prior exposure to artificial intelligence as in 121/221.
3 units, Win (Fikes)
223A. Introduction to
Robotics–Topics: manipulator kinematics and inverse kinematics; manipulator
dynamics, motion, and force control; motion planning and robot programming.
Recommended: knowledge of matrix algebra.
3 units, Win (Khatib)
223B. Introduction to
Computer Vision–Fundamental issues and techniques of computer vision. Image
formation, edge detection and image segmentation, stereo, motion, shape
representation, recognition. Project or final. Prerequisite: 205 or equivalent.
3 units, Win (Tomasi)
[224M. Multi-Agent Systems -
Covers various aspects of extending AI theories and techniques from the
single-agent case to the multi-agent (MA) case. Topics: MA knowledge
representation, MA planning, MA reasoning under uncertainty, MA learning,
coordination mechanisms, and automated negotiation. Aimed at advanced
undergraduate and masters levels, though PhD students interested in the area
will find it relevant as well. Emphasis on representation techniques and
algorithms, the former drawn from logic, decision theory, and game theory.
There will be no programming assignments. Students should be prepared that
there exists no textbook on the topic, and that this is the first time the
course is being taught. Prerequisites: Knowledge of basic probability theory,
first-order logic, and algorithms.
3 units, Spr (Shoham)]
224N. Natural Language
Processing --- Develops in-depth understanding of both the algorithms available
for the processing of linguistic information and the underlying computational
properties of natural languages. Morphological, syntactic, and semantic
processing from both a linguistic and an algorithmic perspective. Focus on
modern quantitative techniques in NLP: using large corpora, statistical models
for acquisition, disambiguation, and parsing. Examination and construction of
representative systems. Prerequisites: 121/221 or Ling 138/238, and programming
experience. Recommended: basic familiarity with logic and probability. 3 units,
Spr (Manning)
225A. Experimental
Robotics–(Formerly 225.) Hands-on experience with robotic manipulation and
navigation systems. Topics: kinematic and dynamic control of motion, compliant
motion and force control, sensor-based collision avoidance, motion planning,
assembly planning, task specifications, and robot-human interfaces. Limited
enrollment. Prerequisite: 223A.
3 units, Spr (Khatib)
225B. Robot Programming
Laboratory–(Formerly 224.) Hands-on introduction to the techniques of robot
programming for robotics and non-robotics students. Series of guided exercises
in which students program mobile robots to exhibit increasingly complex
behavior (simple dead reckoning and reactivity, planning and map building,
communication and cooperation). Topics: basics of motor control and sensor
characteristics; sensor fusion, model construction, and robust estimation;
control regimes (fuzzy control and potential fields); active perception; reactive
planning architectures; various topics in sensor-based control, including
vision-guided navigation. Student programmed robot contest. Programming is in C
on Unix or Windows machines; course work done in teams. Prerequisites: 205 or
equivalent, C programming ability.
*4 units, Win (Konolige)
226. Knowledge-Based Systems
and Applications–Knowledge-based (expert) system technology is the most
widely-used application technology to emerge from AI. Topics: basics of KBS and
ES; tech transfer from research to industry; knowledge engineering, KB
programming, knowledge acquisition methodology; evolution of the technology as
applied to business and government problems, current and future impact. Case
studies, readings. System building project possible. Some guest lectures.
3 units, Aut (Feigenbaum)
227. Reasoning Methods in
AI–Technical presentation of algorithmic techniques for problem solving in AI.
Combines formal algorithmic analysis with description of recent applications.
Topics: search and real-time search, constraint satisfaction, planning, robot
motion planning, logical deduction, abstraction and approximation. Focus is on
recent results. Prerequisites: familiarity with the basic notions in data
structures and design and with techniques in design and analysis of algorithms.
Recommended: previous or concurrent course in AI.
3 units, Spr (Nayak)
228. Reasoning under
Uncertainty–Modeling (knowledge representation) languages suitable for dealing
with an uncertain world, algorithms for reasoning and decision making using
these representations, and learning these representations from data. Focus is
on graphical modeling languages such as Bayesian belief networks, extensions to
temporal modeling using hidden Markov models and dynamic Bayesian networks, and
extensions to decision making using influence diagrams and Markov decision
processes. Recent applications to domains (speech recognition, medical
diagnosis, data mining, statistical text modeling, and robot motion planning).
Prerequisites: understanding of basic concepts in probability theory and in
design and analysis.
3 units, Win (Koller)
229. Machine Learning–Survey
of major research areas in pattern recognition and machine learning. Topics:
the foundations of statistical pattern recognition, parametric and non-parametric
learning, decision trees, Bayesian and neural networks, reinforcement learning,
genetic algorithms, computational learning theory. Focus on the underlying
concepts and the role of machine learning in AI and other disciplines.
Representative systems. Prerequisites: 221 or consent of instructor, and
ability to write computer programs in one or more commonly used languages.
3 units, Spr (Bregler)
237A. Numerical Linear
Algebra–This course is the first in a three-quarter graduate sequence designed
to acquaint students in mathematical and physical sciences and engineering with
the fundamental theory of numerical analysis. Solution of systems of linear
equations: direct methods, error analysis, structured matrices; iterative
methods and least squares. Parallel techniques. Prerequisites: 106A, 137, Math.
103 or 113.
3 units, Aut (Golub)
237B. Numerical Solution of
Initial Value Problems–Linear multistep methods and Runge-Kutta methods for
ordinary differential equations: zero-stability, A-stability, and convergence.
Differential algebraic equations. Parabolic partial differential equations:
stability, convergence and qualitative properties. Hyperbolic partial
differential equations: stability convergence and qualitative properties.
Prerequisites: Math. 130, 131.
3 units, Win (Oliger)
237C. Numerical Solution of
Boundary Value Problems–Elliptic partial differential equations: finite
difference, finite element and spectral methods. Iterative methods for solution
of resulting algebraic equations: SOR, fast Poisson solvers, domain
decomposition, multigrid methods, and Newton iteration. Prerequisites: Math.
130, 131.
3 units, Spr (Wan)
238. Parallel Methods in
Numerical Analysis–Recent developments in parallel computer technology have
made it necessary to reformulate numerical algorithms to exploit the full
potential of this technology. Emphasis is on the different techniques for
obtaining maximum parallelism in various numerical algorithms, especially those
occurring when solving matrix problems and partial differential equations, and
the subsequent mapping onto the computer. Implementation issues on parallel
computers. Topics: parallel architecture, programming models, matrix
computations, FFT, fast multiple methods, domain decomposition, graph
partitioning. Prerequisite: 237A or Mechanical Engineering 200A, or consent of
instructor. Recommended: familarity with differential equations, and experience
in advanced programming language such as F90, C, C++.
3 units, Win (Alonso, Wan)
240. Advanced Topics in
Operating Systems–Advanced study in OS topics and exposure to recent
developments in OS research. Readings/lectures on classic and new papers.
Topics: virtual memory management, synchronization and communication, file
systems, protection and security, operating system extension techniques, fault
tolerance, and the history and experience of systems programming. Prerequisite:
140 or equivalent.
3 units, Win, Spr (Baker)
242. Programming
Languages–The basic elements of programming languages and programming paradigms:
functional, imperative, and object-oriented. Introduction to formal semantic
methods. Modern type systems, higher-order functions and closure, exceptions
and continuations. Runtime support for different language features. Emphasis is
on separating the different elements of programming languages and styles. First
half uses Lisp and ML to illustrate concepts; second half a selection of
object-oriented languages. Prerequisite: 107, or experience with Lisp, C and
some object-oriented language.
3 units, Aut (Mitchell)
243. Advanced Compiling
Techniques–The theoretical and practical aspects of building modern compilers.
Topics: intermediate representations, basic blocks and flow-graphs, dataflow
analysis, register allocation, global code optimizations, and interprocedural
analysis. Prerequisite: 143 or equivalent.
*4 units, Win (Lam)
244A. Introduction to
Computer Networks–The structure and components of computer networks; functions
and services; packet switching; layered architectures; ISO’s Open Systems
Interconnections (OSI) reference model; physical layer; data link layer; error
checking; window flow control; media access control protocols used in local
area networks (Ethernet, Token Ring, FDDI) and satellite networks; network
layer (datagram service, virtual circuit service, routing, congestion control,
IP); transport layer (UDP, TCP); session layer; applications.
3 units, Aut (enroll in
Electrical Engineering 284), Win (McKeown)
244B. Distributed
Systems–Distributed operating systems and applications issues, emphasizing
high-level protocols and distributed state sharing as the key technologies.
Topics: distributed shared memory, object-oriented distributed system design,
distributed directory services, atomic transactions and time synchronization,
file access, process scheduling, process migration and remote procedure call,
focusing on distribution, scale, robustness in the face of failure, and
security. Prerequisites: 240, 244A.
3 units, Spr (Cheriton)
244C. Distributed Systems
Project–Companion project option for students taking 244B. Corequisite: 244B.
3-6 units, Spr (Cheriton)
245. Database System
Principles–File organization and access, buffer management, performance
analysis, and storage management. Database system architecture, query
optimization, transaction management, recovery, concurrency control.
Reliability, protection, and integrity. Design and management issues.
Prerequisites: 145, 161.
3 units, Win (Garcia-Molina)
247A. Human-Computer
Interaction: Interaction Design Studio–Systematic presentation and experience
with the methods used in interaction design, including needs analysis, user
observation, idea sketching, concept generation, scenario-building,
storyboards, user character stereotypes, usability analysis, and market
strategies. Intended as preparation for project-based courses, such as 377 and
447/Mechanical Engineering 293. Prerequisite: 147 or Mechanical Engineering
101.
3-4 units, Win (Winograd)
247B. Contextual and
Organizational Issues in Human-Computer Interaction–(For 1999-2000 only, enroll
in Industrial Engineering 205.) For students interested in the design of
interaction between people and computers; all designers should benefit. Focus
is on the contextual issues associated with designing and using computer
interfaces and technology, providing insights into, experience with, and ways
of understanding issues in work and consumer settings that influence the design
of computer interfaces. Student teams work on projects to develop skills in:
observing individuals and groups of people in context, using models of work and
other activity to extend their design capabilities, identifying constraints and
tradeoffs on designs within the context of use, and observing and working with
people in interdisciplinary design groups. Prerequisite: 147 or Industrial
Engineering 203, or consent of instructor.
3-4 units, Spr (Hinds)
248. Introduction to Computer
Graphics–The fundamentals of input, display, and hardcopy devices, scan
conversion of geometric primitives, 2D and 3D geometric transformations, clipping
and windowing, scene modeling and animation, algorithms for visible surface
determination, introduction to local and global shading models, color, and
photorealistic image synthesis. Written assignments and programming projects.
Prerequisites: 108, Math. 103. Only one of 148 or 248 counts towards CS degree
requirements.
*4 units, Aut (Levoy)
249. Object-Oriented
Programming from a Modeling and Simulation Perspective–Object-oriented
programming techniques and issues, emphasizing programming as modeling and
simulation. Topics: large-scale software development approaches, encapsulation,
use of inheritance and dynamic dispatch, design of interfaces and
interface/implementation separation, exception handling, design patterns,
minimalizing dependencies and value-oriented programming. The role of
programming conventions/style/restrictions in surviving object-oriented
programming for class libraries, frameworks, and programming-in-the-large;
general techniques for object-oriented programming. Prerequisites: knowledge of
C and basic programming methodology as developed in 106B or 106X; 107; basic
knowledge of C++ (may be taken concurrently). Recommended: 193D.
3-5 units, Win (Cheriton)
255. Introduction to
Cryptography and Computer Security–Intended for advanced undergraduates and
graduate students. Introduction to the basic theory and practice of
cryptographic techniques used in computer security. Topics: encryption
(single-key and double-key), digital signatures, pseudo-random bit generation,
authentication, electronic commerce (anonymous cash, micropayments), key
management, zero-knowledge protocols. Prerequisite: basic understanding of
probability theory.
3 units, Win (Boneh)
256. Formal Methods for
Concurrent and Reactive Systems–Formal methods for specification, verification,
and development of concurrent and reactive programs. Reactive systems: syntax
and semantics, fairness requirements. Specification language-temporal logic;
state, future, and past formulas; deductive system. Hierarchy of program
properties: safety, guarantee, obligation, response, persistence, and
reactivity. Verification of programs: verification diagrams and rules,
completeness. Modularity. Parameterized programs. Algorithmic verification of
finite-state programs. Prerequisite: 157 or Philosophy 160A, or equivalent.
3 units, Win (Manna)
256L. Formal Methods for
Concurrent and Reactive Systems Laboratory
2 units, Win (Manna)
257. Automated Deduction and
its Applications–Proving theorems and extracting information from proofs. Uses
in software engineering (program specification, synthesis, and verification)
and artificial intelligence (commonsense and robotic planning, natural-language
understanding). The foundations of logic programming. Deductive tableaux,
nonclausal resolution, skolemization, building theories into unification and
inference rules, term rewriting, inductive theorem proving. The design of
theorem provers. Prerequisite: 157.
3 units (Staff) not given
1999-2000
258. Introduction to
Programming Language Theory–Syntactic, operational, and semantic issues in the
mathematical analysis of programming languages. Type systems and
non-context-free syntax. Universal algebra and algebraic data types.
Operational semantics given by rewrite rules; confluence and termination.
Scott-semantics for languages with higher-type functions and recursion.
Treatment of side-effects. Prerequisites: 154, 157 or Philosophy 160A.
3 units, Win (Mitchell)
260. Concrete
Mathematics–Mathematics for the analysis of algorithms: recurrences,
summations, generating functions, asymptotics. Elementary combinatorics,
discrete probability, and number theory. Prerequisites: 103 or 109, Math. 42,
or equivalents.
3 units (Staff)
261. Optimization and
Algorithmic Paradigms–Algorithms for network optimization: max-flow, min-cost
flow, matching, assignment, and min-cut problems. Introduction to linear
programming. Use of LP duality for design and analysis of algorithms.
Approximation algorithms for NP-complete problems such as Steiner Trees,
Traveling Salesman, and scheduling problems. Randomized algorithms.
Introduction to on-line algorithms.
3 units, Win (Plotkin)
270A. Introduction to Medical
Informatics: Fundamental Methods–(Same as Medical Information Sciences 210A.)
Issues in the modeling, design, and implementation of computational systems for
use in biomedicine. Topics: controlled terminologies in medicine and biological
science,ontologies, fundamental algorithms, basic knowledge representation,
information dissemination and retrieval. Emphasis is on the principles of modeling
data and knowledge in biomedicine and on the translation of resulting models
into useful automated systems.
3 units, Aut (Musen, Altman)
270B. Introduction to Medical
Informatics: Systems and Requirements–(Same as Medical Information Sciences
210B.) Survey of the major application areas in medical informatics, including
clinical information systems, imaging systems, bioinformatics, public policy,
decision support, and signal processing. Emphasis is on the system
requirements, relevant data, algorithms, and implementation issues in each
area. Prerequisite: 270A.
3 units, Win (Shortliffe,
Shahar, Dev)
271. Decision-Making Methods
for Biomedicine–(Same as Medical Information Sciences 211.) For undergraduates
or graduate students, building on concepts introduced in 270B. Intermediate
biomedical decision making and survey of the methods for the implementation of
such concepts in computer-based decision-support tools. Emphasis is on Bayesian
statistics, decision analysis, cost-benefit analysis, neural networks,
artificial intelligence/expert systems, belief networks, influence diagrams,
and the synergies among such approaches. Prerequisites: 270B and at least one
programming course.
3 units, Spr (Higgens,
Garber, Owens, Sanders, Shortliffe)
272. Medical Informatics
Project Course–(Same as Medical Information Sciences 212.) For students who
have completed 270A, 270B, 271 or 274, and who wish to implement those ideas in
a computer program. Students may take 274 concurrently and complete a project
that is coordinated between the two courses. Prerequisites: programming
experience, 270B.
3 units, Spr (Koza, Shahar)
274. Representations and
Algorithms for Computational Molecular Biology–(Same as Medical Information
Sciences 214.) Introduction to basic computational issues and methods used in
the field of bioinformatics, including access and use of biological data
sources on the Internet. Topics: basic algorithms for alignment of biological
sequences and structures, computing with strings, phylogenetic tree construction,
hidden Markov models, computing with networks of genes, basic structural
computations on proteins, protein structure prediction, protein threading
techniques, homology modeling, molecular dynamics and energy minimization,
statistical analysis of 3D biological data, integration of diverse data
sources, knowledge representation and controlled terminologies for molecular
biology, graphical display of biological data, genetic algorithms and genetic
programming applied to biological problems. See instructor for unit options.
Prerequisites: programming skills and understanding of matrix algebra.
1-4 units, Spr (Altman, Koza)
275A. Music Information --
(Enroll in Music 253.) 1-4 units, Win (Selfridge-Field) 275B. Music
Representation -- (Enroll in Music 254.) 1-4 units, Spr (Selfridge-Field)
298. Seminar on Teaching
Introductory Computer Science–Opportunity for faculty and undergraduate and
graduate students who are interested in teaching to discuss specific topics
raised by teaching computer science at the introductory level. Prerequisite:
consent of instructor.
1-3 units, Aut (Roberts)
PRIMARILY FOR GRADUATE STUDENTS
300. Departmental Lecture
Series–For first-year Computer Science Ph.D. students. Presentations by members
of the department faculty, each describing informally his or her current
research interests and views of computer science as a whole. (AU)
1 unit, Aut (Staff)
309. Industrial Lectureships
in Computer Science–The department invites an outstanding computer scientist to
give a course in his/her specialty. Lecturers and topics change yearly; courses
may be taken repeatedly. See Time Schedule for offerings.
3 units
312. Processor Design–(Enroll
in Electrical Engineering 382.)
3 units, not given 1999-2000
315A. Parallel Computer
Architecture and Programming–The principles and tradeoffs in the design of
parallel architectures. Emphasis is on naming, latency, bandwidth, and
synchronization in parallel machines. Case studies on shared-memory,
message-passing, dataflow, and data-parallel machines illustrate techniques.
Architectural studies and lectures on techniques for programming parallel
computers. Programming assignments on one or more commercial multiprocessors.
Prerequisites: Electrical Engineering 282, and reasonable programming
experience.
3 units, Spr (Hamdi)
315B. Parallel Programming
Project–Continuation of 315A. A significant parallel programming project is
required using shared-memory, message-passing, or data-parallel machines.
Lectures on parallel programming languages and their implementation,
performance debugging of parallel programs, parallel data structures and
algorithms. Prerequisite: 315A or consent of instructor.
3 units (Staff), not given
1999-2000
316A. Logic Synthesis of VLSI
Circuits–(Enroll in Electrical Engineering 318.)
3 units, Win
316B. Computer-Aided System
Design Laboratory–(Enroll in Electrical Engineering 319.)
3 units, Spr
317. Fault Tolerant Computing
Systems–(Enroll in Electrical Engineering 489.)
3 units, alternate years,
given 2000-01
318. Testing Aspects of
Computer Systems–(Enroll in Electrical Engineering 488.)
3 units, Spr
319. Topics in Digital
Systems–Advanced material is often taught for the first time as a
"topics" course, perhaps by a faculty member visiting from another
institution. Students may therefore enroll repeatedly in a course with this
number. See Time Schedule for topics currently being offered.
by arrangement
320. Interactivity,
Narrative, and Artificial Intelligence–Theory of and approaches to interactive
narrative systems, especially those that incorporate artificial intelligence
techniques. Invited lecturers, discussion readings, critical review of CD ROM
titles and other implemented systems. Students create prototypes of AI-based
interactive story systems.
2 units (Hayes-Roth,
Friedlander) not given 1999-2000
323. Common Sense Reasoning
in Logic–Formalizing common sense knowledge and reasoning using situation
calculus with nonmonotonic logics, especially circumscription. Variations of
situation calculus. Formalizing context. Formalizing facts about knowledge.
Prerequisite: basic knowledge of logic such as 157, or Philosophy 160A.
3 units, Aut (McCarthy)
326A. Motion Planning–For
students interested in computer graphics, geometrical computing, robotics,
and/or artificial intelligence. Computing object motions is central to many
application domains (e.g., design, manufacturing, robotics, animated graphics,
medical surgery, drug design). Basic path planning methods generate
collision-free paths among static obstacles. Extensions include uncertainty, mobile
obstacles, manipulating movable objects, and maneuvering with kinematic
constraints. Configuration space is a unifying concept, geometric arrangements
are a basic combinatorial structure. Theoretical methods with applications in
various domains: assembly planning, radiosurgery, graphic animation of human
figures.
3 units, Win (Latombe)
327A. Advanced Robotic
Manipulation–Topics: redundant manipulators, robot motion/force control;
kinematic singularities; inertial properties, dynamic performance, and robot
design; macro/mini manipulator systems; mobile manipulator platforms;
cooperative robots; sensor-based primitives, artificial potential field and
force strategies. Prerequisites: 223A, consent of instructor.
3 units, Spr (Khatib)
328. Topics in Computer Vision–Fundamental
issues of, and mathematical models for, computer vision. Sample topics: camera
calibration, texture, stereo, motion, shape representation, image retrieval,
experimental techniques. Student papers and project. Prerequisites: 205, 223B, or
equivalents.
3 units (Tomasi) alternate
years, given 2000-01
329. Topics in Artificial
Intelligence–Advanced material is often taught for the first time as a
"topics" course, perhaps by a faculty member visiting from another
institution. Students may therefore enroll repeatedly in a course with this
number. For spring quarter 1999-2000, students should enroll in Psychology 224
"Learning and Inference in Humans and Machines".
1-3 units, Spr
336. Advanced Methods in
Matrix Computation–Eigenvalue problems: perturbation theory, Lanczos method,
Jacobi method. Parallel implementation. Singular value problems. Generalized
eigenvalue problems. Polynomial equations. Prerequisite: 237A.
3 units (Golub) not given
1999-2000
337. Numerical Methods for
Initial Boundary Value Problems–Initial boundary value problems are solved in
different areas of engineering and science modeling phenomena, e.g., wave
propagation and vibration, fluid flow, etc. Numerical techniques for such
simulations are discussed in the context of applications. Emphasis is on
stability and convergence theory for methods for hyperbolic and parabolic
initial boundary value problems, and the development of efficient methods for
these problems.
3 units, Spr (Oliger)
339. Topics in Numerical
Analysis–Advanced material is often taught for the first time as a
"topics" course, perhaps by a faculty member visiting from another
institution. Students may therefore enroll repeatedly in a course with this
number. See Time Schedule for current topics.
3 units, alternate years,
given 2000-01
341. Advanced Topics in Data
Communication–Readings/discussion are combined with topical lectures to
familiarize students with a core of classic and new papers in the field of data
networking. Emphasis is on understanding and applying existing work to new
problems in the field, especially high-speed networking. Classes alternate
between discussion sections and lectures. Topics: network theory (the
end-to-end argument), transport protocol performance (header prediction,
checksum efficiency), cell relay (e.g., ATM and SONET), congestion control
(Parekh’s thesis, leaky bucket, fair queueing) and high-speed switching (input
vs. output queueing, crossbars and banyans). Prerequisite: 244A.
3 units (Partridge) not given
1999-2000
342. Programming Language
Design–Problems of programming language design and comparison of traditional
solutions. Possible topics: formal semantics, implementation considerations,
extensibility, very high level languages, evaluation of language designs, the
innovative features of a variety of modern programming languages.
Prerequisites: 242, 243.
3 units (Mitchell), not given
1999-2000
343. Topics in
Compilers–Advanced topics in compilers. Topics change every quarter; course may
be taken repeatedly for credit. Prerequisite: 243.
3 units, Spr (Lam)
344. Projects in Computer
Networks–For students with a strong interest in computer networks from novel
applications to physical layer coding schemes; software to hardware; theory to
design-and-build. Teams of two complete a small research project of sufficient
quality and interest to merit presentation at a conference, or to form the
basis of a new business, e.g., studies of network traces, network traffic
visualization tools, home-networking, analysis of performance of cable-modems,
novel web applications, or novel router architecture. Enrollment limited to 30.
Prerequisites: 244A; or Electrical Engineering 284 and 384. Recommended: 244B;
and Electrical Engineering 384B or 384C.
3 units (McKeown) alternate
years, given 2000-01
345. Advanced Topics in
Database System–Advanced topics in the area of database and information
systems. Content differs in each offering; may be taken multiple times for
credit. Prerequisite: 145.
3 units, Spr (Ullman)
346. Database System
Implementation–A major database system implementation project realizes the
principles and techniques covered in earlier courses. Students independently
build a complete database management system, from file structures through query
processing, with a personally designed feature or extension. Lectures on
project details and advanced techniques in database system implementation,
focusing on query processing and optimization. Guest speakers from industry on
commercial DBMS implementation techniques. Prerequisites: 145, 245.
Recommended: programming experience in C++.
*5 units, Win (Widom)
347. Transaction Processing
and Distributed Databases–The principles and system organization of distributed
databases. Data fragmentation and distribution, distributed database design,
query processing and optimization, distributed concurrency control, reliability
and commit protocols, and replicated data management. Distributed algorithms
for data management: clocks, deadlock detection, and mutual exclusion.
Heterogeneous and federated distributed database systems. Overview of
commercial systems and research prototypes. Prerequisites: 145, 245.
3 units, Spr (Garcia-Molina)
348A. Computer Graphics:
Mathematical Foundations–The mathematical tools needed for the geometrical
aspects of computer graphics. Fundamentals: homogeneous coordinates,
transformations and perspective. Theory of parametric and implicit curve and
surface models: polar forms, Bezier arcs and de Casteljau subdivision,
continuity constraints, B-splines, tensor product, and triangular patch
surfaces. Representations of solids and conversions among them. Geometric
algorithms for graphics problems, with applications to ray tracing, hidden
surface elimination, etc. Rudiments of wavelet theory and multi-resolution
shape representations. Prerequisites: linear algebra and discrete algorithms.
*4 units, Staff
348B. Computer Graphics:
Image Synthesis Techniques–Intermediate level, emphasizing sampling, shading,
and display aspects of computer graphics. Topics: local and global illumination
methods including radiosity and distributed ray tracing, texture generation and
rendering, volume rendering, strategies for anti-aliasing and photo-realism,
human vision and color science as they relate to computer displays, and
high-performance architectures for graphics. Written assignments and
programming projects. Prerequisite: 248 or equivalent. Recommended: exposure to
Fourier analysis or digital signal processing.
*4 units, Win (Hanrahan)
348D. Vision and Image
Processing–(Enroll in Psychology 267.)
1-3 units (Heeger) alternate
years, given 2000-01
349. Topics in Programming
Systems–Advanced material is often taught for the first time as a
"topics" course, perhaps by a faculty member visiting from another
institution. Students may therefore enroll repeatedly in a course with this
number. See Time Schedule for topics currently being offered.
Spr (Prabhakar) enroll in
EE392N, by arrangement
351. Topics in Complexity
Theory and Lower Bounds–Focus is on one of: basic machine models and complexity
measures–their properties and relationships, complexity classes and their
properties, reductions and complete problems, concrete representative problems
from important complexity classes. Techniques for establishing limits on the
possible efficiency of algorithms, and concrete lower bounds based on the
following models of computation: decision trees, straight line programs,
communication games, branching programs, PRAMs, boolean circuits. Approximation
algorithms and the complexity of approximations. Pseudo-randomness and
cryptography. Prerequisite: 154, or equivalent.
3 units (Motwani) alternate
years, given 2000-01
352. Foundations of Control
Structures–Theory of constructs for controlling program execution. Theories of
serial control: verification conditions, partial correctness assertions,
weakest preconditions, dynamic logic. Models of serial control: state functions
and relations, regular expressions, dynamic algebras. Theories of parallel
control: temporal logic, process algebra, CCS, CSP. Models of parallel control:
state trajectories, synchronization trees, execution traces, partial orders,
Petri nets, event structures, metric spaces, non-well-founded sets. Notions of
time: ordered, real, probabilistic, linear, branching. Semantic equivalences.
Structural operational semantics. Related soundness, completeness, and
complexity issues. Prerequisite: 258 or consent of instructor.
3 units (Pratt) not given
1999-2000
353. Algebraic
Logic–Algebraic methods relevant to computer science. Lattice theory: partial
orders, monoids, closure systems, topologies, fixpoint theorems. Universal
algebra: HSP, free algebras, equational theories, Birkhoff’s theorem,
completeness of equational logic. Algebras for logic: Boolean, Heyting,
cylindric. Categories: limits, adjunctions, algebraic theories, enriched
categories. Prerequisites: 157 or Philosophy 160A, 161, or equivalents.
3 units, Aut (Pratt)
354. Probabilistic Reasoning
in Computing–The basics of (Bayesian) probability theory as applied to
computing and intelligence systems. Emphasis is on working through applications
and understanding relevant theory. Relevant probability theory and techniques:
interpretations, graphical and network models, information theory, decision
theory, inference, and "alternative" approaches. Probabilistic
aspects of computational problems in learning, search, data analysis, neural,
and dynamic systems. Some topics by guest lecturers. Prerequisites: 106B or X,
221, a knowledge of basic statistical measures as in Psychology 60, and basic
math.
3 units (Staff)
355. Advanced Topics in
Cryptography–For graduate students. Topics: pseudo-random generation, zero
knowledge protocols, elliptic curve systems, threshold cryptography, security
analysis using random oracles, lower and upper bounds on factoring and discrete
log. Prerequisite: 255.
3 units, Spr (Boneh)
356. Automatic Formal
Verification Techniques–Automatic methods for formally verifying hardware,
protocol, and software system designs. Topics: state graph and automata models
of system behavior. Automata on infinite strings. Linear and branching-time
temporal logic. Model-checking. Modeling real-time systems. Analysis methods
based on Boolean formulas, and other ways of coping with the "state
explosion problem." Exploiting abstractions. Applications to circuits,
algorithms, and protocols. Case studies use a variety of verification tools.
Prerequisite: 154 or 254. Recommended: good understanding of basic automata and
complexity theory, and undergraduate-level background in computer science.
3 units, Win (Dill)
357. Topics in Formal
Methods–Formal methods for the specification, verification, analysis, and
systematic development of real-time and hybrid systems. Hybrid systems involve
continuous changes and discrete transitions. Computational models: timed and
phase transition systems, timed and hybrid automata. Specification: timed and
hybrid statecharts, metric and hybrid temporal logics, duration calculus.
Statecharts. Structured specification. Verification rules and diagrams.
Refinement techniques. Algorithmic verification of finite-state systems.
Advanced research topics. Prerequisite: 256 or equivalent.
3-5 units, Spr (Manna)
358. Topics in Programming
Language Theory–Possible topics of current research interest in the
mathematical analysis of programming languages: structured operational
semantics, domain theory, semantics of concurrency, rich type disciplines,
problems of representation independence, and full abstraction. May be repeated
for credit. Prerequisites: 154, 157, 258, or equivalents.
3 units (Mitchell) not given
1999-2000
359. Topics in Theory of
Computation–Advanced material is often taught for the first time as a
"topics" course, perhaps by a faculty member visiting from another
institution. Students may therefore enroll repeatedly in a course with this
number. See Time Schedule for topics currently being offered.
361A. Advanced
Algorithms–Advanced data structures: union-find, self-adjusting data structures
and amortized analysis, dynamic trees, Fibonacci heaps, universal hash function
and sparse hash tables, persistent data structures. Advanced combinatorial
algorithms: algebraic (matrix and polynomial) algorithms, number theoretic
algorithms, group theoretic algorithms and graph isomorphism, on-line
algorithms and competitive analysis, strings and pattern matching, heuristic
and probabilistic analysis (TSP, satisfiability, cliques, colorings), local
search algorithms. Prerequisite: 161 or 261, or equivalents.
3 units, Aut (Motwani)
alternate years, not given 2000-01
361B. Advanced Algorithms–Topics:
exact and approximate algorithms for various combinational optimization
problems, e.g., generalized and multicommodity flow, constrained forest
problems, scheduling, and the max-cut problem multidimensional search. Linear
programming; LP duality, ellipsoid dimension. Lattice reduction and
strongly-polynomial algorithms.
3 units (Plotkin) alternate
years, given 2000-01
365. Randomized
Algorithms–Design and analysis of algorithms that use randomness to guide their
computations. Basic tools, from probability theory and probabilistic analysis,
that are recurrent in algorithmic applications. Randomized complexity theory
and game-theoretic techniques. Algebraic techniques. Probability amplification
and derandomization. Applications: sorting and searching, data structures,
combinatorial optimization and graph algorithms, geometric algorithms and
linear programming, approximation and counting problems, parallel and
distributed algorithms, on-line algorithms, number-theoretic algorithms.
Prerequisites: 161 or 261, Statistics 116, or equivalents.
3 units (Motwani) alternate
years, given 2000-01
367A. Parallel
Computation–Introduction to theoretical issues in parallel computation.
Properties of parallel computation models and algorithm design techniques
specific to each model, including systolic arrays, mesh-connected computers,
hypercube-related networks, and PRAM. Topics: algorithms for sorting, connected
components, shortest paths, and other basic problems. Upper and lower bounds
for randomized and deterministic routing on hypercube and related networks.
Techniques for reducing the processor-time product for PRAM algorithms.
3 units (Plotkin)
367B. Parallel
Computation–Advanced parallel algorithms. Focus is on developing techniques for
the design of parallel algorithms on the PRAM model of computation and its
derivatives. Possible topics: efficient randomized parallel algorithms for
symmetry-breaking and related problems. Derandomization techniques. Parallel
sorting. Deterministic and randomized parallel algorithms for flows and related
problems; assignment problem, matching in general graphs. Evaluation of
straight-line code, P-complete problems.
3 units (Plotkin)
368. Geometric
Algorithms–Graduate-level introduction to the basic techniques used in the
design and analysis of efficient geometric algorithms including: convexity,
triangulation, sweeping, partitioning, and point location. Voroni and Delaunay
diagrams. Intersection and visibility problems. Recent developments using
random sampling methods. Emphasizes data structures of general usefulness in
geometric computing and the conceptual primitives appropriate for manipulating
them. Impact of numerical issues in geometric computation. Applications to
motion planning, visibility preprocessing, model-based recognition, and GIS.
Prerequisite: 161.
3 units, Spr (Guibas)
369. Topics in Analysis of
Algorithms–Advanced material is often taught for the first time as a
"topics" course, perhaps by a faculty member visiting from another
institution. Students may therefore enroll repeatedly in a course with this
number. See Time Schedule for topics currently being offered.
3 units (Plotkin)
377. Topics in Human-Computer
Interaction–Topics of current research interest in human-computer interaction.
Contents change each quarter. May be repeated for credit.
3-4 units
378. Phenomenological
Foundations of Cognition, Language, and Computation–Critical analysis of
theoretical foundations of the cognitive approach to language, thought, and
computation. Contrast of the rationalistic assumptions of current linguistics
and artificial intelligence with alternatives drawn from phenomenology,
theoretical biology, critical literary theory, and socially-oriented speech act
theory. Emphasizes relevance of theoretical orientation to the design, implementation,
and impact of computer systems as it affects human-computer interaction.
3-4 units, Win (Winograd)
379. Interdisciplinary
Topics–Advanced material that relates computer science to other disciplines is
often taught for the first time as a "topics" course, perhaps by a
faculty member visiting from another institution. Students may therefore enroll
repeatedly in a course with this number. See Time Schedule for topics being
currently offered.
by arrangement
390A,B,C. Curricular
Practical Training–Provides educational opportunities in high-technology
research and development labs in the computing industry. Qualified computer
science students engage in internship work and integrate that work into their
academic program. Students register during the quarter they are employed and
must complete a research report outlining their work activity, problems
investigated, key results, and any follow-on projects they expect to perform.
Meets the requirements for Curricular Practical Training for students on F-1
visas. 390 A, B and C may each be taken only once.
1 unit, any quarter (Motwani)
393. Computer Laboratory–For
CS graduate students. A substantial computer program is designed and
implemented; written report required. Recommended as a preparation for dissertation
research. Register using the section number associated with the instructor.
Prerequisite: consent of instructor.
any quarter (Staff)
394. Business Management for
Computer Scientists and Electrical Engineers–Focuses on the functional areas
necessary for making successful business decisions. Topics: corporate strategy,
new product development, marketing, sales, distribution, customer service, and
financial accounting. How to identify and analyze issues in each of these areas
in a rapidly changing world. Develops a framework and tool set for formulating,
evaluating, and recommending action from the general manager point of view and
for communicating and defending ideas in a team environment. Required study
groups. Written case assignments. Enrollment limited to 60. See
http://www-leland.stanford.edu/class/cs394/ for details. Prerequisite: graduate
student in Computer Science or Electrical Engineering.
3-4 units (Gibbons, Liddle)
not given 1999-2000
395. Independent Database
Project–For graduate students in Computer Science. Use of database management
or file systems for a substantial application or implementation of components
of database management system. Written analysis and evaluation required.
Register using the section number associated with the instructor. Prerequisite:
consent of instructor.
any quarter (Staff)
399. Independent Project
1-9 units, any quarter
(Staff)
399P. Independent
Project–Graded satisfactory/no credit.
1-9 units, any quarter
(Staff)
EXPERIMENTAL
409. Category Theory and
Formal Software Development–Introduction to category theory in the context of
formal methods of software engineering. From software engineering, focus is on
construction via the composition of large formal specifications, and refinement
of specifications into efficient code. The foundations for specification
composition and refinement are provided by categorical concepts such as
colimits and sheaves. Topics: application-specific domain theories, formal
requirement specifications, representation and use of programming knowledge,
software architectures, algorithm and data structure design, program
optimization techniques, datatype refinement, code generation, and system
support.
3 units, Spr (Smith, Green)
alternate years, not given 2000-01
426. Genetic Algorithms and
Genetic Programming–The genetic algorithm is a domain-independent algorithm for
search, optimization, and machine learning patterned after Darwinian natural
selection and naturally occurring genetic operators such as recombination,
mutation, gene duplication, gene deletion, gene regulation, and embryonic
development. Genetic programming is a domain-independent automatic programming
technique that extends the genetic algorithm to the breeding of populations of
computer programs. Topics: introduction to genetic algorithms and genetic
programming; mathematical basis for genetic algorithms; implementation on
parallel computers and field-programmable gate arrays; evolution of machine
language programs; applications to problems of system identification, control, classification,
analysis of genome and protein sequences, and automatic synthesis of the design
of topology, sizing, placement, and routing of analog electrical circuits.
3 units, Win (Koza)
444A. Software Development
for Critical Applications–Introduction to current methods for developing
safety-critical software (e.g., fly-by-wire avionics); and mission-critical
software (e.g., Internet commerce). Topics: basic terminology, failure and
fault taxonomies, hazard analysis techniques, failure mode analysis, fault tree
analysis, software standards, formal methods, testing requirements, fault
tolerance, probabilisitic models, and engineering techniques for critical
systems from embedded systems to large-scale Internet applications. Students
apply analysis techniques to example systems, use tools for specification, and
implement example algorithms and applications.
3 units, Aut (Dill, Fox)
446. Tools and Processes for
Software–The fundamental concepts of software engineering: life-cycle models
(waterfall, spiral, etc.), project and software metrics, quality assurance,
software reuse. The development process: business process modeling,
requirements engineering, analysis, design, implementation, testing,
maintenance. Introduction to modeling techniques (UML and design patterns).
Research challenges, with reviews of ongoing research by faculty and outside
speakers on such topics as specification validation and software composition.
Readings and modeling exercises. Focus throughout is on large-scale software
development as seen in industry. Part of class (UML, software development
process) may be taken for one unit. Prerequisites: prior software experience;
graduate standing or consent of instructor.
1-3 units, Aut (Wiederhold,
Beringer)
447. Interdisciplinary
Interaction Design–(Same as Mechanical Engineering 293.) Small teams develop
innovative technology prototypes that combine product and interaction design.
Focus is on software and hardware interfaces, interaction, design aesthetics,
and some underpinnings of successful design: a reflective, interactive design
process, group dynamics of effective interdisciplinary teamwork, and working
with users. Prerequisite: 247A.
3-4 units, Spr (Winograd,
Kelley)
448. Topics in Computer
Graphics–In-depth study of an active research topic in computer graphics. Topic
changes each quarter. Previous topics: exotic input and display technologies,
modeling of natural phenomena, digital film making, media technologies for
graphics and graphics architectures. Readings from literature and a project.
May be taken repeatedly for credit. Prerequisite: 248 or consent of instructor.
3 units, Aut (Loeb,
Hanrahan), Win (Guibas), Spr (Hanrahan)
448A. Interactive Workplaces
—
Aut (Hanrahan)
448B. Motion Study: An
Introduction to Animation, Cartoon Physics and Funny Walks —Hands-on animation
course providing foundation for future work in Computer Graphics, Animation and
Robotics. Students explore techniques, tools and methods used by traditional
animators. These skills were developed by animation masters over nearly one
hundred years of experimentation, artistry, research, and trial and error.
Students complete five short exercises that allow them to develop their skills
and play with the animation medium. Through lectures, hands-on exercises,
motion analysis and screenings, students will learn about a variety of
animation techniques and gain a basic control of timing, spacing, weight,
lip-synch and visual design. One set of lectures and exercises, for example,
will focus on the differences between physics and cartoon physics. Attention
will be given to walks and what makes a walk believable. Students are given a
method for looking at walks, analyzing them and creating an effective and
expressive animated walk. No previous animation experience or drawing skills
are needed. Preference to CS students with a graphics or animation
specialization, and Art students from the Digital Arts program. Enrollment
limited to 15.
Aut (Loeb)
468. Topics in Geometric
Algorithms–Advanced seminar covering different topics related to geometric
computing. Recent offerings: shape matching, proximity and nearest-neighbor
problems, visibility and motion planning, and collision detection. Readings
from the literature and a presentation or a project required. May be taken
multiple times for credit. Prerequisite: 368, or consent of instructor.
2 units, Aut (Guibas), Win,
Spr (Staff)
499. Advanced Reading and
Research–For CS graduate students. Register using the section number associated
with the instructor. Prerequisite: consent of instructor.
any quarter (Staff)
GRADUATE SEMINARS
510. Digital Systems
Reliability Seminar–(Enroll in Electrical Engineering 385A.)
1-4 units, Aut, Win, Spr, Sum
523. Readings in Artificial
Intelligence–Primarily for students planning to take the AI qualifying exam. A
series of lectures and discussions on readings in all areas of artificial
intelligence research. Prerequisite: 221.
3 units, Win (Staff)
525. Seminar on Knowledge
Acquisition for Expert Systems–(Enroll in Medical Information Sciences 230.)
2 units (Musen) alternate
years, given 2000-01
528.
Graphics/Geometry/Vision/Robotics Seminar–Weekly series of informal research
talks on topics related to perceiving, modeling, manipulating, and displaying
the physical world. The computational models and numerical methods underlying
these topics. Brings together faculty and students in these five closely
related areas. (AU)
1 unit, Aut, Win, Spr (Staff)
530. Applied
Mathematics/Scientific Computing Seminar
1 unit, Aut, Win, Spr (Staff)
531. Numerical Analysis/Scientific
Computing Seminar–(AU)
1 unit, Aut, Win, Spr (Golub)
540. Seminar on Computer
Systems–(Enroll in Electrical Engineering 380.)
1 unit, Aut, Win, Spr
544. Mobile Computing
Seminar–Weekly readings, discussions, and presentations on current research in
mobile and wireless computing. Invited speakers from Stanford and elsewhere
lecture on topics of current interest. Prerequisites: 240, 244B. (AU)
1-2 units (Baker)
545. Database Research
Seminar–Presentations of current research and industrial innovation in
information systems, sponsored by Infolab faculty. Topics: fundamental database
technology, digital libraries, knowledge-based processing and advanced
applications. Interaction with speakers. (AU)
1 unit, Aut, Spr (Staff)
545I. Advanced Image Databases
Seminar–Reading/demonstrations/analysis devoted to image and video databases as
created by photographic, medical, and commercial sources. Emphasis is on
combining image-derived and textual descriptors to retrieve on-line images.
Issues: data structures and indexing schemes for real-time interaction,
high-dimensional feature vectors for fast retrieval, metrics of closeness
between query and stored vectors. Presentations by commercial and research
image retrieval organizations illustrate the strengths and weaknesses of
specific techniques. May be combined with a 395 project. (AU)
1 unit, Win (Firschein,
Wiederhold)
547. Human-Computer
Interaction Seminar–Weekly speakers on topics related to human-computer
interaction design. (AU)
1 unit, Aut, Win, Spr (Winograd)
548. Distributed Systems
Research Seminar–Recent research in distributed operating systems, computer
communications, parallel machines, parallel programming, and distributed
applications. Invited speakers from Stanford and elsewhere present topics and
results of current interest. (AU)
1 unit, Spr (Cheriton)
559. Seminar on Mathematical
Theory of Computation–Possible topics (vary each year): logic and its relation
to computation, programming language analysis and design, specification and
verification of software and hardware systems, theories of concurrency,
approaches to static analysis and program state. Invited speakers present
recent results and summaries of articles from the current literature. (AU)
1 unit, by arrangement
(Mitchell) 579. Frontiers in Interdisciplinary Biosciences -- (Same as Bio Chem
459.) Literature/discussion on how to critically evaluate the cutting edge of
current research. Held in conjunction with a seminar series, occurring once per
month for 1999-2000, and more frequently thereafter. Leading investigators in
interdisciplinary research from Stanford and from throughout the world will
present his or her work in a particular area. Before the seminar, students and
faculty read and critically discuss one or more papers from the primary
research literature on a related topic. After the seminar, students meet
informally with the speakers to discuss the research and future directions.
Emphasis is on how to read papers in the primary research literature, and
familiarization with the broad set of techniques and approaches used to study
problems in the biosciences. This interdisciplinary course is listed in many
departments in the Schools of Engineering, Medicine and Humanities &
Sciences. Students should enroll in their affiliated department if it is
offered. If not, students may enroll in any department within their School
where the course is listed. 1 unit, Aut, Win, Spr (Spudich, Robertson, Chu,
Mobley)