Ask HN: What, in your opinion, are the greatest and most useful textbooks?

I learned more about electronics by hacking LTSpice, reading Jim Williams and Bob Pease, than from textbooks.

1. Get Williams books. I think there are two.
2. Figure out a way to get Pease’s columns from Electronics Design archives.
3. Download all the old Linear Technology App Notes while they are still available from Analog Devices.
4. TI has great app notes too, and software.
5. Learn LTSpice, perhaps the best engineering freeware ever.

Your link [2] doesn’t work. If you were linking to Incropera-Dewitt its a great book!

Everyone’s gonna inundate you with their 20 favorite textbooks when you have such a general question.

For me, books for self-studying should have a slightly informal tone and ramble a little. The book is your teacher, and I’d like my teacher to speak to me as a student, not a theorem prover, as least when I’m starting. Spivak, Pugh and Axler are some good examples, while I could only grok Rudin after learning all the basic.

Not a lot of experience with physics but I like Symon’s Classical Mechanics and Purcell for the same reason. Kleppner’s mechanics book has very good exercises too.

Spivak’s Calculus is the best-written textbook I’ve ever encountered and one of the more beautiful examples of book design also.

For formal engineering, Calculus, Sixth Edition, by Earl Swokowski, Michael Olinick, and Dennis D. Pence is the ultimate book to use. Also, my twin brother used it to teach himself Calculus 2.

Swokowski wrote phenomenal books, in math, just in general.

All Spivak books are masterpieces (including the last one about physics).

By “Axler”, you surely mean the one with the catchy title, about linear algebra. I find it unbearable. The book says: “determinants are difficult and nonintuitive”; anybody who understands determinants: “man, it’s the damn area and volume”.

Yes indeed. Purcell’s Electricity and Magnetism book is so good, I could understand E & M from a sophisticated point of you even though I could do vector calculus only on very symmetrical situations. And Kleppner/Kolenkow books and Anthony French books are well written.

– Norvig’s AI: Doesn’t have much deep learning, but you get through it and understand the expansiveness of the field.

– Algorithms – Papadimitrou and Vazirani: I had a professor who described this as a poetry book about algorithms. Alternative is Sipser

– An Introduction to Statistical Learning: This is like a diet form of Elements of Statistical Learning which is much more approachable and pragmatic.

– Janeway’s Immunobiology – De facto standard of immunology. Great.

– SICP: duh

– Principles of Data Integration: This is more because the subject matter is so important and nobody really has studied fundamentals. Did you know general data integration is AI-complete? If 99% of work in AI was spent on data integration, the field would move so much faster.

On History: Not textbooks, but if you want an enticing read to relatively recent times, I suggest biographies.

Ron Chernov: Alexander Hamilton. An excellent introduction to the birth of US. As a european US history is not that well covered in our school. There’s also the musical version by Lin Manuel Miranda which alone is worth a few books of education alone.

On the birth of modern india:
Herman: Gandhi & Churchill: The Epic Rivalry that Destroyed an Empire and Forged Our Age

On the roman world:
Julius Caesar: Gallic wars.
This is a surprisingly readable book given that it’s a propaganda piece written two thousands years ago. Highly recommended as it gives insight to just how organized-yet-cruel the ancient world was.

General history:

Acemoglu: Why nations fail. This is a must read. It attempts to explain (with great success) how institutions have molded the modern states into the way they are now, and what exactly seems to be at the root of inequality and prosperity.

If I had to recommend two books, “Why nations fail” would always be one on that list.

Glimpses of World History, a book published by Jawaharlal Nehru in 1934, is a panoramic sweep of the history of humankind.
A People’s History of the World: From the Stone Age to the New Millennium

Edmund Morris: The Rise of Theodore Roosevelt is an amazing biography. It read like an adventure novel.

Edward Tufte’s books, “Envisioning Information” and “The Visual Display of Quantitative Information”.

Why suggest these books that seem just about graphic design, to an audience of mainly software developers? Well, aside from the stylistic points about graphical plots and figures, it is more deeply about being able to communicate effectively, with intention.

