As I was working through the books I would capture every numbered definition or theorem in a table, along with all of the explicit cross-references or implicit dependencies. Then I wrote a little D3 app to visualise the graph, with a few customisable views. E.g what is the dependency structure of the chapters? What is the full list of dependencies for a given theorem?
The result is actually pretty interesting, and the different levels of rigor that different authors choose really comes through. I would love to have a few weeks to sink into this project properly and make a public tool out of it.
For that nearly 2000 page PDF, actually I know enough about the contents to suspect that again a dependency structure graph, especially for anyone with a background in Baby Rudin (Principles of Mathematical Analysis), Big Rudin (Real and Complex Analysis or maybe Functional Analysis), surprisingly, would not look very interesting.
From just going through the table of contents, there are a lot of interesting and uncommon topics in those ~2000 pages, but the book looks more like a small encyclopedia or reference than an integrated whole.
And for something that long and in places with some rare topics, there is, surprisingly, especially for the goal of ML (machine learning), comparatively little on probability, stochastic processes, and mathematical statistics.
But in those many pages, there are many topics possibly valuable and not easy to find elsewhere, so keep a copy of the PDF and use it as a reference when appropriate.
Here is a short remark for readers without much background: Don't be afraid to dig in nearly anywhere in the ~2000 pages; maybe you will have to backtrack a little but in general can start nearly anywhere and don't have to read sequentially chapter 1, 2, ....
Warning: Some topics are covered relatively superficially while others have some really rare details.
Broad, Curious Point: The ~2000 pages may be this and that, but it is relatively close to the applied mathematics of operations research and numerical analysis, closer to those fields than what is usually regarded as computer science until computer science wants to absorb the math of operations research and numerical analysis. For more, some of the numerical analysis was, as I recall, mostly of interest for numerical solutions of partial differential equations. That field is also to be subsumed by computer science?
I know these areas well, and I would be hesitant to agree with this statement.
I stand behind my statement.
These are all fundamental OR topics but the book makes different choices on topics to cover. (to be fair, the book does not claim to target OR, so I'm not disagreeing with the book's premise, only yours).
I do think though that the book could benefit from feedback from specialists in each individual area. In some areas, I find the selection of topics to be a little bit "unconventional".
I thought his linear programming coverage was superficial. In particular, I didn't notice any coverage of linear programming for the problem of least cost flows on a network where each arc has a maximum capacity. The nice anti-cycling rule for the version of the simplex algorithm, with strongly feasible bases, is from W. Cunningham, long Chair at the Waterloo Department of Combinatorics and Optimization. It turns out that that algorithm makes a nice dent in the challenges of linear integer programming.
Yes, I saw not much on constraint qualifications. I'm the guy who showed that the Zangwill and Kuhn-Tucker constraint qualifications are independent for problems with only functional constraints -- my work also solved a problem stated but not solved in the famous Arrow, Hurwicz, Uzawa paper on constraint qualifications in mathematical economics.
Any really good book on linear programming is "close" to OR but can be attacked with your objection that it omits lots of OR.
so you're 2 removed from someone whose authority on the matter we would trust?
>I've published peer-reviewed original research, taught graduate courses
lol so does every phd student. not a high bar were' talking about here.
Please review the site guidelines: https://news.ycombinator.com/newsguidelines.html. Note that the first rule under Comments is "Be kind" and the second is "Don't be snarky".
It absolutely depends on the text of course. One one end of the spectrum you have something like Euclid's Elements, where a DAG representation seems to be very well suited to spirit of the text. Of the books that I explored, Baby Rudin came the closest to this ideal. While many of the individual chapters contains long runs of mostly linear development, the interdependence of the chapters is complex, and apparently very carefully considered.
You might be right about the linked textbook. I suspect that there would be a core linear algebra subgraph that most of the rest of the book depends on, but otherwise little else in the way of complex structure.
One thing that occurred to me was that the reductio ad absurdum of this ends up being something like mathematical logic. As you try to capture the dependency structure with more and more precision, you find yourself trying to build a proof assistant.
Still, I think that there's something to be said for studying the structure of great textbooks purely as cultural artifacts.
Naw! Take another pass through Baby Rudin!
Here is some help: With appropriate mild assumptions, a continuous, real value function on a compact set is uniformly continuous. For the finite dimensional space of interest, compact is the same as closed and bounded. That is the main content of the first chapters.
First Application: With uniform continuity, get to show that the Riemann and Riemann Stieltjes sums converge so that those integrals do exist.
Second Application: The uniform limit of a sequence of continuous functions is continuous. This was a question on my Analysis Ph.D. qualifying exam -- I got it! Thus a certain normed space is complete, that is, is a Banach space -- I'm not sure this remark is in the book.
The chapter(s) on sequences and series is used to define ln, sin, cosine so that can do Fourier series.
The exterior algebra is essentially separate.
That's the main stuff.
Don't take the Riemann integral very seriously: The good stuff is Lebesgue's integral (partitions the range instead of the domain) as in the first half of Rudin's Real and Complex Analysis. There also get to see Banach space, Hilbert space, von Neumann's novel proof of the Radon-Nikodym theorem (grown up version of the fundamental theorem of calculus and with astounding power) and the Fourier integral. I won't take off points if you don't read the second half.
Rudin's Functional Analysis -- get to see distributions.
It's not at all clear to me what part of my comment you are correcting.
You wrote
> Of the books that I explored, Baby Rudin came the closest to this ideal. While many of the individual chapters contains long runs of mostly linear development, the interdependence of the chapters is complex, and apparently very carefully considered.
and I removed what was "complex".
Many students hear bad things about Baby Rudin and don't try it. Of students who do try it, too many don't finish well. Of the students who do finish, only a small fraction take a second pass where they will get some of the clarity I typed in for you.
For my Ph.D., there were five qualifying exams. I did the best on four of them, and one of those was Analysis and fairly close to Baby Rudin. The department didn't offer a course to help students prepare for the Analysis exam. So, I was likely the only student who had taken two passes through Baby Rudin; the first pass was in a course; I did okay; the second pass was on my own and slowly; it was fun! The second pass is the main reason I did the best on that exam. The next year the department tried teaching a course from Baby Rudin: They did that for only one year; I can believe that few or none of the students did well with the course. A friend from another department wanted to learn Baby Rudin, took the course, had a hard time, and dropped it. He went away unhappy, and that was sad and not really necessary.
So, my experience with Baby Rudin suggests (i) take a formal course, (ii) use advice such as I gave here to see during the course some clarity in what is going on, how, and why; (iii) also study or glance at one or two other competitive or similar books, e.g., Spivak, Calculus on Manifolds, Fleming, Functions of Several Variables, Kolmogorov and Fomin, Apostol, and more, and (iv) take a second pass through Baby Rudin.
Net, Baby Rudin has discouraged a lot of students, too many. To many students, Baby Rudin looks forbiddingly severe and abstract; students can't figure out what the heck is going on, how, or why. E.g., your view was "complex" -- it can be "simple". With some help, e.g., as I typed in here for you, Baby Rudin can be okay.
I'm saying that after encoding the graph structure I found Baby Rudin contained more complexity (i.e. connectedness) than the other texts that I repeated the excersise for.
I collected the data in a spreadsheet for each text. The columns were "Id, Type, Name, Chapter, Description, Dependencies". Id is the margin reference from the textbook, Type is one of theorem, definition, corollary, etc., Name is for named theorems or definitions, Dependencies is a comma separated list of Ids.
I then had a small Python script that built up a NetworkX [1] representation. Initially I was using Cytoscape [2] to explore the graphs, but then started work on a web interface using dagre-d3 for automated graph layout [3]. This example [4] is very similar to the types of layouts it produced.
I found that a large textbook quickly grows into a big hairy ball, and that it is only useful if you are able to collapse and/or hide nodes intelligently. I.e. show the chapter dependency structure, or look at the sub-DAG involving a selection of nodes. I only got a little way into doing this when I got moved on to other distractions. Shazaam for bird song, or something like that...
[1] https://networkx.github.io/ [2] https://cytoscape.org/ [3] https://github.com/dagrejs/dagre-d3 [4] http://cs.brown.edu/people/jcmace/d3/graph.html?id=small.jso...
Please feel free to run with it youself!