The first digit of a CS course number indicates its general level of sophistication: 001-099 Service courses for nontechnical majors 100-199 Other service courses, basic undergraduate 200-299 Advanced undergraduate/beginning graduate 300-399 Advanced graduate 400-499 Experimental 500-599 Graduate seminars Emeriti: (Professors) Tom Binford, Edward Feigenbaum, Richard The tens digit indicates the area of Computer Science it addresses: Fikes, Donald E. Knuth,* John McCarthy, Edward J. 00-09 Introductory, miscellaneous McCluskey, William F. Miller, Nils J. Nilsson, Vaughan Pratt,* 10-19 Hardware Systems Jeffrey D. Ullman, Gio Wiederhold* 20-29 Artificial Intelligence Chair: Jennifer Widom 30-39 Numerical Analysis Associate Chair for Education: Mehran Sahami 40-49 Software Systems Professors: Alex Aiken, Dan Boneh, David Cheriton, William J. 50-59 Mathematical Foundations of Computing Dally, David Dill, Hector Garcia-Molina, Leonidas J. Guibas, 60-69 Analysis of Algorithms Patrick Hanrahan, John Hennessy, Mark A. Horowitz, Oussama 70-79 Computational Biology and Interdisciplinary Topics Khatib, Daphne Koller, Monica Lam, Jean-Claude Latombe, 90-99 Independent Study and Practicum Marc Levoy, Zohar Manna, Teresa Meng, John Mitchell, Kunle Olukotun, Yoav Shoham, Sebastian Thrun, Jennifer Widom, Terry Winograd Associate Professors: Serafim Batzoglou, Dawson Engler, Ronald The mission of Stanford‟s undergraduate program in Computer P. Fedkiw, Michael Genesereth, Christoforos Kozyrakis, Chris- Science is to provide a foundation of mathematics, science, and topher Manning, David Mazieres, Nick McKeown, Andrew Ng, engineering knowledge. Building on Stanford‟s core ideals of lib- Serge A. Plotkin, Balaji Prabhakar, Mendel Rosenblum eral education, the program combines fundamentals with practical COMPUTER SCIENCE Assistant Professors: Gill Bejerano, Jeffrey Heer, Sachin Katti, experience in problem solving, programming, communication, and Scott Klemmer, Vladlen Koltun, Jure Leskovec, Philip Levis, collaboration, allowing each student to realize his or her individual Fei-Fei Li, potential. Professors (Research): , John K. Salisbury Graduates of the program are prepared to pursue graduate study Professor (Teaching): Eric S. Roberts at the highest academic level, or advance into leadership positions Associate Professor (Teaching): Mehran Sahami in industry. The program creates an atmosphere that promotes Courtesy Professors: Russ Altman, Martin Fischer, Bernd Girod, innovative thinking, values mutual respect and diversity, supports Michael Levitt, Clifford J. Nass, Roy Pea, Fouad A. Tobagi scholarship and research, instills ethical behavior, and cultivates Courtesy Associate Professors: Ashish Goel, Dan Jurafsky, Vijay lifelong learning.

Pande, Benjamin Van Roy Courtesy Assistant Professors: Paulo Blikstein, Atul Butte, Ra- mesh Johari, Ge Wang Lecturers: Gerald Cain, Nicholas J. Parlante, Robert Plummer, The department offers both a major and a minor in Computer Patrick Young, Julie Zelenski Science. The requirements for these programs are outlined in the Consulting Professors: Gary Bradski, Kathleen Fisher, Prabhakar “School of Engineering” section of this bulletin and described in Raghavan more detail in the Handbook for Undergraduate Engineering Pro- Consulting Associate Professor: Federico Barbagli, Pei Cao grams published by the School of Engineering. The Computer Consulting Assistant Professors: Kurt Akeley Science major offers a number of tracks (programs of study) from Visiting Professor: Martin Abadi which students can choose, allowing them to focus their program * Recalled to active duty. on the areas of most interest. These tracks also reflect the broad Mail Code: 94305-9025 diversity of areas in computing disciplines. The department has an Phone: (650) 723-2273 honors program, which is described in the following section. Web Site: http:// www.cs.stanford.edu In addition to Computer Science itself, Stanford offers several Courses offered by the Department of Computer Science are interdisciplinary degrees with a substantial computer science com- listed under the subject code CS on the Stanford Bulletin’s Explo- ponent. The Computer Systems Engineering major (also in Engi- reCourses web site. neering) allows the study of areas requiring a knowledge of both The Department of Computer Science (CS) operates and sup- computer hardware and software, bridging the gap between tradi- ports computing facilities for departmental education, research, tional CS and Electrical Engineering majors. The Symbolic Sys- and administration needs. All CS students have access to the de- tems major (in the School of Humanities and Sciences) offers an partmental student machine for general use (mail, news, etc.), as opportunity to explore computer science and its relation to linguis- well as computer labs with public workstations located in the tics, philosophy, and psychology. Finally, the Mathematical and Gates Building. In addition, most students have access to systems Computational Sciences major (also Humanities and Sciences) located in their research areas. allows students to explore computer science along with more ma- Each research group in Computer Science has systems specific thematics, statistics, and operations research. to its research needs. These systems include workstations (PCs, Macs), multi-CPU computer clusters, and local mail and file serv- The Department of Computer Science (CS) offers an honors ers. Servers and workstations running Linux or various versions of program for undergraduates whose academic records and personal Windows are commonplace. Support for course work and instruc- initiative indicate that they have the necessary skills to undertake tion is provided on systems available through Information Tech- high-quality research in computer science. Admission to the pro- nology Services (ITS) and the School of Engineering (SoE). gram is by application only. To apply for the honors program, students must be majoring in Computer Science, have a grade

STANFORD BULLETIN, 2009-10 | 1

point average (GPA) of at least 3.6 in courses that count toward the For scientific use: 106A major, and achieve senior standing (135 or more units) by the end For a technical introduction: 106A of the academic year in which they apply. Coterminal master‟s For significant use: 106A,B or 106X, plus 103, 107, and 110 students are eligible to apply as long as they have not already re- ceived their undergraduate degree. Beyond these requirements, students who apply for the honors program must also find a Com- puter Science faculty member who agrees to serve as the thesis adviser for the project. Thesis advisers must be members of Stan- The University‟s basic requirements for the M.S. and Ph.D. ford‟s Academic Council. degrees are discussed in the “Graduate Degrees” section of this Students who meet the eligibility requirements and wish to be bulletin. considered for the honors program must submit a written applica-

tion to the CS undergraduate program office by May 1 of the year

G preceding the honors work. The application must include a letter describing the research project, a letter of endorsement from the In general, the M.S. degree in Computer Science is intended as faculty sponsor, and a transcript of courses taken at Stanford. Each a terminal professional degree and does not lead to the Ph.D. de- year, a faculty review committee selects the successful candidates gree. Most students planning to obtain the Ph.D. degree should for honors from the pool of qualified applicants. apply directly for admission to the Ph.D. program. Some students, In order to receive departmental honors, students admitted to however, may wish to complete the master‟s program before de- the honors program must, in addition to satisfying the standard ciding whether to pursue the Ph.D. To give such students a greater requirements for the undergraduate degree, do the following: opportunity to become familiar with research, the department has 1. Complete at least 9 units of CS 191 or 191W under the direc- instituted a program leading to a master‟s degree with distinction tion of their project sponsor. in research. This program is described in more detail in a subse- 2. Attend a weekly honors seminar Winter and Spring quarters. quent section. 3. Complete an honors thesis deemed acceptable by the thesis Applications for admission to the M.S. program, and all of the adviser and at least one additional faculty member. required supporting documents, must be received by December 8, 4. Present the thesis at a public colloquium sponsored by the 2009. Exceptions are made for applicants who are already students department. at Stanford and are applying to the coterminal program. Informa- 5. Maintain the 3.6 GPA required for admission to the honors tion on these deadlines is available from the department. program. For University coterminal degree program rules and University application forms, see http://registrar.stanford.edu/shared/ publica- tions.htm#Coterm. Students arriving at Stanford have widely differing back-

SCHOOLOF ENGINEERIN grounds and goals, but most find that the ability to use computers effectively is beneficial to their education. The department offers A candidate is required to complete a program of 45 units. At many introductory courses to meet the needs of these students. least 36 of these must be graded units, passed with a grade point For students whose principal interest is an exposure to the fun- average (GPA) of 3.0 (B) or better. The 45 units may include no damental ideas behind computer science and programming, CS more than 21 units of courses from those listed below in Require- 105 is the most appropriate course. It is intended for students in ments 1 and 2. Thus, students needing to take more than seven of nontechnical disciplines who expect to make some use of comput- the courses listed in Requirements 1 and 2 actually complete more ers, but who do not expect to go on to more advanced courses. CS than 45 units of course work in this program. Only well-prepared 105 meets the General Education Disciplinary Breadth Require- students may expect to finish the program in one year; most com- ment in Engineering and Applied Sciences and includes an intro- plete the program in six quarters. Students hoping to complete the duction to programming and the use of modern Internet-based program with 45 units should already have a substantial back- technologies. Students interested in learning to use the computer ground in computer science, including course work or experience should consider CS 1C, Introduction to Computing at Stanford. equivalent to all of Requirement 1 and some of the courses in Re- Students who intend to pursue a serious course of study in quirement 2. computer science may enter the program at a variety of levels, Requirement 1—The following courses may be needed as pre- depending on their background. Students with little prior expe- requisites for other courses in the program: CS 103, or 103A, B, or rience or those who wish to take more time to study the fundamen- X, 106A, B, or X, 107, 108, 110; MATH 51. tals of programming should take 106A followed by 106B. Students Requirement 2—Students must demonstrate breadth of know- in 106A need not have prior programming experience. Students ledge in the field by completing the following courses: with significant prior exposure to programming or those who want 1. Area A: Mathematical and Theoretical Foundations an intensive introduction to the field should take 106X or may start a. Required: directly in 106B. CS106A uses Java as its programming language; 1. Statistics (CS 109 or STATS 116 or MS&E 220 or

CS106B and X use C++. No prior knowledge of these languages is CME 106) assumed, and the prior programming experience required for 103B 2. Algorithms (CS 161) or X may be in any language. In all cases, students are encouraged 3. Automata (CS 154) to discuss their background with the instructors responsible for b. Choose one of: these courses. 1. Numerical Analysis (CME 108 or 302) After the introductory sequence, Computer Science majors and 2. Logic (CS 156, 157, 258, or PHIL 251) those who need a significant background in computer science for 3. Mathematical Methods (CS 205A) related majors in engineering should take 103, 107 and 110. CS 2. Area B: Computer Systems 103 offers an introduction to the mathematical and theoretical a. Required: Architecture (EE 108B or 282) foundations of computer science. CS 107 exposes students to a b. Choose two of: variety of programming concepts that illustrate critical strategies 1. Operating Systems (CS 140) used in systems development; 110 builds on this material, focusing 2. Compilers (CS 143 or 243) on the development of larger-scale software making use of systems 3. Introduction to Computer Networks (CS 144 or EE and networking abstractions. 284) In summary: 3. Area C: AI and Applications For exposure: 1C a. Choose two of the following, with at least one 200-level For nontechnical use: 105 course:

2 | STANFORD BULLETIN, 2009-10

1. AI (CS 121 or 221) c. a total of 21 units from the above and from the following: 2. Databases (CS 145 or 245) CS 225A, 225B, 228, 229, 247, 270, 271, 272, 273A, 274, 3. Graphics (CS 148 or 248) 294A, 327A, 328, 448; CME 324 Individual specializations may narrow the set of choices in spe- 8. Software Theory cific areas of the breadth requirement; see the individual speciali- a. CS 242, 243 zation sheets at http://cs.stanford.edu/degrees/mscs /programsheets b. CS 241 or 258 or 259 for details. Breadth courses are waived only if evidence is provided c. at least one of: CS 244, 245, 295, 343, 345 that similar or more advanced courses have been taken, either at d. at least one course from the following: CS 255, 261, 268, Stanford or another institution. Courses that are waived rather than 355, 361A, 361B, 365 taken may not be counted toward the M.S. degree. Breadth courses e. at least two additional courses from (b), (c), and CS 346 may be taken on a satisfactory/no credit basis provided that a min- 9. Systems imum of 36 graded units is presented within the 45-unit program. a. CS 240, 242 Requirement 3—At least 1 but no more than 3 units of 500- b. at least three of: CS 243, 244, 245, 248, 348B; EE 271 level seminars must be taken. c. at least two additional courses chosen from (b) and the fol- Requirement 4—A program of 21 units in an area of specializa- lowing: CS 194, 240C, 240D, 240E, 240X, 244B, 244C, tion must be completed. All courses in this area must be taken for 244E, 249A, 249B, 255, 259, 262, 270, 271, 272, 276, letter grades. Ten approved programs are listed below. Students 294S, 295, 315A, 315B, 340, 343, 344, 344B, 344E, 345, may propose to the M.S. program committee other coherent pro- 346, 347, 348A, 349, 374, 448; EE 384A, 384B, 384C, grams that meet their goals and satisfy the basic requirements. 384S, 384X, 384Y 1. Artificial Intelligence 10. Theoretical Computer Science a. at least four of: CS 223A, 223B, 224M, 224N, 224S, a. CS 241 or 258 or 259, 261 (361A, 361B, or 365 may be 224U, 226, 227, 228, 229 substituted for 261) b. a total of 21 units from category (a) and the following: CS b. at least five additional courses chosen from CS 228, 241, 124, 205A, 222, 225A, 225B, 227B, 228T, 262, 270, 255, 258, 259, 262, 268, 345, 355, 357, 358, 359,* 361A, 273A, 274, 275, 276, 277, 278, 279, 294A, 321, 322, 323, 361B, 364A, 364B, 365, 369,* 374; MS&E 310 327A, 328, 329, 374, 377,* 379*; ECON 286; EE 263, * With consent of faculty adviser. 363, 364A, 364B, 376A; ENGR 205, 209A; MS&E 251, Requirement 5—Additional elective units must be technical