I find that all too commonly, many junior people who code are unable (or maybe more charitably, unpracticed) at formulating arguments or explanations for why something exists in the form it does, or how it ought to be designed, in a way that they can coherently explain to someone not deep in their code. It usually means that they have not spent time thinking about it deeply, and are stuck in the “show me lines of code to explain what something is” mode of thinking. Or that they can only explain the approach in terms of the specific lines they are writing — they have not moved beyond that level of understanding.

I won’t say it to the person generally, but I really have to bite my tongue when working with someone who has no way of explaining something (at an overall approach level) other than showing me lines of code. Stepping out of that realm into graphical communication is one way.

Being able to think graphically in a coherent way as a software developer means you start to think about how to explain your work to others as more than lines of code — and in explaining to others, improving your own understanding of what you’re writing. Btw, it also probably means that you’re more likely move beyond the role of just a plain old software developer and become someone responsible for the design of systems, the direction of work.

For whatever reason people are often tempted to victimize themselves and assume that everyone has it better than them. Which is an incredibly slippery and dangerous slope(looking at the news over the last few years). And with that in mind, “Factfulness” by Hans Rosling is a __MUST__ imo. Once you wrap your head around the facts, a next good choice is “The Black Swan” and “Antifragile” by Nassim Nicholas Taleb, despite some (to a certain extent justified) bashing on tech people. Note to self: need to pick up “Skin in the Game”.

Completely with you about Spivak, as far as calculus goes.

Physics: recently picked up Walter Lewin’s “For the Love of Physics” and it’s a masterpiece. Didn’t get the chance to finish it because of the pandemic and it got locked in the office but it appears he’s managed to cram in an entire university course in one book.

Biology and anatomy – “The Selfish Gene” by Richard Dawkins is brilliant entry point for people with limited knowledge on the subject.

Chemistry – no idea, that’s the one subject which I hated with a passion since I was a child. Very paradoxical, given that physics was arguably my favorite subject ¯_(ツ)_/¯…

History – Yuval Noah Harari’s books, though somewhat anecdotal as far as history is concerned. I’d say there are way too many to list here and there is way too much to read about all major events in history to fit in just a few books.

Are these textbooks? I think they are more fact-oriented popular literature. I thought textbooks were the expensive kind that are part of university courses curriculum.

~ish. All of those are imo perfect introductions to each of those subjects and can give you an idea where your next step should be.

No they are not. It is an absolute disgrace to the other sciences if you put stuff like The Selfish Gene in the same class as Spivak. Do you want people to go around telling CS beginners that Hackers and Painters is an introductory CS textbook? Or to tell a student of complexity theory that the best way to study NP-completeness is through reading Gödel, Escher, Bach?

I’m sorry, when exactly did I say they are in the same class? I’m not a biologist in any way, nor I ever claimed to be one. You could say the same about Harari in that respect. I am talking about introductions. It’s the same story with Lewin. It’s nowhere near The Feynman Lectures on Physics but those are simply not something suitable for self-education(which is what OP has clearly stated).

Harari: 1) Wheat domesticated us, not us wheat.
2) “People think in stories”
Drivel, but popular withe IQ 105-120 set.

in the vein of the others you posted, “psycho cybernetics” is another good one I’d group with that genre

The 2nd edition of Statistical Rethinking by Richard McElreath came out recently and is great. It’s a rare thing to want to read a statistics textbook cover to cover but I did with this and enjoyed it. The practice questions are very well designed and I think get the difficulty about right for the target audience (natural and social science post-grad students).

If R isn’t your bag then there are many translations of the code examples to other languages available online.

Statistical Rethinking is solid for learning very, very, complicated concepts, such as various tricky implementations of Markov chain Monte Carlo.

For Chemistry – Atkins’ Physical Chemistry and Claydens’ Organic Chemistry are the bibles.

Will take you from undergrad to bits of grad school. Encompassing and clear.

It was a bit harder to find as good a bible for inorganic chemistry.

Softley’ Atomic Spectra and Keeler’s Why Chemical Reactions Happen are phenomenal primers too but are a bit smaller in scope than the aforementioned two.

