Print Settings
 

CS 1C: Introduction to Computing at Stanford

For those with limited experience with computers or who want to learn more about Stanford's computing environment. Topics include: computer maintenance and security, computing resources, Internet privacy, and copyright law. One-hour lecture/demonstration in dormitory clusters prepared and administered weekly by the Resident Computer Consultant (RCC). Final project. Not a programming course.
Terms: Aut | Units: 1
Instructors: ; Smith, S. (PI)

CS 1U: Practical Unix

A practical introduction to using the Unix operating system with a focus on Linux command line skills. Class will consist of video tutorials and weekly hands-on lab sections. The time listed on AXESS is for the first week's logistical meeting only. Topics include: grep and regular expressions, ZSH, Vim and Emacs, basic and advanced GDB features, permissions, working with the file system, revision control, Unix utilities, environment customization, and using Python for shell scripts. Topics may be added, given sufficient interest. Course website: http://cs1u.stanford.edu
Terms: Spr | Units: 1

CS 2C: Multimedia Production

Sound, image and video editing techniques and applications, including understanding file formats and publishing multimedia online. Topics: GarageBand, Photoshop, iMovie, Final Cut Pro, and iDVD. Weekly lecture followed by lab section. Second unit for additional creative production assignments completed out of class time and extensive Final Project. Not a programming course, but will use computer multimedia applications heavily for editing.
Terms: Aut, Win | Units: 1-2
Instructors: ; Chan, K. (PI); Smith, S. (PI)

CS 10SC: Great Ideas in Computer Science

Computers have come to permeate many aspects of our lives, from how we communicate with each other to how we produce and consume information. And while it is all too easy to think of computing in terms of the products and applications we see emerging from technology companies, the intellectual foundations of computer science go much deeper. Indeed, beneath the surface of the tools we use, the social networks we engage in, and the web of information we search, lays a field rich with fascinating, intellectually exciting, and sometimes unexpectedly surprising ideas.nnnIn this seminar, we will explore several of the great ideas in computer science, looking at both challenging problems and their impact on real applications. From understanding how search engines on the Web work to looking at mathematical theories underlying social networks, from questioning whether a computer can be intelligent to analyzing the notion of what is even possible to compute, this seminar will take us on a series of intellectual excursions that will change the way you look at computers.nnnNo prior experience with computer science or programming is required, but a high school mathematics background, an interest in problem-solving, and a healthy curiosity will go a long way toward ensuring an enjoyable and enlightening experience. Students will work in small groups to research topics in computer science they find most intriguing. The course will also take advantage of Stanford's location in the heart of Silicon Valley by conducting field trips to local companies and the Computer History Museum.
Terms: Aut | Units: 2

CS 21N: Can Machines Know? Can Machines Feel?

Preference to freshmen. Can mental attitudes attributed to people and sometimes to animals, including knowledge, belief, desire, and intention, also be ascribed to machines? Can light sensors have a belief? Can a pool cleaning robot or tax-preparation software have an intention? If not, why not? If yes, what are the rules of such ascription, and do they vary between human beings and machines? Sources include philosophy, neuroscience, computer science, and artificial intelligence. Topics: logic, probability theory, and elements of computation. Students present a paper.
Terms: Spr | Units: 3 | UG Reqs: GER:DB-EngrAppSci
Instructors: ; Shoham, Y. (PI)

CS 45N: Computers and Photography: From Capture to Sharing

Preference to freshmen with exerience in photography and use of computers. How a photographer creates photos, makes them available for computer viewing, reliably stores them, organizes them, tags them, searches them, and distributes them online. Access to a digital SLR camera and to PhotoShop Elements or equivalent software is required; no programming experience required. Digital SLRs and editing software will be provided to those students who do not wish to use their own.
Terms: Aut | Units: 3-4 | UG Reqs: WAY-CE
Instructors: ; Garcia-Molina, H. (PI)

CS 48N: 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 inspired parallel revolutions in the visual arts such as Brunelleschi's invention of linear perspective, Newton's discoveries in geometric optics, and the theories of color vision proposed by Goethe, Young, and Helmholtz. The scientific principles behind image making including digital image synthesis and computer graphics. No programming experience required.
Terms: Win | Units: 3 | UG Reqs: GER:DB-EngrAppSci
Instructors: ; Levoy, M. (PI)

CS 73N: The Business of the Internet

Preference to freshmen. Issues in Internet history, technology, and public policy are discussed as well as the Internet's impact on commerce, education, government, and health care. Writing for the web. Participants develop a substantial website.
Terms: Spr | Units: 3 | UG Reqs: GER:DB-EngrAppSci, Writing 2

CS 74N: Digital Dilemmas

Preference to freshmen. Issues where policy decision making requires understanding computer and communications technology. Technology basics taught in non-technology terms. Topics include consumer privacy, government surveillance, file sharing and intellectual property, and electronic voting.
Terms: Aut | Units: 3 | UG Reqs: GER:DB-EngrAppSci
Instructors: ; Dill, D. (PI)

CS 96SI: Functional Programming Style in Lisp/Scheme and Haskell

Lambdas, closures, functions as first-class objects, functional idioms, code-as-data. Lazy evaluation, freed-point programming, strong, typing, side-effect free programming. Short programming exercises bi-weekly, final project comparable in difficulty to 106B assignment.
Terms: Spr | Units: 2
Instructors: ; Cain, J. (PI)

CS 101: Introduction to Computing Principles

Introduces the essential ideas of computing: data representation, algorithms, programming "code", computer hardware, networking, security, and social issues. Students learn how computers work and what they can do through hands-on exercises. In particular, students will see the capabilities and weaknesses of computer systems so they are not mysterious or intimidating. Course features many small programming exercises, although no prior programming experience is assumed or required. CS101 is not a complete programming course such as CS106A. CS101 is effectively an alternative to CS105. A laptop computer is required for the in-class exercises. Limited enrollment
Terms: Win | Units: 3-5 | UG Reqs: GER:DB-EngrAppSci
Instructors: ; Parlante, N. (PI)

CS 103: Mathematical Foundations of Computing

Mathematical foundations required for computer science, including propositional predicate logic, induction, sets, functions, and relations. Formal language theory, including regular expressions, grammars, finite automata, Turing machines, and NP-completeness. Mathematical rigor, proof techniques, and applications. May not be taken by students who have completed 103A,B or 103X. Prerequisite: 106A or equivalent.
Terms: Aut, Spr | Units: 3-5 | UG Reqs: GER:DB-Math, WAY-FR
Instructors: ; Plummer, R. (PI)

CS 105: Introduction to Computers

For non-technical majors. 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. Students in technical fields and students looking to acquire programming skills should take 106A or 106X. Students with prior computer science experience at the level of 106 or above require consent of instructor. Prerequisite: minimal math skills.
Terms: Aut, Win, Spr | Units: 3-5 | UG Reqs: GER:DB-EngrAppSci, WAY-FR

CS 106A: Programming Methodology (ENGR 70A)

Introduction to the engineering of computer applications emphasizing modern software engineering principles: object-oriented design, decomposition, encapsulation, abstraction, and testing. Uses the Java programming language. Emphasis is on good programming style and the built-in facilities of the Java language. No prior programming experience required.
Terms: Aut, Win, Spr, Sum | Units: 3-5 | UG Reqs: GER:DB-EngrAppSci, WAY-FR

CS 106B: Programming Abstractions (ENGR 70B)

Abstraction and its relation to programming. Software engineering principles of data abstraction and modularity. Object-oriented programming, fundamental data structures (such as stacks, queues, sets) and data-directed design. Recursion and recursive data structures (linked lists, trees, graphs). Introduction to time and space complexity analysis. Uses the programming language C++ covering its basic facilities. Prerequisite: 106A or equivalent.
Terms: Aut, Win, Spr, Sum | Units: 3-5 | UG Reqs: GER:DB-EngrAppSci, WAY-FR

CS 106L: Standard C++ Programming Laboratory

Supplemental lab to 106B and 106X. Additional features of standard C++ programming practice. Possible topics include advanced C++ language features, standard libraries, STL containers and algorithms, object memory management, operator overloading, and inheritance. Prerequisite: consent of instructor. Corequisite: 106B or 106X.
Terms: Aut, Spr | Units: 1

CS 106X: Programming Abstractions (Accelerated) (ENGR 70X)

Intensive version of 106B for students with a strong programming background interested in a rigorous treatment of the topics at an accelerated pace. Additional advanced material and more challenging projects. Prerequisite: excellence in 106A or equivalent, or consent of instructor.
Terms: Aut, Win | Units: 3-5 | UG Reqs: GER:DB-EngrAppSci, WAY-FR
Instructors: ; Cain, J. (PI)

CS 107: Computer Organization and Systems

Introduction to the fundamental concepts of computer systems. Explores how computer systems execute programs and manipulate data, working from the C programming language down to the microprocessor. Topics covered include: the C programming language, data representation, machine-level code, computer arithmetic, elements of code compilation, performance evaluation and optimization, memory organization and management, and concurrency and threading. Prerequisites: 106B or X, or consent of instructor.
Terms: Aut, Spr | Units: 3-5 | UG Reqs: GER:DB-EngrAppSci, WAY-FR
Instructors: ; Zelenski, J. (PI)

CS 108: Object-Oriented Systems Design

Software design and construction in the context of large OOP libraries. Taught in Java. Topics: OOP design, design patterns, testing, graphical user interface (GUI) OOP libraries, software engineering strategies, approaches to programming in teams. Prerequisite: 107.
Terms: Aut, Win | Units: 3-4 | UG Reqs: GER:DB-EngrAppSci

CS 109: Introduction to Probability for Computer Scientists

Topics include: counting and combinatorics, random variables, conditional probability, independence, distributions, expectation, point estimation, and limit theorems. Applications of probability in computer science including machine learning and the use of probability in the analysis of algorithms. Prerequisites: 103, 106B or X, 109 and MATH 51 or equivalent.
Terms: Win, Spr | Units: 3-5 | UG Reqs: GER:DB-EngrAppSci, WAY-AQR, WAY-FR
Instructors: ; Sahami, M. (PI)

CS 109L: Statistical Computing with R Laboratory

Supplemental lab to CS109. Introduces the R programming language for statistical computing. Topics include basic facilities of R including mathematical, graphical, and probability functions, building simulations, introductory data fitting and machine learning. Provides exposure to the functional programming paradigm. Corequisite: CS109.
Terms: Win, Spr | Units: 1

CS 110: Principles of Computer Systems

Principles and practice of engineering of computer software and hardware systems. Topics include: techniques for controlling complexity; strong modularity using client-server design, virtual memory, and threads; networks; atomicity and coordination of parallel activities; security, and encryption; and performance optimizations. Prerequisite: 107.
Terms: Aut, Win | Units: 3-5 | UG Reqs: GER:DB-EngrAppSci
Instructors: ; Rosenblum, M. (PI)

CS 121: Introduction to Artificial Intelligence

(Only one of 121 or 221 counts towards any CS degree program.) Concepts, representations, and techniques used in building practical computational systems (agents) that appear to display artificial intelligence (AI), through the use of adaptive information processing algorithms. Topics: history of AI, reactive systems, heuristic search, planning, constraint satisfaction, knowledge representation and uncertain reasoning, machine learning, classification, applications to language, and vision. Prerequisites: 103 or 103B, and facility with differential calculus, vector algebra, and probability theory.
Terms: Win, Sum | Units: 3 | UG Reqs: GER:DB-EngrAppSci

CS 124: From Languages to Information (LINGUIST 180, LINGUIST 280)

Automated processing of less structured information: human language text and speech, web pages, social networks, genome sequences, with goal of automatically extracting meaning and structure. Methods include: string algorithms, automata and transducers, hidden Markov models, graph algorithms, XML processing. Applications such as information retrieval, text classification, social network models, machine translation, genomic sequence alignment, word meaning extraction, and speech recognition. Prerequisite: CS103, CS107, CS109.
Terms: Win | Units: 3-4
Instructors: ; Jurafsky, D. (PI)

CS 140: Operating Systems and Systems Programming

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: CS 110.
Terms: Win | Units: 3-4 | UG Reqs: GER:DB-EngrAppSci
Instructors: ; Mazieres, D. (PI)

CS 142: Web Applications

Concepts and techniques used in constructing interactive web applications. Browser-side web facilities such as HTML, cascading stylesheets, javascript, and the document object model. Server-side technologies such as sessions, templates, relational databases, and object-relational mapping. Issues in web security and application scalability. New models of web application deployment. Prerequisites: CS 107 and CS 108.
Terms: Aut | Units: 3

CS 143: Compilers

Principles and practices for design and implementation of compilers and interpreters. Topics: lexical analysis; parsing theory; symbol tables; type systems; scope; semantic analysis; intermediate representations; runtime environments; code generation; and basic program analysis and optimization. Students construct a compiler for a simple object-oriented language during course programming projects. Prerequisites: 103 or 103B, and 107.
Terms: Aut, Sum | Units: 3-4 | UG Reqs: GER:DB-EngrAppSci

CS 144: Introduction to Computer Networking

Principles and practice. Structure and components of computer networks, packet switching, layered architectures. Applications: web/http, voice-over-IP, p2p file sharing and socket programming. Reliable transport: TCP/IP, reliable transfer, flow control, and congestion control. The network layer: names and addresses, routing. Local area networks: ethernet and switches. Wireless networks and network security. Prerequisite: CS 110.
Terms: Aut | Units: 3-4 | UG Reqs: GER:DB-EngrAppSci

CS 145: Introduction to Databases

Database design and use of database management systems for applications. The relational model, relational algebra, and SQL, the standard language for creating, querying, and modifying relational databases. XML data including DTDs and XML Schema for validation, and the query and transformation languages XPath, XQuery and XSLT. UML database design, and relational design principles based on functional dependencies and normal forms. Indexes, views, transactions, authorization, integrity contraints, and triggers. Advanced topics may include data warehousing, data mining, web data management, and data integration. Prerequisites: 103 or 103B, and 107.
Terms: Aut | Units: 3-4 | UG Reqs: GER:DB-EngrAppSci

CS 147: Introduction to Human-Computer Interaction Design

Introduces fundamental methods and principles for designing, implementing, and evaluating user interfaces. Topics: user-centered design, rapid prototyping, experimentation, direct manipulation, cognitive principles, visual design, social software, software tools. Learn by doing: work with a team on a quarter-long design project, supported by lectures, readings, and studios. Prerequisite: 106B or X or equivalent programming experience.
Terms: Aut | Units: 3-4

CS 147L: Human-Computer Interaction Technology Laboratory

Hands-on introduction to building mobile web applications with html, css, and php. Corequisite: 147. Concurrent enrollment in CS147 required.
Terms: Aut | Units: 1
Instructors: ; Brandt, J. (PI)

CS 148: Introduction to Computer Graphics and Imaging

Topics: Image input and output devices such as cameras and displays, graphics hardware and software, input technologies and interactive techniques, typography and page layout, light and color representations, exposure and tone reproduction, image composition and imaging models, digital signal processing, sampling, aliasing and antialiasing, compression, two- and three-dimensional geometry and formations, modeling techniques including curves and surfaces, reflection models and illumination algorithms, and basic methods of animation. Progamming asssignments using C++ and OpenGL. Prerequisites: CS 107, MATH 51.
Terms: Aut, Sum | Units: 3-4 | UG Reqs: GER:DB-EngrAppSci, WAY-CE

CS 149: Parallel Computing

Course is an introduction to parallelism and parallel programming. Most new computer architectures are parallel; programming these machines requires knowlege of the basic issues of and techniques for writing parallel software. Topics: varieties of parallelism in current hardware (e.g., fast networks, multicore, accelerators such as GPUs, vector instruction sets), importance of locality, implicit vs. explicit parallelism, shared vs. non-shared memory, synchronization mechanisms (locking, atomicity, transactions, barriers), and parallel programming models (threads, data parallel/streaming, futures, SPMD, message passing, SIMT, transactions, and nested parallelism). Significantnnparallel programming assignments will be given as homework. Course is open to students who have completed the introductory CS course sequence through 110 and have taken at least one of CS 140, 143, 144, or 145.
Terms: Win | Units: 3-4 | UG Reqs: GER:DB-EngrAppSci

CS 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. Prerequisites: 103 or 103B.
Terms: Win, Spr, Sum | Units: 3-4 | UG Reqs: GER:DB-EngrAppSci

CS 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: formal languages and automata as in first part of 154.
Terms: Win | Units: 2
Instructors: ; Dill, D. (PI)

CS 155: Computer and Network Security

For seniors and first-year graduate students. Principles of computer systems security. Attack techniques and how to defend against them. Topics include: network attacks and defenses, operating system holes, application security (web, email, databases), viruses, social engineering attacks, privacy, and digital rights management. Course projects focus on building reliable code. Prerequisite: 140. Recommended: basic Unix.
Terms: Spr | Units: 3 | UG Reqs: GER:DB-EngrAppSci

