skip to content

Bulletin Archive

This archived information is dated to the 2008-09 academic year only and may no longer be current.

For currently applicable policies and information, see the current Stanford Bulletin.

Undergraduate courses in Computer Science

Undergraduates are advised to consult the "Guide to Choosing Introductory Courses" in the "Computer Science" section of this bulletin.

CS 1C. Introduction to Computing at Stanford

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

1 unit, Aut (Staff)

CS 2C. Intermediate Computing at Stanford

Continuation of 1C. Sound, image and video editing including understanding and publishing multimedia. Applications include GarageBand, Photoshop, Acrobat, iMovie, Final Cut Pro, and iDVD. One-hour lecture/workshop in dormitory clusters prepared and administered weekly by the Resident Computer Coordinator (RCC). Advanced section also available. Final project. Not a programming course.

1 unit, Win (Chan, K)

CS 12N. The Coming Revolution of Computer Architecture

Preference to freshmen. Classic architecture and technology trends that have driven its performance growth, and factors leading to the end of this growth; characteristics of technology that can be exploited for future growth and driving application areas; alternative organizations and programming systems that are candidates to replace the status quo.

3 units, not given this year

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

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

3 units, Aut (Shoham, Y)

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

(F,Sem) Stanford Introductory Seminar. Preference to freshmen with exerience in photography and use of computers. How a photographer creates photos, makes them available for computer viewing, reliably stores them, organizes them, tags them, searches them, and distributes them online. Access to a digital SLR camera and to PhotoShop Elements or equivalent software is required; no programming experience required.

3 units, Aut (Garcia-Molina, H)

CS 48N. The Science of Art

(F,Sem) Stanford Introductory Seminar. Preference to freshmen. The interwoven histories of science and Western art from the Renaissance to the 19th century. Emphasis is on the revolutions in science and mathematics that inspired parallel revolutions in the visual arts such as Brunelleschi's invention of linear perspective, Newton's discoveries in geometric optics, and the theories of color vision proposed by Goethe, Young, and Helmholtz. The scientific principles behind image making including digital image synthesis and computer graphics. No programming experience required. GER:DB-EngrAppSci

3 units, Win (Levoy, M)

CS 51N. Visionaries in Computer Science

(F,Sem) Stanford Introductory Seminar. Preference to freshmen. How visionaries anticipated the future; how could they see what their contemporaries did not? How can others strive for comparable achievements? The insights of Alan Turing, Vannevar Bush, Richard Licklider, Ted Nelson, Morton Heilig, Ivan Sutherland, Douglas Engelbart, Alan Kay, Frederick Brooks, and others.

3 units, Spr (Koltun, V)

CS 73N. Business on the Information Highways

(F,Sem) Stanford Introductory Seminar. Preference to freshmen. The capabilities of the Internet and its services. Writing for the web. The effect on commerce, education, government, and health care. Technical and business alternatives. Who is hurt and who benefits from the changes? Participants develop web publications.

3 units, Spr (Wiederhold, G; Barr, A; Tessler, S)

CS 74N. Digital Dilemmas

(F,Sem) Stanford Introductory Seminar. Preference to freshmen. Issues where policy decision making requires understanding computer and communications technology. Technology basics taught in non-technology terms. Topics include consumer privacy, government surveillance, file sharing and intellectual property. Focus is on technology in elections including topics such as voter registration databases, and electronic and Internet voting. GER:DB-EngrAppSci

3 units, Aut (Dill, D)

CS 103. Mathematical Foundations of Computing

Mathematical foundations required for computer science, including propositional predicate logic, induction, sets, functions, and relations. Formal language theory, including regular expressions, grammars, finite automata, Turing machines, and NP-completeness. Mathematical rigor, proof techniques, and applications. May not be taken by students who have completed 103A,B or 103X. Prerequisite: 106A or equivalent. GER:DB-Math

3-5 units, Win (Plummer, R)

CS 103A. Discrete Mathematics for Computer Science

Final offering of this course. Mathematical foundations required for computer science. Topics: propositional and predicate logic, proof techniques, induction, recursion, combinatorics, and functions. Corequisite: 106A or X. GER:DB-Math

3 units, Aut (Plummer, R)

CS 103B. Discrete Structures