The same Atkins from above also wrote Molecular Quantum Mechanics which is also a solid text

I’m a big fan of all of these. Clayden is very gentle (or maybe that’s just Org being easy…). But Atkins gets hard quite fast—-the chat from first years is that beginners will find it a bit tough. I’d generally recommend the cut down Atkins to start (Elements of…) or if you prefer pop Sci The Second Law was great as an UG trying to wrap my head around this. Creation Revisited also rocks.

Yeah Atkins was quite heavy. That said, I think it does a good job of being self-contained. You could more or less get 80-90% of what you need with only that text from high school knowledge. But without additional resources and teachers supplementing, it will probably be too gruelling.

I think that’s more because physical chemistry is quite hard

I second atkins, it’s a classic and covers base to more advanced subjects very well imo.

I feel it takes time to read, but it’s the one book that provided the most value in my understanding of chemistry.

For a solid introduction to undergrad chemistry, I’d recommend Nivaldo Tro, Chemistry: A Molecular Approach.

SICP is great for me because I get new things from it on repeated readings. The original content is ostensibly suitable for a freshman (provided you are familiar with the mathematical domain) but the ideas around abstraction and modularity are timeless. If you study and reflect on the content, Sussman and Abelson are truly trying to guide the student to arrive at an appreciation of software engineering concepts.

I remember there being a question where after implementing a tree where the leaf nodes are represented as a list, they then pose the question – how much of your code needs to change if you needed to reimplement them as a pair?

The point being a pithy lesson in indirection/abstraction – had the student set up named accessors, there would be very little code to change.

To me the crown jewl of SICP is the universal scheme interpreter they build in the later chapters. That opens the book to be used in _any_ language. Now we have an internet there are hobby schemes implemented in every language, so it’s fairly easy to find ideas if you are stuck implementing the necessary substrate using the language of your choice (ie. mostly tokenizer, parser and some form of eval/apply).

Had. Unfortunately Professor MacKay passed away from cancer in 2016. We lost a great soul.

I concur that his textbook and sense of humor were fantastic. It was very enjoyable for me to learn the material from his lectures. They are a great supplement to the textbook (or maybe vice versa?) and you can find them here: https://youtu.be/BCiZc0n6COY

History: imo, forget about textbooks. Books are much much better. Textbooks are less readable meant for people who will force themselves to go to lectures, revise, revise, write notes and actually study.

– “The Third Reich Trilogy” from Richard J. Evans about Germany during WWII is the best thing I read about WWII.

Now I am reading “The rebellious life of Mrs Rosa Park”, pretty good too, although the topic is super specific.

Also, I would also recommend to have a look at “Lectures in History” podcast from c-span. They are are lectures from universities about American History. The lectures also contain book recommendations, so if you are interested in this or that topic, they are good source of books.

Computer Systems: A Programmer’s Perspective. Flies a little under the radar. I’m definitely biased here (TA’ed the class that originated it). But by the end of it I left with a decent understanding of x86-64 assembly to the point that I could hand compile C functions. And also a rough and ready understanding of how shells, malloc, and web servers work.

I am planning to go through this book later this year. Can you help me understand what the difference is between this and Hennessey Patterson’s book Computer Organization and Architecture? Like, why would/should I study x86_64/ARM/RISC V/MIPS/anything else? Is there a difference in approach or the architecture?

They are complementary and not the same. I very highly recommend that you get and study “Computer Systems: A Programmer’s Perspective, 3rd edition” since it is a very practical and detail oriented book(i.e. no hand-waving and full of code for x86-64) for the Programmer. Hennessy & Patterson’s “Computer Organization and Design: The Hardware/Software Interface” is more high-level with not enough depth while their “Computer Architecture: A Quantitative Approach” is full on theory book.

I just took a course at my college based upon this book and 15-213 although I believe we follow a less intense version than 15-213 (one of the variation the book recommends).

It’s really helpful that I actually bought a copy to keep. (I don’t really buy textbooks, I just get them from the library.)

In my field it is Computer Networking: A Top-down Approach by Kurose. I’ve been using it as the main textbook for computer networking course for more than ten years.