CS 157: Logic and Automated Reasoning

An elementary exposition from a computational point of view of propositional and predicate logic, axiomatic theories, and theories with equality and induction. Interpretations, models, validity, proof, strategies, and applications. Automated deduction: polarity, skolemization, unification, resolution, equality. Prerequisite: 103 or 103B.
Terms: Aut | Units: 3 | UG Reqs: GER:DB-EngrAppSci

CS 161: Design and Analysis of Algorithms

Worst and average case analysis. Recurrences and asymptotics. Efficient algorithms for sorting, searching, and selection. Data structures: binary search trees, heaps, hash tables. Algorithm design techniques: divide-and-conquer, dynamic programming, greedy algorithms, amortized analysis, randomization. Algorithms for fundamental graph problems: minimum-cost spanning tree, connected components, topological sort, and shortest paths. Possible additional topics: network flow, string searching. Prerequisite: 103 or 103B; 109 or STATS 116.
Terms: Aut, Win, Sum | Units: 3-5 | UG Reqs: GER:DB-EngrAppSci, WAY-FR

CS 170: Stanford Laptop Orchestra: Composition, Coding, and Performance (MUSIC 128)

Classroom instantiation of the Stanford Laptop Orchestra (SLOrk) which includes public performances. An ensemble of more than 20 humans, laptops, controllers, and special speaker arrays designed to provide each computer-mediated instrument with its sonic identity and presence. Topics and activities include issues of composing for laptop orchestras, instrument design, sound synthesis, programming, and live performance. May be repeated four times for credit.
Terms: Spr | Units: 1-5 | UG Reqs: WAY-CE | Repeatable 4 times (up to 20 units total)
Instructors: ; Wang, G. (PI)

CS 178: Digital Photography

Scientific, artistic, and computing aspects of digital photography. Topics: lenses and optics, light and sensors, optical effects in nature, perspective and depth of field, sampling and noise, the camera as a computing platform, image processing and editing, history of photography, computational photography. Counts as a CS elective in the Graphics track. Prerequisites: introductory calculus; students must have a digital camera with manual control over shutter speed and aperture. Loaner cameras may be available. No programming experience required. GER:DB-EngrAppSci
Terms: Spr | Units: 3-5 | UG Reqs: GER:DB-EngrAppSci, WAY-CE

CS 181: Computers, Ethics, and Public Policy

(Formerly 201.) Primarily for majors entering computer-related fields. Ethical and social issues related to the development and use of computer technology. Ethical theory, and social, political, and legal considerations. Scenarios in problem areas: privacy, reliability and risks of complex systems, and responsibility of professionals for applications and consequences of their work. Prerequisite: 106B or X.
Terms: Spr | Units: 4 | UG Reqs: GER:EC-EthicReas, WAY-ER
Instructors: ; Roberts, E. (PI)

CS 181W: Computers, Ethics and Public Policy (WIM)

Writing-intensive version of CS181. Satisfies the WIM requirement for Computer Science and Computer Systems Engineering undergraduates.
Terms: Spr | Units: 4 | UG Reqs: GER:EC-EthicReas, WAY-ER
Instructors: ; Roberts, E. (PI)

CS 191: Senior Project

Restricted to Computer Science and Computer Systems Engineering students. Group or individual projects under faculty direction. Register using instructor's section number. A project can be either a significant software application or publishable research. Software application projects include substantial programming and modern user-interface technologies and are comparable in scale to shareware programs or commercial applications. Research projects may result in a paper publishable in an academic journal or presentable at a conference. Required public presentation of final application or research results.
Terms: Aut, Win, Spr, Sum | Units: 1-6 | Repeatable for credit
Instructors: ; Aiken, A. (PI); Akeley, K. (PI); Altman, R. (PI); Baker, M. (PI); Barbagli, F. (PI); Batzoglou, S. (PI); Bejerano, G. (PI); Boneh, D. (PI); Bradski, G. (PI); Brafman, R. (PI); Cain, J. (PI); Cao, P. (PI); Casado, M. (PI); Cheriton, D. (PI); Cooper, S. (PI); Dally, B. (PI); De-Micheli, G. (PI); Dill, D. (PI); Dwork, C. (PI); Engler, D. (PI); Fedkiw, R. (PI); Feigenbaum, E. (PI); Fikes, R. (PI); Fisher, K. (PI); Fogg, B. (PI); Fox, A. (PI); Garcia-Molina, H. (PI); Genesereth, M. (PI); Gill, J. (PI); Girod, B. (PI); Goel, A. (PI); Golub, G. (PI); Guibas, L. (PI); Hanrahan, P. (PI); Heer, J. (PI); Hennessy, J. (PI); Horowitz, M. (PI); Johari, R. (PI); Johnson, M. (PI); Jurafsky, D. (PI); Katti, S. (PI); Kay, M. (PI); Khatib, O. (PI); Klemmer, S. (PI); Koller, D. (PI); Koltun, V. (PI); Konolige, K. (PI); Kozyrakis, C. (PI); Lam, M. (PI); Latombe, J. (PI); Leskovec, J. (PI); Levis, P. (PI); Levitt, M. (PI); Levoy, M. (PI); Li, F. (PI); Manna, Z. (PI); Manning, C. (PI); Mazieres, D. (PI); McCarthy, J. (PI); McCluskey, E. (PI); McKeown, N. (PI); Meng, T. (PI); Mitchell, J. (PI); Motwani, R. (PI); Musen, M. (PI); Nass, C. (PI); Nayak, P. (PI); Ng, A. (PI); Nilsson, N. (PI); Olukotun, O. (PI); Ousterhout, J. (PI); Paepcke, A. (PI); Parlante, N. (PI); Plotkin, S. (PI); Plummer, R. (PI); Prabhakar, B. (PI); Pratt, V. (PI); Raghavan, P. (PI); Rajaraman, A. (PI); Roberts, E. (PI); Rosenblum, M. (PI); Roughgarden, T. (PI); Sahami, M. (PI); Salisbury, J. (PI); Shoham, Y. (PI); Thrun, S. (PI); Tobagi, F. (PI); Trevisan, L. (PI); Ullman, J. (PI); Van Roy, B. (PI); Wang, G. (PI); Widom, J. (PI); Wiederhold, G. (PI); Winograd, T. (PI); Young, P. (PI); Zelenski, J. (PI); Cardamone, W. (GP); Hadding, D. (GP); Murphy, D. (GP); Siroker, M. (GP); Swenson, M. (GP); Yilmaz, K. (GP)

CS 191W: Writing Intensive Senior Project

Restricted to Computer Science and Computer Systems Engineering students. Writing-intensive version of CS191. Register using the section number of an Academic Council member.
Terms: Aut, Win, Spr | Units: 3-6 | Repeatable for credit
Instructors: ; Aiken, A. (PI); Akeley, K. (PI); Altman, R. (PI); Baker, M. (PI); Barbagli, F. (PI); Batzoglou, S. (PI); Bejerano, G. (PI); Blikstein, P. (PI); Boneh, D. (PI); Bradski, G. (PI); Brafman, R. (PI); Cain, J. (PI); Cao, P. (PI); Casado, M. (PI); Cheriton, D. (PI); Cooper, S. (PI); Dally, B. (PI); De-Micheli, G. (PI); Dill, D. (PI); Dwork, C. (PI); Engler, D. (PI); Fedkiw, R. (PI); Feigenbaum, E. (PI); Fikes, R. (PI); Fisher, K. (PI); Fogg, B. (PI); Fox, A. (PI); Garcia-Molina, H. (PI); Genesereth, M. (PI); Gill, J. (PI); Girod, B. (PI); Goel, A. (PI); Golub, G. (PI); Guibas, L. (PI); Hanrahan, P. (PI); Heer, J. (PI); Hennessy, J. (PI); Horowitz, M. (PI); Johari, R. (PI); Johnson, M. (PI); Jurafsky, D. (PI); Katti, S. (PI); Kay, M. (PI); Khatib, O. (PI); Klemmer, S. (PI); Koller, D. (PI); Koltun, V. (PI); Konolige, K. (PI); Kozyrakis, C. (PI); Lam, M. (PI); Latombe, J. (PI); Leskovec, J. (PI); Levis, P. (PI); Levitt, M. (PI); Levoy, M. (PI); Li, F. (PI); Manna, Z. (PI); Manning, C. (PI); Mazieres, D. (PI); McCarthy, J. (PI); McCluskey, E. (PI); McKeown, N. (PI); Meng, T. (PI); Mitchell, J. (PI); Motwani, R. (PI); Musen, M. (PI); Nass, C. (PI); Nayak, P. (PI); Ng, A. (PI); Nilsson, N. (PI); Olukotun, O. (PI); Ousterhout, J. (PI); Paepcke, A. (PI); Parlante, N. (PI); Plotkin, S. (PI); Plummer, R. (PI); Prabhakar, B. (PI); Pratt, V. (PI); Raghavan, P. (PI); Rajaraman, A. (PI); Roberts, E. (PI); Rosenblum, M. (PI); Roughgarden, T. (PI); Sahami, M. (PI); Salisbury, J. (PI); Shoham, Y. (PI); Thrun, S. (PI); Tobagi, F. (PI); Trevisan, L. (PI); Ullman, J. (PI); Van Roy, B. (PI); Wang, G. (PI); Widom, J. (PI); Wiederhold, G. (PI); Winograd, T. (PI); Young, P. (PI); Zelenski, J. (PI); Cardamone, W. (GP); Hadding, D. (GP); Murphy, D. (GP); Siroker, M. (GP); Swenson, M. (GP); Yilmaz, K. (GP)

CS 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.
Terms: Aut, Win, Spr, Sum | Units: 1-4 | Repeatable for credit
Instructors: ; Aiken, A. (PI); Altman, R. (PI); Baker, M. (PI); Barbagli, F. (PI); Batzoglou, S. (PI); Bejerano, G. (PI); Boneh, D. (PI); Bradski, G. (PI); Brafman, R. (PI); Cain, J. (PI); Cao, P. (PI); Cheriton, D. (PI); Dally, B. (PI); De-Micheli, G. (PI); Dill, D. (PI); Dwork, C. (PI); Engler, D. (PI); Fedkiw, R. (PI); Feigenbaum, E. (PI); Fikes, R. (PI); Fisher, K. (PI); Fogg, B. (PI); Fox, A. (PI); Garcia-Molina, H. (PI); Genesereth, M. (PI); Gill, J. (PI); Girod, B. (PI); Goel, A. (PI); Golub, G. (PI); Guibas, L. (PI); Hanrahan, P. (PI); Heer, J. (PI); Hennessy, J. (PI); Horowitz, M. (PI); Johari, R. (PI); Johnson, M. (PI); Jurafsky, D. (PI); Katti, S. (PI); Kay, M. (PI); Khatib, O. (PI); Klemmer, S. (PI); Koller, D. (PI); Koltun, V. (PI); Konolige, K. (PI); Kozyrakis, C. (PI); Lam, M. (PI); Latombe, J. (PI); Leskovec, J. (PI); Levis, P. (PI); Levitt, M. (PI); Levoy, M. (PI); Li, F. (PI); Manna, Z. (PI); Manning, C. (PI); Mazieres, D. (PI); McCarthy, J. (PI); McCluskey, E. (PI); McKeown, N. (PI); Meng, T. (PI); Mitchell, J. (PI); Motwani, R. (PI); Musen, M. (PI); Nass, C. (PI); Nayak, P. (PI); Ng, A. (PI); Nilsson, N. (PI); Olukotun, O. (PI); Ousterhout, J. (PI); Parlante, N. (PI); Plotkin, S. (PI); Plummer, R. (PI); Prabhakar, B. (PI); Pratt, V. (PI); Raghavan, P. (PI); Rajaraman, A. (PI); Roberts, E. (PI); Rosenblum, M. (PI); Roughgarden, T. (PI); Sahami, M. (PI); Salisbury, J. (PI); Shoham, Y. (PI); Thrun, S. (PI); Tobagi, F. (PI); Trevisan, L. (PI); Ullman, J. (PI); Van Roy, B. (PI); Widom, J. (PI); Wiederhold, G. (PI); Winograd, T. (PI); Young, P. (PI); Zelenski, J. (PI); Cardamone, W. (GP); Hadding, D. (GP); Murphy, D. (GP); Siroker, M. (GP); Swenson, M. (GP); Yilmaz, K. (GP)

CS 193C: Client-Side Internet Technologies

Client-side technologies used to create web sites such as sophisticated Web 2.0 interfaces similar to Google maps. XHTML, CSS, JavaScript, document object model (DOM), AJAX, and Flash. Prerequisite: programming experience at the level of 106A.
Terms: Sum | Units: 3
Instructors: ; Young, P. (PI)

CS 193P: iPhone and iPad Application Programming

Tools and APIs required to build applications for the iPhone and iPad platform using the iPhone/iPad SDK. User interface designs for mobile devices and unique user interactions using multitouch technologies. Object-oriented design using model-view-controller pattern, memory management, Objective-C programming language. iPhone/iPad APIs and tools including Xcode, Interface Builder and Instruments on Mac OS X. Other topics include: core animation, mobile device power management and performance considerations. Prerequisites: C language and programming experience at the level of 106B or X. Recommended: UNIX, object-oriented programming, graphical toolkits, databases.
Terms: Aut, Spr | Units: 3
Instructors: ; Hegarty, P. (PI)

CS 194: Software Project

Design, specification, coding, and testing of a significant team programming project under faculty supervision. Documentation includes a detailed proposal. Public demonstration of the project at the end of the quarter. Prerequisites: CS 110 and CS 161.
Terms: Spr | Units: 3 | Repeatable for credit
Instructors: ; Plummer, R. (PI)

CS 196: Computer Consulting

Focus is on Macintosh and Windows operating system maintenance and troubleshooting through hardware and software foundation and concepts. Topics include operating systems, networking, security, troubleshooting methodology with emphasis on Stanford's computing environment. Not a programming course. Prerequisite: 1C or equivalent.
Terms: Win, Spr | Units: 2
Instructors: ; Smith, S. (PI)

CS 198: Teaching Computer Science

Students lead a discussion section of 106A while learning how to teach a programming language at the introductory level. Focus is on teaching skills, techniques, and course specifics. Application and interview required; see http://cs198.stanford.edu.
Terms: Aut, Win, Spr | Units: 3-4

CS 199: Independent Work

Special study under faculty direction, usually leading to a written report. Letter grade; if not appropriate, enroll in 199P.
Terms: Aut, Win, Spr, Sum | Units: 1-6 | Repeatable for credit
Instructors: ; Aiken, A. (PI); Akeley, K. (PI); Altman, R. (PI); Baker, M. (PI); Barbagli, F. (PI); Batzoglou, S. (PI); Bejerano, G. (PI); Boneh, D. (PI); Bradski, G. (PI); Brafman, R. (PI); Cain, J. (PI); Cao, P. (PI); Casado, M. (PI); Cheriton, D. (PI); Cooper, S. (PI); Dally, B. (PI); De-Micheli, G. (PI); Dill, D. (PI); Dwork, C. (PI); Engler, D. (PI); Fedkiw, R. (PI); Feigenbaum, E. (PI); Fikes, R. (PI); Fisher, K. (PI); Fogg, B. (PI); Fox, A. (PI); Garcia-Molina, H. (PI); Genesereth, M. (PI); Gill, J. (PI); Girod, B. (PI); Goel, A. (PI); Golub, G. (PI); Guibas, L. (PI); Hanrahan, P. (PI); Heer, J. (PI); Hennessy, J. (PI); Horowitz, M. (PI); Johari, R. (PI); Johnson, M. (PI); Jurafsky, D. (PI); Katti, S. (PI); Kay, M. (PI); Khatib, O. (PI); Klemmer, S. (PI); Koller, D. (PI); Koltun, V. (PI); Konolige, K. (PI); Kozyrakis, C. (PI); Lam, M. (PI); Latombe, J. (PI); Leskovec, J. (PI); Levis, P. (PI); Levitt, M. (PI); Levoy, M. (PI); Li, F. (PI); Manna, Z. (PI); Manning, C. (PI); Mazieres, D. (PI); McCarthy, J. (PI); McCluskey, E. (PI); McKeown, N. (PI); Meng, T. (PI); Mitchell, J. (PI); Motwani, R. (PI); Musen, M. (PI); Nass, C. (PI); Nayak, P. (PI); Ng, A. (PI); Nilsson, N. (PI); Olukotun, O. (PI); Ousterhout, J. (PI); Paepcke, A. (PI); Parlante, N. (PI); Plotkin, S. (PI); Plummer, R. (PI); Prabhakar, B. (PI); Pratt, V. (PI); Raghavan, P. (PI); Rajaraman, A. (PI); Roberts, E. (PI); Rosenblum, M. (PI); Roughgarden, T. (PI); Sahami, M. (PI); Salisbury, J. (PI); Shoham, Y. (PI); Thrun, S. (PI); Tobagi, F. (PI); Trevisan, L. (PI); Ullman, J. (PI); Van Roy, B. (PI); Widom, J. (PI); Wiederhold, G. (PI); Winograd, T. (PI); Young, P. (PI); Zelenski, J. (PI); Cardamone, W. (GP); Hadding, D. (GP); Murphy, D. (GP); Siroker, M. (GP); Swenson, M. (GP); Yilmaz, K. (GP)