252, 339, 351, 352, 353; PSYCH 202, 205; STATS 202, courses (numbered 100 or above) related to the degree program COMPUTER SCIENCE 315A, 315B and approved by the adviser. Elective courses may be taken on a 2. Biocomputation satisfactory/no credit basis provided that a minimum of 36 graded a. at least four of: CS 262, 270, 272, 273A, 274, 278, 279 units is presented within the 45-unit program. b. a total of 21 units from category (a) and the following: CS 228, 229, 245, 261, 268, 275, 277, 345, 346, 365, 374; BI- OC 218; BIOMEDIN 234; GENE 203, 211; SBIO 228 3. Computer and Network Security A student who wishes to pursue the M.S./CS with distinction in a. CS 155, 244, 255 research must first identify a faculty adviser who agrees to super- b. at least three of: CS 142, 240, 241, 244B, 244C, 259, 261, vise and support the research work. The research adviser must be a 340, 344, 365 member of the Academic Council and must hold an appointment in c. at least one additional course chosen from (b) and the fol- Computer Science. The student and principal adviser must also lowing: CS 240E, 244E, 245, 295, 344B, 345, 347, 355, identify another faculty member, who need not be in the Depart- 361A; EE 384A, 384B, 384C, 384M, 384S ment of Computer Science, to serve as a secondary adviser and 4. Database Systems reader for the research report. In addition, the student must com- a. CS 245 plete the following requirements beyond those for the regular b. at least two of: CS 345, 346, 347 M.S./CS degree: c. at least four additional courses from category (b) and the 1. Research Experience: The program must include significant following: CS 240, 242, 243, 244, 244B, 244C, 249A, research experience at the level of a half-time commitment 249B, 255, 262, 270, 271, 272, 275, 276, 315A, 321, 344, over the course of three academic quarters. In any given quar- 364B, 374 ter, the half-time research commitment may be satisfied by a 5. Human-Computer Interaction 50 percent appointment to a departmentally supported research a. CS 147, 247 assistantship, 6 units of independent study (CS 393, 395, or b. at least one of: ME 313, 377; MS&E 27*, 28* (where 27* 399), or a prorated combination of the two (such as a 25 per- and 28* are any of the MS&E courses beginning with cent research assistantship supplemented by 3 units of inde- those digits that are offered in 2009/10): Psych 205, 252 pendent study). This research must be carried out under the di- c. at least one of: CS124, 142, 148, 294H, 376, 377 (may be rection of the primary or secondary adviser. repeated for credit), 378, 448 2. Supervised Writing and Research: In addition to the research d. a total of 21 units from categories (a), (b), (c), and the fol- experience outlined in the previous requirement, students must lowing: CS 221, 223B, 229, 242, 248, 249A, 249B, 276, enroll in at least 3 units of independent research (CS 393, 395, 379L: COMM 268, 269, 272; ENGR 231; ME 206A, or 399) under the direction of their primary or secondary ad- 206B, 312, 314, 377; EDUC 124; MUSIC 205A: SYMB- viser. These units should be closely related to the research de- SYS 145 scribed in the first requirement, but focused more directly on 6. Numerical Analysis/Scientific Computation the preparation of the research report described in the next sec- a. CME 302, 306; CS 205A tion. Note that the writing and research units described in parts b. at least two of: CME 326; CS 205B; MS&E 121; MATH (1) and (2) must be taken in addition to the 21 units required 131, 132, 220; STATS 200 for the specialization, although they do count toward the 45 c. at least two of: CS 223A, 327A, 339; AA 214A, 214B; units required for the degree. CME 324, 342 3. Research Report: Students must complete a significant report 7. Real-World Computing describing their research and its conclusions. The research re- a. at least two of: CS 223A, 223B, 248 port represents work that is publishable in a journal or at a b. at least three of: CS 205A, 205B, 226, 249A, 249B, 262, high-quality conference, although it is presumably longer and 268, 277, 348A, 348B, 374; CME 302, 306, 326 more expansive in scope than a typical conference paper. A copy of the research report must be submitted to the Student

STANFORD BULLETIN, 2009-10 | 3

Services office in the department three weeks before the be- pass a qualifying exam in the general area of the expected dis- ginning of the examination period in the student‟s final quar- sertation. ter. Both the primary and secondary adviser must approve the 3. As part of the training for the Ph.D., the student is required to research report before the distinction-in-research designation complete at least 4 units (a unit is 10 hours per week for one can be conferred. quarter) as a course assistant or instructor for courses in Com- puter Science numbered 100 or above. 4. The most important requirement is the dissertation. After pass- Law students interested in pursuing an M.S. in Computer ing the required qualifying examination, each student must se- Science must apply for admission to the Computer Science De- cure the agreement of a member of the department faculty to partment either (i) concurrently with applying to the Law School; act as the dissertation adviser. In some cases, the dissertation or (ii) after being admitted to the Law School, but no later than the adviser may be in another department.

earlier of: (a) the end of the second year of law school; or (b) the 5. The student must pass a University oral examination in the Computer Science Department‟s admission deadline for the year G form of a defense of the dissertation, typically held after all or following that second year of law school. In addition to being ad- a substantial portion of dissertation research has been completed. mitted separately to the Law School and the Computer Science 6. The student is expected to demonstrate the ability to present Department, students must secure permission from both academic scholarly material orally, both in the dissertation defense and units to pursue degrees in those units as part of a joint degree pro- by a lecture in a department seminar. gram. J.D./M.S. students may elect to begin their course of study 7. The dissertation must be accepted by a reading committee in either the Law School or the Computer Science Department. composed of the principal dissertation adviser, a second mem- Faculty advisors from each academic unit will participate in the ber from within the department, and a third member chosen planning and supervising of the student‟s joint program. Students from within the University. The principal adviser and at least must be enrolled full time in the Law School for the first year of one of the other committee members must be Academic Coun- law school. Otherwise, enrollment may be in the graduate school cil members. or the Law School and students may choose courses from either program regardless of where enrolled. Students must satisfy the requirements for both the J.D. and the M.S. degrees as specified in For a minor in Computer Science, a candidate must complete the Stanford Bulletin or elsewhere. 20 unduplicated units of computer science course work numbered The Law School approves courses from the Computer Science 200 or above. At least three of the courses must be master‟s core Department that may count toward the J.D. degree, and the Com- courses to provide breadth and one course numbered 300 or above puter Science Department shall approve courses from the Law to provide depth. One of the courses taken must include a signifi- School that may count toward the M.S. degree in Computer cant programming project to demonstrate programming efficiency. Science. In either case, approval may consist of a list applicable to Courses must be taken for a letter grade and passed with a grade of SCHOOLOF ENGINEERIN all join degree students or may be tailored to each individual stu- „B‟ or better. Applications for a minor in Computer Science are dent program. No more than 45 units of approved courses may be submitted at the same time as admission to candidacy. counted toward both degrees. No more than 36 units of courses that originate outside the Law School may count toward the law degree. To the extent that courses under this joint degree program originate outside of the Law School but count toward the law de- gree, the Law School credits permitted under Section 17(1) of the Graduate student assistantships are available. Half-time assis- Law School Regulations shall be reduced on a unit-per-unit basis, tants receive a tuition scholarship for 8, 9, or 10 units per quarter but not below zero. The maximum number of Law School credits during the academic year, and in addition receive a monthly sti- that may be counted toward the M.S. in Computer Science is the pend. greater of: (i) 12 units; or (ii) the maximum number of units from Duties for half-time assistants during the academic year involve courses outside of the department that M.S. candidates in Comput- approximately 20 hours of work per week. Course assistants (CAs) er Science are permitted to count toward the M.S. in the case of a help an instructor teach a course by conducting discussion sec- particular student‟s individual program. Tuition and financial aid tions, consulting with students, and grading examinations. Re- arrangements will normally be through the school in which the search assistants (RAs) help faculty and senior staff members with student is then enrolled. research in computer science. Most course and research assistant- ships are held by Ph.D. students. If there is an insufficient number of Ph.D. students to staff teaching and research assistantships, then these positions are open to master‟s students. However, master‟s students should not plan on being appointed to an assistantship. Applications to the Ph.D. program and all supporting docu- Students with fellowships may have the opportunity to supple- ments must be submitted and received online by December 8, ment their stipends by serving as graduate student assistants. 2009. See http://cs.stanford.edu/wiki/admissions for complete information. Changes or updates to the admission process are post- ed in September and October, 2009. The following are general department requirements; contact the Computer Science Ph.D. administrator for details. For course descriptions and additional offerings, see the listings 1. A student should plan and complete a coherent program of in the Stanford Bulletin’s ExploreCourses web site study covering the basic areas of computer science and related (http://explorecourses.stanford.edu) or the Bing Overseas Studies disciplines. The student‟s adviser has primary responsibility web site (http://bosp.stanford.edu). Students should consult their for the adequacy of the program, which is subject to review by department or program‟s student services office for applicability of the Ph.D. program committee. Overseas Studies courses to a major or minor program. 2. Each student, to remain in the Ph.D. program, must satisfy the breadth requirement covering introductory-level graduate ma- terial in major areas of computer science. A student who ful- fills six of thirteen exams in the breadth requirement may ap- ply for candidacy prior to the second year in the program. The OSPBER 45. Computers, Ethics, and Public Policy. 3-4 units, Eric student must completely satisfy the breadth requirement by the Roberts, WIM, GER:EC:EthicReas end of nine quarters (excluding Summer Quarters), and must

4 | STANFORD BULLETIN, 2009-10

