I have some students who will major in CS next year. I have taught them some basic algorithms (sorting & searching), e.g. check here How to teach algorithms in an interactive way & Teaching ideas for string algorithm?. I teach they to write some simple python scripts, e.g. What are good, practical labs and activities for loops? and Some real practical example to teach object-oriented concepts and programming (in python)
I want to recommend some books for them (also asked by some students). So I do some research and find this article the most frequently assigned computer science college books in US. I don't know if their data is credible or not (I feel not). I really frown on this book list. I agree with "introduction to algorithms" (although I prefer Sedgewick's "Algorithms") but other books really are not that good. I would rather recommend "Code Complete"(or "Clean Code") instead of some book for a specific programing language.
My first question, how do you interpret this book list? I feel they are poor recommendation/assigned books for a mediocre college in China (I can say this with confidence as I am Chinese)
My second question, what is your recommendation? The goal is to help them keep interested in CS. If the reading can help them better prepare for their undergraduate study that is a plus. When thinking about my recommendation I reread Paul Graham's "Hackers & Painters"(he talked about his high school life in the book) but I found I didn't enjoy reading it this time. It feels old and outdated.
The comment from "njuffa" mentioned "Programming Pearls". There are couple of reasons I didn't consider "Programming Pearls".
- I try to avoid c++. I believe c++ should not be kids' first or second language. As a matter of fact I will advice them learn c++ until they absolute must, say a job/project requires to use c++.
- If I remember correctly the book is mainly about algorithm, but then we already have enough books for algorithm, e.g. I would rather recommend "Grokking Algorithms: An Illustrated Guide for Programmers and Other Curious People" instead of a book in 1999.
- I normally don't recommend any "old" book for my students, (whether we should still read "The Mythical Man-Month" can be another topic) but this lead to my next point.
- "The Pragmatic Programmer" 1st version also published in 1999 but I see it has a 20th Anniversary Edition. I don't read this new edition. So if you read this new edition will you recommend it to undergraduate student ?
- I am thinking about recommending books about Operating Systems because they heard these terms iOS, watchOS, macOS all the time. But I can't find an easy one. Most books about Operating Systems are too thick and I believe they will study OS theory in college, so I just need some easy(interesting if possible) introduction material.
BTW, I asked a related question here "Do the most popular college books in the US include "The Communist Manifesto" & "The Republic"?"
--- update ---
I found Cormen answered a similar question on quora "What is the best introduction to computer science books?, to quote
At Dartmouth, we do not assign a textbook in our introductory course. We use a set of lecture notes on the Web that Devin Balkcom, Hany Farid, and I have written over the years. So, my answer is that I have no answer.
And Alan Kay answered this on quora "What are the best books to understand computer science concepts?"
By far the best book for the general public — the one I always recommend — is “The Pattern on the Stone” by Danny Hillis.
I never heard of "The Pattern on the Stone" and I find it is also an old book.
So I guess I have asked a difficult question.😅
--- update 2023.2.12---
I find this serial "How Computer Works" by https://code.org/ is quite good. I have checked many videos there https://www.youtube.com/@codeorg and highly recommend them. It is a pity it only has an English version.