On related notes, for the past few weeks I’ve spent countless hours searching and compiling good to excellent textbooks in the field of engineering and computer science. Perhaps I can share the information in the near future.

Look into teachyourselfcs.com. They have a good list of areas every good programmer should be comfortable with and a recommendation for books/lectures that teaches that well. They explain why each area is important to learn and why the book is an apt choice.

They recommend Kurose and Ross for networking too, though I disagree. I feel like High Performance Browser Networking (free at hpbn.co) is superior.

I can second Spivak. Apart from the classic calculus textbook, he has written Calculus on Manifolds which is also a nice introduction into differential geometry.

He also has a huge multi-volume textbook on differential geometry per se but I never read it. Probably brilliant as well.

Halliday and Resnick, 60’s version.
Feynman’s Lectures.
Thomas’s Calculus books.
The Scientist and Engineer’s Guide to
Digital Signal Processing Steven W. Smith, Ph.D. (Has always been available free. So good, I bought a hardcover one.)

Concepts of Programming Languages by Sebesta. This helped me understand what abstractions are all about.

For the theoretical part of computer science, Introduction to the Theory of Computation by Michael Sipser is the best there is.

It covers three main topics:
– Automata theory
– Computability
– Computational Complexity

What I especially liked about the book was how he approached proofs. When introducing a proof, there is first a short “proof idea” paragraph that emphasizes the main approach behind the proof informally. He then gives out the full, formal proof. For self-study, those proofs can sometimes be intimidating, and not strictly necessary depending on your goals, but understanding the ideas was important to understand the topic.

Clinical Microbiology Made Ridiculously Simple.

Fantastic breakdown of micro into understandable and memorable concepts, helped me get through intense classes while making it interesting via funny if cheesy mnemonics and artwork: https://www.amazon.com/Clinical-Microbiology-Made-Ridiculous…

All of the “Made Ridiculously Simple” texts from that publisher are fantastic, but imo the Clinical Microbiology is the best of the best.

Statistics by Freedman et al is a great introduction to statistics. It took me a year to fully read it but the exercises are fun, real world examples of applying statistical methods.

Visual Complex Analysis is the best mathematics book I’ve ever read.

Siegel’s free (and source available IIRC) textbook on quantum field and string theory (can’t comment on treatment of the latter) is a nice, if completely impenetrable by virtue of being enormous, book.

I recommend “Advanced Tire Mechanics” to anyone looking for a proper, modern, book on the subject – Pacejka’s writing is messy and dull.

History:

I asked on /r/askhistorians for book suggestions on the history of China.

>The History of Imperial China series edited by Timothy Brook consists of six roughly 200-page long volumes, each of which covers one or two dynastic periods.

I read the first volume and enjoyed it. And I feel safe in recommending the set given the endorsement from a scholar on the topic.

Highly subjective but:

K&R indeed and K&Pike’s ‘The Practice of Programming’.

Vince’s ‘Mathematics for computer graphics’ (haven’t read his calculus book but it’s on the wishlist).

Petzold’s ‘Code’.

Leventhal’s Z80 and MC68000 books back in the day.

In mechanical engineering:

– Mechanical Engineering Design, Shigley

– Mechanism and Mechanical Devices Sourcebook, Sclater

– Foundations of Mechanical Accuracy, Moore

– Machinery’s Handbook

– Structure and Interpretation of… Classical Mechanics, Sussman

And just for fun:

– 507 Mechanical Movements, Brown

– Handbook of Compliant Mechanisms, Howell

Michael Sipser’s Introduction to the Theory of Computation. Teaches you formal languages, decidability and complexity theory in a very rigorous way with little prerequisites.

It’s great that you’re the sort of person who learns from text books, but I’m seriously bad at it. Maybe it has something to do with learning styles?

On Baking

It has some good recipes in it, but the instruction it provides on baking and pastry making has really helped me improve my technique over the years.

For biology, assuming a CS/engineering background:

Campbell’s Biology

Synthetic biology: A Primer

An introduction to systems biology by Uri Alon (get the 2020 edition)

O’Reilly: Biobuilder

A good Open Courseware companion for the SynthBio texts is 20.305x Principles of Synthetic Biology.

