School of Engineering - Stanford Engineering Everywhere. Introduction to applied linear algebra and linear dynamical systems, with applications to circuits, signal processing, communications, and control systems.

Topics include: Least-squares aproximations of over-determined equations and least-norm solutions of underdetermined equations. Symmetric matrices, matrix norm and singular value decomposition. Eigenvalues, left and right eigenvectors, and dynamical interpretation. Matrix exponential, stability, and asymptotic behavior. Multi-input multi-output systems, impulse and step matrices; convolution and transfer matrix descriptions. School of Engineering - Stanford Engineering Everywhere. Continuation of Convex Optimization I.

Subgradient, cutting-plane, and ellipsoid methods. Decentralized convex optimization via primal and dual decomposition. Alternating projections. Exploiting problem structure in implementation. School of Engineering - Stanford Engineering Everywhere. The goals for the course are to gain a facility with using the Fourier transform, both specific techniques and general principles, and learning to recognize when, why, and how it is used.

Together with a great variety, the subject also has a great coherence, and the hope is students come to appreciate both. Topics include: The Fourier transform as a tool for solving physical problems. School of Engineering - Stanford Engineering Everywhere. Concentrates on recognizing and solving convex optimization problems that arise in engineering. Convex sets, functions, and optimization problems.

Basics of convex analysis. Least-squares, linear and quadratic programs, semidefinite programming, minimax, extremal volume, and other problems. School of Engineering - Stanford Engineering Everywhere. Advanced memory management features of C and C++; the differences between imperative and object-oriented paradigms.

The functional paradigm (using LISP) and concurrent programming (using C and C++). Brief survey of other modern languages such as Python, Objective C, and C#. School of Engineering - Stanford Engineering Everywhere. This course is the natural successor to Programming Methodology and covers such advanced programming topics as recursion, algorithmic analysis, and data abstraction using the C++ programming language, which is similar to both C and Java.

If you've taken the Computer Science AP exam and done well (scored 4 or 5) or earned a good grade in a college course, Programming Abstractions may be an appropriate course for you to start with, but often Programming Abstractions (Accelerated) is a better choice. Programming Abstractions assumes that you already have familiarity with good programming style and software engineering issues (at the level of Programming Methodology), and that you can use this understanding as a foundation on which to tackle new topics in programming and data abstraction. Topics: Abstraction and its relation to programming. Software engineering principles of data abstraction and modularity. School of Engineering - Stanford Engineering Everywhere. This course is the largest of the introductory programming courses and is one of the largest courses at Stanford.

Topics focus on the introduction to the engineering of computer applications emphasizing modern software engineering principles: object-oriented design, decomposition, encapsulation, abstraction, and testing. Programming Methodology teaches the widely-used Java programming language along with good software engineering principles. Emphasis is on good programming style and the built-in facilities of the Java language. The course is explicitly designed to appeal to humanists and social scientists as well as hard-core techies. School of Engineering - Stanford Engineering Everywhere. This course provides a broad introduction to machine learning and statistical pattern recognition.

Topics include: supervised learning (generative/discriminative learning, parametric/non-parametric learning, neural networks, support vector machines); unsupervised learning (clustering, dimensionality reduction, kernel methods); learning theory (bias/variance tradeoffs; VC theory; large margins); reinforcement learning and adaptive control. The course will also discuss recent applications of machine learning, such as to robotic control, data mining, autonomous navigation, bioinformatics, speech recognition, and text and web data processing.

Students are expected to have the following background: School of Engineering - Stanford Engineering Everywhere. This course is designed to introduce students to the fundamental concepts and ideas in natural language processing (NLP), and to get them up to speed with current research in the area.

It develops an in-depth understanding of both the algorithms available for the processing of linguistic information and the underlying computational properties of natural languages. Wordlevel, syntactic, and semantic processing from both a linguistic and an algorithmic perspective are considered. The focus is on modern quantitative techniques in NLP: using large corpora, statistical models for acquisition, disambiguation, and parsing. Also, it examines and constructs representative systems.

School of Engineering - Stanford Engineering Everywhere. The purpose of this course is to introduce you to basics of modeling, design, planning, and control of robot systems.

In essence, the material treated in this course is a brief survey of relevant results from geometry, kinematics, statics, dynamics, and control. The course is presented in a standard format of lectures, readings and problem sets. There will be an in-class midterm and final examination.