CS 199P: Independent Work

(Staff)
Terms: Aut, Win, Spr, Sum | Units: 1-6 | Repeatable for credit
Instructors: ; Aiken, A. (PI); Altman, R. (PI); Baker, M. (PI); Batzoglou, S. (PI); Bejerano, G. (PI); Boneh, D. (PI); Brafman, R. (PI); Cain, J. (PI); Cao, P. (PI); Cheriton, D. (PI); Dally, B. (PI); De-Micheli, G. (PI); Dill, D. (PI); Dwork, C. (PI); Engler, D. (PI); Fedkiw, R. (PI); Feigenbaum, E. (PI); Fikes, R. (PI); Fisher, K. (PI); Fogg, B. (PI); Fox, A. (PI); Garcia-Molina, H. (PI); Genesereth, M. (PI); Gill, J. (PI); Girod, B. (PI); Goel, A. (PI); Golub, G. (PI); Guibas, L. (PI); Hanrahan, P. (PI); Hennessy, J. (PI); Horowitz, M. (PI); Johari, R. (PI); Johnson, M. (PI); Jurafsky, D. (PI); Katti, S. (PI); Kay, M. (PI); Khatib, O. (PI); Klemmer, S. (PI); Koller, D. (PI); Koltun, V. (PI); Konolige, K. (PI); Kozyrakis, C. (PI); Lam, M. (PI); Latombe, J. (PI); Leskovec, J. (PI); Levis, P. (PI); Levitt, M. (PI); Levoy, M. (PI); Li, F. (PI); Manna, Z. (PI); Manning, C. (PI); Mazieres, D. (PI); McCarthy, J. (PI); McCluskey, E. (PI); McKeown, N. (PI); Meng, T. (PI); Mitchell, J. (PI); Motwani, R. (PI); Musen, M. (PI); Nass, C. (PI); Nayak, P. (PI); Ng, A. (PI); Nilsson, N. (PI); Olukotun, O. (PI); Parlante, N. (PI); Plotkin, S. (PI); Plummer, R. (PI); Prabhakar, B. (PI); Pratt, V. (PI); Raghavan, P. (PI); Rajaraman, A. (PI); Roberts, E. (PI); Rosenblum, M. (PI); Roughgarden, T. (PI); Sahami, M. (PI); Salisbury, J. (PI); Shoham, Y. (PI); Thrun, S. (PI); Tobagi, F. (PI); Trevisan, L. (PI); Ullman, J. (PI); Van Roy, B. (PI); Widom, J. (PI); Wiederhold, G. (PI); Winograd, T. (PI); Young, P. (PI); Zelenski, J. (PI); Cardamone, W. (GP); Hadding, D. (GP); Murphy, D. (GP); Siroker, M. (GP); Swenson, M. (GP); Yilmaz, K. (GP)

CS 202: Law for Computer Science Professionals

Intellectual property law as it relates to computer science including copyright registration, patents, and trade secrets; contract issues such as non-disclosure/non-compete agreements, license agreements, and works-made-for-hire; dispute resolution; and principles of business formation and ownership. Emphasis is on topics of current interest such as open source and the free software movement, peer-to-peer sharing, encryption, data mining, and spam.
Terms: Win | Units: 1
Instructors: ; Hansen, D. (PI)

CS 205A: Mathematical Methods for Robotics, Vision, and Graphics

Continuous mathematics background necessary for research in robotics, vision, and graphics. Possible topics: linear algebra; the conjugate gradient method; ordinary and partial differential equations; vector and tensor calculus. Prerequisites: 106B or X; MATH 51 and 113; or equivalents.
Terms: Aut | Units: 3

CS 207: The Economics of Software

How software products are moved into the marketplace and how the resulting intellectual property is exploited. Concepts that are outside of the common knowledge of computer scientists such as business terms and spreadsheet computations to quantitatively compare alternatives. Goal is to contribute to informed decision making in high-tech product design, acquisition, production, mar-keting, selection of business structures, outsourcing, and impact of taxation policies. No specific background required.
Terms: Aut | Units: 1

CS 208: Canon of Computer Science

Analysis and discussion of seminal works in computer science. Emphasis on works that changed the course of computing and continue to this day to provoke and stimulate. Course will study foundational ideas that are at the core of personal computing, artificial intelligence, computer systems, computer networks, and more. Through immersion in original literature, we can more deeply comprehend the present state of computing, its origins, its underlying assumptions, and its major open questions. In connecting students with the ideas that shaped computer science, course aims to instill lasting inspiration and a deep understanding of major trends in the field.
Terms: Spr | Units: 3-4
Instructors: ; Koltun, V. (PI)

CS 210A: Software Project Experience with Corporate Partners

Two quarter project course. Focus is on real world software development. Corporate partners provide loosely defined challenges from their R&D labs for which they are seeking innovative solutions and ideas. Student teams function as small startup companies with a technical advisory board comprised of the instructional staff. Exposure to: current practices in software engineering; exploration of the design space; significant development experience with creative freedoms; working in groups; real world software engineering challenges; public presentation of technical work; creating written descriptions of technical work. Prerequisite: CS 108 or CS110.
Terms: Win | Units: 3-4
Instructors: ; Borenstein, J. (PI)

CS 210B: Software Project Experience with Corporate Partners

Continuation of CS210A. Focus is on real world software development. Corporate partners provide loosely defined challenges from their R&D labs for which they are seeking innovative solutions and ideas. Student teams function as a small startup companies with a technical advisory board comprised of the instructional staff. Exposure to: current practices in software engineering; exploration of the design space; significant development experience with creative freedoms; working in groups; real world software engineering challenges; public presentation of technical work; creating written descriptions of technical work. Prerequisite: CS 210A.
Terms: Spr | Units: 3-4
Instructors: ; Borenstein, J. (PI)

CS 221: Artificial Intelligence: Principles and Techniques

(Only one of 121 or 221 counts towards any CS degree program.) Topics: search, constraint satisfaction, knowledge representation, probabilistic models, Bayesian networks, machine learning, neural networks, vision, robotics, and natural language processing. Prerequisites: 103 or 103B/X; 106B or 106X; and exposure to probability. Recommended: 107 and facility with basic differential calculus.
Terms: Win | Units: 3-4
Instructors: ; Thrun, S. (PI)

CS 223A: Introduction to Robotics

Robotics foundations in modeling, design, planning, and control. Class covers relevant results from geometry, kinematics, statics, dynamics, motion planning, and control, providing the basic methodologies and tools in robotics research and applications. Concepts and models are illustrated through physical robot platforms, interactive robot simulations, and video segments relevant to historical research developments or to emerging application areas in the field. Recommended: matrix algebra.
Terms: Win | Units: 3
Instructors: ; Khatib, O. (PI)

CS 223B: Introduction to Computer Vision

An introduction to the concepts and applications in computer vision. Topics include: cameras and projection models, low-level image processing methods such as filtering and edge detection; mid-level vision topics such as segmentation and clustering; shape reconstruction from stereo, as well as high-level vision tasks such as object recognition, scene recognition, face detection and human motion categorization. Prerequisites: linear algebra, basic probability and statistics.
Terms: Win | Units: 3

CS 223C: The Cutting Edge of Computer Vision

More than one-third of the brain is engaged in visual processing, the most sophisticated human sensory system. Yet visual recognition technology has fundamentally influenced our lives on the same scale and scope as text-based technology has, thanks to Google, Twitter, Facebook, etc. This course is designed for those students who are interested in cutting edge computer vision research, and/or are aspiring to be an entrepreneur using vision technology. Course will guide students through the design and implementation of three core vision technologies: segmentation, detection and classification on three highly practical, real-world problems. Course will focus on teaching the fundamental theory, detailed algorithms, practical engineering insights, and guide them to develop state-of-the-art systems evaluated based on the most modern and standard benchmark datasets. Prerequisites: CS2223B or equivalent and a good machine learning background (i.e. CS221, CS228, CS229). Fluency in Matlab and C/C++.
Terms: Spr | Units: 3
Instructors: ; Li, F. (PI); Yao, B. (GP)

CS 224N: Natural Language Processing (LINGUIST 284)

Methods for processing human language information and the underlying computational properties of natural languages. Syntactic and semantic processing from linguistic and algorithmic perspectives. Focus is on modern quantitative techniques in NLP: using large corpora, statistical models for acquisition, translation, and interpretation; and representative systems. Prerequisites: CS124 or CS121/221.
Terms: Win | Units: 3-4

CS 224W: Social and Information Network Analylsis

Previously numbered CS322. How do rumors and information spread? Who are the influencers? Can we predict friendships on Facebook? Networks are the core of the WWW, blogs, Twitter and Facebook. They can be characterized by the complex interplay between information content, millions of individuals and organizations that create it, and the technology that supports it. Course will focus on how to analyze the structure and dynamics of large networks, how to model links, and how design algorithms that work with such large networks. Topics: statistical properties of large networks, models of social network structure and evolution, link prediction, network community detection, diffusion of innovation, information propagation, six-degrees of separation, finding influential nodes in networks, disease outbreak detection, networks with positive and negative ties, and connections with work in the social sciences and economics.
Terms: Aut | Units: 3
Instructors: ; Leskovec, J. (PI)

CS 225A: Experimental Robotics

Hands-on laboratory course experience in robotic manipulation. Topics include robot kinematics, dynamics, control, compliance, sensor-based collision avoidance, and human-robot interfaces. Second half of class is devoted to final projects using various robotic platforms to build and demonstrate new robot task capabilities. Previous projects include the development of autonomous robot behaviors of drawing, painting, playing air hocket, yoyo, basketball, ping-pong or xylophone. Prerequisites: 223A or equivalent.
Terms: Spr | Units: 3
Instructors: ; Khatib, O. (PI)

CS 225B: Robot Programming Laboratory

For robotics and non-robotics students. Students program mobile robots to exhibit increasingly complex behavior (simple dead reckoning and reactivity, goal-directed motion, localization, complex tasks). Topics: motor control and sensor characteristics; sensor fusion, model construction, and robust estimation; control regimes (subsumption, potential fields); probabalistic methods, including Markov localization and particle filters. Student programmed robot contest. Programming is in C++ on Unix machines, done in teams. Prerequisite: programming at the level of 106B, 106X, 205, or equivalent.
Terms: Aut | Units: 3-4

CS 227: Knowledge Representation and Reasoning

Representing knowledge symbolically in a form suitable for automated reasoning, and associated reasoning methods. Combines formal algorithmic analysis with a description of recent applications. Topics: object-oriented knowledge representation, description logics, inheritance networks, logic programming, propositional satisfiability, contraint satisfaction, planning and scheduling, abductive explanation, tractable reasoning. Prerequisites: familiarity with basic notions in data structures and with techniques in algorithm design and analysis. Computational logic (CS157 or equivalent). Recommended: previous or concurrent course in AI. Knowledge of Lisp or Prolog programming.
Terms: Spr | Units: 3

CS 227B: General Game Playing

A general game playing system accepts a formal description of a game to play it without human intervention or algorithms designed for specific games. Hands-on introduction to these systems and artificial intelligence techniques such as knowledge representation, reasoning, learning, and rational behavior. Students create GGP systems to compete with each other and in external competitions. Prerequisite: programming experience. Recommended: 103 or equivalent.
Terms: Spr | Units: 3
Instructors: ; Genesereth, M. (PI)

CS 228: Structured Probabilistic Models: Principles and Techniques

Probabilistic graphical modeling languages for representing complex domains, algorithms for reasoning using these representations, and learning these representations from data. Topics include: Bayesian and Markov networks, extensions to temporal modeling such as hidden Markov models and dynamic Bayesian networks, exact and approximate probabilistic inference algorithms, and methods for learning models from data. Also included are sample applications to various domains including speech recognition, biological modeling and discovery, medical diagnosis, message encoding, vision, and robot motion planning. Prerequisites: basic probability theory and algorithm design and analysis.
Terms: Win | Units: 3-4
Instructors: ; Koller, D. (PI)

CS 228T: Probabilistic Graphical Models: Advanced Methods

For students interested in advanced methods in machine learning and probabilistic AI. Describes the theoretical foundations for methods of inference and learning in probabilistic graphical models, allowing for the derivation of properties of these methods and for the development of more advanced methods. Sample topics include advanced methods in Markov chain Monte Carlo, approximate message-passing algorithms for inference derived from an optimization perspective, representation and inference in models involving continuous variables, learning undirected models, learning with hidden variables, and non-parametric Bayesian methods. Prerequisites: CS228; strong mathematical foundation.
Terms: Spr | Units: 3
Instructors: ; Koller, D. (PI)

CS 229: Machine Learning

Topics: statistical pattern recognition, linear and non-linear regression, non-parametric methods, exponential family, GLMs, support vector machines, kernel methods, model/feature selection, learning theory, VC dimension, clustering, density estimation, EM, dimensionality reduction, ICA, PCA, reinforcement learning and adaptive control, Markov decision processes, approximate dynamic programming, and policy search. Prerequisites: linear algebra, and basic probability and statistics.
Terms: Aut | Units: 3-4
Instructors: ; Ng, A. (PI); Le, Q. (GP)

CS 240: Advanced Topics in Operating Systems

Recent research. 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.
Terms: Spr | Units: 3 | Repeatable for credit
Instructors: ; Engler, D. (PI)

CS 242: Programming Languages

Central concepts in modern programming languages, impact on software development, language design trade-offs, and implementation considerations. Functional, imperative, and object-oriented paradigms. Formal semantic methods and program analysis. Modern type systems, higher order functions and closures, exceptions and continuations. Modularity, object-oriented languages, and concurrency. Runtime support for language features, interoperability, and security issues. Prerequisite: 107, or experience with Lisp, C, and an object-oriented language.
Terms: Aut | Units: 3

CS 243: Program Analysis and Optimizations

Program analysis techniques used in compilers and software development tools to improve productivity, reliability, and security. The methodology of applying mathematical abstractions such as graphs, fixpoint computations, binary decision diagrams in writing complex software, using compilers as an example. Topics include data flow analysis, instruction scheduling, register allocation, parallelism, data locality, interprocedural analysis, and garbage collection. Prerequisites: 103 or 103B, and 107.
Terms: Win | Units: 3-4
Instructors: ; Lam, M. (PI); Hadding, D. (GP)

CS 244: Advanced Topics in Networking

Classic papers, new ideas, and research papers in networking. Architectural principles: naming, addressing, routing; congestion control, traffic management, QoS; wireless and mobility; overlay networks and virtualization; network security; switching and routing; content distribution; and proposals for future Internet structures. Prerequisite: 144 or equivalent.
Terms: Win | Units: 3-4
Instructors: ; McKeown, N. (PI)

CS 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, application-sufficient consistency, file access, process scheduling, process migration, and storage/communication abstractions on distribution, scale, robustness in the face of failure, and security. Prerequisites: CS 144 and CS 249A.
Terms: Spr | Units: 3

CS 244E: Wireless Networking (EE 384E)

Design and implementation of wireless networks and mobile systems. The course will commence with a short retrospective of wireless communication and initially touch on some of the fundamental physical layer properties of various wireless communication technologies. The focus will then shift to design of media access control and routing layers for various wireless systems. The course will also examine adaptations necessary at transport and higher layers to cope with node mobility and error-prone nature of the wireless medium. Finally, it will conclude with a brief overview of other related issues including emerging wireless/mobile applications. Prerequisites: EE 284
Terms: Win | Units: 3
Instructors: ; Katti, S. (PI); Levis, P. (PI)

CS 245: Database Systems 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.
Terms: Win | Units: 3
Instructors: ; Garcia-Molina, H. (PI)

CS 246: Mining Massive Data Sets

Distributed file systems: Hadoop, map-reduce; PageRank, topic-sensitive PageRank, spam detection, hubs-and-authorities; similarity search; shingling, minhashing, random hyperplanes, locality-sensitive hashing; analysis of social-network graphs; association rules; dimensionality reduction: UV, SVD, and CUR decompositions; algorithms for very-large-scale mining: clustering, nearest-neighbor search, gradient descent, support-vector machines, classification, and regression; submodular function optimization. Prerequisites: At lease one of CS107 or CS145; at least one of CS109 or STAT116, or equivalent.
Terms: Win | Units: 3
Instructors: ; Leskovec, J. (PI)

CS 247: Human-Computer Interaction Design Studio

