Preface

Welcome to this book!

These are lecture notes for Computer Science 132, Geometric Algorithms, as taught by me at Boston University. The overall structure of the course is roughly based on Linear Algebra and its Applications, by David C. Lay, Addison-Wesley (Pearson). However all the content has been significantly revised by me.

Format

The notes are in the form of Jupyter notebooks. Demos and most figures are included as executable Python code. All course materials are in the github repository here.

Each of the Chapters is based on a single notebook, and each forms the basis for one lecture (more or less).

Note that all of the 3D figures used in this book can be viewed in augmented reality using the app DiagramAR. Using DiagramAR you can look at the figures “in space’’ and can move around them to look at them from different angles, rotate them, or zoom in/out. DiagramAR is available for iOS and Android. Adapting DiagramAR for any course that uses python for 3D figure creation is not hard; contact me for details.

Teaching Approach

The rationale for the teaching approach used in this course is here. In brief:

Students learning Linear Algebra need to develop three modes of thinking. The first is algebraic thinking – how to correctly manipulate symbols in a consistent logical framework, for example to solve equations. The second is geometric thinking: learning to extend familiar two- and three-dimensional concepts to higher dimensions in a rigorous way. The third is computational thinking: understanding the relationship between abstract algebraic machinery and actual computations which arrive at the (hopefully) correct answer to a specific problem in an efficient way.

Each mode provides a distinct, powerful way of thinking about a problem, and so using the full power of linear algebra requires being able to switch between these modes with fluidity. However, these three modes of thinking are quite different, and often students are better at some modes than others. For example, here are three views of matrix-vector multiplication:

Jupyter notebooks (including the use of RISE for presentation, python for computation, and jupyter books for reference) are an ideal teaching environment to take on this challenge. Hence the goal of these notes is to take advantage of the Jupyter toolchain to interweave these modes on a fine grain, frequently moving from one mode to the other, to constantly reinforce connections between ways of thinking about linear algebra.