In any case you first need to investigate what is interesting to you, free resources are far from rare and you can probably build yourself a decent curriculum from MIT OCW, Coursera, Udacity and similar websites which you can then study at your own pace with videos and books. If finding a job is not your concern I wouldn't advise putting yourself into debt. See http://www.saylor.org/majors/computer-science/ for an example of curriculum.
Ask HN: How to best acquire theoretical computer science knowledge?
11–20 of 122 posts
Re: Ask HN: How to best acquire theoretical computer science knowledge?
#12[1] http://www.amazon.com/Introduction-Theory-Computation-Michae...
[2] http://www.amazon.com/Introduction-Theory-Computation-Michae...
Re: Ask HN: How to best acquire theoretical computer science knowledge?
#13It depends on how you learn. Some people will recommend Coursera et al., which are great. I tried some Coursera courses, but found that I found the pace too slow and became bored quickly.
For me, reading always works the best, since I can adjust it to my pace. You could look up a curriculum (as someone else suggests) and compose a reading list from that. Also, there are some works where you really can't go wrong. Some examples:
- Structure and Interpretation of Computer Programs, Abelson and Sussman
- Algorithms, Sedgewick, Wayne
- Introduction to Automata Theory, Languages, and Computation, Hopcroft, Motwani, Ullman
Lesser known, but incredibly fun books:
- Purely Functional Data Structures, Chris Okasaki
- The Reasoned Schemer, Friedman, Byrd, Kiselyov (or a good Prolog book).
After learning the foundations, you could branch out to a subfield that interests you.
(Or as Frank Zappa has bluntly put it: “If you want to get laid, go to college. If you want an education, go to the library.”)
Re: Ask HN: How to best acquire theoretical computer science knowledge?
#14Even so you want to be smart about it, and gain the knowledge in such a way such that employers will recognize your expertise. It is for this reason that I would rather recommend the MS. It will at least get you an interview next time you want to change jobs.
Re: Ask HN: How to best acquire theoretical computer science knowledge?
#15Re: Ask HN: How to best acquire theoretical computer science knowledge?
#16First, you need to figure out exactly what you want to learn. By theoretical, what do you mean? If your goal is to be on the same level as other programmers who are CS grads, then you might consider digging into algorithms and data structures and discrete math. This is pretty much the base of anything theoretical you'll do in computer science.
If you're in it to learn, go the udacity route. If, after completing all of their courses, you still feel you have some gaps, then you can go back to school if need be. If, on the other hand, your goal is to go into research, then you'll just have to bone up and go back to grad school to be taken seriously. In research, credentials matter.
Re: Ask HN: How to best acquire theoretical computer science knowledge?
#17So, what is the best way for a proven and largely self taught developer to take their knowledge to the next level? It depends on how you learn. Some people will recommend Coursera et al., which are great. I tried some Coursera courses, but found that I found the pace too slow and became bored quickly. For me, reading always works the best, since I can adjust it to my pace. You could look up a curriculum (as someone e…
Re: Ask HN: How to best acquire theoretical computer science knowledge?
#18Re: Ask HN: How to best acquire theoretical computer science knowledge?
#19Maybe better to choose a particular hard problem that is interesting and focus on that. Something that would be neat to do but isn't as simple as just calling a few library functions.
Re: Ask HN: How to best acquire theoretical computer science knowledge?
#20One way of improving your knowledge is something you have already done. Get another job that will force you to expand your knowledge. I am sure your job experience with your first start up is serving you better than a CS degree. Similarly, a job which involves doing low level computer programming would force you to learn a lot of very practice CS, and you would be getting paid for it instead of the other way around.