Project-based. 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. Prerequisites: 147 and 106A or equivalent background in programming.
Terms: Win | Units: 3-4
Instructors: ; Heer, J. (PI)

CS 247L: Human Computer Interaction Technology Laboratory

Hands-on introduction to contemporary HCI technologies. Interaction design with Adobe Flash, mobile development, physical computing, and web applications. Corequisite: 247.
Terms: Win | Units: 1
Instructors: ; Heer, J. (PI)

CS 248: Interactive Computer Graphics

Rendering and animation for interactive computer graphics. Topics in rendering include: the graphics pipeline, rasterization, lighting and surface shading, texture mapping and its applications, graphics hardware, and rendering optimization. Topics in animation include: keyframing and interpolation, physics-based simulation, and character animation. Prerequisite: CS148.
Terms: Win | Units: 3-4

CS 249A: Object-Oriented Programming from a Modeling and Simulation Perspective

Topics: large-scale software development approaches for complex applications, class libraries and frameworks; encapsulation, use of inheritance and dynamic dispatch, design of interfaces and interface/implementation separation, exception handling, smart pointers and reference management, minimalizing dependencies and value-oriented programming. Inheritance: when and why multiple inheritance naming, directories, manager, and disciplined use of design patterns including functors, event notification and iterators. Prerequisites: C, C++, and programming methodology as developed in 106B or X, and 107 (107 may be taken concurrently). Recommended: 193D.
Terms: Aut | Units: 3
Instructors: ; Cheriton, D. (PI)

CS 249B: Large-scale Software Development

Software engineering of high quality large-scale complex software with a focus on evolvability, performance and cost. Software development processes, people and practice; audit: integrating invariant checks with production software; concurrency with modular object-oriented programming; collection implementation; generic programming and templates; design of value types; named descriptions for large value types; memory management; controlling placement, locality and consumption; run-time vs. static type checking and identification.
Terms: Win | Units: 3
Instructors: ; Cheriton, D. (PI)

CS 255: Introduction to Cryptography

For advanced undergraduates and graduate students. Theory and practice of cryptographic techniques used in computer security. Topics: encryption (single and double key), digital signatures, pseudo-random bit generation, authentication, electronic commerce (anonymous cash, micropayments), key management, PKI, zero-knowledge protocols. Prerequisite: basic probability theory.
Terms: Win | Units: 3

CS 259: Security Analysis of Network Protocols

General methods for security modeling and analysis, illustrated using network protocol security. Common security protocols and their properties including secrecy, authentication, key establishment, and fairness. Fully automated, finite-state, model-checking techniques. Constraint solving, process algebras, protocol logics, probabilistic model checking, and game theory. Students select a protocol, web component, hardware architecture, or other system to analyze, specify it in a chosen model, use an analysis tool or method to find vulnerabilities and verify properties, and present findings.
Terms: Win | Units: 3
Instructors: ; Mitchell, J. (PI)

CS 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 online algorithms. Prerequisite: 161 or equivalent.
Terms: Win | Units: 3
Instructors: ; Trevisan, L. (PI)

CS 262: Computational Genomics (BIOMEDIN 262)

Applications of computer science to genomics, and concepts in genomics from a computer science point of view. Topics: dynamic programming, sequence alignments, hidden Markov models, Gibbs sampling, and probabilistic context-free grammars. Applications of these tools to sequence analysis: comparative genomics, DNA sequencing and assembly, genomic annotation of repeats, genes, and regulatory sequences, microarrays and gene expression, phylogeny and molecular evolution, and RNA structure. Prerequisites: 161 or familiarity with basic algorithmic concepts. Recommended: basic knowledge of genetics.
Terms: Win | Units: 3
Instructors: ; Batzoglou, S. (PI)

CS 268: Geometric Algorithms

Techniques for design and analysis of efficient geometric algorithms for objects in 2-, 3-, and higher dimensions. Topics: convexity, triangulations and simplicial complexes, sweeping, partitioning, and point location. Voronoi/Delaunay diagrams and their properties. Arrangements of curves and surfaces. Intersection and visibility problems. Geometric searching and optimization. Random sampling methods. Impact of numerical issues in geometric computation. Example applications to robotic motion planning, visibility preprocessing and rendering in graphics, model-based recognition in computer vision, and structural molecular biology. Prerequisite: discrete algorithms at the level of 161. Recommended: 164.
Terms: Spr | Units: 3
Instructors: ; Guibas, L. (PI); Chen, D. (GP)

CS 26N: Motion Planning for Robots, Digital Actors, and Other Moving Objects

Preference to freshmen. Motion planning theory and computational approaches: how to represent, simulate, and plan motions in a computer. Intriguing algorithms, representations, and applications: terminology and concepts for reading motion planning research literature. Problems include: how a robot arm manipulates parts without colliding with its environment; how many maneuvers are required to park a car in a tight spot; how characters in computer games avoid running into obstacles; how molecules change shapes to perform biological functions; how to assemble a product from individual parts; how a multi-limbed robot can navigate on rough terrain; how robots can perform surgical procedures. Prerequisite: some computer programming experience in any language.
| Units: 3 | UG Reqs: GER:DB-EngrAppSci

CS 270: Modeling Biomedical Systems: Ontology, Terminology, Problem Solving (BIOMEDIN 210)

Methods for modeling biomedical systems and for making those models explicit in the context of building software systems. Emphasis is on intelligent systems for decision support and Semantic Web applications. Topics: knowledge representation, controlled terminologies, ontologies, reusable problem solvers, and knowledge acquisition. Recommended: exposure to object-oriented systems, basic biology.
Terms: Win | Units: 3

CS 272: Introduction to Biomedical Informatics Research Methodology (BIOE 212, BIOMEDIN 212, GENE 212)

Hands-on software building. Student teams conceive, design, specify, implement, evaluate, and report on a software project in the domain of biomedicine. Creating written proposals, peer review, providing status reports, and preparing final reports. Guest lectures from professional biomedical informatics systems builders on issues related to the process of project management. Software engineering basics. Prerequisites: BIOMEDIN 210, 211, 214, 217 or consent of instructor.
Terms: Spr | Units: 3

CS 273A: A Computational Tour of the Human Genome (BIOMEDIN 273A, DBIO 273A)

Introduction to computational biology through an informatic exploration of the human genome. Topics include: genome sequencing (technologies, assembly, personalized sequencing); functional landscape (genes, gene regulation, repeats, RNA genes, epigenetics); genome evolution (comparative genomics, ultraconservation, co-option). Additional topics may include population genetics, personalized genomics, and ancient DNA. Course includes primers on molecular biology, the UCSC Genome Browser, and text processing languages. Guest lectures from genomic researchers. No prerequisites. See http://cs273a.stanford.edu/.
Terms: Aut | Units: 3

CS 274: Representations and Algorithms for Computational Molecular Biology (BIOE 214, BIOMEDIN 214, GENE 214)

Topics: introduction to bioinformatics and computational biology, algorithms for alignment of biological sequences and structures, computing with strings, phylogenetic tree construction, hidden Markov models, Gibbs Sampling, 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 data sources, knowledge representation and controlled terminologies for molecular biology, microarray analysis, machine learning (clustering and classification), and natural language text processing. Prerequisites: programming skills; consent of instructor for 3 units.
Terms: Aut, Sum | Units: 3-4

CS 275: Translational Bioinformatics (BIOMEDIN 217)

Analytic, storage, and interpretive methods to optimize the transformation of genetic, genomic, and biological data into diagnostics and therapeutics for medicine. Topics: access and utility of publicly available data sources; types of genome-scale measurements in molecular biology and genomic medicine; analysis of microarray data; analysis of polymorphisms, proteomics, and protein interactions; linking genome-scale data to clinical data and phenotypes; and new questions in biomedicine using bioinformatics. Case studies. Prerequisites: programming ability at the level of CS 106A and familiarity with statistics and biology.
Terms: Spr | Units: 4

CS 276: Information Retrieval and Web Search (LINGUIST 286)

Text information retrieval systems; efficient text indexing; Boolean, vector space, and probabilistic retrieval models; ranking and rank aggregation; evaluating IR systems. Text clustering and classification: classification algorithms, latent semantic indexing, taxonomy induction; Web search engines including crawling and indexing, link-based algorithms, and web metadata. Prerequisites: CS 107, CS 109, CS 161.
Terms: Spr | Units: 3

CS 277: Experimental Haptics

Haptics as it relates to creating touch feedback in simulated or virtualized environments. Goal is to develop virtual reality haptic simulators and applications. Theoretical topics: psychophysical issues, performance and design of haptic interfaces, haptic rendering methods for 3-D virtual environments, and haptic simulation and rendering of rigid and deformable solids. Applied topics: the CHAI haptic library; implementation of haptic rendering algorithms; collision detection in 3-D environments; design of real-time models for deformable objects. Guest speakers. Lab/programming exercises; a more open-ended final project. Enrollment limited to 20. Prerequisite: experience with C++. Recommended: 148 or 248, 223A.
Terms: Win | Units: 3

CS 278: Systems Biology (BIOE 310, CSB 278)

Experimental and computational approaches to the dissection of complex biologcal systems. Topics include network structure, non-linear dynamics, numerical modeling approaches, noise, and robustness. Topics are introduced in the context of recent papers from the primary literature.
Terms: Win | Units: 4
Instructors: ; Ferrell, J. (PI)

CS 294A: Research Project in Artificial Intelligence

Student teams under faculty supervision work on research and implementation of a large project in AI. State-of-the-art methods related to the problem domain. Prerequisites: AI course from 220 series, and consent of instructor.
Terms: Aut, Win | Units: 3 | Repeatable for credit
Instructors: ; Koller, D. (PI); Ng, A. (PI)

CS 294S: Research Project in Software Systems and Security

Topics vary. Focus is on emerging research themes such as programmable open mobile Internet that spans multiple system topics such as human-computer interaction, programming systems, operating systems, networking, and security. May be repeated for credit. Prerequisites: CS 103 and 107.
Terms: Spr | Units: 3 | Repeatable for credit
Instructors: ; Boneh, D. (PI); Lam, M. (PI)

CS 294W: Writing Intensive Research Project in Computer Science

Restricted to Computer Science and Computer Systems Engineering undergraduates. Students enroll in the CS 294W section attached to the CS 294 project they have chosen.
Terms: Aut, Win, Spr | Units: 3 | Repeatable 1 times (up to 3 units total)

CS 295: Software Engineering

Software specification, testing, and verification. Emphasis is on current best practices and technology for developing reliable software at reasonable cost. Assignments focus on applying these techniques to realistic software systems. Prerequisites: 108. Recommended a project course such as 140, 143, or 145.
Terms: Spr | Units: 2-3
Instructors: ; Aiken, A. (PI)

CS 298: Seminar on Teaching Introductory Computer Science

Faculty, undergraduates, and graduate students interested in teaching discuss topics raised by teaching computer science at the introductory level. Prerequisite: consent of instructor.
Last offered: Autumn 2008 | Units: 1-3

CS 300: Departmental Lecture Series

Priority given to first-year Computer Science Ph.D. students. CS Masters students admitted if space is available. Presentations by members of the department faculty, each describing informally his or her current research interests and views of computer science as a whole.
Terms: Aut | Units: 1

CS 303: Designing Computer Science Experiments

Introduction to empirical research in computer science. Learn how to design, execute, interpret, and report on computer science experiments. Conducting empirical work and using experiments to build theory is one of the major ways to move computer science forward, but these issues are often omitted from computer science curricula. Course features case studies drawn from artificialnnintelligence, systems, and human-computer interaction. Emphasizes thenndecision-making aspects of research and the logic behind researchnnprocedures.
Terms: Spr | Units: 3

CS 309A: Cloud Computing

For technology and business students. The shift from traditional software model of disconnected development and CD-ROM deployment to engineering and delivery on the Internet as a service. Guest industry experts are typically CEOs of public companies who are delivering applications, platform or compute and storage cloud based services.
Terms: Aut | Units: 1 | Repeatable for credit
Instructors: ; Chou, T. (PI)

CS 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, data flow, 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: EE 282, and reasonable programming experience.
Terms: Spr | Units: 3

CS 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. May be repeated for credit.
| Units: 3 | Repeatable for credit

CS 324: Robot Perception

Advanced instruction and project work on robot perception, primarily focused on perception for manipulating objects, but this can include perception of people and other moving objects. Tools such as the Robot Operating System (ROS), the Open Source Computer Vision Library (Open CV), the Point Cloud Processing Library (PCL), and the Navigation, Planning, and Manipulation stacks on the PR2 robot. Review of the principles and code behind these tools so that the student has the basics to do state-of-the-art, publishable work in mobile robotic manipulation. Work is done on real robots. Limited enrollment. Recommended: CS 223A, CS 223B.
Terms: Spr | Units: 3
Instructors: ; Bradski, G. (PI)

CS 327A: Advanced Robotic Manipulation

Advanced control methodologies and novel design techniques for complex human-like robotic and bio mechanical systems. Class covers the fundamentals in operational space dynamics and control, elastic planning, human motion synthesis. Topics include redundancy, inertial properties, haptics, simulation, robot cooperation, mobile manipulation, human-friendly robot design, humanoids and whole-body control. Additional topcs in emerging areas are presented by groups of students at the end-of-quarter mini-symposium. Prerequisites: 223A or equivalent.
Terms: Spr | Units: 3
Instructors: ; Khatib, O. (PI)

CS 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. May be repeated for credit.
| Units: 3 | Repeatable for credit

CS 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. May be repeated for credit.
Last offered: Spring 2003 | Units: 3 | Repeatable for credit

CS 341: Project in Mining Massive Data Sets

Team project in data-mining of very large-scale data, including the problem statement and implementation and evaluation of a solution; some lectures on relevant materials will be given: Hadoop, Hive, Amazon EC2; other topics of possible relevance to some projects: computational advertising and the adwords problem; graph partitioning and community detection; extracting relations from the Web; stream data processing.
Terms: Spr | Units: 3

CS 343: Advanced Topics in Compilers

Topics change every year. May be repeated for credit. Prerequisite: 243.
Terms: Spr | Units: 3 | Repeatable for credit
Instructors: ; Engler, D. (PI)

CS 344: Topics in Computer Networks

High-performance embedded system design. Student teams of two software engineers (C experience required) and one hardward engineer (Verilog experience required) build a fully functioning Internet router Work in teams of three. How router interoperates with others in class. Open-ended design challenge judged by panel of industry experts. Prerequisites: CS 144, 244, or network programming experience.
Terms: Spr | Units: 3
Instructors: ; McKeown, N. (PI)

CS 344E: Advanced Wireless Networks

Networking research in wireless systems. Topics include: multi-channel/multi-radio systems, routing, coding, physical layer hints, low power, mesh networking, interference cancellation, technological trends, and protocol design. Students implement and test research ideas on SWAN, a WiFi testbed.
Terms: Spr | Units: 3 | Repeatable 1 times (up to 3 units total)
Instructors: ; Katti, S. (PI); Levis, P. (PI)

CS 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, programming experience in C++.
Terms: Spr | Units: 3-5
Instructors: ; Park, H. (PI)

CS 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.
Terms: Spr | Units: 3

CS 348B: Computer Graphics: Image Synthesis Techniques

Intermediate level, emphasizing the 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: Fourier analysis or digital signal processing.
Terms: Spr | Units: 3-4
Instructors: ; Hanrahan, P. (PI)

CS 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. May be repeated for credit.
Last offered: Winter 2006 | Units: 3 | Repeatable for credit

CS 349C: Topics in Programming Systems: Readings in Distributed Systems

Discussion of research publications that are of current interest in distributed systems. Students are expected to read all papers, and sign up for presentation of one paper. The course itself is 1 unit. Those interested in working on a project along with the readings should enroll for 3 units.
Terms: Aut | Units: 1-3
Instructors: ; Cao, P. (PI); Danzig, P. (PI)

CS 359: Topics in the 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. May be repeated for credit.
Last offered: Spring 2005 | Units: 3 | Repeatable for credit

CS 359G: Graph Partitioning and Expanders

