A Full Curriculum of Free Math Textbooks
Increasingly many authors of textbooks are making their work free to read online. It happens in a few different ways. Sometimes a book goes out of print and its authors decide to host a PDF copy to keep the results of their labor alive. Other times the book was never intended for print and is published on the author’s website in HTML. Sometimes the author and publisher agree to a dual distribution model, where the print version is sold with traditional copyright and the digital version is released freely with a Creative Commons license like CC BY-NC-ND.
That kind of dual distribution is especially cool. It means prospective readers can audit a book before spending the money to buy it, then keep a physical copy at home and a reference copy on the computer they work from. More than once I’ve started a book on my laptop and finished it in hard copy, because books you hold are still my favorite way to read.
It also saves students money. I’ll always remember how frustrating it was to spend more than $100 on a chemistry textbook that was printed on looseleaf in three-ring binder, and knowing that had been a deliberate choice by the publisher to save on cost and minimize the textbook’s resale value. The book was also worse to read, since you had to be careful not to tear off the pages you turned.
I know my university cared less about the textbook than the textbook company’s online homework and quiz platform, which saved the TAs from having to manually grade the work of 500 students. The textbook was necessary but you were really buying the included website access code. This didn’t do much to dampen the insult: we still felt the school was complicit in scamming us.
Most of my professors assigned us textbook chapters to read before each lecture. This made their lectures more effective because they could focus on specific material or leave out bits of exposition. In theory it also meant fewer students would try to furiously transcribe the entire lecture in their notes. A free book increases the odds that students will do the reading, because by junior year many just stop buying the textbook.
During my math degree I built a personal library of free textbooks and other course materials from my school and others. We all learn differently, and often somebody else’s text would be really helpful. Whenever I found a good resource I saved it. Eventually my collection got big enough that I wondered if I could build a full curriculum out of it. The plan of study below mirrors what you’d see on a college website.
Fall Semester | Spring Semester |
Freshman Year | |
Calculus I | Calculus II |
Basic Electronics | Programming in C |
Web Development I | Topology and Geometry |
IT Fundamentals | IT Fundamentals |
Elective | Elective |
Sophmore Year | |
Calculus III | Differential Equations |
Finite Structures | Graph Theory |
Web Development II | Data Structures |
Linear Algebra | Intro to Proofs |
Elective | Elective |
Junior Year | |
Real Analysis | Complex Analysis |
Probability Theory | Hypothesis Testing |
Abstract Algebra | Databases and SQL |
Algorithms | Theoretical Computer Science |
Elective | Elective |
Senior Year | |
Number Theory | Cryptography |
Networking | High Performance Computing |
Data Analysis | Machine Learning |
Time Series Analysis | Computational Geometry |
Elective | Elective |
I took some creative liberties. This plan mirrors what I built for myself with my school’s applied mathematics and statistics major. It falls somewhere between the curriculums of traditional Mathematics, Statistics, and Computer Science majors, and is what an undergraduate program in computational mathematics could look like.
I made sure to account for prerequisites. Some classes like cryptography have big dependency trees. Others like graph theory and data structures are fun to take together. It’s also important to take algorithms and data structures before spring of junior year if you apply for software engineering internships.
This isn’t like an awesome list, which always tend to favor quantity over quality. My goal isn’t to give you every possible resource, just a small selection of good ones. I’ve read everything below enough to like it or use it as a reference. I hope this list saves someone the time it took me to discover them.
Freshman Year
Class | Link | # |
---|---|---|
Caculus I, II, and III | Community Calculus | 1 |
Paul's Online Notes | 2 | |
Topology and Geometry | Topology Without Tears | 3 |
Basic Electronics | Lessons in Electric Circuits | 4 |
The Essential Guide to Electronics in Shenzhen | 5 | |
Programming in C | Beej's Guide to C Programming | 6 |
Foundations of Computer Science | 7 | |
Web Development I | WHATWG HTML Standard | 8 |
Learn CSS Layout the Pedantic Way | 9 | |
Flexbox Froggy | 10 | |
Web Browser Engineering | 11 | |
IT Fundamentals | The Architecture of Open Source Applications | 12 |
Bash Notes for Professionals | 13 | |
Pro Git | 14 | |
Making Servers Work | 15 |
#3 is one of the inspirations for this post and how I learned the basics of topology. #4 is how I taught myself enough about electronics to build my daylight alarm clock. #6 is a good introduction to programming in C. I prefer C over Java as a first programming language for reasons beyond the scope of this post. #10 is a cute game for learning CSS flexbox. #14 is how I learned Git when I got tired of looking up the right command to use. I discovered #15 when I started hosting websites with a VPS from DO and like it as a first guide to Linux servers.
Sophomore Year
Class | Link | # |
---|---|---|
Intro to Proofs | A Gentle Introduction to the Art of Mathematics | 1 |
Elements of Style for Proofs | 2 | |
A Mathematician’s Lament | 3 | |
Differential Equations | Paul's Online Notes | 4 |
Methods of Solving Ordinary Differential Equations | 5 | |
Linear Algebra | Linear Algebra Done Right | 6 |
Linear Algebra Abridged | 7 | |
Immersive Linear Algebra | 8 | |
Web Development II | The JavaScript Language | 9 |
Eloquent JavaScript | 10 | |
The TypeScript Handbook | 11 | |
Finite Structures | An Introduction to Combinatorics and Graph Theory | 12 |
Introduction to Combinatorics | 13 | |
Graph Theory | Graph Theory: Penn State Math 485 Lecture Notes | 14 |
Computer Science 163/265: Graph Algorithms | 15 | |
Data Structures | Open Data Structures | 16 |
GNU libavl | 17 | |
Exploring the Design Space of Binary Search Trees | 18 | |
NIST Blockchain Technology Overview | 19 |
#1 is tied for my favorite textbook of all time. GAIM is what made the fundamentals click for me. #3 also changed how I look at math. It was validating to hear someone call it an art, because that’s the quality that drew me to math in the first place. #5 and #6 are both by Sheldon Axler: #6 is #5 minus the exercises. #9 is cheating because it isn’t free, but you can buy the three book series for $9. I learned JavaScript informally and used #9 to dive deeper when I wanted to understand the language better. It strikes a good balance between length and detail. Graph Theory was my favorite subject and #14 is what I use as a reference. #18 is a beautifully-typeset discussion of trees and #18 is by far the best resource I know to learn the fundamentals of blockchains.
Junior Year
Class | Link | # |
---|---|---|
Real Analysis | Measure, Integration & Real Analysis | 1 |
Elementary Real Analysis | 2 | |
NIST Digital Library of Mathematical Functions | 3 | |
Complex Analysis | Multivariable and Complex Analysis | 4 |
Probability Theory | Probability and Stochastic Processes with Applications | 5 |
Jane Street Probability & Markets Guide | 6 | |
Abstract Algebra | Algebra: Abstract and Concrete | 7 |
Beautiful Symmetry: A Coloring Book About Math | 8 | |
The Geometry of Reflection Groups | 9 | |
Algorithms | Competitive Programmer’s Handbook | 10 |
Advanced Data Structures and Algorithms | 11 | |
Algorithms | 12 | |
Route Planning in Road Networks | 13 | |
NIST Dictionary of Algorithms and Data Structures | 14 | |
Databases | Foundations of Databases | 15 |
Readings in Database Systems | 16 | |
Hypothesis Testing | Testing Statistical Hypotheses | 17 |
The Little Handbook of Statistical Practice | 18 | |
Theoretical Computer Science | Elements of Programming | 19 |
Transition Systems | 20 | |
Evolving Algebras | 21 | |
Practical Foundations of Mathematics | 22 |
I own a physical copy of #2 and #12. I used #7 in college and really enjoyed it. #8 is very fun. #10 is a great resource for solving programming puzzles in C++. I think it’s the best way to start preparing for technical interviews and programming contests. #13 is a cool paper that explores a practical application of shortest-path algorithms. #20 and #21 are different ways to think about the building blocks of computer science.
Senior Year
Class | Link | # |
---|---|---|
Number Theory | Elementary Number Theory | 1 |
Data Analysis | Advanced Data Analysis from an Elementary Point of View |
2 |
Computer Age Statistical Inference: Algorithms, Evidence and Data Science | 3 | |
High Performance Computing | Programming Parallel Computers | 4 |
MPI Tutorial | 5 | |
Networking | Computer Networks: A Systems Approach | 6 |
Beej's Guide to Network Programming | 7 | |
A TCP/IP Tutorial | 8 | |
Time Series Analysis | STAT 720: Time Series Analysis | 9 |
Computational Geometry | CMSC 754: Computational Geometry | 10 |
Basic Algorithms in Computational Geometry | 11 | |
Machine Learning | Understanding Machine Learning: From Theory to Algorithms | 12 |
The Little Book of Machine Learning | 13 | |
Practical Deep Learning for Coders | 14 | |
Foundations of Machine Learning | 15 | |
Cryptography | Lecture Notes on Cryptography | 16 |
Online Cryptography Course | 17 | |
An Overview of Cryptography | 18 |
I spent a summer as a research assistant under a professor studying parallel simulated annealing. #4-5 were key to getting started. #6 is my other favorite textbook. Networking has a reputation for being a boring subject and the authors prove it isn’t. Computational Geometry was one of the more interesting classes I took in college and #10 was the assigned textbook. Stanford has used the same book in the past. #14 and #15 are cheating because they’re video series, not textbooks, but I used both to grok machine learning better. I didn’t get far in cryptography but recommend #16 to get your feet wet.
Academic websites are my favorite example of old-school web design. They’re simple, text-based, and easy to navigate. They’re also some of the most susceptible to link rot. Every year, excellent course websites disappear when the servers hosting them are retired. If the resources I provided for a class are gone, or you’re looking for a class that isn’t here, you can probably find it on Rice University’s OpenStax or the University of Minnesota’s Open Textbook Library.