Final offering of this course. Continuation of 103A. Topics: analysis of algorithms, recurrence relations, mathematical formulations of basic data models (sets, relations, linear models, trees and graphs), regular expressions, grammars, and finite automata. Corequisite: 106B or X. GER:DB-Math

3 units, Win (Sahami, M)

CS 103X. Discrete Structures (Accelerated)

Covers the material in 103A and B in a single quarter. The mathematical foundations of computer science.Introduction to set theory and logic, number theory, functions and relations, combinatorics, and graph theory. Prerequisite: background in mathematical formalism and mathematical proof. GER:DB-Math

3-4 units, not given this year

CS 105. Introduction to Computers

For non-technical majors. What computers are and how they work. Practical experience in programming. Construction of computer programs and basic design techniques. A survey of Internet technology and the basics of computer hardware. Students in technical fields and students looking to acquire programming skills should take 106A or 106X. Students with prior computer science experience at the level of 106 or above require consent of instructor. Prerequisite: minimal math skills. GER:DB-EngrAppSci

3-5 units, Aut (Young, P), Spr (Young, P)

CS 106A. Programming Methodology

(Same as ENGR 70A.) Introduction to the engineering of computer applications emphasizing modern software engineering principles: object-oriented design, decomposition, encapsulation, abstraction, and testing. Uses the Java programming language. Emphasis is on good programming style and the built-in facilities of the Java language. No prior programming experience required. GER:DB-EngrAppSci

3-5 units, Aut (Sahami, M), Win (Roberts, E), Spr (Young, P), Sum (Staff)

CS 106B. Programming Abstractions

(Same as ENGR 70B.) Abstraction and its relation to programming. Software engineering principles of data abstraction and modularity. Object-oriented programming, fundamental data structures (such as stacks, queues, sets) and data-directed design. Recursion and recursive data structures (linked lists, trees, graphs). Introduction to time and space complexity analysis. Uses the programming language C++ covering its basic facilities. Prerequisite: 106A or equivalent. GER:DB-EngrAppSci

3-5 units, Win (Cain, G), Spr (Roberts, E), Sum (Staff)

CS 106L. Standard C++ Programming Laboratory

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

1 unit, Aut (Staff), Win (Staff), Spr (Staff)

CS 106X. Programming Abstractions (Accelerated)

(Same as ENGR 70X.) Intensive version of 106B for students with a strong programming background interested in a rigorous treatment of the topics at an accelerated pace. Additional advanced material and more challenging projects. Prerequisite: excellence in 106A or equivalent, or consent of instructor. GER:DB-EngrAppSci

3-5 units, Aut (Hurlbutt, T), Spr (Cain, G)

CS 107. Computer Organization and Systems

Autumn topics include: advanced memory management features of C and C++; the difference between imperative and object-oriented paradigms. The functional paradigm (using LISP) and concurrent programming. Other modern languages such as Python, Objective C, and C#. Spring topics include: elements of computer architecture; advanced memory management features of C; elements of code compilation; concurrency and threading. Prerequisite: 106B or X, or consent of instructor. GER:DB-EngrAppSci

3-5 units, Aut (Cain, G), Spr (Zelenski, J)

CS 108. Object-Oriented Systems Design

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

3-4 units, Aut (Jimenez, O), Win (Young, P)

CS 109. Introduction to Probability for Computer Scientists

Topics include: counting and combinatorics, random variables, conditional probability, independence, distributions, expectation, point estimation, and limit theorems. Applications of probability in computer science including machine learning and the use of probability in the analysis of algorithms. Prerequisites: 106B or X, and MATH 51 or equivalent. GER:DB-EngrAppSci

3-5 units, Spr (Sahami, M)

CS 110. Principles of Computer Systems

Building software systems using facilities of operating systems and networking. Topics include: elements of processes and currency mechanics, interprocess communication, storage systems and file management, networking layers and abstractions, sockets, and understanding of distributed systems. Prerequisites: 103 or 103B, and 107. GER:DB-EngrAppSci

3-5 units, Spr (Rosenblum, M)

CS 121. Introduction to Artificial Intelligence

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

3 units, Spr (Latombe, J), Sum (Staff)

CS 124. From Languages to Information