Three topics related to the mathematics of expander graphs: (1) Approximation algorithms for finding a sparse balanced cut iin a graph (spectral partitioning, Leighton-Rao algorithm, and Arora-Rao-Vazirani algorithm; (2) Explicit construction of expander graphs (combinatorial and algebraic); and (3) Analysis of Markov-Chain Monte-Carlo algorithm via the estimation of the convergence of certain random walks. Recommended: a basic course in linear algebra and a course on algorithms.
Terms: Win | Units: 3
Instructors: ; Trevisan, L. (PI)

CS 364A: Algorithmic Game Theory

Topics at the interface of theoretical computer science and game theory such as: algorithmic mechanism design; combinatorial and competitive auctions; congestion and potential games; cost sharing; existence, computation, and learning of equilibria; game theory and the Internet; network games; price of anarchy; and selfish routing. Prerequisites: 154N and 161, or equivalents.
Terms: Win | Units: 3
Instructors: ; Roughgarden, T. (PI)

CS 365: Randomized Algorithms (CME 309)

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.nnProbability amplification and derandomization. Applications: sorting and searching, data structures, combinatorial optimization and graph algorithms, geometric algorithms and linear programming, approximation and counting problems, similarity search and metric embeddings, online algorithms.nnPrerequisites: CS 161 and STAT 116, or equivalents.
Terms: Win | Units: 3
Instructors: ; Goel, A. (PI)

CS 369P: Polyhedral Techyniques in Combinatorial Optimization

Graduate-level course in combinatorial optimization with a focus on polyhedral characterizations. First part of the course covers some classical results in combinatorial optimization: algorithms and polyhedral characterizations for matchings, spanning trees, matroids, and submodular functions. Second part covers some more recent work that builds upon these techniques-approximation algorithms using the primal-dual scheme, iterated rounding and dependent randomized rounding. Applications will include allocation in combinatorial auctions, network design, and variants of the traveling salesman problem. Prerequisites: Students should know basic computation theory and the material of CS261; in particular the fundamentals of linear programming, approximation algorithms and the notion of NP-completeness.
Terms: Aut | Units: 3
Instructors: ; Vondrak, J. (PI)

CS 374: Algorithms in Biology (BIOMEDIN 374)

Algorithms and computational models applied to molecular biology and genetics. Topics vary annually. Possible topics include biological sequence comparison, annotation of genes and other functional elements, molecular evolution, genome rearrangements, microarrays and gene regulation, protein folding and classification, molecular docking, RNA secondary structure, DNA computing, and self-assembly. May be repeated for credit. Prerequisites: 161, 262 or 274, or BIOCHEM 218, or equivalents.
Terms: Aut | Units: 2-3
Instructors: ; Batzoglou, S. (PI)

CS 376: Research Topics in Human-Computer Interaction

Interactive systems, research areas in interaction techniques, and the design, prototyping, and evaluation of user interfaces. Topics: computer-supported cooperative work; audio, speech, and multimodal interfaces; user interface toolkits; design and evaluation methods; ubiquitous and context-aware computing; tangible interfaces, haptic interaction; and mobile interfaces.
Terms: Spr | Units: 3-4 | Repeatable for credit

CS 377: Topics in Human-Computer Interaction

Contents change each quarter. May be repeated for credit. See http://hci.stanford.edu/academics for offerings.
| Units: 2-3 | Repeatable for credit

CS 377H: Topics in Learning and Technology: Enhancing Human Learning and Performance using Sensors (COMM 180, COMM 280, EDUC 328X)

Content changes each year. Sensor data in many domains in society are becoming available for guiding individual and collective decision-making and action - with the intended outcomes of enhancing learning and performance. Domains include health and wellness, sports, transportation, environmental sustainability. We will conduct the course as a problem-focused hands-on interdisciplinary design workshop, integrating foundational theory and findings as needed. Design topics include use scenarios, information display, user interaction, social media, and dependent variables.
Terms: Win | Units: 3 | Repeatable for credit
Instructors: ; Pea, R. (PI); Reeves, B. (PI)

CS 377T: Behavior Design: Using Technology to Create Calming Habits

How to use tech to influence people for the better. Principles and methods from new field of Behavior Design. Special focus on creating habits of calmness (reducing stress). First, teams analyze best-in-class solutions. Next, teams create and test new solutions, using existing tech platforms (e.g., SMS). Industry experts evaluate and guide. Coding is helpful but not required.
Terms: Spr | Units: 3-4

CS 379L: Designing Liberation Technology

Small project teams work with NGOs to design new technologies for promoting development and democracy. Students conduct observations to identify needs, generate concepts, create prototypes, and test their appropriateness. Some projects may continue past the quarter towards full-scale implementation. Taught through the Hasso Plattner Institute of Design at Stanfordnn(http://dschool.stanford.edu). Enrollment limited. Prerequisites: consent of instructors. Application required and is due by midnight Sunday, December 5, 2010. Design Institute class; see http://dschool.stanford.edu.
Terms: Spr | Units: 3-4

CS 390A: Curricular Practical Training

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 complete a research report outlining their work activity, problems investigated, results, and follow-on projects they expect to perform. 390 A, B, and C may each be taken once.
Terms: Aut, Win, Spr, Sum | Units: 1
Instructors: ; Aiken, A. (PI); Akeley, K. (PI); Altman, R. (PI); Baker, M. (PI); Barbagli, F. (PI); Batzoglou, S. (PI); Bejerano, G. (PI); Boneh, D. (PI); Bradski, G. (PI); Brafman, R. (PI); Cain, J. (PI); Cao, P. (PI); Casado, M. (PI); Cheriton, D. (PI); Cooper, S. (PI); Dally, B. (PI); De-Micheli, G. (PI); Dill, D. (PI); Dwork, C. (PI); Engler, D. (PI); Fedkiw, R. (PI); Feigenbaum, E. (PI); Fikes, R. (PI); Fisher, K. (PI); Fogg, B. (PI); Fox, A. (PI); Garcia-Molina, H. (PI); Genesereth, M. (PI); Gill, J. (PI); Girod, B. (PI); Goel, A. (PI); Golub, G. (PI); Guibas, L. (PI); Hanrahan, P. (PI); Heer, J. (PI); Hennessy, J. (PI); Horowitz, M. (PI); Johari, R. (PI); Johnson, M. (PI); Jurafsky, D. (PI); Katti, S. (PI); Kay, M. (PI); Khatib, O. (PI); Klemmer, S. (PI); Koller, D. (PI); Koltun, V. (PI); Konolige, K. (PI); Kozyrakis, C. (PI); Lam, M. (PI); Latombe, J. (PI); Leskovec, J. (PI); Levis, P. (PI); Levitt, M. (PI); Levoy, M. (PI); Li, F. (PI); Manna, Z. (PI); Manning, C. (PI); Mazieres, D. (PI); McCarthy, J. (PI); McCluskey, E. (PI); McKeown, N. (PI); Meng, T. (PI); Mitchell, J. (PI); Motwani, R. (PI); Musen, M. (PI); Nass, C. (PI); Nayak, P. (PI); Ng, A. (PI); Nilsson, N. (PI); Olukotun, O. (PI); Ousterhout, J. (PI); Paepcke, A. (PI); Parlante, N. (PI); Plotkin, S. (PI); Plummer, R. (PI); Prabhakar, B. (PI); Pratt, V. (PI); Raghavan, P. (PI); Rajaraman, A. (PI); Roberts, E. (PI); Rosenblum, M. (PI); Roughgarden, T. (PI); Sahami, M. (PI); Salisbury, J. (PI); Shoham, Y. (PI); Thrun, S. (PI); Tobagi, F. (PI); Trevisan, L. (PI); Ullman, J. (PI); Van Roy, B. (PI); Widom, J. (PI); Wiederhold, G. (PI); Winograd, T. (PI); Young, P. (PI); Zelenski, J. (PI); Cardamone, W. (GP); Hadding, D. (GP); Murphy, D. (GP); Siroker, M. (GP); Swenson, M. (GP); Yilmaz, K. (GP)

CS 390B: Curricular Practical Training

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 complete a research report outlining their work activity, problems investigated, results, and follow-on projects they expect to perform. 390A,B,C may each be taken once.
Terms: Aut, Win, Spr, Sum | Units: 1
Instructors: ; Aiken, A. (PI); Akeley, K. (PI); Altman, R. (PI); Baker, M. (PI); Barbagli, F. (PI); Batzoglou, S. (PI); Bejerano, G. (PI); Boneh, D. (PI); Bradski, G. (PI); Brafman, R. (PI); Cain, J. (PI); Cao, P. (PI); Casado, M. (PI); Cheriton, D. (PI); Cooper, S. (PI); Dally, B. (PI); De-Micheli, G. (PI); Dill, D. (PI); Dwork, C. (PI); Engler, D. (PI); Fedkiw, R. (PI); Feigenbaum, E. (PI); Fikes, R. (PI); Fisher, K. (PI); Fogg, B. (PI); Fox, A. (PI); Garcia-Molina, H. (PI); Genesereth, M. (PI); Gill, J. (PI); Girod, B. (PI); Goel, A. (PI); Golub, G. (PI); Guibas, L. (PI); Hanrahan, P. (PI); Heer, J. (PI); Hennessy, J. (PI); Horowitz, M. (PI); Johari, R. (PI); Johnson, M. (PI); Jurafsky, D. (PI); Katti, S. (PI); Kay, M. (PI); Khatib, O. (PI); Klemmer, S. (PI); Koller, D. (PI); Koltun, V. (PI); Konolige, K. (PI); Kozyrakis, C. (PI); Lam, M. (PI); Latombe, J. (PI); Leskovec, J. (PI); Levis, P. (PI); Levitt, M. (PI); Levoy, M. (PI); Li, F. (PI); Manna, Z. (PI); Manning, C. (PI); Mazieres, D. (PI); McCarthy, J. (PI); McCluskey, E. (PI); McKeown, N. (PI); Meng, T. (PI); Mitchell, J. (PI); Motwani, R. (PI); Musen, M. (PI); Nass, C. (PI); Nayak, P. (PI); Ng, A. (PI); Nilsson, N. (PI); Olukotun, O. (PI); Ousterhout, J. (PI); Paepcke, A. (PI); Parlante, N. (PI); Plotkin, S. (PI); Plummer, R. (PI); Prabhakar, B. (PI); Pratt, V. (PI); Raghavan, P. (PI); Rajaraman, A. (PI); Roberts, E. (PI); Rosenblum, M. (PI); Roughgarden, T. (PI); Sahami, M. (PI); Salisbury, J. (PI); Shoham, Y. (PI); Thrun, S. (PI); Tobagi, F. (PI); Trevisan, L. (PI); Ullman, J. (PI); Van Roy, B. (PI); Widom, J. (PI); Wiederhold, G. (PI); Winograd, T. (PI); Young, P. (PI); Zelenski, J. (PI); Cardamone, W. (GP); Hadding, D. (GP); Murphy, D. (GP); Siroker, M. (GP); Swenson, M. (GP); Yilmaz, K. (GP)

CS 390C: Curricular Practical Training

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 complete a research report outlining their work activity, problems investigated, results, and follow-on projects they expect to perform. 390A,B,C may each be taken once.
Terms: Aut, Win, Spr, Sum | Units: 1
Instructors: ; Aiken, A. (PI); Akeley, K. (PI); Altman, R. (PI); Baker, M. (PI); Barbagli, F. (PI); Batzoglou, S. (PI); Bejerano, G. (PI); Boneh, D. (PI); Bradski, G. (PI); Brafman, R. (PI); Cain, J. (PI); Cao, P. (PI); Casado, M. (PI); Cheriton, D. (PI); Cooper, S. (PI); Dally, B. (PI); De-Micheli, G. (PI); Dill, D. (PI); Dwork, C. (PI); Engler, D. (PI); Fedkiw, R. (PI); Feigenbaum, E. (PI); Fikes, R. (PI); Fisher, K. (PI); Fogg, B. (PI); Fox, A. (PI); Garcia-Molina, H. (PI); Genesereth, M. (PI); Gill, J. (PI); Girod, B. (PI); Goel, A. (PI); Golub, G. (PI); Guibas, L. (PI); Hanrahan, P. (PI); Heer, J. (PI); Hennessy, J. (PI); Horowitz, M. (PI); Johari, R. (PI); Johnson, M. (PI); Jurafsky, D. (PI); Katti, S. (PI); Kay, M. (PI); Khatib, O. (PI); Klemmer, S. (PI); Koller, D. (PI); Koltun, V. (PI); Konolige, K. (PI); Kozyrakis, C. (PI); Lam, M. (PI); Latombe, J. (PI); Leskovec, J. (PI); Levis, P. (PI); Levitt, M. (PI); Levoy, M. (PI); Li, F. (PI); Manna, Z. (PI); Manning, C. (PI); Mazieres, D. (PI); McCarthy, J. (PI); McCluskey, E. (PI); McKeown, N. (PI); Meng, T. (PI); Mitchell, J. (PI); Motwani, R. (PI); Musen, M. (PI); Nass, C. (PI); Nayak, P. (PI); Ng, A. (PI); Nilsson, N. (PI); Olukotun, O. (PI); Ousterhout, J. (PI); Paepcke, A. (PI); Parlante, N. (PI); Plotkin, S. (PI); Plummer, R. (PI); Prabhakar, B. (PI); Pratt, V. (PI); Raghavan, P. (PI); Rajaraman, A. (PI); Roberts, E. (PI); Rosenblum, M. (PI); Roughgarden, T. (PI); Sahami, M. (PI); Salisbury, J. (PI); Shoham, Y. (PI); Thrun, S. (PI); Tobagi, F. (PI); Trevisan, L. (PI); Ullman, J. (PI); Van Roy, B. (PI); Widom, J. (PI); Wiederhold, G. (PI); Winograd, T. (PI); Young, P. (PI); Zelenski, J. (PI); Cardamone, W. (GP); Hadding, D. (GP); Murphy, D. (GP); Siroker, M. (GP); Swenson, M. (GP); Yilmaz, K. (GP)

CS 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.
Terms: Aut, Win, Spr, Sum | Units: 1-9 | Repeatable for credit
Instructors: ; Aiken, A. (PI); Altman, R. (PI); Baker, M. (PI); Barbagli, F. (PI); Batzoglou, S. (PI); Bejerano, G. (PI); Boneh, D. (PI); Bradski, G. (PI); Brafman, R. (PI); Cain, J. (PI); Cao, P. (PI); Cheriton, D. (PI); Dally, B. (PI); De-Micheli, G. (PI); Dill, D. (PI); Dwork, C. (PI); Engler, D. (PI); Fedkiw, R. (PI); Feigenbaum, E. (PI); Fikes, R. (PI); Fisher, K. (PI); Fogg, B. (PI); Fox, A. (PI); Garcia-Molina, H. (PI); Genesereth, M. (PI); Gill, J. (PI); Girod, B. (PI); Goel, A. (PI); Golub, G. (PI); Guibas, L. (PI); Hanrahan, P. (PI); Heer, J. (PI); Hennessy, J. (PI); Horowitz, M. (PI); Johari, R. (PI); Johnson, M. (PI); Jurafsky, D. (PI); Katti, S. (PI); Kay, M. (PI); Khatib, O. (PI); Klemmer, S. (PI); Koller, D. (PI); Koltun, V. (PI); Konolige, K. (PI); Kozyrakis, C. (PI); Lam, M. (PI); Latombe, J. (PI); Leskovec, J. (PI); Levis, P. (PI); Levitt, M. (PI); Levoy, M. (PI); Li, F. (PI); Manna, Z. (PI); Manning, C. (PI); Mazieres, D. (PI); McCarthy, J. (PI); McCluskey, E. (PI); McKeown, N. (PI); Meng, T. (PI); Mitchell, J. (PI); Motwani, R. (PI); Musen, M. (PI); Nass, C. (PI); Nayak, P. (PI); Ng, A. (PI); Nilsson, N. (PI); Olukotun, O. (PI); Ousterhout, J. (PI); Parlante, N. (PI); Plotkin, S. (PI); Plummer, R. (PI); Prabhakar, B. (PI); Pratt, V. (PI); Raghavan, P. (PI); Rajaraman, A. (PI); Roberts, E. (PI); Rosenblum, M. (PI); Roughgarden, T. (PI); Sahami, M. (PI); Salisbury, J. (PI); Shoham, Y. (PI); Thrun, S. (PI); Tobagi, F. (PI); Trevisan, L. (PI); Ullman, J. (PI); Van Roy, B. (PI); Widom, J. (PI); Wiederhold, G. (PI); Winograd, T. (PI); Young, P. (PI); Zelenski, J. (PI); Cardamone, W. (GP); Hadding, D. (GP); Murphy, D. (GP); Siroker, M. (GP); Swenson, M. (GP); Yilmaz, K. (GP)

CS 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.
Terms: Aut, Win, Spr, Sum | Units: 1-6 | Repeatable for credit
Instructors: ; Aiken, A. (PI); Altman, R. (PI); Baker, M. (PI); Barbagli, F. (PI); Batzoglou, S. (PI); Bejerano, G. (PI); Boneh, D. (PI); Bradski, G. (PI); Brafman, R. (PI); Cain, J. (PI); Cao, P. (PI); Cheriton, D. (PI); Dally, B. (PI); De-Micheli, G. (PI); Dill, D. (PI); Dwork, C. (PI); Engler, D. (PI); Fedkiw, R. (PI); Feigenbaum, E. (PI); Fikes, R. (PI); Fisher, K. (PI); Fogg, B. (PI); Fox, A. (PI); Garcia-Molina, H. (PI); Genesereth, M. (PI); Gill, J. (PI); Girod, B. (PI); Goel, A. (PI); Golub, G. (PI); Guibas, L. (PI); Hanrahan, P. (PI); Heer, J. (PI); Hennessy, J. (PI); Horowitz, M. (PI); Johari, R. (PI); Johnson, M. (PI); Jurafsky, D. (PI); Katti, S. (PI); Kay, M. (PI); Khatib, O. (PI); Klemmer, S. (PI); Koller, D. (PI); Koltun, V. (PI); Konolige, K. (PI); Kozyrakis, C. (PI); Lam, M. (PI); Latombe, J. (PI); Leskovec, J. (PI); Levis, P. (PI); Levitt, M. (PI); Levoy, M. (PI); Li, F. (PI); Manna, Z. (PI); Manning, C. (PI); Mazieres, D. (PI); McCarthy, J. (PI); McCluskey, E. (PI); McKeown, N. (PI); Meng, T. (PI); Mitchell, J. (PI); Motwani, R. (PI); Musen, M. (PI); Nass, C. (PI); Nayak, P. (PI); Ng, A. (PI); Nilsson, N. (PI); Olukotun, O. (PI); Ousterhout, J. (PI); Parlante, N. (PI); Plotkin, S. (PI); Plummer, R. (PI); Prabhakar, B. (PI); Pratt, V. (PI); Raghavan, P. (PI); Rajaraman, A. (PI); Roberts, E. (PI); Rosenblum, M. (PI); Roughgarden, T. (PI); Sahami, M. (PI); Salisbury, J. (PI); Shoham, Y. (PI); Thrun, S. (PI); Tobagi, F. (PI); Trevisan, L. (PI); Ullman, J. (PI); Van Roy, B. (PI); Widom, J. (PI); Wiederhold, G. (PI); Winograd, T. (PI); Young, P. (PI); Zelenski, J. (PI); Cardamone, W. (GP); Hadding, D. (GP); Murphy, D. (GP); Siroker, M. (GP); Swenson, M. (GP); Yilmaz, K. (GP)

CS 399: Independent Project

Letter grade only.
Terms: Aut, Win, Spr, Sum | Units: 1-9 | Repeatable for credit
Instructors: ; Aiken, A. (PI); Akeley, K. (PI); Altman, R. (PI); Baker, M. (PI); Barbagli, F. (PI); Batzoglou, S. (PI); Bejerano, G. (PI); Blikstein, P. (PI); Boneh, D. (PI); Bradski, G. (PI); Brafman, R. (PI); Cain, J. (PI); Cao, P. (PI); Casado, M. (PI); Cheriton, D. (PI); Cooper, S. (PI); Dally, B. (PI); De-Micheli, G. (PI); Dill, D. (PI); Dwork, C. (PI); Engler, D. (PI); Fedkiw, R. (PI); Feigenbaum, E. (PI); Fikes, R. (PI); Fisher, K. (PI); Fogg, B. (PI); Fox, A. (PI); Garcia-Molina, H. (PI); Genesereth, M. (PI); Gill, J. (PI); Girod, B. (PI); Goel, A. (PI); Golub, G. (PI); Goodman, N. (PI); Guibas, L. (PI); Hanrahan, P. (PI); Heer, J. (PI); Hennessy, J. (PI); Horowitz, M. (PI); Johari, R. (PI); Johnson, M. (PI); Jurafsky, D. (PI); Katti, S. (PI); Kay, M. (PI); Khatib, O. (PI); Klemmer, S. (PI); Koller, D. (PI); Koltun, V. (PI); Konolige, K. (PI); Kozyrakis, C. (PI); Lam, M. (PI); Latombe, J. (PI); Leskovec, J. (PI); Levis, P. (PI); Levitt, M. (PI); Levoy, M. (PI); Li, F. (PI); Manna, Z. (PI); Manning, C. (PI); Mazieres, D. (PI); McCarthy, J. (PI); McCluskey, E. (PI); McKeown, N. (PI); Meng, T. (PI); Mitchell, J. (PI); Motwani, R. (PI); Musen, M. (PI); Nass, C. (PI); Nayak, P. (PI); Ng, A. (PI); Nilsson, N. (PI); Olukotun, O. (PI); Ousterhout, J. (PI); Paepcke, A. (PI); Parlante, N. (PI); Plotkin, S. (PI); Plummer, R. (PI); Prabhakar, B. (PI); Pratt, V. (PI); Raghavan, P. (PI); Rajaraman, A. (PI); Roberts, E. (PI); Rosenblum, M. (PI); Roughgarden, T. (PI); Sahami, M. (PI); Salisbury, J. (PI); Shoham, Y. (PI); Thrun, S. (PI); Tobagi, F. (PI); Trevisan, L. (PI); Ullman, J. (PI); Van Roy, B. (PI); Wang, G. (PI); Widom, J. (PI); Wiederhold, G. (PI); Winograd, T. (PI); Young, P. (PI); Zelenski, J. (PI); Cardamone, W. (GP); Hadding, D. (GP); Murphy, D. (GP); Siroker, M. (GP); Swenson, M. (GP); Yilmaz, K. (GP)

CS 399P: Independent Project

Graded satisfactory/no credit.
Terms: Aut, Win, Spr, Sum | Units: 1-9 | Repeatable for credit
Instructors: ; Aiken, A. (PI); Akeley, K. (PI); Altman, R. (PI); Baker, M. (PI); Barbagli, F. (PI); Batzoglou, S. (PI); Bejerano, G. (PI); Blikstein, P. (PI); Boneh, D. (PI); Bradski, G. (PI); Brafman, R. (PI); Cain, J. (PI); Cao, P. (PI); Casado, M. (PI); Cheriton, D. (PI); Cooper, S. (PI); Dally, B. (PI); De-Micheli, G. (PI); Dill, D. (PI); Dwork, C. (PI); Engler, D. (PI); Fedkiw, R. (PI); Feigenbaum, E. (PI); Fikes, R. (PI); Fisher, K. (PI); Fogg, B. (PI); Fox, A. (PI); Garcia-Molina, H. (PI); Genesereth, M. (PI); Gill, J. (PI); Girod, B. (PI); Goel, A. (PI); Golub, G. (PI); Goodman, N. (PI); Guibas, L. (PI); Hanrahan, P. (PI); Heer, J. (PI); Hennessy, J. (PI); Horowitz, M. (PI); Johari, R. (PI); Johnson, M. (PI); Jurafsky, D. (PI); Katti, S. (PI); Kay, M. (PI); Khatib, O. (PI); Klemmer, S. (PI); Koller, D. (PI); Koltun, V. (PI); Konolige, K. (PI); Kozyrakis, C. (PI); Lam, M. (PI); Latombe, J. (PI); Leskovec, J. (PI); Levis, P. (PI); Levitt, M. (PI); Levoy, M. (PI); Li, F. (PI); Manna, Z. (PI); Manning, C. (PI); Mazieres, D. (PI); McCarthy, J. (PI); McCluskey, E. (PI); McKeown, N. (PI); Meng, T. (PI); Mitchell, J. (PI); Motwani, R. (PI); Musen, M. (PI); Nass, C. (PI); Nayak, P. (PI); Ng, A. (PI); Nilsson, N. (PI); Olukotun, O. (PI); Ousterhout, J. (PI); Paepcke, A. (PI); Parlante, N. (PI); Plotkin, S. (PI); Plummer, R. (PI); Prabhakar, B. (PI); Pratt, V. (PI); Raghavan, P. (PI); Rajaraman, A. (PI); Roberts, E. (PI); Rosenblum, M. (PI); Roughgarden, T. (PI); Sahami, M. (PI); Salisbury, J. (PI); Shoham, Y. (PI); Thrun, S. (PI); Tobagi, F. (PI); Trevisan, L. (PI); Ullman, J. (PI); Van Roy, B. (PI); Wang, G. (PI); Widom, J. (PI); Wiederhold, G. (PI); Winograd, T. (PI); Young, P. (PI); Zelenski, J. (PI); Cardamone, W. (GP); Hadding, D. (GP); Murphy, D. (GP); Siroker, M. (GP); Swenson, M. (GP); Yilmaz, K. (GP)

CS 402: Beyond Bits and Atoms: Designing Technological Tools (EDUC 236X)

Practicum in designing and building technology-enabled curricula and learning environments. Students use software toolkits and state-of-the-art fabrication machines to design educational software, educational toolkits, and tangible user interfaces. How to design low-cost technologies, particularly for urban school in the US and abroad. The constructionist learning design perspective, critical pedagogy, and the application of complexity sciences in education.
Terms: Spr | Units: 3-5

CS 402L: Beyond Bits and Atoms - Lab (EDUC 211X)

This course is a hands-on lab in the prototyping and fabrication of tangible technologies, with a special focus in learning and education. We will learn how to use state-of-the-art fabrication machines (3D printers, 3D scanners, laser cutters, routers) to design educational toolkits, educational toys, science kits, and tangible user interfaces. A special focus of the course will be to design low-cost technologies, particularly for urban school in the US and abroad.
Terms: Win, Spr | Units: 1-3 | Repeatable 1 times (up to 3 units total)

CS 424M: Computational Modeling in Cognitive and Social Science (EDUC 390X)

Computational modeling and data-mining are dramatically changing the physical sciences, and more recently also the social and behavioral sciences. Traditional analysis techniques are insufficient to investigate complex dynamic social phenomena as social networks, online gaming, diffusion of innovation, opinion dynamics, classroom behavior, and other complex adaptive systems. In this course, we will learn about how modeling, network theory, and basic data-mining can support research in cognitive, and social sciences, in particular around issues of learning, cognitive development, and educational policy.
Terms: Win | Units: 3-4
Instructors: ; Blikstein, P. (PI)

CS 424P: Extracting Social Meaning and Sentiment (LINGUIST 287)

Methods for extracting social meaning (speaker perspectives, emotions and attitudes) from text and speech. Topics include sentiment analysis and summarization, detection of deception, sarcasm, emotion, and personality.nnAnalysis of meaning-bearing characteristics of the speaker and topic, including text, discourse, prosodic and other cues. Prerequisite: CS 124 or 221 or 229 or permission of instructors.
Terms: Aut | Units: 3

CS 442: High Productivity and Performance with Domain-specific Languages in Scala

Introduction to developing domain specific languages (DSLs) for productivity and performance using the Scala programming language. Goal is to equip students with the knowledge and tools to develop DSLs that can dramatically improve the experience of using high performance computation in important scientific and engineering domains. Aimed at two sorts of students: domain experts who can define key domain specific language elements that capture domain knowledge, and computer scientists who can implement these DSLs using a new DSL framework in Scala. First half of the course will focus on understanding the infrastructure for implementing DSLs in Scala and developing techniques for defining good DSLs. Second half of the course will focus on example DSLs that provide both high-productivity and performance. During the second half of the course groups of students will develop and implement their own DSLs using the Delite DSL process of implementing DSLs for parallel computation. Prerequisites: Systems course such as CS140, CS143 or CS149, and expertise is a particular domain and desire to improve productivity and performance of computation.
Terms: Spr | Units: 3

CS 448B: Data Visualization

Techniques and algorithms for creating effective visualizations based on principles from graphic design, visual art, perceptual psychology, and cognitive science. Topics: graphical perception, data and image models, visual encoding, graph and tree layout, color, animation, interaction techniques, automated design. Lectures, reading, and project. Prerequisite: one of 147, 148, or equivalent.
Terms: Aut | Units: 3 | Repeatable for credit
Instructors: ; Heer, J. (PI)

CS 448G: Research Topics in Interactive Data Analysis

Advanced topics in information visualization, research issues in the design and evaluation of visual data analysis tools. Topics: models of visual perception and cognition, layout algorithms, color perception and palette design, optimization-based approaches to automated design, interaction techniques, software architectures for visual analytics, evaluation methods. Lectures, reading, and final project. Prerequisite: CS448B or consent of instructor.
Terms: Spr | Units: 3
Instructors: ; Heer, J. (PI)

CS 448M: Simulation of Human Movement

Foundations of human movement and motor control. Motion capture, motion graphs, and kinematic motion controllers. Physics-based optimization and dynamic controllers. Simulation of walking, running, jumping, balance, object manipulation, and airborne maneuvers. Prerequisites: CS248 and CS205A, or equivalent.
| Units: 1-4

CS 448S: Topics in Computer Graphics: Beyond Programmable Shading

There are strong indications that the future of interactive graphics programming is a model more flexible than today's OpenGL/Direct3D pipelines. As such, graphics developers need to have a basic understanding of how to combine emerging parallel programming techniques and more flexible graphics processors with the traditional interactive rendering pipeline. This course presents the state-of-the-art in combing traditional redering API usage with advanced task- and data-parallel computation to increase the image quality of interactive graphics. Prerequisites: Students should be comfortable with OpenGL and/or Direct3D and have had an introductory computer architecture course such as CS248 or equivalent.
Terms: Spr | Units: 3
Instructors: ; Houston, M. (PI)

CS 448X: Math and Computer Science behind Special Effects

Course will focus on a number of case studies of special effects work in feature films, with the aim of elucidating the underlying technical challenges from the standpoint of mathematics and computer science. As a project based class, individuals may more deeply focus on the individual aspects of most interest to them be it rendering, computational geometry, computer vision, physical simulation, or character animation. Guests from industry will speak about effects work they and their colleagues have been involved in as well as discuss some current challenges in the industry. Students will be asked to submit some current challenges either alone or in an appropriate group. Since course may be taken multiple times for credit, and will be open to both undergraduate and graduate students with varied backgrounds and interests, grading will be based on individual effort relative to preparation. As such currently there are no prerequisites enforced.
Terms: Spr | Units: 3 | Repeatable 1 times (up to 3 units total)

CS 468: Geometry Processing Algorithms

Contents of this course change with each offering. Past offerings have included geometric matching, surface reconstruction, collision detection, computational topology, etc. May be repeated for credit. Fall quarter 2010/11 topic will be Geometry Processing Algorithms. Techniques for modeling and efficient processing of polygonal geometric models. Topics: data structures for polygonal models, discrete differential geometry, mesh parameterization, mesh simplication and remeshing reconstruction from point clouds, mesh editing and deformation, geometric image editing. Recommended: 164.
Terms: Aut | Units: 3 | Repeatable for credit
Instructors: ; Ben Chen Bolocan, M. (PI)

CS 476A: Music, Computing, and Design I: Software Paradigms for Computer Music (MUSIC 256A)

Software design and implementation for computer audio. Strategies, best practices, and tradeoffs in building audio software systems of various sizes (S, M, L, XL), with a focus on interactive (real-time) systems. Lectures examine high-level designs as well as dissect code in a hands-on manner. Course work includes small programming assignments and a final software project. This course is the prerequisite for MUSIC 256B. Prerequisite: experience in C/C++ and/or Java.
Terms: Aut | Units: 1-4
Instructors: ; Wang, G. (PI)

CS 476B: Mobile Music (MUSIC 256B)

Aesthetic, design, and implementation of mobile music, centered around the modern super smartphones such as the iPhone). Similarities and intrinsic differences between mobile and traditional computing and design for music. Topics include mobile software design, social and cloud computing, mobile interface design, and programming phones, in the service of music. Prerequisite: MUSIC 256A.
Terms: Win | Units: 1-4
Instructors: ; Wang, G. (PI)

CS 477: Reinventing Interactive Systems

Invent the future of interactive computing: Learn the principles of instrumental interaction, which encapsulates and treats interaction as a first class object, and co-adaptation, which facilitates learning and appropriability by the user in different contexts. Critique current interactive systems and learn generative design techniques, including vido prototyping, to create novel user interfaces that cross apps, the web and the desktop. 1 unit: active participation, 2 units: lead a discussion, video prototype a co-adaptive instrument.
Terms: Spr | Units: 1-2
Instructors: ; Mackay, W. (PI)

CS 47N: Computers and the Open Society

How online technologies change our lives and the social structure that we live in. Course emphasizes critical analyses of current trends i.e. blogging, social networks, and instant mobile communication. Readings include case studies and analyses of basic principles i.e. privacy, equity and sustainability. Guest speakers who have participated in development of computers and the net will share their experiences and enter into debates on current issues. Students work individually and in small groups to research issues, develop the capacity for critical thinking about them, and use the results as the basis for writing and discussions both in class and on-line.
| Units: 3

CS 499: Advanced Reading and Research

For CS graduate students. Register using the section number associated with the instructor. Prerequisite: consent of instructor.
Terms: Aut, Win, Spr, Sum | Units: 1-15 | Repeatable for credit
Instructors: ; Aiken, A. (PI); Akeley, K. (PI); Altman, R. (PI); Baker, M. (PI); Barbagli, F. (PI); Batzoglou, S. (PI); Bejerano, G. (PI); Boneh, D. (PI); Bradski, G. (PI); Brafman, R. (PI); Cain, J. (PI); Cao, P. (PI); Casado, M. (PI); Cheriton, D. (PI); Cooper, S. (PI); Dally, B. (PI); De-Micheli, G. (PI); Dill, D. (PI); Dwork, C. (PI); Engler, D. (PI); Fedkiw, R. (PI); Feigenbaum, E. (PI); Fikes, R. (PI); Fisher, K. (PI); Fogg, B. (PI); Fox, A. (PI); Garcia-Molina, H. (PI); Genesereth, M. (PI); Gill, J. (PI); Girod, B. (PI); Goel, A. (PI); Golub, G. (PI); Guibas, L. (PI); Hanrahan, P. (PI); Heer, J. (PI); Hennessy, J. (PI); Horowitz, M. (PI); Johari, R. (PI); Johnson, M. (PI); Jurafsky, D. (PI); Katti, S. (PI); Kay, M. (PI); Khatib, O. (PI); Klemmer, S. (PI); Koller, D. (PI); Koltun, V. (PI); Konolige, K. (PI); Kozyrakis, C. (PI); Lam, M. (PI); Latombe, J. (PI); Leskovec, J. (PI); Levis, P. (PI); Levitt, M. (PI); Levoy, M. (PI); Li, F. (PI); Manna, Z. (PI); Manning, C. (PI); Mazieres, D. (PI); McCarthy, J. (PI); McCluskey, E. (PI); McKeown, N. (PI); Meng, T. (PI); Mitchell, J. (PI); Motwani, R. (PI); Musen, M. (PI); Nass, C. (PI); Nayak, P. (PI); Ng, A. (PI); Nilsson, N. (PI); Olukotun, O. (PI); Ousterhout, J. (PI); Paepcke, A. (PI); Parlante, N. (PI); Plotkin, S. (PI); Plummer, R. (PI); Prabhakar, B. (PI); Pratt, V. (PI); Raghavan, P. (PI); Rajaraman, A. (PI); Roberts, E. (PI); Rosenblum, M. (PI); Roughgarden, T. (PI); Sahami, M. (PI); Salisbury, J. (PI); Shoham, Y. (PI); Thrun, S. (PI); Tobagi, F. (PI); Trevisan, L. (PI); Ullman, J. (PI); Van Roy, B. (PI); Widom, J. (PI); Wiederhold, G. (PI); Winograd, T. (PI); Young, P. (PI); Zelenski, J. (PI); Cardamone, W. (GP); Hadding, D. (GP); Murphy, D. (GP); Siroker, M. (GP); Swenson, M. (GP); Yilmaz, K. (GP)

CS 523: The Future of the Automobile (ME 302)

Guest speakers from academia and industry present their research results, share their visions, explain challenges, and offer solutions regarding individual transportation. Students are requested to draft brief write-ups on selected topics that will be discussed in class to develop an understanding of the interactions of technology, business, and society with a specific automotive focus. No specific technical background is required as it is encouraged that everyone brings in specific expertise regarding the automobile as a student, researcher, and/or consumer.
Terms: Aut, Win, Spr | Units: 1 | Repeatable for credit

CS 545: Database and Information Management Seminar

Current research and industrial innovation in database and information systems.
Terms: Win | Units: 1 | Repeatable for credit

CS 546: Seminar on Liberation Technologies (POLISCI 337S)

This one-unit seminar will present speakers relevant in a variety ofnnways to how various forms of information technology are being used tonndefend human rights, improve governance, deepen democracy, empower thennpoor, promote economic development, protect the environment, enhancennpublic health, and pursue a variety of other social goods.
Terms: Aut, Win | Units: 1 | Repeatable for credit

CS 547: Human-Computer Interaction Seminar

Weekly speakers. May be repeated for credit.
Terms: Aut, Win, Spr | Units: 1 | Repeatable for credit
Instructors: ; Dow, S. (PI)

CS 571: Surgical Robotics Seminar

Surgical robots developed and implemented clinically on varying scales. Seminar goal is to expose students from engineering, medicine, and business to guest lecturers from academia and industry.engineering and clinical aspects connected to design and use of surgical robots, varying in degree of complexity and procedural role. May be repeated for credit.
Terms: Aut | Units: 1 | Repeatable for credit

CS 801: TGR Project

Terms: Aut, Win, Spr, Sum | Units: 0 | Repeatable for credit
Instructors: ; Aiken, A. (PI); Altman, R. (PI); Baker, M. (PI); Barbagli, F. (PI); Batzoglou, S. (PI); Bejerano, G. (PI); Boneh, D. (PI); Bradski, G. (PI); Brafman, R. (PI); Cain, J. (PI); Cao, P. (PI); Cheriton, D. (PI); Dally, B. (PI); De-Micheli, G. (PI); Dill, D. (PI); Dwork, C. (PI); Engler, D. (PI); Fedkiw, R. (PI); Feigenbaum, E. (PI); Fikes, R. (PI); Fisher, K. (PI); Fogg, B. (PI); Fox, A. (PI); Garcia-Molina, H. (PI); Genesereth, M. (PI); Gill, J. (PI); Girod, B. (PI); Goel, A. (PI); Golub, G. (PI); Guibas, L. (PI); Hanrahan, P. (PI); Heer, J. (PI); Hennessy, J. (PI); Horowitz, M. (PI); Johari, R. (PI); Johnson, M. (PI); Jurafsky, D. (PI); Katti, S. (PI); Kay, M. (PI); Khatib, O. (PI); Klemmer, S. (PI); Koller, D. (PI); Koltun, V. (PI); Konolige, K. (PI); Kozyrakis, C. (PI); Lam, M. (PI); Latombe, J. (PI); Leskovec, J. (PI); Levis, P. (PI); Levitt, M. (PI); Levoy, M. (PI); Li, F. (PI); Manna, Z. (PI); Manning, C. (PI); Mazieres, D. (PI); McCarthy, J. (PI); McCluskey, E. (PI); McKeown, N. (PI); Meng, T. (PI); Mitchell, J. (PI); Motwani, R. (PI); Musen, M. (PI); Nass, C. (PI); Nayak, P. (PI); Ng, A. (PI); Nilsson, N. (PI); Olukotun, O. (PI); Ousterhout, J. (PI); Parlante, N. (PI); Plotkin, S. (PI); Plummer, R. (PI); Prabhakar, B. (PI); Pratt, V. (PI); Raghavan, P. (PI); Rajaraman, A. (PI); Roberts, E. (PI); Rosenblum, M. (PI); Roughgarden, T. (PI); Sahami, M. (PI); Salisbury, J. (PI); Shoham, Y. (PI); Thrun, S. (PI); Tobagi, F. (PI); Trevisan, L. (PI); Ullman, J. (PI); Van Roy, B. (PI); Widom, J. (PI); Wiederhold, G. (PI); Winograd, T. (PI); Young, P. (PI); Zelenski, J. (PI); Cardamone, W. (GP); Hadding, D. (GP); Murphy, D. (GP); Siroker, M. (GP); Swenson, M. (GP); Yilmaz, K. (GP)

CS 802: TGR Dissertation

Terms: Aut, Win, Spr, Sum | Units: 0 | Repeatable for credit
Instructors: ; Aiken, A. (PI); Akeley, K. (PI); Altman, R. (PI); Baker, M. (PI); Barbagli, F. (PI); Batzoglou, S. (PI); Bejerano, G. (PI); Boneh, D. (PI); Bradski, G. (PI); Brafman, R. (PI); Cain, J. (PI); Cao, P. (PI); Casado, M. (PI); Cheriton, D. (PI); Cooper, S. (PI); Dally, B. (PI); De-Micheli, G. (PI); Dill, D. (PI); Dwork, C. (PI); Engler, D. (PI); Fedkiw, R. (PI); Feigenbaum, E. (PI); Fikes, R. (PI); Fisher, K. (PI); Fogg, B. (PI); Fox, A. (PI); Garcia-Molina, H. (PI); Genesereth, M. (PI); Gill, J. (PI); Girod, B. (PI); Goel, A. (PI); Golub, G. (PI); Guibas, L. (PI); Hanrahan, P. (PI); Heer, J. (PI); Hennessy, J. (PI); Horowitz, M. (PI); Johari, R. (PI); Johnson, M. (PI); Jurafsky, D. (PI); Katti, S. (PI); Kay, M. (PI); Khatib, O. (PI); Klemmer, S. (PI); Koller, D. (PI); Koltun, V. (PI); Konolige, K. (PI); Kozyrakis, C. (PI); Lam, M. (PI); Latombe, J. (PI); Leskovec, J. (PI); Levis, P. (PI); Levitt, M. (PI); Levoy, M. (PI); Li, F. (PI); Manna, Z. (PI); Manning, C. (PI); Mazieres, D. (PI); McCarthy, J. (PI); McCluskey, E. (PI); McKeown, N. (PI); Meng, T. (PI); Mitchell, J. (PI); Motwani, R. (PI); Musen, M. (PI); Nass, C. (PI); Nayak, P. (PI); Ng, A. (PI); Nilsson, N. (PI); Olukotun, O. (PI); Ousterhout, J. (PI); Parlante, N. (PI); Plotkin, S. (PI); Plummer, R. (PI); Prabhakar, B. (PI); Pratt, V. (PI); Raghavan, P. (PI); Rajaraman, A. (PI); Roberts, E. (PI); Rosenblum, M. (PI); Roughgarden, T. (PI); Sahami, M. (PI); Salisbury, J. (PI); Shoham, Y. (PI); Thrun, S. (PI); Tobagi, F. (PI); Trevisan, L. (PI); Ullman, J. (PI); Van Roy, B. (PI); Widom, J. (PI); Wiederhold, G. (PI); Winograd, T. (PI); Young, P. (PI); Zelenski, J. (PI); Cardamone, W. (GP); Hadding, D. (GP); Murphy, D. (GP); Siroker, M. (GP); Swenson, M. (GP); Yilmaz, K. (GP)

CS 156: Calculus of Computation

Decision procedures with applications to analyzing and developing robust software. Logic review. Propositional and first-order logic; induction. Verification: methods for proving correctness of sequential programs using first-order reasoning; need for decision procedures. Decision procedures: algorithms that decide the validity of logical formulas for common theories including SAT, equality, arithmetic, recursive data structures, and arrays. Combination theories and combination of decision procedures. Static analysis: algorithms for deducing program properties. Projects include writing verified programs. Prerequisites: 103, 106, or equivalents.
| Units: 3-4 | UG Reqs: GER:DB-EngrAppSci

CS 164: Computing with Physical Objects: Algorithms for Shape and Motion

Algorithms and data structures dealing with the representation and manipulation of physical objects and entities in the computer. Computational structures for shape and motion, shape fitting and matching, triangulations and other spatial subdivisions, and low-dimensional search and optimization. Examples relevant to computer graphics, computer vision, robotics and geometric computation emphasizing algorithmic paradigms applicable to multidimensional data. Prerequisites: CS 103 or 103B, and CS 109 or STATS 116, and CS 106B/X or consent of instructor.
| Units: 3 | UG Reqs: GER:DB-EngrAppSci

CS 193D: Professional Software Development with C++

Programming techniques and methodologies. Language concepts including object-oriented design, memory management, and the standard library. Modern software development concepts such as design patterns, test-driven development, extreme programming, and XML. Prerequisites: basic C++ or significant experience in C or Java.
| Units: 3 | UG Reqs: GER:DB-EngrAppSci

CS 193G: Programming Massively Parallel Processors

Students will be taught how to effectively program massively parallel processors using the CUDA C programming language. Students will develop familiarity with the language itself, be exposed to the architecture of modern GPUs, and understand how to apply basic parallel patterns to decompose programs for parallel execution. The course is targeted at graduate students and upper-division undergraduates who have a good working experience of programming in C. Prior experience in parallel programming is not required. Open to all majors and graduate disciplines.
| Units: 3

CS 193S: Scalable Web 2.0 Programming

Course charts development path for a large scale modern web service. Resource efficiency demands a single developer should be able to build, test and deploy a single codebase using only open source tools and libraries. Difficult to accomplish in practice due to variety of skill sets needed for UI, client, server and database coding. Course framework presented offers solution that does not sacrifice long term scalability and maintenability for rapid development cycles and easy prototyping. Programming projects provide overview of technologies and critical contraints. Prerequisites: CS107, CS108.
| Units: 3

CS 194W: Software Project (WIM)

Restricted to Computer Science and Computer Systems Engineering undergraduates. Writing-intensive version of CS194.
| Units: 3

CS 204: Computational Law

Legal informatics based on representation of regulations in computable form. Encoding regulations facilitate creation of legal information systems with significant practical value. Convergence of technological trends, growth of the Internet, advent of semantic web technology, and progress in computational logic make computational law prospects better. Topics: current state of computational law, prospects and problems, philosophical and legal implications. Prerequisite: basic concepts of programming.
| Units: 3

CS 209: Introduction to Functional Programming

Functional programming offers insights and advanced programming techniques not found in other programming languages. Topics: lambda calculus (an alternative to Turing machines), higher-order functions, lazy evaluation, type-oriented programming, syntactic extension, and advanced control abstractions known as monads and continuations. Functional programming languages to be studied include Scheme, an eagerly evaluated, dynamically typed language, and Haskell, a lazily evaluated, statically typed language with type inferencing. Prerequisites: CS 107 and CS 161.
| Units: 3

CS 222: Rational Agency and Intelligent Interaction (PHIL 358)

For advanced undergraduates, and M.S. and beginning Ph.D. students. Logic-based methods for knowledge representation, information change, and games in artificial intelligence and philosophy. Topics: knowledge, certainty, and belief; time and action; belief dynamics; preference and social choice; games; and desire and intention. Prerequisite: propositional and first-order logic.
| Units: 3

CS 224M: Multi-Agent Systems

For advanced undergraduates, and M.S. and beginning Ph.D. students. Topics: logics of knowledge and belief, other logics of mental state, theories of belief change, multi-agent probabilities, essentials of game theory, social choice and mechanism design, multi-agent learning, communication. Applications discussed as appropriate; emphasis is on conceptual matters and theoretical foundations. Prerequisites: basic probability theory and first-order logic.
| Units: 3

CS 224S: Speech Recognition and Synthesis (LINGUIST 285)

Automatic speech recognition, speech synthesis, and dialogue systems. Focus is on key algorithms including noisy channel model, hidden Markov models (HMMs), Viterbi decoding, N-gram language modeling, unit selection synthesis, and roles of linguistic knowledge. Prerequisite: programming experience. Recommended: CS 221 or 229.
| Units: 2-4

CS 224U: Natural Language Understanding (LINGUIST 188, LINGUIST 288)

Machine understanding of human language. Computational semantics (determination of word sense and synonymy, event structure and thematic roles, time, aspect, causation, compositional semantics, scopal operators), and computational pragmatics and discourse (coherence, coreference resolution, information packaging, dialogue structure). Theoretical issues, online resources, and relevance to applications including question answering and summarization. Prerequisites: one of LINGUIST 180 / CS 124 / CS 224N,S: and logic such as LINGUIST 130A or B, CS 157, or PHIL150).
| Units: 3-4