CS 74N. Digital Dilemmas (F,Sem) Stanford Introductory Seminar. Preference to freshmen. Issues where policy decision making requires understanding com- puter and communications technology. Technology basics taught in non-technology terms. Topics include consumer privacy, gov- ernment surveillance, file sharing and intellectual property, and electronic voting. GER:DB-EngrAppSci CS 1C. Introduction to Computing at Stanford 3 units, Aut (Dill, D) For those with limited experience with computers or who want to learn more about Stanford‟s computing environment. Topics in- CS 103. Mathematical Foundations of Computing clude: computer maintenance and security, computing resources, Mathematical foundations required for computer science, including Internet privacy, and copyright law. One-hour lec- propositional predicate logic, induction, sets, functions, and rela- tions. Formal language theory, including regular expressions, ture/demonstration in dormitory clusters prepared and adminis- tered weekly by the Resident Computer Consultant (RCC). Final grammars, finite automata, Turing machines, and NP- ) project. Not a programming course. completeness. Mathematical rigor, proof techniques, and applica- 1 unit, Aut (Staff) tions. May not be taken by students who have completed 103A,B or 103X. Prerequisite: 106A or equivalent. GER:DB-Math CS 2C. Multimedia Production 3-5 units, Aut (Plummer, R), Spr (Plummer, R) Sound, image and video editing techniques and applications, in- cluding understanding file formats and publishing multimedia CS 105. Introduction to Computers online. Topics: GarageBand, Photoshop, iMovie, Final Cut Pro, For non-technical majors. What computers are and how they work. and iDVD. Weekly lecture followed by lab section. Second unit Practical experience in programming. Construction of computer for additional creative production assignments completed out of programs and basic design techniques. A survey of Internet tech- class time and extensive Final Project. Not a programming course, nology and the basics of computer hardware. Students in technical but will use computer multimedia applications heavily for editing. fields and students looking to acquire programming skills should 1-2 units, Aut (Chan, K), Win (Chan, K) take 106A or 106X. Students with prior computer science expe- rience at the level of 106 or above require consent of instructor. CS 21N. Can Machines Know? Can Machines Feel? Prerequisite: minimal math skills. GER:DB-EngrAppSci (F,Sem) Stanford Introductory Seminar. Preference to freshmen. 3-5 units, Aut (Young, P), Spr (Young, P) Can mental attitudes attributed to people and sometimes to ani- mals, including knowledge, belief, desire, and intention, also be CS 106A. Programming Methodology ascribed to machines? Can light sensors have a belief? Can a pool (Same as ENGR 70A) Introduction to the engineering of computer cleaning robot or tax-preparation software have an intention? If applications emphasizing modern software engineering principles: not, why not? If yes, what are the rules of such ascription, and do object-oriented design, decomposition, encapsulation, abstraction, they vary between human beings and machines? Sources include and testing. Uses the Java programming language. Emphasis is on good programming style and the built-in facilities of the Java lan- philosophy, neuroscience, computer science, and artificial intelli- COMPUTER SCIENCE(CS gence. Topics: logic, probability theory, and elements of computa- guage. No prior programming experience required. GER:DB- tion. Students present a paper. GER:DB-EngrAppSci EngrAppSci 3 units, Aut (Shoham, Y) 3-5 units, Aut (Sahami, M), Win (Roberts, E), Spr (Cain, G), Sum (Staff) CS 26N. Motion Planning for Robots, Digital Actors, and Oth- er Moving Objects CS 106B. Programming Abstractions (F,Sem) Stanford Introductory Seminar. Preference to freshmen. (Same as ENGR 70B) Abstraction and its relation to programming. Motion planning theory and computational approaches: how to Software engineering principles of data abstraction and modulari- represent, simulate, and plan motions in a computer. Intriguing ty. Object-oriented programming, fundamental data structures algorithms, representations, and applications: terminology and (such as stacks, queues, sets) and data-directed design. Recursion concepts for reading motion planning research literature. Problems and recursive data structures (linked lists, trees, graphs). Introduc- include: how a robot arm manipulates parts without colliding with tion to time and space complexity analysis. Uses the programming its environment; how many maneuvers are required to park a car in language C++ covering its basic facilities. Prerequisite: 106A or a tight spot; how characters in computer games avoid running into equivalent. GER:DB-EngrAppSci obstacles; how molecules change shapes to perform biological 3-5 units, Aut (Roberts, E), Win (Cain, G), Spr (Cain, G), Sum (Staff) functions; how to assemble a product from individual parts; how a multi-limbed robot can navigate on rough terrain; how robots can CS 106L. Standard C++ Programming Laboratory perform surgical procedures. Prerequisite: some computer pro- Supplemental lab to 106B and 106X. Additional features of stan- gramming experience in any language. GER:DB-EngrAppSci dard C++ programming practice. Possible topics include advanced 3 units, Spr (Latombe, J) C++ language features, standard libraries, STL containers and

CS 47N. Computers and the Open Society algorithms, object memory management, operator overloading, and (F,Sem) Stanford Introductory Seminar. How online technologies inheritance. Prerequisite: consent of instructor. Corequisite: 106B change our lives and the social structure that we live in. Course or 106X. 1 unit, not given this year emphasizes critical analyses of current trends i.e. blogging, social networks, and instant mobile communication. Readings include CS 106X. Programming Abstractions (Accelerated) case studies and analyses of basic principles i.e. privacy, equity (Same as ENGR 70X) Intensive version of 106B for students with and sustainability. Guest speakers who have participated in devel- a strong programming background interested in a rigorous treat- opment of computers and the net will share their experiences and ment of the topics at an accelerated pace. Additional advanced enter into debates on current issues. Students work individually material and more challenging projects. Prerequisite: excellence in and in small groups to research issues, develop the capacity for 106A or equivalent, or consent of instructor. GER:DB-EngrAppSci critical thinking about them, and use the results as the basis for 3-5 units, Aut (Cain, G) writing and discussions both in class and on-line. CS 107. Computer Organization and Systems 3 units, Aut (Winograd, T) Introduction to the fundamental concepts of computer systems. CS 73N. Business on the Information Highways Explores how computer systems execute programs and manipulate (F,Sem) Stanford Introductory Seminar. Preference to freshmen. data, working from the C programming language down to the mi- The capabilities of the Internet and its services. Writing for the croprocessor. Topics covered include: the C programming lan- web. The effect on commerce, education, government, and health guage, data representation, machine-level code, computer arithmet- care. Technical and business alternatives. Who is hurt and who ic, elements of code compilation, performance evaluation and op- benefits from the changes? Participants develop web publications. timization, memory organization and management, and concurren- GER:DB-EngrAppSci cy and threading. Prerequisites: 106B or X, or consent of instruc- 3 units, Spr (Wiederhold, G; Barr, A; Tessler, S) tor. GER:DB-EngrAppSci 3-5 units, Aut (Zelenski, J), Spr (Zelenski, J)

STANFORD BULLETIN, 2009-10 | 5

CS 108. Object-Oriented Systems Design CS 144. Introduction to Computer Networking Software design and construction in the context of large OOP li- Principles and practice. Structure and components of computer braries. Taught in Java. Topics: OOP design, design patterns, test- networks, packet switching, layered architectures. Applications: ing, graphical user interface (GUI) OOP libraries, software engi- web/http, voice-over-IP, p2p file sharing and socket programming. neering strategies, approaches to programming in teams. Prerequi- Reliable transport: TCP/IP, reliable transfer, flow control, and site: 107. GER:DB-EngrAppSci congestion control. The network layer: names and addresses, 3-4 units, Aut (Young, P), Win (Young, P) routing. Local area networks: ethernet and switches. Wireless net-

CS 109. Introduction to Probability for Computer Scientists works and network security. Prerequisite: CS 108 GER:DB- Topics include: counting and combinatorics, random variables, EngrAppSci 3-4 units, Aut (Levis, P; Mazieres, D) conditional probability, independence, distributions, expectation, point estimation, and limit theorems. Applications of probability in CS 145. Introduction to Databases computer science including machine learning and the use of prob- Database design and use of database management systems for ability in the analysis of algorithms. Prerequisites: 103, 106B or X, applications. The relational model, relational algebra, and SQL, the

G 109 and MATH 51 or equivalent. GER:DB-EngrAppSci standard language for creating, querying, and modifying relational 3-5 units, Win (Sahami, M), Spr (Sahami, M) databases. XML data including DTDs and XML Schema for vali-

CS 110. Principles of Computer Systems dation, and the query and transformation languages XPath, Principles and practice of engineering of computer software and XQuery and XSLT. UML database design, and relational design hardware systems. Topics include: techniques for controlling com- principles based on functional dependencies and normal forms. plexity; strong modularity using client-server design, virtual mem- Indexes, views, transactions, authorization, integrity contraints, ory, and threads; networks; atomicity and coordination of parallel and triggers. Advanced topics may include data warehousing, data activities; security, and encryption; and performance optimiza- mining, web data management, and data integration. Prerequisites: tions. Prerequisite: 107. GER:DB-EngrAppSci 103 or 103B, and 107. GER:DB-EngrAppSci 3-4 units, Aut (Widom, J) 3-5 units, Win (Rosenblum, M), Spr (Rosenblum, M)

CS 121. Introduction to Artificial Intelligence CS 147. Introduction to Human-Computer Interaction Design (Only one of 121 or 221 counts towards any CS degree program.) Usability and affordances, direct manipulation, systematic design Concepts, representations, and techniques used in building practic- methods, user conceptual models and interface metaphors, human al computational systems (agents) that appear to display artificial cognitive and physical ergonomics, information and interactivity intelligence (AI), through the use of adaptive information structures, and design tools and environments. Team project in processing algorithms. Topics: history of AI, reactive systems, interaction design. Prerequisite: 106B or X or equivalent pro- heuristic search, planning, constraint satisfaction, knowledge re- gramming experience. 3-4 units, Aut (Klemmer, S) presentation and uncertain reasoning, machine learning, classifica- tion, applications to language, and vision. Prerequisites: 103 or CS 147L. Human-Computer Interaction Technology Labora- 103B, and facility with differential calculus, vector algebra, and tory probability theory. GER:DB-EngrAppSci SCHOOLOF ENGINEERIN Hands-on introduction to building mobile web applications with 3 units, Spr (Latombe, J), Sum (Staff) html, css, and php. Corequisite: 147. Concurrent enrollment in

CS 124. From Languages to Information CS147 required. 1 unit, Aut (Krieger, M) (Same as LINGUIST 180) Automated processing of less structured information: human language text and speech, web pages, social CS 148. Introduction Computer Graphics and Imaging networks, genome sequences, with goal of automatically extracting Topics: Image input and output devices such as cameras and dis- meaning and structure. Methods include: string algorithms, auto- plays, graphics hardware and software, input technologies and mata and transducers, hidden Markov models, graph algorithms, interactive techniques, typography and page layout, light and color XML processing. Applications such as information retrieval, text representations, exposure and tone reproduction, image composi- classification, social network models, machine translation, genom- tion and imaging models, digital signal processing, sampling, alias- ic sequence alignment, word meaning extraction, and speech rec- ing and antialiasing, compression, two- and three-dimensional ognition. Prerequisite: CS103, CS107, CS109. geometry and formations, modeling techniques including curves 3-4 units, Win (Jurafsky, D) and surfaces, reflection models and illumination algorithms, and

CS 140. Operating Systems and Systems Programming basic methods of animation. Progamming asssignments using C++ Operating systems design and implementation. Basic structure; and OpenGL. Prerequisites: CS 107, MATH 51. GER:DB- synchronization and communication mechanisms; implementation EngrAppSci 3 units, Aut (Hanrahan, P), Sum (Staff) of processes, process management, scheduling, and protection; memory organization and management, including virtual memory; CS 149. Parallel Computing I/O device management, secondary storage, and file systems. Pre- Course is an introduction to parallelism and parallel programming. requisite: CS 110. GER:DB-EngrAppSci Most new computer architectures are parallel; programming these 3-4 units, Win (Mazieres, D), Spr (Ousterhout, J) machines requires knowlege of the basic issues of and techniques

CS 142. Web Applications for writing parallel software. Topics: varieties of parallelism in Concepts and techniques used in constructing interactive web ap- current hardware (e.g., fast networks, multicore, accelerators such as GPUs, vector instruction sets), importance of locality, implicit

plications. Browser-side web facilities such as HTML, cascading stylesheets, javascript, and the document object model. Server-side vs. explicit parallelism, shared vs. non-shared memory, synchroni- technologies such as sessions, templates, relational databases, and zation mechanisms (locking, atomicity, transactions, barriers), and object-relational mapping. Issues in web security and application parallel programming models (threads, data parallel/streaming, scalability. New models of web application deployment. Prerequi- futures, SPMD, message passing, SIMT, transactions, and nested sites: CS 107 and CS 108. parallelism). Significant parallel programming assignments will be 3 units, Aut (Ousterhout, J) given as homework. Course is open to students who have com- pleted the introductory CS course sequence through 110 and have CS 143. Compilers taken at least one of CS 140, 143, 144, or 145. GER:DB- Principles and practices for design and implementation of compi- EngrAppSci lers and interpreters. Topics: lexical analysis; parsing theory; sym- 3-4 units, Win (Aiken, A; Olukotun, O) bol 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. GER:DB- EngrAppSci 3-4 units, Aut (Aiken, A), Sum (Staff)

6 | STANFORD BULLETIN, 2009-10

CS 154. Introduction to Automata and Complexity Theory CS 170. Composition, Coding, and Performance with SLOrc Regular sets: finite automata, regular expressions, equivalences (Same as MUSIC 128) Classroom instantiation of the Stanford among notations, methods of proving a language not to be regular. Laptop Orchestra (SLOrk) which includes public performances. Context-free languages: grammars, pushdown automata, normal An ensemble of more than 20 humans, laptops, controllers, and forms for grammars, proving languages non-context-free. Turing special speaker arrays designed to provide each computer- machines: equivalent forms, undecidability. Nondeterministic Tur- mediated instrument with its sonic identity and presence. Topics ing machines: properties, the class NP, complete problems for NP, and activities include issues of composing for laptop orchestras, Cook‟s theorem, reducibilities among problems. Prerequisites: 103 instrument design, sound synthesis, programming, and live per- or 103B. GER:DB-EngrAppSci formance. May be repeated four times for credit. 3-4 units, Aut (Dill, D), Spr (Ullman, J) 1-5 units, Spr (Wang, G)

CS 154N. Introduction to NP Completeness CS 178. Digital Photography

Turing machines: equivalent forms, undecidability. Nondetermi- Scientific, artistic, and computing aspects of digital photography.

nistic Turing machines: properties, the class NP, complete prob- Topics: lenses and optics, light and sensors, optical effects in na- ) lems for NP, Cook‟s theorem, reducibilities among problems. Stu- ture, perspective and depth of field, sampling and noise, the cam- dents participate in approximately the last half of 154. Prerequisite: era as a computing platform, image processing and editing, history formal languages and automata as in first part of 154. of photography, computational photography. Counts as a CS elec- 2 units, Aut (Dill, D), Spr (Ullman, J) tive in the Graphics track. Prerequisites: introductory calculus;