(Same as LINGUIST 180.) Automated processing of less structured information: human language text and speech, web pages, social networks, genome sequences, with goal of automatically extracting meaning and structure. Methods include: string algorithms, automata and transducers, hidden Markov models, graph algorithms, XML processing. Applications such as information retrieval, text classification, social network models, machine translation, genomic sequence alignment, word meaning extraction, and speech recognition.

3-4 units, Win (Jurafsky, D)

CS 140. Operating Systems and Systems Programming

Operating systems design and implementation. Basic structure; synchronization and communication mechanisms; implementation of processes, process management, scheduling, and protection; memory organization and management, including virtual memory; I/O device management, secondary storage, and file systems. Prerequisite: 107. GER:DB-EngrAppSci

3-4 units, Aut (Rosenblum, M), Win (Mazieres, D), Sum (Staff)

CS 142. Web Programming and Security

The web uses complex applications that run on heterogeneous browsers that may be built using programming technologies such as Javascript, AJAX, Google Web Toolkit, Apache Struts, Java Server Faces, and Rails. How core web technologies work; common security vulnerabilities; and how to build secure web applications that avoid them. Prerequisities: 107 and108.

3 units, Win (Boneh, D; Mitchell, J)

CS 143. Compilers

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

3-4 units, Aut (Aiken, A), Sum (Staff)

CS 144. Introduction to Computer Networking

Principles and practice. Structure and components of computer networks, packet switching, layered architectures. Applications: web/http, voice-over-IP, p2p file sharing and socket programming. Reliable transport: TCP/IP, reliable transfer, flow control, and congestion control. The network layer: names and addresses, routing. Local area networks: ethernet and switches. Wireless networks and network security. Prerequisite: 108 or equivalent.

3-4 units, Aut (Levis, P)

CS 145. Introduction to Databases

Database design and use of database management systems for applications. The relational model, relational algebra, and SQL, the standard language for creating, querying, and modifying relational and object-relational databases. XML data including the query languages XPath and XQuery. UML database design, and relational design principles based on functional dependencies and normal forms. Other topics include indexes, views, transactions, authorization, integrity constraints, and triggers. Advanced topics from data warehousing, data mining, web data management, Datalog, data integration, data streams and continuous queries, and data-intensive web services. Prerequisites: 103 or 103B, and 107. GER:DB-EngrAppSci

3-4 units, Aut (Widom, J)

CS 147. Introduction to Human-Computer Interaction Design

Usability and affordances, direct manipulation, systematic design methods, user conceptual models and interface metaphors, human cognitive and physical ergonomics, information and interactivity structures, and design tools and environments. Team project in interaction design. Prerequisite: 106B or X or equivalent programming experience.

3-4 units, Aut (Klemmer, S)

CS 148. Introductory Computer Graphics

For undergraduates; M.S. students and those interested in continuing in graphics, register for 248. Two- and three-dimensional computer graphics. Topics: input and display devices, scan conversion of geometric primitives, two- and three-dimensional transformations and clipping, windowing techniques, curves and curved surfaces, three-dimensional viewing and perspective, hidden surface removal, illumination and color models, OpenGL, and 3-D modeling tools. Emphasis is on practical skills in using graphics libraries and tools. Programming using C/C++ and OpenGL, with demos in SoftImage. Prerequisites: CS 107, MATH 103. GER:DB-EngrAppSci

3 units, Win (Hanrahan, P), Sum (Staff)

CS 154. Introduction to Automata and Complexity Theory

Regular sets: finite automata, regular expressions, equivalences among notations, methods of proving a language not to be regular. Context-free languages: grammars, pushdown automata, normal forms for grammars, proving languages non-context-free. Turing machines: equivalent forms, undecidability. Nondeterministic Turing machines: properties, the class NP, complete problems for NP, Cook's theorem, reducibilities among problems. Prerequisites: 103 or 103B. GER:DB-EngrAppSci

3-4 units, Aut (Dill, D), Spr (Motwani, R), Sum (Staff)

CS 154N. Introduction to NP Completeness

Turing machines: equivalent forms, undecidability. Nondeterministic Turing machines: properties, the class NP, complete problems for NP, Cook's theorem, reducibilities among problems. Students participate in approximately the last half of 154. Prerequisite: formal languages and automata as in first part of 154.

2 units, Aut (Dill, D), Spr (Motwani, R)

