I've made a pretty good living as a self-taught programmer, but when I find that I discuss some low-level fundamental topics with my peers who have a CS degree, holes appear in my knowledge. I'm a big picture (architecture) guy, so for a long time this hasn't bothered me, but lately I've wondered if there is an approach I can take that will help me learn these fundamentals without going back to school? Are there books, websites or videos that you can recommend that would give me a ground-up perspective as opposed to a learn it as you need it mentality?
|
|
This ought to keep you busy for a couple of weeks: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/ |
|||||
|
|
If you just went through the Structure and Interpretation of Computer Programs book, and did the exercises, you'd have a pretty solid foundation. |
|||
|
|
|
Since I learned a lot from books, I tend to think in terms of books. There are a number of good books for learning about the basics of the craft of programming. At the top of the list, I'd put:
It is largely language-agnostic, and it explains the why's and wherefore's very approachably, and covers a lot of ground in its pages. I like a few other general books - my background gives me a strong Unix bias:
Although Knuth's "The Art of Computer Programming" is in many ways excellent, it is also a daunting set of books to read. You could usefully look at some of the books about algorithms - there are many. After that, it depends on where your main areas of interest and professional duties lie. What is appropriate depends on where you need to specialize. You might want to look at "An Introduction to Database Systems" by C J Date, as a general background on relational databases. Other possible contenders:
In a somewhat different vein, "Software Fundamentals: The Collected Papers by David L Parnas" is an interesting read - but probably not at the top of your priority list. |
||||
|
|
There are several books & topics I consider to be very good. There are a ton of others, but these will get you a long way towards a solid CS education. I've seen other books on these topics, and these - IMO - provide the depth needed for a thoughtful consideration of the matter, at a professional level. Corman's Algorithms Russel & Norvig's AI: A Modern Approach Money & Harris's Digital Design. Hopcroft & Ullman's Introduction to Automata Theory Aho, Ullman, Sethi's Compilers, aka "The Dragon Book" None of these books are nice friendly quick-digesting Apress or O'Reilly books. That is not their purpose. They don't really come with lots of code (exception is Digital Design, which is for sophmores, not seniors), but usually come with a fair amount of math. Difficulty of understanding goes up exponentially when moving into the deeper things. |
|||
|
|