CS 155. Computer and Network Security students must have a digital camera with manual control over shut- For seniors and first-year graduate students. Principles of computer ter speed and aperture. Loaner cameras may be available. No pro- systems security. Attack techniques and how to defend against gramming experience required. Enrollment limited; see them. Topics include: network attacks and defenses, operating cs178.stanford.edu on March 1 for enrollment procedure. system holes, application security (web, email, databases), viruses, GER:DB-EngrAppSci 3-5 units, Spr (Levoy, M) social engineering attacks, privacy, and digital rights management. Course projects focus on building reliable code. Prerequisite: 140. CS 181. Computers, Ethics, and Public Policy Recommended: basic Unix. GER:DB-EngrAppSci (Formerly 201.) Primarily for majors entering computer-related 3 units, Spr (Boneh, D; Mitchell, J) fields. Ethical and social issues related to the development and use

CS 156. Calculus of Computation of computer technology. Ethical theory, and social, political, and Decision procedures with applications to analyzing and developing legal considerations. Scenarios in problem areas: privacy, reliabili- robust software. Logic review. Propositional and first-order logic; ty and risks of complex systems, and responsibility of profession- induction. Verification: methods for proving correctness of se- als for applications and consequences of their work. Prerequisite: quential programs using first-order reasoning; need for decision 106B or X. GER:EC-EthicReas 3-4 units, Win (Johnson, M) procedures. Decision procedures: algorithms that decide the validi- ty of logical formulas for common theories including SAT, equali- CS 191. Senior Project ty, arithmetic, recursive data structures, and arrays. Combination Restricted to Computer Science and Computer Systems Engineer- COMPUTER SCIENCE(CS theories and combination of decision procedures. Static analysis: ing students. Group or individual projects under faculty direction. algorithms for deducing program properties. Projects include writ- A project can be either a significant software application or pub- ing verified programs. Prerequisites: 103, 106, or equivalents. lishable research. Software application projects include substantial GER:DB-EngrAppSci programming and modern user-interface technologies and are 3-4 units, Win (Manna, Z) comparable in scale to shareware programs or commercial applica-

CS 157. Logic and Automated Reasoning tions. Research projects may result in a paper publishable in an An elementary exposition from a computational point of view of academic journal or presentable at a conference. Required public propositional and predicate logic, axiomatic theories, and theories presentation of final application or research results. 1-6 units, Aut (Staff), Win (Staff), Spr (Staff), Sum (Staff) with equality and induction. Interpretations, models, validity, proof, strategies, and applications. Automated deduction: polarity, CS 191W. Writing Intensive Senior Project skolemization, unification, resolution, equality. Prerequisite: 103 Restricted to Computer Science and Computer Systems Engineer- or 103B. GER:DB-EngrAppSci ing students. Writing-intensive version of CS191. Register using 3 units, Aut (Genesereth, M) the section number of an Academic Council member. 3-6 units, Aut (Staff), Win (Staff), Spr (Staff) CS 161. Design and Analysis of Algorithms Worst and average case analysis. Recurrences and asymptotics. CS 192. Programming Service Project Efficient algorithms for sorting, searching, and selection. Data Restricted to Computer Science students. Appropriate academic structures: binary search trees, heaps, hash tables. Algorithm de- credit (without financial support) is given for volunteer computer sign techniques: divide-and-conquer, dynamic programming, gree- programming work of public benefit and educational value. dy algorithms, amortized analysis, randomization. Algorithms for 1-4 units, Aut (Staff), Win (Staff), Spr (Staff), Sum (Staff) fundamental graph problems: minimum-cost spanning tree, con- CS 193C. Client-Side Internet Technologies nected components, topological sort, and shortest paths. Possible Client-side technologies used to create web sites such as sophisti- additional topics: network flow, string searching. Prerequisite: 103 cated Web 2.0 interfaces similar to Google maps. XHTML, CSS, or 103B; 109 or STATS 116. GER:DB-EngrAppSci JavaScript, document object model (DOM), AJAX, and Flash. 3-5 units, Aut (Plotkin, S), Win (Roughgarden, T), Sum (Staff) Prerequisite: programming experience at the level of 106A. CS 164. Computing with Physical Objects: Algorithms for 3 units, Sum (Staff)

Shape and Motion CS 193D. Professional Software Development with C++ Algorithms and data structures deadling with the representation Programming techniques and methodologies. Language concepts and manipulation of physical objects and entities in the computer. including object-oriented design, memory management, and the Computational structures for shape and motion, shape fitting and standard library. Modern software development concepts such as matching, triangulations and other spatial subdivisions, and low- design patterns, test-driven development, extreme programming, dimensional search and optimization. Examples relevant to com- and XML. Prerequisites: basic C++ or significant experience in C puter graphics, computer vision, robotics and geometric computa- or Java. GER:DB-EngrAppSci tion emphasizing algorithmic paradigms applicable to multidimen- 3 units, not given this year sional data. Prerequisites: CS 103 or 103B, and CS 109 or STATS 116, and CS 106B/X or consent of instructor. GER:DB- EngrAppSci 3 units, Spr (Guibas, L)

STANFORD BULLETIN, 2009-10 | 7

CS 193P. iPhone Application Programming CS 210B. Software Project Experience with Corporate Part- Tools and APIs required to build applications for the iPhone plat- ners form using the iPhone SDK. User interface designs for mobile Continuation of CS210A. Focus is on real world software devel- devices and unique user interactions using multitouch technolo- opment. Corporate partners provide loosely defined challenges gies. Object-oriented design using model-view-controller pattern, from their R&D labs for which they are seeking innovative solu- memory management, Objective-C programming language. iPhone tions and ideas. Student teams function as a small startup compa- APIs and tools including Xcode, Interface Builder and Instruments nies with a technical advisory board comprised of the instructional on Mac OS X. Other topics include: core animation, bonjour net- staff. Exposure to: current practices in software engineering; ex- working, mobile device power management and performance con- ploration of the design space; significant development experience siderations. Prerequisites: C language and programming expe- with creative freedoms; working in groups; real world software rience at the level of 106B or X. Recommended: UNIX, object- engineering challenges; public presentation of technical work; oriented programming, graphical toolkits. creating written descriptions of technical work. Prerequisite: CS 3 units, not given this year 210A.

G 1-4 units, Spr (Borenstein, J) CS 194. Software Project Design, specification, coding, and testing of a significant team CS 226. Statistical Techniques in Robotics programming project under faculty supervision. Documentation Theory and practice of statistical techniques used in robotics and includes a detailed proposal. Public demonstration of the project at large-scale sensor-based systems. Probabilistic state estimation, the end of the quarter. Prerequisites: CS 110 and CS 161. Bayes, Kalman, information and particle filters. Simultaneous 3 units, Spr (Plummer, R) localization and mapping techniques, and multi-robot sensor fu-

CS 196. Computer Consulting sion. Markov techniques for making decisions under uncertainty, Focus is on Macintosh and Windows mainten- and probabilistic control algorithms and exploration. 3 units, Win (Thrun, S) ance and troubleshooting through hardware and software founda- tion and concepts. Topics include operating systems, networking, security, troubleshooting methodology with emphasis on Stan- ford‟s computing environment. Not a programming course. Prere-

quisite: 1C or equivalent. 2 units, Win (Ly, J), Spr (Ly, J) CS 205A. Mathematical Methods for Robotics, Vision, and

CS 198. Teaching Computer Science Graphics Students lead a discussion section of 106A while learning how to Continuous mathematics background necessary for research in teach a programming language at the introductory level. Focus is robotics, vision, and graphics. Possible topics: linear algebra; the on teaching skills, techniques, and course specifics. Application conjugate gradient method; ordinary and partial differential equa- and interview required; see http://cs198.stanford.edu. tions; vector and tensor calculus. Prerequisites: 106B or X; MATH 3-4 units, Aut (Sahami, M; Wang, L; Ruth, E), Win (Sahami, M; 51 and 113; or equivalents. 3 units, Aut (Fedkiw, R)

Wang, L), Spr (Sahami, M; Wang, L; Ruth, E) SCHOOLOF ENGINEERIN

CS 199. Independent Work CS 205B. Mathematical Methods for Fluids, Solids, and Inter- Special study under faculty direction, usually leading to a written faces report. Letter grade; if not appropriate, enroll in 199P. Numerical methods for simulation of problems involving solid 1-6 units, Aut (Staff), Win (Staff), Spr (Staff), Sum (Staff) mechanics and fluid dynamics. Focus is on practical tools needed for simulation, and continuous mathematics involving nonlinear CS 199P. Independent Work hyperbolic partial differential equations. Possible topics: finite 1-6 units, Aut (Staff), Win (Staff), Spr (Staff), Sum (Staff) element method, highly deformable elastic bodies, plasticity, frac- CS 202. Law for Computer Science Professionals ture, level set method, Burgers‟ equation, compressible and in- Intellectual property law as it relates to computer science including compressible Navier-Stokes equations, smoke, water, fire, and copyright registration, patents, and trade secrets; contract issues solid-fluid coupling. Prerequisite: 205A or equivalent. such as non-disclosure/non-compete agreements, license agree- 3 units, Spr (Fedkiw, R)

ments, and works-made-for-hire; dispute resolution; and principles CS 207. The Economics of Software of business formation and ownership. Emphasis is on topics of How software products are moved into the marketplace and how current interest such as open source and the free software move- the resulting intellectual property is exploited. Concepts that are ment, peer-to-peer sharing, encryption, data mining, and spam. outside of the common knowledge of computer scientists such as 1 unit, Aut (Hansen, D) business terms and spreadsheet computations to quantitatively CS 204. Computational Law compare alternatives. Goal is to contribute to informed decision Legal informatics based on representation of regulations in com- making in high-tech product design, acquisition, production, mar- putable form. Encoding regulations facilitate creation of legal in- keting, selection of business structures, outsourcing, and impact of formation systems with significant practical value. Convergence of taxation policies.No specific background required. technological trends, growth of the Internet, advent of semantic 1 unit, Aut (Wiederhold, G)

web technology, and progress in computational logic make compu- CS 208. The Canon of Computer Science tational law prospects better. Topics: current state of computational Analysis and discussion of influential and inspiring writings in law, prospects and problems, philosophical and legal implications. computer science. Original works by Turing, von Neumann, Shan- Prerequisite: basic concepts of programming. non, Bush, Engelbart, Licklider, Kay, Feynman, and others. Em- 3 units, not given this year phasis on writings that shaped the field and continue to provoke CS 210A. Software Project Experience with Corporate Part- and stimulate. The visions that inspired personal computing, com- ners puter networks, the GUI, the Web, and other key developments. Two quarter project course. Focus is on real world software devel- 3-4 units, Spr (Koltun, V)

opment. Corporate partners provide loosely defined challenges CS 209. Introduction to Functional Programming from their R&D labs for which they are seeking innovative solu- Functional programming offers insights and advanced program- tions and ideas. Student teams function as small startup companies ming techniques not found in other programming languages. Top- with a technical advisory board comprised of the instructional ics: lambda calculus (an alternative to Turing machines), higher- staff. Exposure to: current practices in software engineering; ex- order functions, lazy evaluation, type-oriented programming, syn- ploration of the design space; significant development experience tactic extension, and advanced control abstractions known as mo- with creative freedoms; working in groups; real world software nads and continuations. Functional programming languages to be engineering challenges; public presentation of technical work; studied include Scheme, an eagerly evaluated, dynamically typed creating written descriptions of technical work. Prerequisite: CS language, and Haskell, a lazily evaluated, statically typed language 108 or CS110. with type inferencing. Prerequisites: CS 107 and CS 161. 3-4 units, Win (Borenstein, J) 3 units, not given this year

8 | STANFORD BULLETIN, 2009-10

CS 221. Artificial Intelligence: Principles and Techniques CS 225B. Robot Programming Laboratory (Only one of 121 or 221 counts towards any CS degree program.) For robotics and non-robotics students. Students program mobile Topics: search, constraint satisfaction, knowledge representation, robots to exhibit increasingly complex behavior (simple dead probabilistic models, Bayesian networks, machine learning, neural reckoning and reactivity, goal-directed motion, localization, com- networks, vision, robotics, and natural language processing. Prere- plex tasks). Topics: motor control and sensor characteristics; sen- quisites: 103 or 103B/X; 106B or 106X; and exposure to probabili- sor fusion, model construction, and robust estimation; control re- ty. Recommended: 107 and facility with basic differential calculus. gimes (subsumption, potential fields); probabalistic methods, in- 3-4 units, Aut (Ng, A) cluding Markov localization and particle filters. Student pro-

