ENGR108: Introduction to Matrix Methods

Julia Costacurta, Stanford University, Summer 2024


  • Mondays and Wednesdays, 1:30pm – 3:00pm

  • 200-205


  • Welcome to ENGR108, Summer Quarter 2024. We are excited to have you here!

About ENGR108

ENGR108 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

  • Attendance and weekly participation in class

  • Weekly homework assignments: we will normally assign homework each Friday afternoon, which will be and due the following Friday by 9:00am Pacific time. For late day policy, see the syllabus. You are allowed, even encouraged, to work on the homework in small groups, but you must write up your own homework to hand in and credit your other group members.

  • Two midterm exams. The midterm will be closed book except that you may bring in one (1) sheet of paper, with material on the front and back.


We will weight the various parts of the class as follows:

  • Attendance/participation 10% (this will be a combination of your section participation and your Ed participation, weighting toward whichever you make more contributions to)

  • Homework 50%

  • Midterm 1: 20%

  • Midterm 2: 20%

We reserve the right to change the grading rubric at any point in time during the course.


You do not need to have seen any linear algebra before; we will develop it from scratch. Math 51 is nominally a prerequisite, but we will use relatively little of this material. In the course you'll do some very simple programming in the language Julia, 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.