Hey Evey, I just finished a bootcamp for programming and i am learning more on my own using resources such as Udacity. Do you have any clue on what books I can learn more theory based topics?
Hey there @whosagentlebutch ! Congrats on finishing your bootcamp and continuing your awesome journey! Sorry it took me so long to respond, I wanted to make sure I could give you some good options. I hope this is still helpful for you. :)
As far as theory goes, after taking C++ and Java programming classes, I went into the following three branches: data structures, algorithms, and operating systems. Personally, I did them in that order and I found that it was ideal for knowledge building purposes. There were some things that I learned about in data structures, for example, that I understood from a theoretical level but didn’t really “get” until I got into operating systems and saw them in action. But your miles may vary on that, we all learn differently.
The two books I used most often for these classes were:
Data Structures and Algorithm Analysis in C++ by Mark Allen Weiss (Amazon link here)
Operating Systems: Internals and Design Principles by William Stallings (Amazon link here)
There’s good news about these two books.
One, honestly you don’t need to read the most recent edition, so if you run across a copy that’s only a few editions behind, you’re basically looking at the same book. This is true for almost all textbooks. (Also true for textbooks: sometimes there’s PDF copies in the wild. Make of that what you will.)
Two, there’s tons of other resources I used while taking these classes. One of the reasons I like the Stallings operating systems book is the absolutely ridiculously huge list of suggested reading he/his editors included in the book. Many of the resources are either papers that can be found online or are books that are (usually) easy to track down. Here is a list of some of the resources Stallings has for the past few editions of the operating systems book. (If you’d like the full list in the back of the book, I can get that together for you, it’ll just take a little while. I’m more than happy to do it, if you’d like though!)
You may already know this, but I’ll go ahead and mention it for anyone else reading: always check for a website of any textbook you’re reading! If it’s a publisher’s website, you may have access to slides or other materials. If it’s an author’s website, they may have errata, suggested reading, and other fun stuff for you to sink your teeth into. You’d be surprised at how much you can find.
The Weiss data structures book is in C++, which may seem unhelpful if you’re never worked with C++. Honestly, my professor didn’t care what language we used as long as our programs worked and were well-written. If you have a good understanding of programming language logic, the language a book is in usually won’t be an issue. There are some finnicky parts to some languages, and the more advanced stuff may present you with speedbumps, but it’s all learning. (And, translating a program from one language to another is really good practice!)
So those are the two textbooks I used most often. I did use the Little Book of Semaphores (which you can find here) as a companion book for my operating systems class, and I highly recommend it. It’s a free book and honestly saved my bacon.
There are, of course, many books and papers available to use if you don’t like/don’t want to use the above mentioned textbooks. Amazon is great at suggesting other books that are in a similar vein as what you’re looking for. Also, the MIT Open Courses are available if you want a more classroom-like setting. Here’s an undergrad Introduction to Algorithms course which has a ton of awesome resources available- including the names of textbooks that they used.
TLDR: three areas of theory that I got into after programming courses: data structures, algorithms, operating systems. Just about any book on these will help you get into that good chewy theory.
Please let me know if there’s anything I can make more clear or anything else you’d like me to post. I’m always happy to share (even if it does take me a few days.. again, sorry for the wait!)













