Computer Science

Computer Science

650-723-2273

http://cs.stanford.edu/

Session dates and times for courses are available in Axess under the Guest Menu. Course day, time, and units are subject to change. Courses are eight weeks long unless otherwise noted in the course description or details.

CS 103
Mathematical Foundations of Computing

3 - 5 units
Course Dates: June 24 - August 17, 2013
Time: see http://explorecourses.stanford.edu

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.

Prerequisite: CS 106A or equivalent

Notes: May not be taken by students who have completed CS 103A, CS 103B or 103X.

May be taken for 3-4 units by Stanford graduate students; all other students must enroll for 5 units.

CS 106A
Programming Methodology

3 - 5 units
Course Dates: June 24 - August 17, 2013
Time: see http://explorecourses.stanford.edu

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.

Notes: Also listed as ENGR 70A. May be taken for 3-4 units by Stanford graduate students; all other students must enroll for 5 units.

Syllabus:

CS 106B
Programming Abstractions

3 - 5 units
Course Dates: June 24 - August 17, 2013
Time: see http://explorecourses.stanford.edu

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: CS 106A or equivalent

Notes: Also listed as ENGR 70B. May be taken for 3-4 units by Stanford graduate students; all other students must enroll for 5 units.

This course is offered as part of the Stanford Summer Intensive Studies in Computer Science, and qualifies toward the Certificate of Completion in Computer Science.

Syllabus:

CS 148
Introduction to Computer Graphics and Imaging

3 - 4 units
Course Dates: June 24 - August 17, 2013
Time: see http://explorecourses.stanford.edu

Topics: Image input and output devices such as cameras and displays, graphics hardware and software, input technologies and interactive techniques, typography and page layout, light and color representations, exposure and tone reproduction, image composition and imaging models, digital signal processing, sampling, aliasing and antialiasing, compression, two- and three-dimensional geometry and formations, modeling techniques including curves and surfaces, reflection models and illumination algorithms, and basic methods of animation. Progamming asssignments using C++ and OpenGL.

Prerequisite: CS 107, Math 51

Notes: May be taken for 3 units by Stanford graduate students; all other students must enroll for 4 units.

This course is offered as part of the Stanford Summer Intensive Studies in Computer Science, and qualifies toward the Certificate of Completion in Computer Science.

Syllabus:

CS 161
Design and Analysis of Algorithms

3 - 5 units
Course Dates: June 24 - August 17, 2013
Time: see http://explorecourses.stanford.edu

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: CS 103 or 103B; CS 109 or STATS 116

Notes: May be taken for 3-4 units by Stanford graduate students; all other students must enroll for 5 units.

This course is offered as part of the Stanford Summer Intensive Studies in Computer Science, and qualifies toward the Certificate of Completion in Computer Science.

Syllabus:

CS 193C
Client-Side Internet Technologies

3 units
Course Dates: June 24 - August 17, 2013
Time: see http://explorecourses.stanford.edu

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 CS 106A.

Notes: This course is offered as part of the Stanford Summer Intensive Studies in Computer Science, and qualifies toward the Certificate of Completion in Computer Science.

Syllabus:

CS 221
Artificial Intelligence: Principles and Techniques

3 - 4 units
Course Dates: June 24 - August 17, 2013
Time: see http://explorecourses.stanford.edu

(Only one of CS 121 or CS 221 counts toward any CS degree program.) Topics: search, constraint satisfaction, knowledge representation, probabilistic models, Bayesian networks, machine learning, neural networks, vision, robotics, and natural language processing.

Prerequisite: CS 103 or 103B/X; CS 106B or 106X; and exposure to probability. Recommended: CS 107 and facility with basic differential calculus.

Notes: May be taken for 3 units by Stanford graduate students; all other students must enroll for 4 units.

This course is offered as part of the Stanford Summer Intensive Studies in Computer Science, and qualifies toward the Certificate of Completion in Computer Science.