CS 240X: Advanced Operating Systems II

Same content as 240, with expanded topics focusing on more difficult and specialized papers. Recent topics in systems research.
| Units: 3

CS 241: Secure Web Programming

Building secure Web applications is key to the continued success of the Web. Course will cover the key components and available tools for securing web applications. Discussions on browser security policy and how to properly use it, server-side abstractions for building secure applications, and commong errors found in existing applications. Course will include student presentations on course projects.
| Units: 3

CS 244C: Readings and Projects in Distributed Systems

Companion project option for 244B. Corequisite: 244B.
| Units: 3-6

CS 254: Computational Complexity

An introduction to computational complexity theory. The P versus NP problem; diagonalization and relativization; space complexity, Savitch's algorithm, NL=coNL, Reingold's algorithm; counting problem and #P-completeness; circuit complexity; pseudorandomness, derandomixation, and the Natural Proofs barrier; complexity of approximation; quantum computing. Prerequisites: 154 or equivalent; mathematical maturity.
| Units: 3

CS 256: Formal Methods for Reactive Systems

Formal methods for specification, verification, and development of concurrent and reactive programs. Reactive systems: syntax and semantics, fairness requirements. Specification language: temporal formulas (state, future, and past) and omega-automata. Hierarchy of program properties: safety, guarantee, obligation, response, persistence, and reactivity. Invariant generation. Deductive verification of programs: verification diagrams and rules, completeness. Modularity. Parameterized programs. Algorithmic verification of finite-state programs (model checking). Prerequisite: 154, 156, 157, or equivalent.
| Units: 3 | Repeatable for credit

