“Algebra is but written geometry,” Sophie Germain

# 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.