The Elements of Computing Systems – Noam Nisan and Shimon Schocken (MIT Press)

It’s used in the Nand2Tetris course[1].

It guides you through building a computer and writing an assembler and compiler.

It’s not so much a textbook you read as a textbook you do.

[1] https://www.nand2tetris.org/

K&R, Spivak, Randal’s Learning Perl, Cricket’s DNS and Bind, Petzold’s Windows Programming

Flipping through the Smalltalk books was an eye-opener back in the day.

There’s an amazing but little-known book in the same printing style as K&R about systems software from the MCC consortium, with tons of C source code.

Computer system architecture

Morris Mano

At the end of the book, you are able to design the entire computer architecture from humble logic gates.

It’s a funny coincidence you reccomend that book, since it’s already in my library. Found it at a local dump by chance. Had no idea it was well-regarded.

It holds your hand through creating memory, adders, muxers from logic gates and then finally ending up with a virtual machine you can actually program with a made up assembly language.

Because of it, I have a perspective on constraints and state machines that helps with my day job as a programmer and distinguishes me from collegues.

Sometimes even a dump can contain great wisdom.

In Computer Graphics, I’d give mad props to Wolfgang Engel. He’s authored, edited and contributed to foundational reference series: GPU Gems, ShaderX, GPU Pro, GPU Zen. He was also an evangelist for GPGPU a decade before it became the modern basis for AI research 😉

My choice although its not comp.sci is ’22 immutable Laws Of Marketing’ As most coders marketing doesn’t come as easy to me as coding but damn this old little gem is full of practical mental models and use cases. Very easy read and does not read like a textbook.

Never Split the Difference, by Chris Voss, a former FBI hostage negotiator. Not a textbook exactly, but its the book on negotiation I think everybody should read. His interviews and lectures on youtube are pretty good too.

I found it a little bit naive. His examples from hosting situations are very interesting, but I think the generalizations too vague to be useful and the application of the discovered principles in business quite unrealistic.

“application of the discovered principles in business quite unrealistic.”

I’m not so sure. The main point of the book I think was that very few negotiations are rational. That’s the key message. Then there are lots of anecdotes and self promotion which are not that helpfull. But the key message, I think, is solid.

Most people go to a room expecting some sort of analytic hammering out between two equal parties, when in reality if the other party is prepared with some sort of influence tactic based script and the one is not, the one with the plan comes out winner, especially if the other party is not prepared.

Just ask telemarketers.

If one of the agent in a two party negotiation has a script and a strategy then if the other party does not, the one that has any kind of strategy and script is usually ahead. And another key point was – the winning script does need to be rational, it can target emotions and feelings as well.

Again, telemarketers. “Do you want to buy our insurance? No? Wait, think about how terrible it would be if something bad like would happen? Surely you would like to be prepared for such an eventuality”

These are of course applicable only to adverserial negotiations, and not all negotiations need to be like that.

Yes, thats definitely a key point: people are not rational creatures, but emotional. The rest of the book is just about ways you can tap into or get around that.

Another key point of the book is to let your counterpart talk as much as possible, while you listen. Really listen. Again, the techniques discussed are tools to help with that.

Everything else is sbout calming the person down, making them feel understood and heard, and unearthing what it is they actually value.

I’ve found the techniques to work well, in my personal and business life. It also clearly worked for him and others, and the many stories and anecdotes show this, not just in histage negotiations, but in other aspects of life

On Food and Cooking is a wonderful introduction to practical everyday food science.

Digital Signal Processing by Alan V. Oppenheim and Ronald W. Schafer

Microelectronic circuits by Adel Sedra and Kenneth C. Smith

Introduction to Linear Algebra by Gilbert Strang

Spivaks Physics for Mathematicians is a blessing – even for physicists.
and Quantum Field Theory for the gifted amateur is a surprisingly fun read.

A Short History of Nearly Everything by Bill Bryson is a nice read on the history and development of science and mathematics.

Hennessy and Patterson’s book on computer architecture.

Gray and Reuter on transaction processing.

History, long form: Durant & Durant, “The Story of Civilization”

