summaryrefslogtreecommitdiff
path: root/textbooks.html
blob: 18e01eb7680e1e23d5515add69b37ef0933af0c1 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
---
layout: main
title: textbook recommendations
---

<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> <tag>free</tag>
    <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>