Technically, I started reading in April, but look at that stack! I'm not spending too much time reading on a daily basis right now. I want to get past the learning phase, then once I've had enough exposure to the main requirements for a coding interview, I'll spend half the day reading and the other half doing programming problems.
The full list of everything I'm studying is in this Github repo:
Page counts do not include indices or reference appendices. Some appendices include useful additional learning, and some are just for quick lookups.
- The C Programming Language 2nd Edition - 261 pages
- C++ Primer Plus (Developer's Library), 6th Edition - 1,200 pages
- The Unix Programming Environment - 327 pages
Programming Pearls, 2nd Edition- 231 pages
- an interesting read, but not necessary
Algorithms and Programming: Problems and Solutions- 211 pages
- The Algorithm Design Manual, 2nd Edition - 656 pages
Introduction to Algorithms, 3rd Edition- 1,229 pages
- Instead of reading this, time is better spent on other coding problem books or online coding problems
- Programming Interviews Exposed: Secrets to Landing Your Next Job, 3rd Edition - 283 pages
- Cracking the Coding Interview: 189 Programming Questions and Solutions, 6th Edition - 695 pages
In total, it's 5,093 pages.
The order listed is the order in which I'm reading them.
The C and C++ books are meant to re-teach me C and C++. I've had only a little exposure to them, since I've spent my entire career doing web development, so C and C++ haven't been needed in my daily work. For the job interview and my new career as a software engineer, I need to know them, and, more importantly, I want to know them. I'm digging down though the abstraction layers to get as close to the metal as possible, without doing assembly code.
I've always been mystified by uses of awk, sed, and even grep at times. I can work in the shell, but don't understand why some things are done in a certain way. The Unix Programming Environment has the answers, and is a solid foundation in the whys and hows of any *nix system. Later I'll move on to reading something modern and Linux-focused.
The The Algorithm Design Manual is recommended by Steve Yegge, whose blog post is well-known. He also mentions Introduction to Algorithms if you want to be prepped, and I do.
Programming Interviews Exposed has been around a long time and is a recommended read.
Programming Pearls was recommended by a lot of people.
Cracking the Coding Interview is generally highly recommended by multiple sources for a review of concepts and programming questions. Don't fear its size. The pages are thick. The C++ book, on the other hand, has almost onion-skin paper.
Why so many?
I'm coming from many years of writing software, but almost no computer science training. So I have a lot to learn to get the basics. Some would say I'm over-preparing, but to me, it's worth it. I want to nail this interview.
Where to get them
Some of these books can only be bought used, and in some cases, near-new or new us pretty expensive, especially for college textbooks.
Amazon sells new and also via merchants, where the prices can range from $5 to $200. Half.com is one of my favorite places to get old textbooks. They usually have everything, and if you're OK with having pages highlighted or scribbled with margin notes, you can save a lot of money. You want your books to have some history, right?
You can also rent textbooks on Kindle or Kindle app if you only need them for a month or two.