summaryrefslogtreecommitdiff
path: root/textbooks.html
diff options
context:
space:
mode:
Diffstat (limited to 'textbooks.html')
-rw-r--r--textbooks.html515
1 files changed, 515 insertions, 0 deletions
diff --git a/textbooks.html b/textbooks.html
new file mode 100644
index 0000000..ca33dd4
--- /dev/null
+++ b/textbooks.html
@@ -0,0 +1,515 @@
+---
+layout: main
+title: Textbooks
+---
+
+<style>
+tag { font-size: 0.75em; padding: 0px 4px; }
+
+input { display: none; }
+#math-content, #cpsc-content, #ling-content { display: none; }
+#tabs { display: flex; flex-direction: row; }
+#tabs label h2 { margin: 0 1em 0 0; }
+
+#math-input:checked ~ #math-content,
+#cpsc-input:checked ~ #cpsc-content,
+#ling-input:checked ~ #ling-content
+{ display: block; }
+
+#math-tab h2, #cpsc-tab h2, #ling-tab h2
+{ font-weight: normal; cursor: pointer; }
+
+#math-input:checked ~ #tabs #math-tab h2,
+#cpsc-input:checked ~ #tabs #cpsc-tab h2,
+#ling-input:checked ~ #tabs #ling-tab h2
+{ font-weight: bold; }
+</style>
+
+<h1>Textbooks</h1>
+<p class="indent">This is a collection of textbooks and other curriculums that I've had recommended to me, or ran into online, or just seem rather interesting. Many (most) of these I've not read, but do intend to. This page serves two purposes: as a bibliography, and in keeping track of my backlog.</p>
+<p class="indent">The ones which I have read or am in the process of reading and found particularly wonderful are marked with a ✨. Works freely available online are marked with the <code>free</code> tag. Works considered somewhat foundational or reference works are marked with the <code>canonical</code> tag. Works that are notably more difficult than others in their category are marked with the <code>dense</code> tag.</p>
+
+<div id="what-the-fuck-why-do-i-need-this-div">
+<input name="group" type="radio" id="math-input" checked/>
+<input name="group" type="radio" id="cpsc-input"/>
+<input name="group" type="radio" id="ling-input"/>
+
+<nav id="tabs">
+ <label id="math-tab" for="math-input"><h2>Mathematics</h2></label>
+ <label id="cpsc-tab" for="cpsc-input"><h2>Computer Science</h2></label>
+ <label id="ling-tab" for="ling-input"><h2>Linguistics</h2></label>
+</nav>
+
+<div id="math-content">
+<h3>Elementary Algebra & Calculus</h3>
+<p>
+ ✨ <a href="https://tutorial.math.lamar.edu/">Paul's Online Math Notes</a> <tag>free</tag>
+ <br>
+ <i>Paul Dawkins</i>
+ <br>
+ In terms of pure reach, these might be the most popular math text in the age of the internet... their SEO is, surprisingly, well-matched by their quality of writing. I have fond memories of these being the go-to guide in high school calculus, and they've served me well in a few of my university courses, too.
+</p>
+<p>
+ <a href="https://personal.math.ubc.ca/~CLP/">CLP Calculus</a> <tag>free</tag>
+ <br>
+ <i>University of British Columbia</i>
+ <br>
+ These are put together by professors at the University of British Columbia for specifically the University of British Columbia's combined engineering-mathematics calculus classes. They're pretty standard, pretty good calculus textbooks with lots of practice problems.
+</p>
+<p>
+ <a href="https://openstax.org/subjects/math">OpenStax Mathematics</a> <tag>free</tag>
+ <br>
+ <i>Rice University</i>
+</p>
+<p>
+ <a href="https://annas-archive.org/md5/e454499f9adab996b08a3d8d59f2c2c2">Calculus</a> <tag>canonical</tag> <tag>dense</tag>
+ <br>
+ <i>Michael Spivak</i>
+ <br>
+ This is a rigorous treatment of calculus, suitable to a first year university course.
+</p>
+<h3>Introductory Proof</h3>
+<p>
+ <a href="https://www.people.vcu.edu/~rhammack/BookOfProof/">Book of Proof</a> <tag>free</tag>
+ <br>
+ <i>Richard Hammack</i>
+</p>
+<p>
+ <a href="https://annas-archive.org/md5/ca39db006623086dcebec5b351d0a50e">How to Prove It: A Structured Approach</a>
+ <br>
+ <i>Daniel J. Velleman</i>
+</p>
+<p>
+ <a href="https://annas-archive.org/md5/b67298cbe7b0b63977f4845d0258e92b">Mathematical Proofs: A Transition to Advanced Mathematics</a>
+ <br>
+ <i>Gary Chartrand, Albert D. Polimeni, Ping Zhang</i>
+</p>
+<p>
+ <a href="https://personal.math.ubc.ca/~PLP/book">PLP: An introduction to mathematical proof</a>
+ <br>
+ <i>University of British Columbia</i>
+</p>
+<h3>Linear Algebra</h3>
+<p>
+ <a href="https://textbooks.math.gatech.edu/ila/">Interactive Linear Algebra</a> (<a href="https://personal.math.ubc.ca/~tbjw/ila/">UBC version</a>) <tag>free</tag>
+ <br>
+ <i>Georgia Tech</i>
+ <br>
+ This textbook is rather fancy. It gives an excellent visual intuition for linear algebra by using interactive web animations to <i>show</i> transformations in 2D and 3D spaces. However, it does not cover terribly much: making no attempt to be rigorous or cover that not directly useful for engineering.
+</p>
+<p>
+ <a href="https://annas-archive.org/md5/2b35ab06600e7e6b3999c47beef2599e">Finite-Dimensional Vector Spaces</a>
+ <br>
+ <i>Paul R. Halmos</i>
+</p>
+<p>
+ <a href="https://linear.axler.net/">Linear Algebra Done Right</a> <tag>free</tag>
+ <br>
+ <i>Sheldon Axler</i>
+</p>
+<p>
+ <a href="https://sites.google.com/a/brown.edu/sergei-treil-homepage/linear-algebra-done-wrong">Linear Algebra Done Wrong</a> <tag>free</tag>
+ <br>
+ <i>Sergei Treil</i>
+</p>
+<p>
+ Linear Algebra
+ <br>
+ <i>Kenneth Hoffman & Ray Kunze</i>
+</p>
+I do <b>not</b> recommend Strang's linear algebra... out of spite, mostly
+<h3>Abstract Algebra</h3>
+<p>
+ 📖 <a href="https://annas-archive.org/md5/6851c60611456d83fcd8cfbe7461085d">Abstract Algebra</a>
+ <br>
+ <i>David S. Dummit & Richard M. Foote</i>
+ <br>
+ This is as close to a canonical text for undergraduate algebra as it gets.
+</p>
+<p>
+ 📖 <a href="algebra-chapter-0.pdf">Algebra: Chapter 0</a>
+ <br>
+ <i>Paolo Aluffi</i>
+ <br>
+ A category-theoretic approach to algebra. Possibly best fit for a second course.
+</p>
+<p>
+ Undergraduate Algebra
+ <br>
+ <i>Serge Lang</i>
+</p>
+<p>
+ Algebra <tag>dense</tag>
+ <br>
+ <i>Serge Lang</i>
+ <br>
+ This is a reference work and not suitable for a course in algebra on its own, in the reviewer's opinion. It presents clear propositions and proofs with few examples.
+</p>
+<p>
+ Algebra <tag>dense</tag>
+ <br>
+ <i>Michael Artin</i>
+ <br>
+ Abstract algebra with a distinct focus on how it relates to matrices. I have only briefly glanced at this text. It is perhaps notable that Lang (above) was Artin's student, and wrote his work with Artin's in mind.
+</p>
+<p>
+ An Introduction to the Theory of Groups
+ <br>
+ <i>Joseph J. Rotman</i>
+</p>
+<h3>Real Analysis</h3>
+<p>
+ <a href="https://annas-archive.org/md5/850af3cc9b1c5dcb7dcf1fe82691a69b">Analysis I</a>
+ <br>
+ <i>Terence Tao</i>
+</p>
+<p>
+ <a href="https://annas-archive.org/md5/c01cc86f354925ca82ca67f2513822c0">Analysis II</a>
+ <br>
+ <i>Terence Tao</i>
+</p>
+<p>
+ <a href="https://annas-archive.org/md5/badc0b6fc361caf65f7926d54a26e4bf">Principles of Mathematical Analysis</a> <tag>canonical</tag>
+ <br>
+ <i>Walter Rudin</i>
+</p>
+<h3>Complex Analysis</h3>
+<p>
+ <a href="https://annas-archive.org/md5/7216ec296fad05ffaee839feca42054e">Complex Analysis</a> <tag>canonical</tag> <tag>dense</tag>
+ <br>
+ <i>Lars Ahlfors</i>
+</p>
+<h3>Measure Theory</h3>
+<p>
+ <a href="https://annas-archive.org/md5/a52a695373b9289688fc9ce7835487ef">Real Analysis: Modern Techniques and Their Applications</a>
+ <br>
+ <i>Gerald B. Folland</i>
+</p>
+<p>
+ <a href="https://annas-archive.org/md5/1a7025c97cf347e6e133d85619ec16b1">Real & Complex Analysis</a> <tag>dense</tag>
+ <br>
+ <i>Walter Rudin</i>
+</p>
+<p>
+ <a href="https://terrytao.files.wordpress.com/2012/12/gsm-126-tao5-measure-book.pdf">An Introduction to Measure Theory</a> <tag>free</tag>
+ <br>
+ <i>Terence Tao</i>
+</p>
+<h3>Number Theory</h3>
+<p>
+ An Introduction to the Theory of Numbers <tag>canonical</tag>
+ <br>
+ <i>G. H. Hardy & Edward M. Wright</i>
+</p>
+<p>
+ An Introduction to the Theory of Numbers <tag>canonical</tag>
+ <br>
+ <i>Ivan Niven, Herbert S. Zuckerman, Hugh L. Montgomery</i>
+</p>
+<h3>Elliptic Curves</h3>
+<p>
+ Rational Points on Elliptic Curves
+ <br>
+ <i>Joseph H. Silverman & John T. Tate</i>
+</p>
+<p>
+ The Arithmetic of Elliptic Curves
+ <br>
+ <i>Joseph H. Silverman</i>
+</p>
+<p>
+ Advanced Topics in the Arithmetic of Elliptic Curves
+ <br>
+ <i>Joseph H. Silverman</i>
+</p>
+<h3>Graph Theory</h3>
+<p>
+ A Walk Through Combinatorics
+ <br>
+ <i>Miklos Bona</i>
+</p>
+<p>
+ Graph Theory <tag>canonical</tag>
+ <br>
+ <i>Reinhard Diestel</i>
+</p>
+<h3>Probability</h3>
+<p>
+ <i>No recommendations</i>
+</p>
+<h3>Topology</h3>
+<p>
+ <a href="https://annas-archive.org/md5/b3d0776e45b0b990be4bb1d07e10b38c">Topology</a> <tag>canonical</tag>
+ <br>
+ <i>James R. Munkres</i>
+</p>
+<p>
+ <a href="https://pi.math.cornell.edu/~hatcher/AT/ATpage.html">Algebraic Topology</a> <tag>free</tag>
+ <br>
+ <i>Allen Hatcher</i>
+</p>
+<h3>Algebraic Geometry</h3>
+<p>
+ Algebraic Geometry <tag>dense</tag>
+ <br>
+ <i>Robin Hartshorne</i>
+</p>
+<h3>Topos Theory</h3>
+<p>
+ Sketches of an Elephant <tag>canonical</tag> <tag>dense</tag>
+ <br>
+ <i>Peter Johnstone</i>
+</p>
+<p>
+ Topoi: The Categorial Analysis of Logic <tag>free</tag>
+ <br>
+ <i>Robert Goldblatt</i>
+</p>
+<p>
+ Sheaves in Geometry and Logic
+ <br>
+ <i>Saunders Mac Lane & Ieke Moerdijk</i>
+</p>
+<h3>Category Theory</h3>
+<p>
+ 📖 <a href="https://arxiv.org/abs/1612.09375">Basic Category Theory</a> <tag>free</tag>
+ <br>
+ <i>Tom Leinster</i>
+</p>
+<p>
+ 📖 <a href="https://annas-archive.org/md5/3f508030f2f6c10914f299379e5fdf26">Category Theory</a>
+ <br>
+ <i>Steve Awodey</i>
+</p>
+<p>
+ <a href="https://annas-archive.org/md5/41a2a83ed873eaffe0668423f0fa5d18">Categories for the Working Mathematician</a> <tag>canonical</tag>
+ <br>
+ <i>Saunders Mac Lane</i>
+</p>
+<p>
+ <a href="https://bartoszmilewski.com/2014/10/28/category-theory-for-programmers-the-preface/">Category Theory for Programmers</a> <tag>free</tag>
+ <br>
+ <i>Bartosz Milewski</i>
+</p>
+<h3>Type Theory</h3>
+<p>
+ ✨ <a href="https://homotopytypetheory.org/">Homotopy Type Theory</a> <tag>free</tag> <tag>canonical</tag>
+ <br>
+ <i>The Institute for Advanced Study</i>
+</p>
+</div>
+
+<div id="cpsc-content">
+<h3>Introduction</h3>
+<p>
+ 📕 <a href="https://htdp.org/">How to Design Programs</a> (HtDP) <tag>free</tag> <tag>canonical</tag>
+ <br>
+ <i>Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi</i>
+ <br>
+ For those with no prior experience. An <a href="https://www.edx.org/course/how-to-code-simple-data">edX course</a> is available.
+</p>
+<p>
+ <a href="https://mitp-content-server.mit.edu/books/content/sectbyfn/books_pres_0/6515/sicp.zip/index.html">Structure and Interpretation of Computer Programs</a> (SICP, The Wizard Book) <tag>free</tag>
+ <br>
+ <i>Harold Abelson, Gerard Jay Sussman, Julie Sussman</i>
+ <br>
+ For those with some prior experience. A <a href="https://cs61a.org/">public course website</a> is available.
+</p>
+<p>
+ <a href="https://automatetheboringstuff.com/">Automate the Boring Stuff with Python</a> <tag>free</tag>
+ <br>
+ <i>Al Sweigart</i>
+ <br>
+ For those who want to learn how to write scripts.
+</p>
+<h3>Compilers</h3>
+<p>
+ 📖 <a href="https://annas-archive.org/md5/90db32d070cfb70ca617e655d5c35529">Compilers: Principles, Techniques, and Tools</a> (The Dragon Book) <tag>canonical</tag>
+ <br>
+ <i>Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman</i>
+</p>
+<p>
+ <a href="https://cs.brown.edu/courses/cs173/2012/book/">Programming Languages: Application and Interpretation (Second Edition)</a> <tag>free</tag>
+ <br>
+ <i>Shriram Krishnamurthi</i>
+</p>
+<h3>Type Systems</h3>
+<p>
+ ✨ <a href="https://annas-archive.org/md5/0ebcb70a6ec987f99cb14cee8bb08481">Types and Programming Languages</a> <tag>canonical</tag>
+ <br>
+ <i>Benjamin C. Pierce</i>
+</p>
+<p>
+ <a href="https://annas-archive.org/md5/7175434efd5620b4b117aa45a01777fa">Advanced Topics in Types and Programming Languages</a>
+ <br>
+ <i>Benjamin C. Pierce</i>
+</p>
+<h3>Formal Methods</h3>
+<p>
+ <a href="https://softwarefoundations.cis.upenn.edu/">Software Foundations</a> (<a href="https://jscoq.github.io/ext/sf/">browser versions</a>) <tag>free</tag> <tag>canonical</tag>
+ <br>
+ <i>Assorted Authors</i>
+</p>
+<h3>Networking</h3>
+<p>
+ <a href="http://tcpipguide.com/">The TCP/IP Guide</a> <tag>free</tag>
+ <br>
+ <i>Charles M. Kozierok</i>
+</p>
+<p>
+ <a href="https://beej.us/guide/bgnet/">Beej's Guide to Network Programming</a> <tag>free</tag>
+ <br>
+ <i>Beej</i>
+</p>
+<h3>Algorithms</h3>
+<p>
+ <a href="https://algorist.com/">The Algorithm Design Manual, 3rd edition</a>
+ <br>
+ <i>Steven Skiena</i>
+ <br>
+ A <i>very</i> modern text on algorithm design. It's comprehensive and charmingly written.
+</p>
+<p>
+ <a href="https://www-cs-faculty.stanford.edu/~knuth/taocp.html">The Art of Computer Programming</a> <tag>canonical</tag>
+ <br>
+ <i>Donald Knuth</i>
+</p>
+<p>
+ Introduction to Automata Theory, Languages, and Computation (The Cinderella Book)
+ <br>
+ <i>John Hopcroft & Jeffrey Ullman</i>
+</p>
+<h3>Operating Systems</h3>
+<p>
+ Operating Systems Concepts (The Dinosaur Book)
+ <br>
+ <i>Avi Silberschatz & James Peterson</i>
+</p>
+<h3>Electronics</h3>
+<p>
+ <a href="https://artofelectronics.net/">The Art of Electronics</a> <tag>canonical</tag>
+ <br>
+ <i>Paul Horowitz & Winfield Hill</i>
+</p>
+<h3>Cryptography</h3>
+<p>
+ 📖 <a href="https://cryptopals.com/">Cryptopals Challenges</a> <tag>free</tag>
+ <br>
+ <i>NCC Group</i>
+</p>
+<p>
+ <a href="https://cryptohack.org/">Cryptohack Challenges</a> <tag>free</tag>
+ <br>
+ <i>hyperreality & jack</i>
+</p>
+<p>
+ <a href="https://annas-archive.org/md5/7d5dc1756540342f85fe9e259a27ccdb">Introduction to Modern Cryptography</a> <tag>canonical</tag>
+ <br>
+ <i>Jonathan Katz & Yehuda Lindell</i>
+</p>
+<h3>Software Engineering</h3>
+<p>
+ <a href="https://browser.engineering/">Web Browser Engineering</a> <tag>free</tag>
+ <br>
+ <i>Pavel Panchekha & Chris Harrelson</i>
+</p>
+<p>
+ <a href="https://craftinginterpreters.com/">Crafting Interpreters</a> <tag>free</tag>
+ <br>
+ <i>Robert Nystrom</i>
+</p>
+<h3>Rust</h3>
+<p>
+ 📕 <a href="https://doc.rust-lang.org/nightly/book/">The Rust Programming Language</a> <tag>free</tag> <tag>canonical</tag>
+ <br>
+ <i>Steve Klabnik & Carol Nichols</i>
+</p>
+<p>
+ <a href="https://rust-for-rustaceans.com/">Rust for Rustaceans</a>
+ <br>
+ <i>Jon Gjenset</i>
+</p>
+<p>
+ <a href="https://doc.rust-lang.org/nightly/nomicon/">The Rustonomicon</a> <tag>free</tag>
+ <br>
+ <i>Aria Desires</i>
+</p>
+<p>
+ <a href="https://marabos.nl/atomics/">Rust Atomics & Locks</a> <tag>free</tag>
+ <br>
+ <i>Mara Bos</i>
+</p>
+<h3>Lean</h3>
+<p>
+ 📖 <a href="https://lean-lang.org/theorem_proving_in_lean4/">Theorem Proving in Lean 4</a> <tag>free</tag>
+ <br>
+ <i>Jeremy Avigad, Leonardo de Moura, Soonho Kong, Sebastian Ullrich</i>
+</p>
+<p>
+ 📖 <a href="https://lean-lang.org/functional_programming_in_lean/">Functional Programming in Lean</a> <tag>free</tag>
+ <br>
+ <i>David Thrane Christiansen</i>
+</p>
+<h3>Agda</h3>
+<p>
+ 📖 <a href="https://plfa.github.io/">Programming Language Foundations in Agda</a> <tag>free</tag>
+ <br>
+ <i>Philip Wadler, Wen Kokke, Jeremy G. Siek</i>
+</p>
+<h3>HTMX</h3>
+<p>
+ 📖 <a href="https://hypermedia.systems/">Hypermedia Systems</a> <tag>free</tag>
+ <br>
+ <i>Carson Gross, Adam Stepinski, Deniz AkÅŸimÅŸek</i>
+</p>
+</div>
+
+<div id="ling-content">
+<h3>Semantics & Pragmatics</h3>
+<p>
+ <a href="https://langsci.github.io/231/main.pdf">Analyzing Meaning</a> <tag>free</tag>
+ <br>
+ <i>Paul R. Kroeger</i>
+</p>
+<p>
+ ✨ <a href="https://eecoppock.info/bootcamp/semantics-boot-camp.pdf">Invitation to Formal Semantics</a> <tag>free</tag> <tag title="i think this will replace heim & kratzer as the standard semantics text. it is very good.">canonical</tag>
+ <br>
+ <i>Elizabeth Coppock & Lucas Champollion</i>
+</p>
+<p>
+ <a href="https://annas-archive.org/md5/2d9c2174690df454700fedcd4a9b237c">Semantics in Generative Grammar</a> <tag>canonical</tag>
+ <br>
+ <i>Irene Heim & Angelika Kratzer</i>
+</p>
+<p>
+ <a href="https://web.mit.edu/fintel/fintel-heim-intensional.pdf">Intensional Semantics</a>
+ <br>
+ <i>Kai von Fintel & Irene Heim</i>
+ <br>
+ The 2011 edition is standard. A newer edition is available <a href="https://github.com/fintelkai/fintel-heim-intensional-notes">on GitHub</a>.
+</p>
+<h3>Syntax & Morphology</h3>
+<p>
+ 📕 An Introduction to Syntactic Analysis and Theory
+ <br>
+ <i>Dominique Sportiche, Hilda Koopman, Edward Stabler</i>
+</p>
+<p>
+ Syntax: A Generative Introduction
+ <br>
+ <i>Andrew Carnie</i>
+ <br>
+ I <b>do not</b> recommend this book. It gets many small and large things wrong.
+</p>
+<h3>Computational Linguistics</h3>
+<p>
+ <a href="https://web.stanford.edu/~jurafsky/slp3/">Speech and Language Processing, Third Edition</a> <tag>free</tag> <tag>canonical</tag>
+ <br>
+ <i>Daniel Jurafsky & James H. Martin</i>
+</p>
+<h3>Phonetics & Phonology</h3>
+<p>
+ <i>No recommendations</i>
+</p>
+</div>
+</div>