CS 256L: Formal Methods for Reactive Systems Laboratory

Practical application of the specification and verification methods in 256. Individual projects include implementation of verification methods, verification case studies, or tool evaluation, depending on student preference.
| Units: 2

CS 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. Denotational semantics and elementary domain theory for languages with higher-type functions and recursion. Treatment of side effects. Prerequisites: 154, 157 or PHIL 160A.
| Units: 3

CS 271: Effective Design in Clinical Informatics (BIOMEDIN 211)

Methods of designing and engineering software systems in complex clinical environments. Case studies illustrate factors leading to success or failure of systems. Project assignments involve focused team-based design work. Topics: user and organizational requirements, data and knowledge modeling, component-based system design, system prototyping, and human-systems interaction. Prerequisite: BIOMEDIN 210 recommended, or database or object-oriented programming course.
| Units: 3

CS 279: Computational Methods for Analysis and Reconstruction of Biological Networks

Types of interactions, including: regulatory such as transcriptional, signaling, and chromatin modification; protein-protein interactions; and genetic. Biological network structure at scales such as single interaction, small subgraphs, and global organization. Methods for analyzing properties of biological networks. Techniques for reconstructing networks from biological data, including: DNA/protein sequence motifs and sequence conservation; gene expression data; and physical binding data such as protein-DNA, protein-RNA, and protein-protein. Network dynamics and evolution. Prerequisites: biology at the level of BIOSCI 41; computer science and data structures at the level of CS 103 and 106; and probability and statistics at the level of STATS 116 or CS 109.
| Units: 3