CS 222. Rational Agency and Intelligent Interaction grammed robot contest. Programming is in C++ on Unix ma- (Same as PHIL 358) For advanced undergraduates, and M.S. and chines, done in teams. Prerequisite: programming at the level of beginning Ph.D. students. Logic-based methods for knowledge 106B, 106X, 205, or equivalent. 3-4 units, Aut (Konolige, K)

representation, information change, and games in artificial intelli-

gence and philosophy. Topics: knowledge, certainty, and belief; CS 227. Reasoning Methods in Artificial Intelligence ) time and action; belief dynamics; preference and social choice; Technical presentation of logical algorithmic techniques for prob- games; and desire and intention. Prerequisite: propositional and lem solving in AI. Combines formal algorithmic analysis with a first-order logic. Recommended: modal logic; game theory. description of recent applications. Topics: representation and mod- 3 units, Spr (Shoham, Y) elling, propositional satisfiability, constraint satisfaction, planning

CS 223A. Introduction to Robotics and scheduling, advanced topics. Focus is on recent results. Prere- Topics: robotics foundations in kinematics, dynamics, control, quisites: familiarity with basic notions in data structures and with motion planning, trajectory generation, programming and design. techniques in algorithm design and analysis. Recommended: pre- Recommended: matrix algebra. vious or concurrent course in AI. 3 units, Spr (Staff) 3 units, Win (Khatib, O)

CS 223B. Introduction to Computer Vision CS 227B. General Game Playing Fundamental issues and techniques of computer vision. Image A general game playing system accepts a formal description of a formation, edge detection and image segmentation, stereo, motion, game to play it without human intervention or algorithms designed shape representation, recognition. for specific games. Hands-on introduction to these systems and 3 units, Win (Li, F) artificial intelligence techniques such as knowledge representation, reasoning, learning, and rational behavior. Students create GGP CS 224M. Multi-Agent Systems systems to compete with each other and in external competitions. For advanced undergraduates, and M.S. and beginning Ph.D. stu- Prerequisite: programming experience. Recommended: 103 or dents. Topics: logics of knowledge and belief, other logics of men- equivalent. tal state, theories of belief change, multi-agent probabilities, essen- 3 units, Spr (Genesereth, M) tials of game theory, social choice and mechanism design, multi- CS 228. Structured Probabilistic Models: Principles and Tech- agent learning, communication. Applications discussed as appro- COMPUTER SCIENCE(CS priate; emphasis is on conceptual matters and theoretical founda- niques tions. Prerequisites: basic probability theory and first-order logic. Probabilistic modeling languages for representing complex do- 3 units, Aut (Shoham, Y) mains, algorithms for reasoning and decision making using these representations, and learning these representations from data. Fo- CS 224N. Natural Language Processing cus is on probabilistic graphic models, including Bayesian and (Same as LINGUIST 280) Methods for processing human lan- Markov networks, extensions to temporal modeling such as hidden guage information and the underlying computational properties of Markov models and dynamic Bayesian networks, and extensions to natural languages. Syntactic and semantic processing from linguis- decision making such as influence diagrams. Basic techniques and tic and algorithmic perspectives. Focus is on modern quantitative their applications to domains including speech recognition, biolog- techniques in NLP: using large corpora, statistical models for ac- ical modeling and discovery, medical diagnosis, message encod- quisition, translation, and interpretation; and representative sys- ing, vision, and robot motion planning. Prerequisites: basic proba- tems. Prerequisites: CS124 or CS121/221. bility theory and algorithm design and analysis. 3-4 units, Spr (Manning, C) 3 units, Win (Koller, D)

CS 224S. Speech Recognition and Synthesis CS 228T. Structured Probabalistic Models: Theoretical Foun- (Same as LINGUIST 285) Automatic speech recognition, speech dations synthesis, and dialogue systems. Focus is on key algorithms in- For students interested in advanced methods in machine learning cluding noisy channel model, hidden Markov models (HMMs), and probabilistic AI. Theoretical foundations and extension for the Viterbi decoding, N-gram language modeling, unit selection syn- ideas and algorithms covered in CS 228. Topics include theory and thesis, and roles of linguistic knowledge. Prerequisite: program- advanced algorithms for approximate inference in graphical mod- ming experience. Recommended: CS 221 or 229. els, representation and inference in continuous processes, and 2-4 units, not given this year theory and algorithms for learning with missing data and hidden CS 224U. Natural Language Understanding variables. Pre- or corequisites: CS 228; strong mathematical foun- (Same as LINGUIST 188, LINGUIST 288) Machine understand- dation. ing of human language. Computational semantics (determination 3 units, Win (Koller, D) of word sense and synonymy, event structure and thematic roles, CS 229. Machine Learning time, aspect, causation, compositional semantics, scopal opera- Topics: statistical pattern recognition, linear and non-linear regres- tors), and computational pragmatics and discourse (coherence, sion, non-parametric methods, exponential family, GLMs, support coreference resolution, information packaging, dialogue structure). vector machines, kernel methods, model/feature selection, learning Theoretical issues, online resources, and relevance to applications theory, VC dimension, clustering, density estimation, EM, dimen- including question answering and summarization. Prerequisites: sionality reduction, ICA, PCA, reinforcement learning and adap- one of LINGUIST 180 / CS 124 / CS 224N,S: and logic such as tive control, Markov decision processes, approximate dynamic LINGUIST 130A or B, CS 157, or PHIL150). programming, and policy search. Prerequisites: linear algebra, and 3-4 units, Win (Jurafsky, D; MacCartney, W) basic probability and statistics. CS 225A. Experimental Robotics 3 units, Aut (Ng, A)

Hands-on. Topics: kinematic and dynamic control of motion, com- CS 240. Advanced Topics in Operating Systems pliant motion and force control, sensor-based collision avoidance, Recent research. Classic and new papers. Topics: virtual memory motion planning, dynamic skills, and robot-human interfaces. Li- management, synchronization and communication, file systems, mited enrollment. Prerequisite: 223A. protection and security, operating system extension techniques, 3 units, Spr (Khatib, O) fault tolerance, and the history and experience of systems pro-

gramming. Prerequisite: 140 or equivalent. 3 units, Spr (Engler, D)

STANFORD BULLETIN, 2009-10 | 9

CS 240C. Advanced Operating Systems Implementation CS 244C. Readings and Projects in Distributed Systems Operating system techniques for meeting the performance, securi- Companion project option for 244B. Corequisite: 244B. ty, flexibility, and robustness needs of demanding applications. 3-6 units, Spr (Cheriton, D)

Review of hardware/software interface and traditional operating CS 244E. Wireless Networking system concepts. Recent operating systems research. Lab to apply Challenges of low power wireless networking protocols and appli- concepts. Students work with a minimal operating system capable cations. Topics: the OSI model, 802.11, Bluetooth, 802.15.4, Wi- of running on standard PC hardware. Operating system written in MAX, hardware considerations, media access, radio propagation C with some assembly. Prerequisite: 140 or consent of instructor. models, flooding, dissemination, gossip, link behavior, opportunis- 3 units, not given this year tic reception, network coding, modulation, TCP. Students read CS 240D. Distributed Storage Systems papers and build working protocols on the 100-mode Stanford File system implementation, low-level database storage tech- wireless testbed. niques, and distributed programming. File system structures, jour- 3 units, Spr (Levis, P)

naling and logging, I/O system performance, RAID (redundant CS 245. Database Systems Principles G arrays of inexpensive disks), remote procedure call abstraction, File organization and access, buffer management, performance and systems illustrating these concepts. File systems, distributed analysis, and storage management. Database system architecture, computing, replication and consistency, fault tolerance, and crash query optimization, transaction management, recovery, concurren- recovery. Programming assignments. Final project to build a func- cy control. Reliability, protection, and integrity. Design and man- tioning Unix file system. Prerequisites: C++ and familiarity with agement issues. Prerequisites: 145, 161. Unix; 140 or consent of instructor. 3 units, Win (Garcia-Molina, H), Sum (Staff) 3 units, not given this year CS 247. Human-Computer Interaction Design Studio CS 240E. Low Power Wireless System Software Project-based. Methods used in interaction design including needs The structure and implementation of software systems for low analysis, user observation, idea sketching, concept generation, power embedded sensors; how to build software that can run unat- scenario building, storyboards, user character stereotypes, usability tended for years on small batteries. Topics: hardware trends, ener- analysis, and market strategies. Prerequisites: 147 and 106A or gy profiles, execution models, aggregation, storage, application equivalent background in programming. requirements, allocation, power management, resource manage- 3-4 units, Win (Winograd, T) ment, scheduling, time synchronization, programming models, software design, and fault tolerance. Students build working sys- CS 247L. Human Computer Interaction Technology Lab tems on TinyOS, a low-power embedded operation system. Hands-on introduction to contemporary HCI technologies. Interac- 3 units, not given this year tion design with Adobe Flash, mobile development, physical com- puting, and web applications. Corequisite: 247. CS 240X. Advanced Operating Systems II 1 unit, Win (Winograd, T) Same content as 240, with expanded topics focusing on more diffi- cult and specialized papers. Recent topics in systems research. CS 248. Three-Dimensional Computer Graphics

3 units, not given this year Rendering, animation and modeling for interactive computer SCHOOLOF ENGINEERIN graphics. Rasterization, graphics pipeline, graphics hardware; tex- CS 242. Programming Languages ture mapping and its applications; lighting and surface shading; Central concepts in modern programming languages, impact on rendering optimization; keyframing; physics simulation. Pro- software development, language design trade-offs, and implemen- gramming projects and final project. Prerequisite: CS148. tation considerations. Functional, imperative, and object-oriented 3-5 units, Win (Koltun, V) paradigms. Formal semantic methods and program analysis. Mod- ern type systems, higher order functions and closures, exceptions CS 249A. Object-Oriented Programming from a Modeling and and continuations. Modularity, object-oriented languages, and Simulation Perspective concurrency. Runtime support for language features, interoperabil- Topics: large-scale software development approaches, encapsula- ity, and security issues. Prerequisite: 107, or experience with Lisp, tion, use of inheritance and dynamic dispatch, design of interfaces C, and an object-oriented language. and interface/implementation separation, exception handling, de- 3 units, Aut (Mitchell, J) sign patterns, minimalizing dependencies and value-oriented pro- gramming. The role of programming conventions/style/restrictions CS 243. Program Analysis and Optimizations in surviving object-oriented programming for class libraries, Program analysis techniques used in compilers and software de- frameworks, and programming-in-the-large; general techniques for velopment tools to improve productivity, reliability, and security. object-oriented programming. Prerequisites: C, C++, and pro- The methodology of applying mathematical abstractions such as gramming methodology as developed in 106B or X, and 107 (107 graphs, fixpoint computations, binary decision diagrams in writing may be taken concurrently). Recommended: 193D. complex software, using compilers as an example. Topics include 3 units, Aut (Cheriton, D) data flow analysis, instruction scheduling, register allocation, par- allelism, data locality, interprocedural analysis, and garbage col- CS 249B. Advanced Object-Oriented Programming lection. Prerequisites: 103 or 103B, and 107. How to produce reasonable-cost, high quality software such as 3-4 units, Win (Lam, M) next-stage, large-scale systems that handle life-critical systems. Software process, people, practice, and audit: integrating invariant CS 244. Advanced Topics in Networking checks with production software; collection implementation; ge-

Classic papers, new ideas, and research papers in networking. Arc- neric programming and templates; design of value types; named hitectural principles: naming, addressing, routing; congestion con- descriptions for large value types; memory management; control- trol, traffic management, QoS; wireless and mobility; overlay net- ling placement; locality and consumption; concurrency with mod- works and virtualization; network security; switching and routing; ular object-oriented programming. Inheritance: when and why content distribution; and proposals for future Internet structures. multiple inheritance naming, directories, manager, and other de- Prerequisite: 144 or equivalent. sign patterns. 3-4 units, Win (McKeown, N) 3 units, Win (Cheriton, D)

CS 244B. Distributed Systems CS 255. Introduction to Cryptography Distributed operating systems and applications issues, emphasizing For advanced undergraduates and graduate students. Theory and high-level protocols and distributed state sharing as the key tech- practice of cryptographic techniques used in computer security. nologies. Topics: distributed shared memory, object-oriented dis- Topics: encryption (single and double key), digital signatures, tributed system design, distributed directory services, atomic trans- pseudo-random bit generation, authentication, electronic com- actions and time synchronization, application-sufficient consisten- merce (anonymous cash, micropayments), key management, PKI, cy, file access, process scheduling, process migration, and sto- zero-knowledge protocols. Prerequisite: basic probability theory. rage/communication abstractions on distribution, scale, robustness 3 units, Win (Boneh, D) in the face of failure, and security. Prerequisites: CS 144 and CS 249A. 3 units, Spr (Cheriton, D)