History, short form: Orwell, “Animal Farm”

(One of these 20th century works is an extended treatment of a bunch of animal bad apples who lie, cheat, and steal to maintain power over their fellow animals. The other is fiction)

For Biology, and especially for Molecular biology I’d go for:

– Albert’s Molecular Biology of the cell – https://www.amazon.com/dp/0815344325/ref=dp-kindle-redirect?… – It introduces basic Biochemistry, a lot of Genetics and Gene-regulation and Developmental biology. The book also touches other areas (but very vaguely) like Immunology… I think if you read this book you will be able to understand modern Molecular Biology papers.

– Biochem: Legninger’s Principles of Biochemistry https://www.amazon.com/dp/B01K0PYUYQ/ref=dp-kindle-redirect?… – Our prof taught us from this, it has great visuals and covers a lot of areas.

– Developmental biology: Gilbert’s – https://www.amazon.com/Developmental-Biology-Tenth-Scott-Gil… – it introduces more genetic regulation and development for all walks of life

– Human developmental biology: Bruce M. Carlson – Human Embryology and Developmental biology – https://www.amazon.com/Human-Embryology-Developmental-Biolog… – Again it’s the choice of my prof, but I loved it, great images and visual explanations.

– Anatomy: I’d definitely go for anything by Netter -> https://www.amazon.com/Atlas-Human-Anatomy-Netter-Science/dp…

– Cancer: Robert A. Weinberg – The biology of cancer – https://www.amazon.com/Biology-Cancer-2nd-Robert-Weinberg/dp…

– Plant biochem: Biochemistry and Molecular Biology of Plants – https://www.amazon.com/Biochemistry-Molecular-Biology-Plants… – A very good book with great illustrations.

For electronics and Embedded:

– Art of Electronics by Paul Horovitz – https://www.amazon.com/Art-Electronics-Paul-Horowitz-ebook/d… – I saw that others also suggested it, great book

– Paul Scherz – Practical Electronics for inventors – https://www.amazon.com/Practical-Electronics-Inventors-Fourt… – I was introduced to electronics via this book. Not really a textbook but it’s I think it’s a great book to get started, it covers almost the same topics as the Art of Electronics but not as deep and with better visual explanations.

– Embedded systems – Michael Barr – Programming Embedded Systems in C and C++ – I was introduced to embedded software development by this book, when I was working for an IoT company and only had experience with systems and web programming.

Programming (my cherry picked favourites):

– Hacking: The Art of Exploitation – I love this book. I’ve read it after I had a few years of professional programming experience with C#. It introduces programming via C, also every example program is disassembled with GDB. It gives the reader an intuition of how C code compiled and what happens on the register level.

– C in a Nutshell: The Definitive Reference – Usually when you search for good books to learn C from, you get titles like The C programming language, Deep C Secret. But I think C in a Nutshell beats all other C books. (Especially when you read it together with C related chapters from The Art of Exploitation).

– Functional Programming in Scala – https://www.manning.com/books/functional-programming-in-scal… – I saw that other people suggested SICP, and I agree with that, it does a great job introducing to some parts of functional programming. But FPIS also introduces a strictly typed aspect of FP, functional parallelism, functional designs patterns… It’s a great book.

– Concurrency in Go: Tools and Techniques for Developers – https://www.amazon.com/Concurrency-Go-Tools-Techniques-Devel… – I love the Go language and how it handles concurrency. This book does a great job of describing how the go runtime works, and does a great job explaining concurrency in general. Also there are a lot of good design patters in it.

– Professor Frisby’s Mostly Adequate Guide to Functional Programming – https://github.com/MostlyAdequate/mostly-adequate-guide – It’s not a textbook. This is the book that introduced me to FP. I love it, great book.

– Computer Systems: A Programmer’s Perspective – https://www.amazon.com/dp/9332573905/ref=dp-kindle-redirect?… – This was the suggested textbook for https://courses.cs.washington.edu/courses/cse351/ that was also available on Coursera. Great book.

Read More

Share this post

Leave a Reply

Your email address will not be published. Required fields are marked *

scroll to top