CS 294: Research Project in Computer Science

Student teams work under faculty supervision on research and implementation of a large project in some major sub-discipline in computer science. Lectures on state-of-the-art methods related to the particular problem domain. Prerequisites: consent of instructor.
| Units: 3 | Repeatable 1 times (up to 3 units total)

CS 294H: Research Project in Human-Computer Interaction

Many of the most successful web applications are social, from personalized homepages to social networks. Focus is on fundamental interface design, systems, and algorithms concepts in designing social software. Case-based syllabus covers insights from research and industry. Students contribute to this growing field through a quarter-long, team-based project. Students are required to enter the class with an initial project idea.
| Units: 3 | Repeatable 1 times (up to 3 units total)

CS 302: Tech Law with Progressive Minds

How the advent of computing technologies is reflected in the confluence of law, public policy, and technology. Issues relating to civil liberties, consumer protection, e-voting, copyright law, patent law, international patent law, trade secrets, political processes, and litigation.
| Units: 1

CS 315B: Parallel Computing Research Project

Advanced topics and new paradigms in parallel computing including parallel algorithms, programming languages, runtime environments, library debugging/tuning tools, and scalable architectures. Research project. Prerequisite: consent of instructor.
| Units: 3

CS 321: Information Processing for Sensor Networks

Design and implementation of algorithms and protocols for performing information processing tasks in sensor networks, including routing, data dissemination and aggregation, information discovery and brokerage, service establishment (localization, time synchronization), sensor tasking and control, and distributed data storage. Techniques from signal processing, networking, energy-ware computing, distributed databases and algorithms, and embedded systems and platforms. Physical, networking, and application layers and design trade-offs across the layers. Prerequisites: linear algebra and elementary probability, networking background at the level of 144A or EE 284.
| Units: 3-4

CS 323: Understanding Images and Videos

Field of computer vision has seen an explosive growth in past decade. Much of recent effort in vision research is towards developing algorithms that can perform high-level visual recogniztion tasks on real-world images and videos. With development of Internet, this task becomes particularly challenging and interesting given the heterogeneous data on the web. Course will focus on reading recent research papers that are focused on solving high-level visual recognition problems, such as object recognition and categorization, scene understanding, human motion understanding, etc. Project required. Prerequisite: some experience in research with one of the following fields: computer vision, image processing, computer graphics, machine learning.
| Units: 3

CS 326A: Motion Planning

Computing object motions in computer graphics, geometrical computing, robotics, or artificial intelligence for applications such as design, manufacturing, robotics, animated graphics, surgical planning, drug design, assembly planning, graphic animation of human figures, humanoid robots, inspection and surveillance, simulation of crowds, and biology. Path planning methods to generate collision-free paths among static obstacles. Extensions include uncertainty, mobile obstacles, manipulating moveable objects, maneuvering with kinematic constraints, and making and breaking contacts. Configuration space, geometric arrangements, and random sampling. Theoretical methods.
| Units: 3

CS 340: Topics in Computer Systems

Topics vary every quarter, and may include advanced material being taught for the first time. May be repeated for credit.
| Units: 3-4

CS 340V: Networked Systems for Virtual Worlds

Open to graduate students and advanced undergraduates. Systems and networking aspects of building large, distributed virtual 3D environments, with a focus on scalability, consistency, security, fairness, and federation. Topics include existing architectures, naming, routing, caching, migration, interoperability, and attribution. Open-ended research project. Prerequisite: some systems and networking background. May be repeated for credit.
| Units: 3-4 | Repeatable 1 times (up to 4 units total)

CS 342: Programming Language Design

Tools for analysis and optimization of iterative coding systems. LDPC codes, Turbo codes, RA codes, optimized ensembles, message passing algorithms, density evolution, analytic techniques. Prerequisite: 376A.
| Units: 3

CS 344B: Advanced Topics in Distributed Systems

Continuation of 244B. The use of distributed systems research in practical systems. New applications due to the growth in high-bandwidth connections. Distributed systems knowledge and techniques from research and system implementations, and active research topics. Readings include research publications.
| Units: 2

CS 345: Advanced Topics in Database Systems

Content varies. May be repeated for credit with instructor consent. Prerequisite: 145. Recommended: 245.
| Units: 3 | Repeatable for credit

CS 345C: Data Integration

Techniques for integrating data from multiple heterogeneous data sources. Topics: semantic heterogeneity; languages for mediating between disparate data sources; techniques for automatic schema reconciliation and reference reconciliation; adaptive query processing; basics of XML and its relevance to data integration; peer-to-peer data sharing data exchange; combining structured and unstructured data; and dataspaces. Recommended: 145.
| Units: 3

CS 345L: Large-Scale Data Mining

Topics include network models, ranking algorithms, reputation, collaborative filtering, and supervised and unsupervised learning. Individual or group applications-oriented programming project. 1 unit without project; 3 units with final project. Prerequisites: programming at the level of CS108; statistics at the level of MATH103 and STATS116. Recommended: machine learning at the level of CS229; knowledge of Java.
| Units: 1-3

CS 348A: Computer Graphics: Geometric Modeling

The mathematical tools needed for the geometrical aspects of computer graphics and especially for modeling smooth shapes. 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. Subdivision surfaces and multiresolution representations of geometry. Representations of solids and conversions among them. Surface reconstruction from scattered data points. Geometry processing on meshes, including simplification. Prerequisite: linear algebra. Recommended: 164, 248.
| Units: 3-4

CS 355: Advanced Topics in Cryptography

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. May be repeated for credit. Prerequisite: 255.
| Units: 3 | Repeatable for credit

CS 357: Advanced Topics in Formal Methods

Topics vary annually. Possible topics include automata on infinite words, static analysis methods, runtime analysis methods, verification of real-time and hybrid systems, and formalization of middleware services. May be repeated for credit. Prerequisite: 256.
| Units: 3 | Repeatable for credit

CS 359D: Hardness of Approximation

Results on and proof techniques for ruling out good approximation algorithms for NP-hard optimization problems. Topics: the PCP theorem; parallel repetition theorem; the unique games conjecture; applications to set cover, clique, max cut, network design, and problems. Prerequisites: 154 and 261, or equivalents.
| Units: 3

CS 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, online algorithms and competitive analysis, strings and pattern matching, heuristic and probabilistic analysis (TSP, satisfiability, cliques, colorings), local search algorithms. May be repeated for credit. Prerequisite: 161 or 261, or equivalent.
| Units: 3 | Repeatable for credit

CS 361B: Advanced Algorithms

Topics: fundamental techniques used in the development of exact and approximate algorithms for combinational optimization problems such as generalized flow, multicommodity flow, sparsest cuts, generalized Steiner trees, load balancing, and scheduling. Using linear programming, emphasis is on LP duality for design and analysis of approximation algorithms; interior point methods for LP. Techniques for development of strongly polynomial algorithms.
| Units: 3

CS 364B: Topics in Algorithmic Game Theory

Topics on the interface of theoretical computer science and game theory. May be taken prior to 364A; may be repeated for credit. Prerequisites: 154N and 161, or equivalents.
| Units: 3 | Repeatable for credit

CS 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. May be repeated for credit.
| Units: 3 | Repeatable for credit

CS 369A: Advanced Geometric Algorithms

Approximate, randomized, and high-dimensional geometric algorithms. Topics of current interest: clustering; nearest-neighbor search; shortest paths; geometric random walks; shape fitting; geometric embeddings; coresets; geometric TSP; and linear programming. Prerequisites: 368 or equivalent.
| Units: 3 | Repeatable 1 times (up to 3 units total)

CS 369F: Topics in Analysis of Algorithms

Focus is on combinatorial optimization with emphasis on online algorithms.
| Units: 3 | Repeatable 1 times (up to 3 units total)

CS 369M: Algorithms for Modern Massive Data Set Analysis

Algorithmic and statistical methods for large-scale data analysis: matrix and graph algorithms; strengths and weaknesses of theoretical techniques for practical scientific and Internet data analysis; overlap with related problems in statistics, optimization, numerical analysis, and machine learning. Representative topics: matrix problems (numerical and statistical perpectives; algorithmic approaches, including Johnson-Lindenstrauss lemma and randomized projection and sampling algorithms; novel matrix factorizations); graph problems (graph partitioning algorithms, including spectral methods, flow-based methods, and recent geometric methods; local graph algorithms and approximate eigenvector computation); and applications to machine learning and statistical data analysis (motivating applications; algorithmic basis of the RKHS method; geometric data analysis, regularization, and statistical inference; boosting and its relationships to conjugate gradient methods, duality, convexity, online learning, and approximation algorithms). Implementing these ideas in medium and large-scale applications. Prerequisites: algorithms such as CS 161, linear algebra such as MATH 51, and probability theory such as CS 109, or equivalents.
| Units: 3

CS 369N: Novel Paradigms for Algorithmic Analysis

Advanced material is often taught for the first time as a topics course, perhaps by a faculty member visiting from another institution. May be repeated for credit.
| Units: 3

CS 377L: Learning in a Networked World (EDUC 298)

Foundations, theories and empirical studies for interdisciplinary advances in how we conceive of the potentials and challenges associated with lifelong, lifewide and life-deep learning in a networked world given the growth of always-on cyberinfrastructure for supporting information and social networks across space and time with personal computers, netbooks, and mobiles.
| Units: 3

CS 377V: Creating Health Habits with Social and Mobile Technologies

How to create habits in people via social and mobile tech. Design methods and psychological principles for long-term change. Focus on health behaviors. First, teams analyze best-in-class habit technologies. Next, teams create and test their own solutions for habit formation, leveraging Facebook, texting, and other platforms. No coding required.
| Units: 3 | Repeatable 11 times (up to 33 units total)

CS 377W: Create Engaging Web Applications Using Metrics and Learning on Facebook

Experimental course. Students work in small, interdisciplinary teams to create, launch, and optimize web-based applications for social networks such as Facebook. Tools include Google Analytics. Online experiments and user responses to learn how to iterate and improve applications. Guest experts.
| Units: 3-4

CS 378: Phenomenological Foundations of Cognition, Language, and Computation

Critical analysis of theoretical foundations of the cognitive approach to language, thought, and computation. Contrasts of the rationalistic assumptions of current linguistics and artificial intelligence with alternatives from phenomenology, theoretical biology, critical literary theory, and socially-oriented speech act theory. Emphasis is on the relevance of theoretical orientation to the design, implementation, and impact of computer systems as it affects human-computer interaction.
| Units: 3-4

CS 379D: Computer Vision and Image Analysis in the Study of Art

Application of algorithms to computer vision, image analysis, and two-dimensional Western art such as paintings, drawings, and etchings. Topics: multispectral image enhancement and color manipulation; geometric perspective and warped (anamorphic) perspective; visual metrology; view synthesis; statistical analysis of form; texture and brushstrokes; and shape-from-shading. These techniques, pattern classification, statistical estimation methods, and stylometry (quantification of artistic style) address art historical problems such as attribution, authentication, and dating to reveal artists¿ working methods.
| Units: 3

CS 390D: Curricular Practical Training

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 complete a research report outlining their work activity, problems investigated, results, and follow-on projects they expect to perform. Students in F1 visas should be aware that completing 12 or more months of full-time CPT will make them ineligible for Optional Practical Training (OPT). 390A, B, C, D may each be taken once.
| Units: 1

CS 422: Intelligent Avatar Laboratory

In this small lab coourse students will implement intelligent behaviors for autonomous avatars in virtual worlds. Working either individually or in pairs, students will be given a brief tutorial on the software environment, will design a behavior for the autonomous avatar(s), and once that is approved, will implement the behavior. The programs can control a single avatars, or orchestrate a behavior of multiple avatars. This is an experimental class and enrollment will be limited this year. Prerequisites: CS106B or X, or equivalent. Experience with virtual worlds (such as Second Life or World of Warcraft) a plus.
| Units: 3

CS 423: High-level Vision: Behaviors, Neurons, and Computational Models (PSYCH 250)

Advanced level reading class. Vision as one of the most important sensory modalities for intelligent living organisms as well as robots and machines. Interdisciplinary approach aimed at understanding vision from several disciplines: neurophysiology, psychophysics, cognition, algorithms, and computational models. Focus is on the problem of scene understanding, covering topics from multiple perspectives drawing on recent research in psychology, neuroscience, and computer science. Emphasis is on ongoing debates in the field, and discussion of recent empirical findings. Topics include theories of visual recognition for scene perception. What are the behavioral and cognitive characteristics of scene perception, and their connections to objection recognition? What are the neural computations that underlie scene perception? What are the roles of attention, expectation, and experience in shaping scene recognition? What are the current state-of-the-art computational models for scene perception? Recommended: PSYCH 30, CS 223B.
| Units: 1-3 | Repeatable 1 times (up to 3 units total)

CS 447: Software Design Experiences

Small teams develop technology prototypes combining product and interaction design. Focus is on software and hardware interfaces, interaction, design aesthetics, and underpinnings of successful design including a reflective, interactive design process, group dynamics of interdisciplinary teamwork, and working with users. Prerequisite: CS 247A.
| Units: 3-4

CS 448: Topics in Computer Graphics

Topic changes each quarter. Recent topics: computational photography, datannvisualization, character animation, virtual worlds, graphics architectures, advanced rendering. See http://graphics.stanford.edu/courses for offererings and prerequisites. May be repeated for credit.
| Units: 3-4 | Repeatable for credit

CS 448E: Research Topics in Computer Graphics

Selected topics in current computer graphics research. Analysis of research publications, class discussions, quarter-long research project. Topics change each offering. Sample topics: procedural modeling, character animation, multimodal interfaces, perception and cognition. May be repeated for credit. Prerequisite: CS248.
| Units: 1-4

CS 448F: Image Processing for Photography and Vision

Image processing with a focus on implementation of new techniques from the literature. Topics: sampling and reconstruction, linear and non-linear filters, features and alignment, compositing, gradient-domain techniques, and recent techniques from conferences such as SIGGRAPH and Eurographics. Prerequisites: Students should be comfortable coding in C++. An introductory graphics course such as CS148 is helpful but not necessary.
| Units: 3

CS 450: Introduction to Biotechnology

Academic and industrial experts discuss latest developments in fields such as bioenergy, green process technology, the production of industrial chemicals from renewable resources, protein pharmaceutical production, industrial enzyme production, stem cell applications, medical diagnostics, and medical imaging. Discussions of biotechnology ethics, business and patenting issues, and entrepreneurship in biotechnology.
| Units: 3

CS 478: Computational Photography

Formerly numbered CS448A. Sensing strategies and algorithmic techniques that extend traditional digital photography. Topics: high dynamic range imaging, flash-noflash, coded aperture, coded exposure, multi-perspective, panoramic stitching, digital photomontage, all-focus, and light field imaging. Lectures, readings, and project. Prerequisite: 178 or equivalent.
| Units: 3-4 | Repeatable for credit

CS 548: Internet and Distributed Systems Seminar

Guest speakers from academia and industry. May be repeated for credit.
| Units: 1 | Repeatable for credit

CS 549: Crowdsourcing Research Seminar

Crowdsourcing and human computation are rapidly evolving topics of research in Computer Science. Course includes a literature review and laboratory portion. Survey of the latest literature, covering these overarching themes: HCI applications of crowdsourcing, patterns, and systems for crowd programming; organizational behavior and economic aspects of crowdsourcing; and crowdsourcing demographics and labor issues. Laboratory component focus is on developing concrete crowdsourcing research projects.
| Units: 2
Instructors: ; Dow, S. (PI)
© Stanford University | Terms of Use | Copyright Complaints