ENGR108: Introduction to Matrix MethodsJohn Duchi Stanford University, Fall 2026
Lectures
Announcements
About ENGR108ENGR108 covers the basics of vectors and matrices, solving linear equations, least-squares methods, and many applications. We'll cover the mathematics, but the focus will be on using matrix methods in applications such as tomography, image processing, data fitting, time series prediction, finance, and many others. Matrix methods should not be a spectator sport. In this course, students use the language Julia to do computations with vectors and matrices. The course is suitable for any undergraduate with the prerequisites or equivalent background. The class is based on the book Introduction to Applied Linear Algebra by Stephen Boyd and Lieven Vandenberghe, which is available on-line. ENGR108 is part of the EE and MS&E core requirements, and certified as a Ways of Thinking course for both formal reasoning (FR) and applied quantitative reasoning (AQR). Additionally, this course is approved for the Computer Science BS Math Elective and also satisfies the Mathematics & Statistics requirement in the School of Engineering. ENGR108 was originally created as EE103/CME103 by Stephen Boyd and his band of (then undergraduate) co-conspirators: Ahmed Bou-Rabee, Keegan Go, Jenny Hong, Karanveer Mohan, Jaehyun Park, and David Zeng. It was taught for the first time Autumn quarter 2014–15. Course requirements
Tutorials and SectionsThis quarter, we will be comparing an additional mode of instruction beyond the standard lectures, which we term tutorials and sections. Sections will be similar to those in which you've likely participated in the past: a TA will lead either through a problem solving session or a concept session. We will take attendance in these sections, so please do attend them. The tutorials are a new (and old, as they've been doing them in England for a few hundred years) idea that we will be testing, and will involve going through homework material in nearly 1-on-1 interactions with the TAs. We will randomize students into tutorials and sections during the first week of class; we emphasize that the assignment into tutorial or section will be completely random: precisely half the class will participate in tutorials, and half in sections. For fairness, because we are evaluating these different modes of instruction, each subset of the class will be graded on its own curve: students attending sections in one curve, and students in tutorials on another, to balance the grade distribution. GradingWe will weight the various parts of the class as follows:
We reserve the right to change the grading rubric at any point in time during the course. PrerequisitesYou do not need to have seen any linear algebra before; we will develop it from scratch. Math 51 is nominally a prerequisite, and we will use some of this material. In the course you'll do some very simple programming in the language Julia (and we will also attempt, but do not promise, to provide starter Python as well), so you should have seen some very basic simple programming. CS106A or equivalent (which is much more than you will need) is a prerequisite or corequisite. You do not need to know about any applications; we'll cover that in detail. Even if you have already seen all the material in the course (e.g., vectors, matrices, least squares) we encourage you to take it, because (we guess) you haven't seen it the way we will present it. |