Skip to main content

Preface Preface

This textbook is intended for a second course in linear algebra, for students who have completed a first course focused on procedures rather than proofs. (That is, a course covering systems of equations, matrix algebra, determinants, etc. but not vector spaces.)
Linear algebra is a mature, rich subject, full of both fascinating theory and useful applications. One of the things you might have taken away from a first course in the subject is that there’s a lot of tedious calculation involved. This is true, if you’re a human. But the algorithms you learned are easily implemented on a computer. If we want to be able to discuss any of the interesting applications of linear algebra, we’re going to need to learn how to do linear algebra on a computer.
There are many good mathematical software products that can deal with linear algebra, like Maple, Mathematica, and MatLab. But all of these are proprietary, and expensive. Sage is a popular open source system for mathematics, and students considering further studies in mathematics would do well to learn Sage. Since we want to prepare students for careers other than “mathematician”, we’ll try to do everything in Python.
Python is a very popular programming language, partly because of its ease of use. Those of you enrolled in Education may find yourself teaching Python to your students one day. Also, if you do want to use Sage, you’re in luck: Sage is an amalgamation of many different software tools, including Python. So any Python code you encounter in this course can also be run on Sage. You do not have to be a programmer to run the code in this book. We’ll be primarily working with the SymPy Python library, which provides many easy to use functions for operations like determinant and inverse.
These notes originally began as an attempt to make Python-based worksheets that could be exported from PreTeXt to Jupyter, for use in the classroom. It quickly became apparent that something more was needed, and the worksheets morphed into lecture notes. These are intended to serve as a textbook for Math 3410, but with some work they can also be used in class. The notes are written in PreTeXt, and can be converted to both Jupyter notebooks and reveal.js slides.
It should be noted that Jupyter conversion is not perfect. In particular, wherever there are code cells present within an example or exercise, the resulting notebook will not be valid. However, all of the worksheets in the book will successfully convert to Jupyter notebooks, and are intended to be used as such.
I initially wrote these notes during the Fall 2019 semester, for Math 3410 at the University of Lethbridge. The original textbook for the course was Linear Algebra with Applications, by Keith Nicholson. This book is available as an open education resource from Lyryx Learning
 1 
lyryx.com/linear-algebra-applications/
.
Since the notes were written for a course that used Nicholson’s textbook, the influence of his book is evident throughout. In particular, much of the notation agrees with that of Nicholson, and there are places where I refer to his book for further details. I taught a previous offering of this course using Sheldon Axler’s beautiful Linear Algebra Done Right, which certainly had an effect on how I view the subject, and it is quite likely that this has impacted how I present some of the material in this book.
This new edition of the book features exercises written using some of the interactive features provided by the partnership between PreTeXt and Runestone
 2 
runestone.academy
. I have also tried to provide additional guidance on understanding (and constructing) the proofs that appear in an upper division course on linear algebra.