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)