Live data from Hacker News

Ask HN: How to best acquire theoretical computer science knowledge?

news.ycombinator.com

51–60 of 122 posts

Re: Ask HN: How to best acquire theoretical computer science knowledge?

#52
post #41

Earlier quoted context omitted.

There isn't really a standard foundation that everyone with a BS in CS has. Curriculum are different and different colleges will emphasize different things, not to mention that many courses are elective. It also depends upon what you consider to be a deep level? Are you interested in electronics and signal processing, mathematics or the structure/design of programming languages? Are you interested in individual compu…

I have no illusions that I could possibly learn it all. I just want to learn enough so that I can go deeper on something more specific, such as virtual worlds, and no how to proceed.

Having a general CS education does not necessarily make you able to explore arbitrary fields. CS programs are ultimately designed by course administrators and professors and can be slow to change, so there's no guarantee that they will prepare you sufficiently to explore whatever avenues you wish to explore later.

Ultimately it depends on where you see your shortcomings that are preventing you from doing what you want. Do you wish you had better credentials so that you could get a job with better pay or more interesting work? Or do you find yourself frustrated because you are not able to sufficiently grok a certain subject area.

Re: Ask HN: How to best acquire theoretical computer science knowledge?

#53
I'm a Devbootcamp alumni, now working in a full time position. Just like you, I wanted to continue my learning and get more knowledge on algorithms, data-structures, and other things DevBootcamp doesn't teach you.

I strongly recommend - Algorithms in a nutshell from O'Reilly (http://www.amazon.com/Algorithms-Nutshell-In-OReilly/dp/0596...)

and - Cracking the Coding interview (http://www.amazon.com/Cracking-Coding-Interview-Programming-...)

Those two books are perfectly concise and straight to the point to understand and learn exactly what you feel you are lacking as a self-taught programmer.

The first one will teach you what you have to know, putting everything into work context, making it really easy to understand why and how this or that algorithm is useful.

Cracking the coding interview then offers really good challenges to practice and master those algorithms. And of course, if you are interested in getting a job, will perfectly prepare you for that ;)

Re: Ask HN: How to best acquire theoretical computer science knowledge?

#54
post #42
post #22

Theoretical computer science is probably not what you mean. Theoretical computer science are things like complexity theory (up to arithmetical hierarchy and randomized and approximation algorithms), theory of recursion (up to e.g. Gödel's theorems), (various kinds of) logic, algorithms and datastructures (full of hardcore probability and statistics), etc. Subjects like that give you a firm grounding in the area of co…

IamA graduate student in theoretical computer science. I don't know that I agree with the poster above with respect to: "a top school would require you to study a bunch of mathematics to gain a certain level of rigor of your thinking" Most good schools require only two courses in "pure theory": first an introduction to discrete mathematics, where you learn about logic and how to prove stuff, a smattering of number th…

I am talking mostly from my own experience (from two or three European universities). A lot of my undergraduate CS programme was very mathematics heavy with a lot of focus on proofs (a lot of calculus, linear algebra, discrete mathematics, graph theory, algebra, even set theory for some, first order and predicate logic) and then of course a lot of foundational CS subjects like automata theory, basic datastructures, crypto, .... I would argue that proper rigorous proofs and thinking are maybe easier taught on the example of calculus or set theory rather than graph theory (I am not talking about discrete mathematics such as combinatorics without much of graphs, etc.). In graph theory, you often resort to doing proofs "by drawing" assuming that a skilled reader would be able to fill in the dots in a formal manner. That said, it's just my opinion and your course may have ways around it.

Re: Ask HN: How to best acquire theoretical computer science knowledge?

#56

So, 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…

>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. You can watch the lectures at 2x speed. ;)

Yeah, but you can't jump to the next lesson - unless you wait until the end of the course and see them all at the time, but then you won't get a certificate because you miss the quiz deadlines.

Re: Ask HN: How to best acquire theoretical computer science knowledge?

#57

So, 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…

The SICP videos are available somewhere and are pretty intense.

SICP Videos - http://www.youtube.com/playlist?list=PLB63C06FAF154F047

Re: Ask HN: How to best acquire theoretical computer science knowledge?

#58

Earlier quoted context omitted.

>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. You can watch the lectures at 2x speed. ;)

Yeah, but you can't jump to the next lesson - unless you wait until the end of the course and see them all at the time, but then you won't get a certificate because you miss the quiz deadlines.

You can do several courses at the same time if you have the spare time.

Re: Ask HN: How to best acquire theoretical computer science knowledge?

#59
I am a law major, who did 1 year of engineering a long time ago. I always been a math geek, but 0 in CS. In my last year of college, i created a startup with some friends. It was a ERP for small lawyers firms. That didnt work out, but turned me on into CS.

Now i work as a product manager in a bigger firm (also law related), and i'm learning how to code through Coursera and Edx. I HIGHLY recommend them.

They are the future. The classes are very good. Way better than a regular class over here (Brazil).

If you are intereste in theoretical CS, here are 2 classes that you may be interested:

Programming Languages (https://www.coursera.org/course/proglang): It focuses on functional programming. The first edition was VERY high recommended. Here you will learn about functional paradigm, and the differences in using it in several languages (some purely functional, like SML, some hybrid, like Ruby)

Automata (https://www.coursera.org/course/automata): It cant get more theoretical than this. The professor is Jeff Ullman. A legend. For free.

Machine Learning: A second version of Andrew Ng just ended. The third edition will be offered soon.

see.stanford.edu is also a very nice place to learn. They are actual stanford classes taped, and offered for free, online. I`m taking the three introdutory classes, and the machine learning classes.

Also, there are several architecture, compilers and algorithms classes too. After my first course (cs50.net), i realized that colleges (at least for CS) are redundant right now. They can be awsome. But, if you are short of money, or are already working, these online classes can fill the gap, easily.

add me on skype if you want to talk about more classes: lucasribeiropereira

See you!

PS. They can be VERY challenge. Take one, at most two at a time. 10-20 hours per week per course is a good rule of thumb

Re: Ask HN: How to best acquire theoretical computer science knowledge?

#60
post #33

Read papers. Read lots of papers. Start with easy ones to learn how to best digest highly academic technical writing then keep pushing. CS is remarkable in how much of its academic knowledge is online, available, for free. Taking advantage of that resource is beyond key. If you know roughly what you want to learn, search out a seminal paper in that area. If it's deep CS, you'll probably find a good one from the 80s.…

I agree with this, and would add that if you go this route, make one of the first papers you read "How to Read a Paper"[1] by Keshav.

[1]: http://ccr.sigcomm.org/online/files/p83-keshavA.pdf

Post reply on HN