TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Ask HN: What's the best way to get a good computer science grounding?

12 pointsby oliverjudgeabout 9 years ago
Every time a new framework or new trendy tool is released, there&#x27;s always the guy in the comments complaining that people are learning the tools, not the technology behind it.<p>Aside from school what&#x27;s the best way currently to get a good grounding in computer science?

9 comments

yolesaberabout 9 years ago
VisuAlgo - <a href="http:&#x2F;&#x2F;visualgo.net&#x2F;" rel="nofollow">http:&#x2F;&#x2F;visualgo.net&#x2F;</a> - is an incredible resource for learning data structures and algorithms. I&#x27;m a visual thinker and it was so helpful in fostering connections between the code and the theory.<p>I would say go through a few of the algorithms there and then try coding some up yourself in your favorite language. Then, once you have a feel for the algorithm I would recommend looking for literature about the algo or whatnot and see if you are able to read the math &#x2F; logic behind it.<p>If you want to get a really solid bottom-up grounding, you could also just read all of Feynman&#x27;s book on computation. His clear and crisp lecturing style is much easier reading material than e.g. Knuth or CLRS <a href="https:&#x2F;&#x2F;www.scribd.com&#x2F;doc&#x2F;52657907&#x2F;Feynman-Lectures-on-Computation" rel="nofollow">https:&#x2F;&#x2F;www.scribd.com&#x2F;doc&#x2F;52657907&#x2F;Feynman-Lectures-on-Comp...</a>
评论 #11663276 未加载
cottonseedabout 9 years ago
There&#x27;s no shortcut: If you want a solid grounding in CS, you need to study CS. Go through a school curriculum without going to school. Most schools have curricula and program requirements online. MIT OCW is a good place to start. If you need more structure, you can find equivalent courses for free on Coursera, edX, etc. If you want to do this but don&#x27;t know how to go about it, or want a &quot;solid grounding&quot; but don&#x27;t quite know what that means or how to go about getting it, start with some of the various &quot;learning how to learn&quot; resources: Cal Newport&#x27;s blog or books, Barbara Oakley&#x27;s &quot;Learning How to Learn&quot; Cousera course and book, 5 Elements of Effective Thinking, etc.
bshefabout 9 years ago
Pick a popular, modern programming language, and go through the official tutorials. Then, think up a small project for yourself, one you can knock out in a weekend or perhaps over the course of a few weekends. Then do it. Maybe it&#x27;s a little game, maybe it&#x27;s a handy utility... it doesn&#x27;t even have to be something new or unique in the world, as long as it is something you haven&#x27;t done before.<p>There, now you can call yourself a coder. Want to upgrade to &quot;programmer&quot; ? Check out languages that are related to the one you just learned. They&#x27;ll be easy to pick up, so repeat the process. AVOID FRAMEWORKS, and just focus on the language and officially-recommended tools.<p>Perhaps start tinkering with a Raspberry Pi or Arduino. Learn about the differences in operating systems between Windows, Mac OS, and Linux. Get familiar with Linux -- Ubuntu is a great starting place if you&#x27;re coming from a Windows background.<p>Make sure you understand the fundamentals of how computers WORK. In particular, experimenting with x86 assembly language will help bridge the gap between what your modern code says, and how your processor interprets the instructions. Also peek into learning things such as Discrete Mathematics (the math of logic), and State Machines and other theoretical concepts of computer science. You probably won&#x27;t use this knowledge directly in the real world, but it&#x27;s the backbone of all computer science... and you will have to take classes that cover this material to get a computer science degree.
tonyonodiabout 9 years ago
I&#x27;m a programmer without a computer science degree and I&#x27;m quite aware that CS is a bit of a blind spot for me so I&#x27;ve tried to read up to rectify this a little.<p>I found The New Turing Omnibus[1] to give a really nice overview of a bunch of topics, some chapters were a lot harder to follow than others but I got a lot from it.<p>Code by Charles Petzold[2] is a book I recommend to anyone who stays still long enough; it&#x27;s a brilliant explanation of how computers work.<p>Structure and Interpretation of Computer Programs (SICP)[3] comes up all the time when this kind of question is asked and for good reason; it&#x27;s definitely my favourite CS&#x2F;programming book, and it&#x27;s available for free online[4].<p>I&#x27;m still a long way off having the kind of education someone with a CS degree would have but those are my recommendations. I&#x27;d love to hear the views of someone more knowledgable.<p>[1] <a href="https:&#x2F;&#x2F;www.amazon.co.uk&#x2F;New-Turing-Omnibus-K-Dewdney&#x2F;dp&#x2F;0805071660" rel="nofollow">https:&#x2F;&#x2F;www.amazon.co.uk&#x2F;New-Turing-Omnibus-K-Dewdney&#x2F;dp&#x2F;080...</a> [2] <a href="https:&#x2F;&#x2F;www.amazon.co.uk&#x2F;Code-Language-Computer-Hardware&#x2F;dp&#x2F;0735611319" rel="nofollow">https:&#x2F;&#x2F;www.amazon.co.uk&#x2F;Code-Language-Computer-Hardware&#x2F;dp&#x2F;...</a> [3] <a href="https:&#x2F;&#x2F;www.amazon.co.uk&#x2F;Structure-Interpretation-Computer-Electrical-Engineering&#x2F;dp&#x2F;0262510871" rel="nofollow">https:&#x2F;&#x2F;www.amazon.co.uk&#x2F;Structure-Interpretation-Computer-E...</a> [4] <a href="https:&#x2F;&#x2F;mitpress.mit.edu&#x2F;sicp&#x2F;full-text&#x2F;book&#x2F;book.html" rel="nofollow">https:&#x2F;&#x2F;mitpress.mit.edu&#x2F;sicp&#x2F;full-text&#x2F;book&#x2F;book.html</a>
SdApartmenyGuyabout 9 years ago
This helped me a lot. Both are free to use &amp; they are the from the same people. First link is like a class (w&#x2F; some videos) + an interactive text book. Second is a text book where you need to download Python in order to follow along.<p>This teaches &quot;What&quot; CS is and how to think like them. Teaches you the basics, what are Algorithms &amp; is actually fun if you really put your effort into it. Good luck!<p><a href="http:&#x2F;&#x2F;interactivepython.org&#x2F;runestone&#x2F;static&#x2F;thinkcspy&#x2F;index.html" rel="nofollow">http:&#x2F;&#x2F;interactivepython.org&#x2F;runestone&#x2F;static&#x2F;thinkcspy&#x2F;inde...</a><p><a href="https:&#x2F;&#x2F;www.cs.hmc.edu&#x2F;csforall&#x2F;index.html" rel="nofollow">https:&#x2F;&#x2F;www.cs.hmc.edu&#x2F;csforall&#x2F;index.html</a>
atmosxabout 9 years ago
I don&#x27;t have formal CS knowledge so everything I say might be wrong.<p>I came to realise that you only gain <i>grounding</i> by working with a stack&#x2F;framework&#x2F;set-of-tools every day. Everything else (reading a book, etc.) is just scratching the surface.<p>Since you can&#x27;t know everything about everything, I&#x27;d say that the best way to learn is to build something. But it&#x27;s one thing to build your own CRUD test-app to learn Rails and another thing to design an app that will need to stash 20 million entries per day in a DB. The choice of the DB becomes, suddenly, a complex matter. Same if you need to handle 100.000 req&#x2F;s ... You can&#x27;t really learn these things on your own.<p>The best thing IMHO to get good grounding is to <i>never</i> stop learning.
评论 #11660519 未加载
_RPMabout 9 years ago
I know you don&#x27;t want to hear about school, but this is exactly what makes higher education so great. You can learn this stuff at a University. Have you considered studying CS at a college?
tmalyabout 9 years ago
study algorithms and data structures. If you can find a good online course take it. If your comfortable learning from a book, go that route.<p>algorithms and data structures are applicable to almost any language out there.
samfisher83about 9 years ago
Read clrs.