10 | STANFORD BULLETIN, 2009-10

CS 256. Formal Methods for Reactive Systems CS 270. Modeling Biomedical Systems: Ontology, Terminolo- Formal methods for specification, verification, and development of gy, Problem Solving concurrent and reactive programs. Reactive systems: syntax and (Same as BIOMEDIN 210) Methods for modeling biomedical semantics, fairness requirements. Specification language: temporal systems and for making those models explicit in the context of formulas (state, future, and past) and omega-automata. Hierarchy building software systems. Emphasis is on intelligent systems for of program properties: safety, guarantee, obligation, response, decision support and Semantic Web applications. Topics: know- persistence, and reactivity. Invariant generation. Deductive verifi- ledge representation, controlled terminologies, ontologies, reusable cation of programs: verification diagrams and rules, completeness. problem solvers, and knowledge acquisition. Recommended: ex- Modularity. Parameterized programs. Algorithmic verification of posure to object-oriented systems, basic biology. finite-state programs (model checking). Prerequisite: 154, 156, 3 units, Aut (Musen, M)

157, or equivalent. CS 271. Effective Design in Clinical Informatics Systems 3 units, not given this year

(Same as BIOMEDIN 211) Methods of designing and engineering

CS 256L. Formal Methods for Reactive Systems Laboratory software systems in complex clinical environments. Case studies ) Practical application of CS 256. Individual projects include im- illustrate factors leading to success or failure of systems. Project plementation of verification methods, verification case studies, or assignments involve focused team-based design work. Topics: user tool evaluation, depending on student preference. and organizational requirements, data and knowledge modeling, 2 units, not given this year component-based system design, system prototyping, and human-

CS 258. Introduction to Programming Language Theory systems interaction. Prerequisite: BIOMEDIN 210 recommended, Syntactic, operational, and semantic issues in the mathematical or database or object-oriented programming course. 3 units, Win (Das, A) analysis of programming languages. Type systems and non- context-free syntax. Universal algebra and algebraic data types. CS 272. Introduction to Biomedical Informatics Research Me- Operational semantics given by rewrite rules; confluence and ter- thodology mination. Denotational semantics and elementary domain theory (Same as BIOE 212, BIOMEDIN 212, GENE 212) Hands-on for languages with higher-type functions and recursion. Treatment software building. Student teams conceive, design, specify, im- of side effects. Prerequisites: 154, 157 or PHIL 160A. plement, evaluate, and report on a software project in the domain 3 units, not given this year of biomedicine. Creating written proposals, peer review, providing