CS 155. Computer and Network Security

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

3 units, Spr (Boneh, D; Mitchell, J)

CS 156. Calculus of Computation

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

3-4 units, Aut (Manna, Z)

CS 157. Logic and Automated Reasoning

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

3 units, Aut (Genesereth, M)

CS 161. Design and Analysis of Algorithms

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

3-4 units, Aut (Plotkin, S), Win (Roughgarden, T), Sum (Staff)

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

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

3 units, Win (Guibas, L)

CS 178. Digital Photography

Scientific, artistic, and computing aspects of digital photography. Topics: lenses and optics, light and sensors, color theory, optical effects in nature, the laws of perspective and depth of field, sampling and noise, the camera as a computing platform, image processing and editing, and computational photography. Counts as a CS elective in the Graphics track. Prerequisites: basic calculus; students must have a digital camera with manual control over shutter speed and aperture. No programming experience required.

3-4 units, Spr (Levoy, M)

CS 181. Computers, Ethics, and Public Policy

(Formerly 201.) Primarily for majors entering computer-related fields. Ethical and social issues related to the development and use of computer technology. Ethical theory, and social, political, and legal considerations. Scenarios in problem areas: privacy, reliability and risks of complex systems, and responsibility of professionals for applications and consequences of their work. Prerequisite: 106B or X. GER:EC-EthicReas

3-4 units, Win (Johnson, M)

CS 191. Senior Project

Restricted to Computer Science and Computer Systems Engineering students. Group or individual projects under faculty direction. Register using instructor's section number. A project can be either a significant software application or publishable research. Software application projects include substantial programming and modern user-interface technologies and are comparable in scale to shareware programs or commercial applications. Research projects may result in a paper publishable in an academic journal or presentable at a conference. Required public presentation of final application or research results.

1-6 units, Aut (Staff), Win (Staff), Spr (Staff), Sum (Staff)

CS 191W. Writing Intensive Senior Project

Restricted to Computer Science and Computer Systems Engineering students. Writing-intensive version of CS191. Register using the section number of an Academic Council member.

3-6 units, Aut (Staff), Win (Staff), Spr (Staff)

CS 192. Programming Service Project

Restricted to Computer Science students. Appropriate academic credit (without financial support) is given for volunteer computer programming work of public benefit and educational value.

1-4 units, Aut (Staff), Win (Staff), Spr (Staff), Sum (Staff)

CS 193C. Client-Side Internet Technologies

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

3 units, not given this year

CS 193D. Professional Software Development with C++

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

3 units, not given this year

CS 193H. High Performance Web Sites

Best practices for speeding up web pages extracted from Google, Yahoo!, and other top web sites. Students conduct new experiments to quantify web performance. Prerequisites: JavaScript, CSS, and HTML.

3 units, Aut (Souders, S)

CS 193P. iPhone Application Programming

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

3 units, Aut (Marcos, P)

CS 194. Software Project

Design, specification, coding, and testing of a significant team programming project under faculty supervision. Documentation includes a detailed proposal. Public demonstration of the project at the end of the quarter. Prerequisite: 108. GER:DB-EngrAppSci

3 units, Spr (Plummer, R)

CS 196. Microcomputer Consulting

Focus is on Macintosh and Windows system administration, maintenance and troubleshooting. Hardware and software concepts. Topics include operating systems, networking, security, troubleshooting methodology with emphasis on Stanford's computing environment. Not a programming course. Prerequisite: 1C or equivalent.

2 units, Win (Ly, J), Spr (Ly, J)

CS 198. Teaching Computer Science

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

3-4 units, Aut (Sahami, M; Kim, I; Thamrongrattanarit, A), Win (Sahami, M; Kim, I; Thamrongrattanarit, A), Spr (Sahami, M; Kim, I; Thamrongrattanarit, A)

CS 199. Independent Work

Special study under faculty direction, usually leading to a written report. Letter grade; if not appropriate, enroll in 199P.

1-6 units, Aut (Staff), Win (Staff), Spr (Staff), Sum (Staff)

CS 199P. Independent Work

1-6 units, Aut (Staff), Win (Staff), Spr (Staff), Sum (Staff)

© Stanford University - Office of the Registrar. Archive of the Stanford Bulletin 2008-09. Terms of Use | Copyright Complaints