A. K. Dewdney
No other volume provides as broad, as thorough, or as accessible an introduction to the realm of computers as A. K. Dewdney's The Turing Omnibus. Updated and expanded, The Turing Omnibus offers 66 concise, brilliantly written articles on the major points of interest in computer science theory, technology, and applications. New for this tour: updated information on algorithms, detecting primes, noncomputable functions, and self-replicating computers--plus completely new sections on the Mandelbrot set, genetic algorithms, the Newton-Raphson Method, neural networks that learn, DOS systems for personal computers, and computer viruses.
I've always been a largely independent learner gleaning what I can from Wikipedia and various books. However, I fear that I may have biased my self-education by inadvertent omission of topics and concepts. My goal is to teach myself the equivalent of an undergraduate degree in Computer Science from a top university (doesn't matter which one).
To that end, I've purchased and started reading a few academic textbooks:
As well as a few textbooks I have left over from classes I've taken at a mediocre-at-best state university:
My questions are:
Software engineering books are welcome, but in the context of academic study only please. I'm aware of Code Complete and the Pragmatic Programmer, but I'm looking for a more theoretical approach. Thanks!
I think you can use most of the other books for reference and just absorb Programming Pearls in its entirety. Doing so would make you better than 90% of the programmers I've ever met.
The "Gang of Four" Design Patterns book. The Design Patterns course I took in college was probably the most beneficial class I've ever taken.
If I were deciding between hiring two programmers and neither had much experience, but one had a CS degree and the other didn't, I'd hire the one with the CS degree. But when you get to comparing two programmers with a dozen years of experience, the degree hardly matters.
Even i'm in the same plane: studying computer science in my free time after work; These are some of the books i have in my shelf right now
Will udpate this list further as soon as i finish them... :-)
I would add Introduction to the Theory of Computation to the list
A lot of good info about block devices and file structuring which you won't find in any of the books you listed. It got a few critical reviews on Amazon because people didn't like his code examples, but the point of the book is to teach the concepts, not give cut and paste code examples.
Also make sure to get a book on compilers
Biggest two omissions I see:
For operating systems I prefer the Tanenbaum instead of the Silberschatz but both are good:
And about the order, that would depend on your interests. There aren't many prerequisites, automata for compilers is the most obvious one. First read the automata book and then the dragon one.
I don't know all the books you have, but the ones I know are good enough so that may mean the others are decent as well.
And let's not forget some database theory books!
Are there any other sources of programming type riddles on the internet?
I started my set of daily programming riddles, jokes, and quotes partly to help myself and my team grown in some technical areas... like new .NET 3.5 features, design patterns, anti-patterns, code smells, etc.
I would love to find other short programming riddles on the web, but I haven't ran across any yet. Do any of you know any, or would you consider starting to make your own?
Code Kata is in my recent bookmarks.
There is also a good selection of programming puzzle books out there:
While they are not programming puzzles, To Mock a Mockingbird does contain some really good logic puzzles that are beneficial to developers. I was recommended this book by another developer.