CS 259. Security Analysis of Network Protocols status reports, and preparing final reports. Guest lectures from Hands-on experience in formal methods to verify and evaluate the professional biomedical informatics systems builders on issues security of network protocols and other systems. Common security related to the process of project management. Software engineer- protocols and their properties including secrecy, authentication, ing basics. Prerequisites: BIOMEDIN 210, 211, 214, 217 or con- key establishment, and fairness. Topics: standard formal models sent of instructor. 3 units, Aut (Altman, R; Cheng, B; Klein, T) and tools used in security protocol analysis; their advantages and limitations. Fully automated, finite-state, model-checking tech- CS 273A. A Computational Tour of the Human Genome COMPUTER SCIENCE(CS niques. Constraint solving, process algebras, protocol logics, prob- (Same as BIOMEDIN 273A, DBIO 273A) Biology through an abilistic model checking, and game theory. Students select a proto- exploration of Human Genome. Key genomic and genetic concepts col or secure system to analyze, specify it in the chosen model, use from an informatics perspective. Biomedical advances resulting a formal analysis tool to verify its properties, and present findings. from the Genomics revolution. Topics: genome sequencing: tech- 3 units, not given this year nologies, assembly, personalized sequencing. Functional land-

CS 261. Optimization and Algorithmic Paradigms scape: genes, gene regulation, repeats, RNA genes. Genome evolu- Algorithms for network optimization: max-flow, min-cost flow, tion: comparative genomics, ultraconservation, co-option. Addi- matching, assignment, and min-cut problems. Introduction to li- tional topics: population genetics, personalized genomics, and near programming. Use of LP duality for design and analysis of ancient DNA. Course starts with primer in Biology and text algorithms. Approximation algorithms for NP-complete problems processing languages. Ends with guest lectures from forefront of such as Steiner Trees, Traveling Salesman, and scheduling prob- genomic research. 3 units, Aut (Batzoglou, S; Bejerano, G) lems. Randomized algorithms. Introduction to online algorithms. Prerequisite: 161 or equivalent. CS 274. Representations and Algorithms for Computational 3 units, Win (Plotkin, S) Molecular Biology

CS 262. Computational Genomics (Same as BIOE 214, BIOMEDIN 214, GENE 214) Topics: intro- (Same as BIOMEDIN 262) Applications of computer science to duction to bioinformatics and computational biology, algorithms genomics, and concepts in genomics from a computer science for alignment of biological sequences and structures, computing point of view. Topics: dynamic programming, sequence align- with strings, phylogenetic tree construction, hidden Markov mod- ments, hidden Markov models, Gibbs sampling, and probabilistic els, Gibbs Sampling, basic structural computations on proteins, context-free grammars. Applications of these tools to sequence protein structure prediction, protein threading techniques, homolo- analysis: comparative genomics, DNA sequencing and assembly, gy modeling, molecular dynamics and energy minimization, statis- genomic annotation of repeats, genes, and regulatory sequences, tical analysis of 3D biological data, integration of data sources, microarrays and gene expression, phylogeny and molecular evolu- knowledge representation and controlled terminologies for mole- tion, and RNA structure. Prerequisites: 161 or familiarity with cular biology, microarray analysis, machine learning (clustering basic algorithmic concepts. Recommended: basic knowledge of and classification), and natural language text processing. Prerequi- genetics. sites: programming skills; consent of instructor for 3 units. 3-4 units, Spr (Staff) 3 units, Win (Batzoglou, S)

CS 268. Geometric Algorithms CS 275. Translational Bioinformatics Techniques for design and analysis of efficient geometric algo- (Same as BIOMEDIN 217) Analytic, storage, and interpretive rithms for objects in 2-, 3-, and higher dimensions. Topics: con- methods to optimize the transformation of genetic, genomic, and vexity, triangulations and simplicial complexes, sweeping, parti- biological data into diagnostics and therapeutics for medicine. tioning, and point location. Voronoi/Delaunay diagrams and their Topics: access and utility of publicly available data sources; types properties. Arrangements of curves and surfaces. Intersection and of genome-scale measurements in molecular biology and genomic visibility problems. Geometric searching and optimization. Ran- medicine; analysis of microarray data; analysis of polymorphisms, dom sampling methods. Impact of numerical issues in geometric proteomics, and protein interactions; linking genome-scale data to computation. Example applications to robotic motion planning, clinical data and phenotypes; and new questions in biomedicine visibility preprocessing and rendering in graphics, model-based using bioinformatics. Case studies. Prerequisites: programming recognition in computer vision, and structural molecular biology. ability at the level of CS 106A and familiarity with statistics and Prerequisite: discrete algorithms at the level of 161. Recommend- biology. 4 units, Win (Butte, A) ed: 164. 3 units, not given this year

STANFORD BULLETIN, 2009-10 | 11

CS 276. Information Retrieval and Web Search ating systems, networking, and security. May be repeated for cre- (Same as LINGUIST 286) Text information retrieval systems; dit. Prerequisites: CS 103 and 107. efficient text indexing; Boolean, vector space, and probabilistic 3 units, Aut (Staff)

retrieval models; ranking and rank aggregation; evaluating IR sys- CS 294W. Writing Intensive Research Project in Computer tems. Text clustering and classification: classification algorithms, Science latent semantic indexing, taxonomy induction; Web search engines Restricted to Computer Science and Computer Systems Engineer- including crawling and indexing, link-based algorithms, and web ing undergraduates. Students enroll in the CS 294W section at- metadata. Prerequisites: CS 107, CS 109, CS 161. tached to the CS 294 project they have chosen. 3 units, Aut (Manning, C; Raghavan, P) 3 units, Aut (Koller, D), Win (Ng, A)

CS 277. Experimental Haptics CS 295. Software Engineering Haptics as it relates to creating touch feedback in simulated or Software specification, testing, and verification. Emphasis is on virtualized environments. Goal is to develop virtual reality haptic current best practices and technology for developing reliable soft- simulators and applications. Theoretical topics: psychophysical ware at reasonable cost. Assignments focus on applying these G issues, performance and design of haptic interfaces, haptic render- techniques to realistic software systems. Prerequisites: 108. Rec- ing methods for 3-D virtual environments, and haptic simulation ommended a project course such as 140, 143, or 145. and rendering of rigid and deformable solids. Applied topics: the 2-3 units, Spr (Aiken, A) CHAI haptic library; implementation of haptic rendering algo- rithms; collision detection in 3-D environments; design of real- CS 298. Seminar on Teaching Introductory Computer Science time models for deformable objects. Guest speakers. Faculty, undergraduates, and graduate students interested in teach- Lab/programming exercises; a more open-ended final project. ing discuss topics raised by teaching computer science at the intro- Enrollment limited to 20. Prerequisite: experience with C++. Rec- ductory level. Prerequisite: consent of instructor. 1-3 units, not given this year ommended: 148 or 248, 223A. 3 units, Win (Barbagli, F; Salisbury, K) CS 300. Departmental Lecture Series

CS 278. Systems Biology For first-year Computer Science Ph.D. students. Presentations by (Same as BIOC 278, BIOE 310, CSB 278) Complex biological members of the department faculty, each describing informally his behaviors through the integration of computational modeling and or her current research interests and views of computer science as a molecular biology. Topics: reconstructing biological networks whole. 1 unit, Aut (Staff) from high-throughput data and knowledge bases. Network proper- ties. Computational modeling of network behaviors at the small CS 302. Tech Law with Progressive Minds and large scale. Using model predictions to guide an experimental How the advent of computing technologies is reflected in the con- program. Robustness, noise, and cellular variation. Prerequisites: fluence of law, public policy, and technology. Issues relating to background in biology and mathematical analysis. civil liberties, consumer protection, e-voting, copyright law, patent 3 units, not given this year law, international patent law, trade secrets, political processes, and

CS 279. Computational Methods for Analysis and Reconstruc- litigation. SCHOOLOF ENGINEERIN 1 unit, not given this year tion of Biological Networks Types of interactions, including: regulatory such as transcriptional, CS 303. Designing Computer Science Experiments signaling, and chromatin modification; protein-protein interac- Introduction to empirical research in computer science. Learn how tions; and genetic. Biological network structure at scales such as to design, execute, interpret, and report on computer science expe- single interaction, small subgraphs, and global organization. Me- riments. Conducting empirical work and using experiments to thods for analyzing properties of biological networks. Techniques build theory is one of the major ways to move computer science for reconstructing networks from biological data, including: forward, but these issues are often omitted from computer science DNA/protein sequence motifs and sequence conservation; gene curricula. Course features case studies drawn from artificial intelli- expression data; and physical binding data such as protein-DNA, gence, systems, and human-computer interaction. Emphasizes the protein-RNA, and protein-protein. Network dynamics and evolu- decision-making aspects of research and the logic behind research tion. Prerequisites: biology at the level of BIOSCI 41; computer procedures. science and data structures at the level of CS 103 and 106; and 3 units, Spr (Klemmer, S; Levis, P; Manning, C)

probability and statistics at the level of STATS 116 or CS 109. CS 309. Industrial Lectureships in Computer Science 3 units, not given this year Guest computer scientist. By arrangement. May be repeated for CS 294. Research Project in Computer Science credit. (Staff) Student teams work under faculty supervision on research and 1 unit, not given this year

implementation of a large project in some major sub-discipline in CS 309A. Software as a Service computer science. Lectures on state-of-the-art methods related to For technology and business students. The shift from traditional the particular problem domain. Prerequisites: consent of instructor. software model of disconnected development and CD-ROM dep- 3 units, not given this year loyment to engineering and delivery on the Internet as a service. CS 294A. Research Project in Artificial Intelligence Guest industry experts give first-hand view of changes in the soft- Student teams under faculty supervision work on research and ware industry. implementation of a large project in AI. State-of-the-art methods 1 unit, Aut (Chou, T)

related to the problem domain. Prerequisites: AI course from 220 CS 315A. Parallel Computer Architecture and Programming series, and consent of instructor. The principles and tradeoffs in the design of parallel architectures. 3 units, Aut (Koller, D), Win (Ng, A) Emphasis is on naming, latency, bandwidth, and synchronization CS 294H. Research Project in Human-Computer Interaction in parallel machines. Case studies on shared memory, message Many of the most successful web applications are social, from passing, data flow, and data parallel machines illustrate techniques. personalized homepages to social networks. Students will learn the Architectural studies and lectures on techniques for programming fundamental interface design, systems, and algorithms concepts in parallel computers. Programming assignments on one or more designing social software. The case-based syllabus will cover in- commercial multiprocessors. Prerequisites: EE 282, and reasonable sights from both research and industry. As a student, you will con- programming experience. tribute to this burgeoning field through a quarter-long, team-based 3 units, Spr (Olukotun, O)

project. Students are required to enter the class with an initial CS 315B. Parallel Computing Research Project project idea. Advanced topics and new paradigms in parallel computing includ- 3 units, Win (Heer, J) ing parallel algorithms, programming languages, runtime environ- CS 294S. Research Project in Software Systems and Security ments, library debugging/tuning tools, and scalable architectures. Topics vary. Focus is on emerging research themes such as pro- Research project. Prerequisite: consent of instructor. grammable open mobile Internet that spans multiple system topics 3 units, not given this year such as human-computer interaction, programming systems, oper-

12 | STANFORD BULLETIN, 2009-10

CS 319. Topics in Digital Systems CS 340V. Networked Systems for Virtual Worlds Advanced material is often taught for the first time as a topics Open to graduate students and advanced undergraduates. Systems course, perhaps by a faculty member visiting from another institu- and networking aspects of building large, distributed virtual 3D tion. May be repeated for credit. environments, with a focus on scalability, consistency, security, 3 units, offered occasionally fairness, and federation. Topics include existing architectures,

CS 322. Network Analylsis naming, routing, caching, migration, interoperability, and attribu- The emergence of the web and large online computing applications tion. Open-ended research project. Prerequisite: some systems and can be seen as a convergence of social and technological networks, networking background. May be repeated for credit. 3-4 units, not given this year with systems such as the World Wide Web, blogging platforms and Facebook that can be characterized by the interplay between CS 342. Programming Language Design rich information content, the millions of individuals and organiza- Tools for analysis and optimization of iterative coding systems.

tions who create it, and the technology that supports it. Course will LDPC codes, Turbo codes, RA codes, optimized ensembles, mes-

cover recent research on the structure and analysis of such large sage passing algorithms, density evolution, analytic techniques. ) social and information networks and on models and algorithms that Prerequisite: 376A. abstract their basic properties. Topics: probabilistic models for 3 units, not given this year network structure and evolution, methods for link analysis and CS 343. Advanced Topics in Compilers network community detection, search algorithms, diffusion and Topics change annually. May be repeated for credit. Prerequisite: 243. information propagation on the web, virus outbreak detection in 3 units, Spr (Engler, D) networks, and connections with work in the social sciences and economics. CS 344. Build an Internet Router 3 units, Aut (Leskovec, J) High-performance embedded system design. Student teams of two software engineers (C experience required) and one hardward en- CS 323. Understanding Images and Videos: Recognizing and gineer (Verilog experience required) build a fully functioning In- Learning High-Level Visual Concepts ternet router Work in team of three. How router interoperates with Field of computer vision has seen an explosive growth in past dec- others in class. Open-ended design challenge judged by panel of ade. Much of recent effort in vision research is towards developing industry experts. Prerequisites: CS 144, 244A, or network pro- algorithms that can perform high-level visual recogniztion tasks on gramming experience. real-world images and videos. With development of Internet, this 3 units, given next year task becomes particularly challenging and interesting given the heterogeneous data on the web. Course will focus on reading re- CS 344B. Advanced Topics in Distributed Systems cent research papers that are focused on solving high-level visual Continuation of 244B. The use of distributed systems research in recognition problems, such as object recognition and categoriza- practical systems. New applications due to the growth in high- tion, scene understanding, human motion understanding, etc. bandwidth connections. Distributed systems knowledge and tech- Project required. Prerequisite: some experience in research with niques from research and system implementations, and active re- one of the following fields: computer vision, image processing, search topics. Readings include research publications. COMPUTER SCIENCE(CS 2 units, not given this year computer graphics, machine learning. 3 units, Aut (Staff) CS 345. Advanced Topics in Database Systems

CS 326A. Motion Planning Content varies. May be repeated for credit with instructor consent. Computing object motions in computer graphics, geometrical Prerequisite: 145. Recommended: 245. 3 units, offered occasionally computing, robotics, or artificial intelligence for applications such as design, manufacturing, robotics, animated graphics, surgical CS 345A. Data Mining planning, drug design, assembly planning, graphic animation of Algorithms for mining large-scale data, including data from the human figures, humanoid robots, inspection and surveillance, si- web and data maintained by web-based enterprises. Finding fre- mulation of crowds, and biology. Path planning methods to gener- quent itemsets; finding similar sets using minhashing, locality- ate collision-free paths among static obstacles. Extensions include sensitive hashing, and index-based methods; finding important uncertainty, mobile obstacles, manipulating moveable objects, web pages by PageRank; link-spam detection; collaborative filter- maneuvering with kinematic constraints, and making and breaking ing; stream mining; clustering; optimizing ad selection; virtual contacts. Configuration space, geometric arrangements, and ran- databases and extraction of relations from the web. dom sampling. Theoretical methods. 3 units, Win (Rajaraman, A; Ullman, J) 3 units, not given this year CS 345C. Data Integration CS 327A. Advanced Robotics Techniques for integrating data from multiple heterogeneous data Emerging areas of human-centered robotics and interactive haptic sources. Topics: semantic heterogeneity; languages for mediating simulation of virtual environments. Topics: redundancy; task- between disparate data sources; techniques for automatic schema oriented dynamics and control, whole-body control-task and post- reconciliation and reference reconciliation; adaptive query ure decomposition, cooperative robots, haptics and simulation, processing; basics of XML and its relevance to data integration; haptically augmented teleoperation, human-friendly robot design. peer-to-peer data sharing data exchange; combining structured and Prerequisites: 223A or equivalent. unstructured data; and dataspaces. Recommended: 145. 3 units, Spr (Khatib, O) 3 units, not given this year

CS 329. Topics in Artificial Intelligence CS 345L. Large-Scale Data Mining Advanced material is often taught for the first time as a topics (Same as CME 340) Focus is on very large scale data mining on course, perhaps by a faculty member visiting from another institu- the web and on social networks. Topics include network models, tion. May be repeated for credit. ranking algorithms, reputation, collaborative filtering, and super- 3 units, offered occasionally vised and unsupervised learning. Individual or group applications-

CS 339. Topics in Numerical Analysis oriented programming project. i unit without project; 3 units with Advanced material is often taught for the first time as a topics final project. Prerequisites: programming at the level of CS 108; course, perhaps by a faculty member visiting from another institu- statistics at the level of MATH 103 and STATS 116. Recommend- tion. May be repeated for credit. ed: machine learning at the level of CS 229; knowledge of Java. 3 units, offered occasionally 1-3 units, not given this year

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. 3-4 units, not given this year

STANFORD BULLETIN, 2009-10 | 13

CS 346. Database System Implementation CS 359. Topics in the Theory of Computation A major database system implementation project realizes the prin- Advanced material is often taught for the first time as a topics ciples and techniques covered in earlier courses. Students indepen- course, perhaps by a faculty member visiting from another institu- dently build a complete database management system, from file tion. May be repeated for credit. structures through query processing, with a personally designed 3 units, offered occasionally

feature or extension. Lectures on project details and advanced CS 359D. Hardness of Approximation techniques in database system implementation, focusing on query Results on and proof techniques for ruling out good approximation processing and optimization. Guest speakers from industry on algorithms for NP-hard optimization problems. Topics: the PCP commercial DBMS implementation techniques. Prerequisites: 145, theorem; parallel repetition theorem; the unique games conjecture; 245, programming experience in C++. applications to set cover, clique, max cut, network design, and 3-5 units, Spr (Agrawal, P; Park, H) problems. Prerequisites: 154 and 261, or equivalents. CS 347. Transaction Processing and Distributed Databases 3 units, not given this year

The principles and system organization of distributed databases. CS 361A. Advanced Algorithms G Data fragmentation and distribution, distributed database design, Advanced data structures: union-find, self-adjusting data structures query processing and optimization, distributed concurrency con- and amortized analysis, dynamic trees, Fibonacci heaps, universal trol, reliability and commit protocols, and replicated data manage- hash function and sparse hash tables, persistent data structures. ment. Distributed algorithms for data management: clocks, dead- Advanced combinatorial algorithms: algebraic (matrix and poly- lock detection, and mutual exclusion. Heterogeneous and federated nomial) algorithms, number theoretic algorithms, group theoretic distributed database systems. Overview of commercial systems algorithms and graph isomorphism, online algorithms and com- and research prototypes. Prerequisites: 145, 245. petitive analysis, strings and pattern matching, heuristic and prob- 3 units, Spr (Garcia-Molina, H) abilistic analysis (TSP, satisfiability, cliques, colorings), local CS 348A. Computer Graphics: Geometric Modeling search algorithms. May be repeated for credit. Prerequisite: 161 or The mathematical tools needed for the geometrical aspects of 261, or equivalent. computer graphics and especially for modeling smooth shapes. 3 units, not given this year

Fundamentals: homogeneous coordinates, transformations, and CS 361B. Advanced Algorithms perspective. Theory of parametric and implicit curve and surface Topics: fundamental techniques used in the development of exact models: polar forms, Bezier arcs and de Casteljau subdivision, and approximate algorithms for combinational optimization prob- continuity constraints, B-splines, tensor product, and triangular lems such as generalized flow, multicommodity flow, sparsest patch surfaces. Subdivision surfaces and multiresolution represen- cuts, generalized Steiner trees, load balancing, and scheduling. tations of geometry. Representations of solids and conversions Using linear programming, emphasis is on LP duality for design among them. Surface reconstruction from scattered data points. and analysis of approximation algorithms; interior point methods Geometry processing on meshes, including simplification. Prere- for LP. Techniques for development of strongly polynomial algo- quisite: linear algebra. Recommended: 164. rithms. 3-4 units, Aut (Guibas, L)

3 units, Spr (Plotkin, S) SCHOOLOF ENGINEERIN

CS 348B. Computer Graphics: Image Synthesis Techniques CS 364A. Algorithmic Game Theory Intermediate level, emphasizing the sampling, shading, and display Topics at the interface of theoretical computer science and game aspects of computer graphics. Topics: local and global illumination theory such as: algorithmic mechanism design; combinatorial and methods including radiosity and distributed ray tracing, texture competitive auctions; congestion and potential games; cost shar- generation and rendering, volume rendering, strategies for anti- ing; existence, computation, and learning of equilibria; game aliasing and photo-realism, human vision and color science as they theory and the Internet; network games; price of anarchy; and sel- relate to computer displays, and high-performance architectures for fish routing. Prerequisites: 154N and 161, or equivalents. graphics. Written assignments and programming projects. Prere- 3 units, not given this year quisite: 248 or equivalent. Recommended: Fourier analysis or digi- tal signal processing. CS 364B. Topics in Algorithmic Game Theory 3-4 units, Spr (Hanrahan, P) Topics on the interface of theoretical computer science and game theory. May be taken prior to 364A; may be repeated for credit. CS 349. Topics in Programming Systems Prerequisites: 154N and 161, or equivalents. Advanced material is often taught for the first time as a topics 3 units, not given this year course, perhaps by a faculty member visiting from another institu- tion. May be repeated for credit. CS 365. Randomized Algorithms 3 units, offered occasionally Design and analysis of algorithms that use randomness to guide their computations. Basic tools, from probability theory and prob- CS 349C. Topics in Programming Systems: Readings in Distri- abilistic analysis, that are recurrent in algorithmic applications. buted Systems Randomized complexity theory and game-theoretic techniques. Discussion of research publications that are of current interest in Algebraic techniques. Probability amplification and derandomiza- distributed systems. Students are expected to read all papers, and tion. Applications: sorting and searching, data structures, combina- sign up for presentation of one paper. The course itself is 1 unit. torial optimization and graph algorithms, geometric algorithms and Those interested in working on a project along with the readings linear programming, approximation and counting problems, paral- should enroll for 3 units.

lel and distributed algorithms, online algorithms, number-theoretic 1-3 units, Aut (Cao, P; Danzig, P) algorithms. Prerequisites: CS 161 or 261, STATS 116 or CS 109, CS 355. Advanced Topics in Cryptography or equivalents. Topics: pseudo-random generation, zero knowledge protocols, 3 units, not given this year

elliptic curve systems, threshold cryptography, security analysis CS 369. Topics in Analysis of Algorithms using random oracles, lower and upper bounds on factoring and Advanced material is often taught for the first time as a topics discrete log. May be repeated for credit. Prerequisite: 255. course, perhaps by a faculty member visiting from another institu- 3 units, not given this year tion. May be repeated for credit. CS 357. Advanced Topics in Formal Methods 3 units, offered occasionally

Topics vary annually. Possible topics include automata on infinite CS 369A. Advanced Geometric Algorithms words, static analysis methods, runtime analysis methods, verifica- Approximate, randomized, and high-dimensional geometric algo- tion of real-time and hybrid systems, and formalization of middle- rithms. Topics of current interest: clustering; nearest-neighbor ware services. May be repeated for credit. Prerequisite: 256. search; shortest paths; geometric random walks; shape fitting; 3 units, offered occasionally geometric embeddings; coresets; geometric TSP; and linear pro- gramming. Prerequisites: 368 or equivalent. 3 units, not given this year

14 | STANFORD BULLETIN, 2009-10

CS 369F. Topics in Analysis of Algorithms CS 378. Phenomenological Foundations of Cognition, Lan- Focus is on combinatorial optimization with emphasis on online guage, and Computation algorithms. Critical analysis of theoretical foundations of the cognitive ap- 3 units, not given this year proach to language, thought, and computation. Contrasts of the

CS 369M. Algorithms for Modern Massive Data Set Analysis rationalistic assumptions of current linguistics and artificial intelli- Algorithmic and statistical methods for large-scale data analysis: gence with alternatives from phenomenology, theoretical biology, matrix and graph algorithms; strengths and weaknesses of theoreti- critical literary theory, and socially-oriented speech act theory. cal techniques for practical scientific and internet data analysis; Emphasis is on the relevance of theoretical orientation to the de- overlap with related problems in statistics, optimization, numerical sign, implementation, and impact of computer systems as it affects analysis, and machine learning. Representative topics: Matrix human-computer interaction. problems (numerical and statistical perpectives; algorithmic ap- 3-4 units, Aut (Winograd, T)

proaches, including Johnson-Lindenstrauss lemma and randomized CS 379L. Designing Liberation Technology

projection and sampling algorithms; novel matrix factorizations); (Same as POLISCI 337T) Small project teams work with NGOs to ) Graph problems (graph partitioning algorithms, including spectral design new technologies for promoting development and democra- methods, flow-based methods, and recent geometric methods; local cy. Students conduct observations to identify needs, generate con- graph algorithms and approximate eigenvector computation); and cepts, create prototypes, and test their appropriateness. Some applications to machine learning and statistical data analysis (mo- projects may continue past the quarter towards full-scale imple- tivating applications; algorithmic basis of the RKHS method; mentation. Taught through the Hasso Plattner Institute of Design at geometric data analysis, regularization, and statistical inference; Stanford (http://dschool.stanford.edu). Enrollment limited. Prere- boosting and its relationships to conjugate gradient methods, duali- quisites: consent of instructors; application. ty, convexity, online 3 units, Spr (Cohen, J; Winograd, T) 3 units, Aut (Mahoney, M) CS 390A. Curricular Practical Training CS 369N. Novel Paradigms for Algorithmic Analysis Educational opportunities in high technology research and devel- May be repeated for credit. opment labs in the computing industry. Qualified computer science 3 units, Aut (Roughgarden, T) students engage in internship work and integrate that work into

CS 374. Algorithms in Biology (same as CS 374) their academic program. Students register during the quarter they (Same as BIOMEDIN 374) Algorithms and computational models are employed and complete a research report outlining their work applied to molecular biology and genetics. Topics vary annually. activity, problems investigated, results, and follow-on projects they Possible topics include biological sequence comparison, annotation expect to perform. 390 A, B, and C may each be taken once. 1 unit, Aut (Staff), Win (Staff), Spr (Staff), Sum (Staff) of genes and other functional elements, molecular evolution, ge- nome rearrangements, microarrays and gene regulation, protein CS 390B. Curricular Practical Training folding and classification, molecular docking, RNA secondary Educational opportunities in high technology research and devel- structure, DNA computing, and self-assembly. May be repeated for opment labs in the computing industry. Qualified computer science credit. Prerequisites: 161, 262 or 274, or BIOCHEM 218, or equi- students engage in internship work and integrate that work into COMPUTER SCIENCE(CS valents. their academic program. Students register during the quarter they 2-3 units, Spr (Batzoglou, S) are employed and complete a research report outlining their work

CS 376. Research Topics in Human-Computer Interaction activity, problems investigated, results, and follow-on projects they Interactive systems, research areas in interaction techniques, and expect to perform. 390A,B,C may each be taken once. 1 unit, Aut (Staff), Win (Staff), Spr (Staff), Sum (Staff) the design, prototyping, and evaluation of user interfaces. Topics: computer-supported cooperative work; audio, speech, and multi- CS 390C. Curricular Practical Training modal interfaces; user interface toolkits; design and evaluation Educational opportunities in high technology research and devel- methods; ubiquitous and context-aware computing; tangible inter- opment labs in the computing industry. Qualified computer science faces, haptic interaction; and mobile interfaces. students engage in internship work and integrate that work into 3 units, Spr (Klemmer, S) their academic program. Students register during the quarter they

CS 377. Topics in Human-Computer Interaction are employed and complete a research report outlining their work Contents change each quarter. May be repeated for credit. See activity, problems investigated, results, and follow-on projects they http://hci.stanford.edu/academics for offerings. expect to perform. 390A,B,C may each be taken once. 1 unit, Aut (Staff), Win (Staff), Spr (Staff), Sum (Staff) 2-3 units, offered occasionally

CS 377L. Learning in a Networked World CS 393. Computer Laboratory (Same as EDUC 298) Foundations, theories and empirical studies For CS graduate students. A substantial computer program is de- for interdisciplinary advances in how we conceive of the potentials signed and implemented; written report required. Recommended as and challenges associated with lifelong, lifewide and life-deep a preparation for dissertation research. Register using the section learning in a networked world given the growth of always-on cy- number associated with the instructor. Prerequisite: consent of berinfrastructure for supporting information and social networks instructor. 1-9 units, Aut (Staff), Win (Staff), Spr (Staff), Sum (Staff) across space and time with personal computers, netbooks, and mobiles. CS 395. Independent Database Project 3 units, Spr (Pea, R) For graduate students in Computer Science. Use of database man-

CS 377V. Persuasive Online Video: Methods and Metrics for agement or file systems for a substantial application or implemen- Changing Behaviors tation of components of database management system. Written New methods for creating persuasive video, with a focus on me- analysis and evaluation required. Register using the section num- trics in guiding iterative design. Small teams create videos to ber associated with the instructor. Prerequisite: consent of instruc- achieve target behaviors of their own choosing. Goals go beyond tor. 1-6 units, Aut (Staff), Win (Staff), Spr (Staff), Sum (Staff) viral distribution, which is just one potential target behavior (shar- ing the video with others). May be repeated for credit. CS 399. Independent Project 2 units, not given this year Letter grade only. 1-9 units, Aut (Staff), Win (Staff), Spr (Staff), Sum (Staff) CS 377W. Create Engaging Web Applications Using Metrics and Learning on Facebook CS 399P. Independent Project Experimental course. Students work in small, interdisciplinary Graded satisfactory/no credit. teams to create, launch, and optimize web-based applications for 1-9 units, Aut (Staff), Win (Staff), Spr (Staff), Sum (Staff) social networks such as Facebook. Tools include Google Analyt- ics. Online experiments and user responses to learn how to iterate and improve applications. Guest experts. 3-4 units, not given this year

STANFORD BULLETIN, 2009-10 | 15

CS 402. Beyond Bits and Atoms: Designing Technologies for CS 468. Topics in Geometric Algorithms: Computational To- Thinking and Learning pology (Same as EDUC 236X) Practicum in designing and building tech- Focus on the connectivity of spaces (and ignoring, for example, nology-enabled curricula and learning environments. Students use metric information) one arrives at the study of topology. Concen- software toolkits and state-of-the-art fabrication machines to de- trating mostly on the invariants arising from algebraic topology, sign educational software, educational toolkits, and tangible user course presents techniques for designing efficient algorithms to interfaces. How to design low-cost technologies, particularly for compute them. Alongside the algorithms, course presents the ne- urban school in the US and abroad. The constructionist learning cessary background tools, both in topology and computer science, design perspective, critical pedagogy, and the application of com- for their analysis. Topics: graphs, surfaces, simplicial complexes, plexity sciences in education. (co)homology, topological data analysis, Morse functions. 3-5 units, not given this year 3 units, Aut (Morozov, D)

CS 447. Software Design Experiences CS 499. Advanced Reading and Research Small teams develop technology prototypes combining product For CS graduate students. Register using the section number asso- and interaction design. Focus is on software and hardware inter- ciated with the instructor. Prerequisite: consent of instructor. faces, interaction, design aesthetics, and underpinnings of success- 1-15 units, Aut (Staff), Win (Staff), Spr (Staff), Sum (Staff)

ful design including a reflective, interactive design process, group CS 523. The Future of the Automobile dynamics of interdisciplinary teamwork, and working with users. (Same as ME 302) The concept of this course is to present, dis- Prerequisite: CS 247A. cuss, and envision the future of the automobile in terms of sustai- 3-4 units, alternate years, not given this year nability, safety, performance, and enjoyment. Invited speakers CS 448. Topics in Computer Graphics from academia and industry share their own visions, explain chal- Topic changes each quarter. Recent topics: computational photo- lenges, and present solutions regarding individual transportation. graphy, data visualization, character animation, virtual worlds, After each session the students research specific questions related graphics architectures, advanced rendering. See to the lectures and present their findings in the following week. http://graphics.stanford.edu/courses for offererings and prerequi- This course is offered by Stanford‟s Automotive Program with

FENGINEERING sites. May be repeated for credit. faculty involvement from mechanical engineering, computer 3-4 units, offered occasionally science, and communications. 1 unit, Aut (Beiker, S; Gerdes, C; Thrun, S), Win, Spr (Staff) CS 448A. Computational Photography Sensing strategies and algorithmic techniques that extend tradi- CS 545. Database and Information Management Seminar tional digital photography. Topics: high dynamic range imaging, Current research and industrial innovation in database and infor- flash-noflash, coded aperture, coded exposure, multi-perspective, mation systems. panoramic stitching, digital photomontage, all-focus, and light 1 unit, Win (Widom, J)

field imaging. Lectures, readings, and project. Prerequisite: 148 or CS 546. Seminar on Liberation Technologies equivalent. (Same as POLISCI 337S)

SCHOOLO 3-4 units, Win (Levoy, M) 1 unit, Aut (Winograd, T; Cohen, J; Diamond, L)

CS 448B. Topics in Computer Graphics: Data Visualization CS 547. Human-Computer Interaction Seminar Techniques and algorithms for creating effective visualizations Weekly speakers. May be repeated for credit. based on principles from graphic design, visual art, perceptual 1 unit, Aut (Winograd, T), Win (Winograd, T), Spr (Winograd) psychology, and cognitive science. Topics: graphical perception, data and image models, visual encoding, graph and tree layout, CS 571. Surgical Robotics Seminar color, animation, interaction techniques, automated design. Lec- Surgical robots developed and implemented clinically on varying tures, reading, and project. Prerequisite: one of 147, 148, or equiv- scales. Goal is to expose students from engineering, medicine, and alent. business to guest lecturers from academia and industry.engineering 3 units, Aut (Heer, J) and clinical aspects connected to design and use of surgical robots, varying in degree of complexity and procedural role. CS 448E. Research Topics in Computer Graphics: Virtual 1 unit, Aut (Barbagli, F) Worlds Selected topics in current computer graphics research. Analysis of This non-official pdf was extracted from the Stanford Bulletin 2009-10 in research publications, class discussions, quarter-long research August 2009 and is not updated to reflect corrections or changes made project. Topics change each offering. Sample topics: procedural during the academic year. modeling, character animation, multimodal interfaces, perception and cognition. May be repeated for credit. Prerequisite: CS248. The Bulletin in the form as it exists online at http://bulletin.stanford.edu is 1-4 units, Spr (Koltun, V) the governing document, and contains the then currently applicable poli- cies and information. Latest information on courses of instruction and CS 448F. Image Processing for Photography and Vision scheduled classes is available at http://explorecourses.stanford.edu. A non- Image processing with a focus on implementation of new tech- official pdf of the Bulletin is available for download at the Bulletin web niques from the literature. Topics: sampling and reconstruction, site; this pdf is produced once in August and is not updated to reflect cor- linear and non-linear filters, features and alignment, compositing, rections or changes made during the academic year. gradient-domain techniques, and recent techniques from confe-

rences such as SIGGRAPH and Eurographics. Prerequisites: Stu- dents should be comfortable coding in C++. An introductory graphics course such as CS148 is helpful but not necessary. 3 units, Aut (Adams, A)

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 pharma- ceutical production, industrial enzyme production, stem cell appli- cations, medical diagnostics, and medical imaging. Discussions of biotechnology ethics, business and patenting issues, and entrepre- neurship in biotechnology. 3 units, not given this year

16 | STANFORD BULLETIN, 2009-10