Live data from Hacker News

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

news.ycombinator.com

101–110 of 122 posts

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

#101
post #79

Doing a BS in CS would be the best, otherwise you will need a ton of self-discipline to learn even a half of what you would learn in a degree program. If you decide to self study, and have enough "mathematical maturity", you will find everything you need on MIT OpenCourseWare, they have all the core courses available online with video lectures, solved homeworks etc. I would start with going through those two first: S…

It is hard to beat a good CS curriculum with real teachers, peers, assignments, tests and grades. These things don't work well for everyone, and the pressure can be pretty intense at times, but damnit that pressure can really burn stuff into your neurons that would otherwise go in one ear and out the other. The overlapping of topics and repetition of important concepts are also typically lacking in a self-learning en…

It is hard to beat a good CS curriculum with real teachers, peers, assignments, tests and grades.

I dunno... I think it depends on the individual a bit. OK, to be fair, I did drop out before finishing my B.S., but up to where I was at, I can honestly say that I learned 90% or more of what I learned, outside of class, reading and practicing on my own. The only class I really remember the teacher's explanations helping a whole lot, was in certain parts of Discrete Math.

I could be wrong, but I feel like some people are just "wired' for teaching themselves stuff, learning from books and videos and websites, and then throwing the occasional question up on the Theoretical Computer Science Stack Exchange[1], or /r/askcomputerscience or whatever.

At the very least, I would posit that most people can learn an awful lot through self-study. Maybe not enough to do ground breaking research in C.S., but certainly enough to bump up their knowledge of the "basics" to where they aren't clueless when somebody else in the room starts talking about algorithmic complexity or finite state machines or whatever.

[1]: cstheory.stackexchange.com

[2]: http://www.reddit.com/r/askcomputerscience

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

#102
honestly? take a grad class in algorithms and sit in in as many relevant seminars as you can. conversation is much stronger for theoretical knowledge than it is for memorization. the idea is to work through the problems yourself with strong mentor support, so there really isn't a shortcut here.

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

#103

Earlier quoted context omitted.

The SICP videos are available somewhere and are pretty intense.

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

I think the first video in this series is probably the best intro to CS lecture ever.

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

#104
There are some good suggestions for topics and what all to learn, here are some links to actually go and learn em!

http://stackoverflow.com/questions/194812/list-of-freely-ava...

and

http://hackershelf.com/browse/

Should have everything you need, they're all free / open-source books!

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

#106
post #82
post #69

My story is somewhat similar. I took a BA in Linguistics, worked for a while, then discovered computers. I spent a year on prerequisites and then did an MS in CS. I got good grades and did a thesis and it opened a lot of doors for me. Some things that an MS CS degree will teach you that you may not have learned as a seasoned developer are: How to invent solutions to cutting edge problems. How to operate at scale usin…

In order to get into an MS program would I need to do a BS in CS or just do the prerequisites I am missing. Off the top of my head I know that I am missing Calc 2, Calc 3, Linear Algebra, Algorithms, and Operating Systems. Does it matter where I do the prerequisites? I imagine I could just do the maths at a community college.

My college really just wanted algorithms and multivariable calculus. It probably varies from program to program.

Another important consideration is what emphases the MS program will offer. Mine had tracks in AI, Software, Distributed Systems, and Bioinformatics. CS is very broad and you won't have time to do everything in the course of two years. Think about your goals and your focus a little.

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

#107
post #77
post #50

This is the core of a CS degree, each one is class, sometimes multiple classes that go into more detail. All interview questions will basically only cover these topics. 1. Algorithms & Data Structures 2. Baremetal Hardware. ASM, goes into the design of a physical cpu with ALUs, etc. Sometimes you make your own basic CPU. I suggest using a course with ARM ASM, simpler than x86 ASM. 3. Operating Systems & Multithreadin…

I would add computability and complexity theory to that list. Some computational complexity should be covered in algorithms and data structures, but theory of computation is not really (as algorithms by definition solves only computable problems). A fundamental knowledge of what is and what isn't computable is quite important in theoretical computer science IMO.

I can't remember if formal languages and automata was an elective or a requirement for me... I think it might have been required. The textbook was the one by Sipser, and I thought it was a pretty good book.

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

#108

There is an alternative approach that inadvertently worked for me that may work well for you, particularly if your goal is to learn things beyond a conventional computer science curriculum. I have been working in high-end theoretical computer science for many years, with significant advances to my credit, but I went to school for chemical engineering. People are often curious as to how I acquired so much esoteric dom…

I couldn't imagine diving into open problems on your own without even undergraduate-level training. Open problems are what you work on for your PhD thesis, and before starting your thesis you take PhD-level courses to get up to date on the state of knowledge, and then a faculty member advises you on your thesis. Without knowing what you don't know, you'd end up reinventing wheels, most likely.

> I have been working in high-end theoretical computer science for many year

I think you may be discounting the on-the-job training you surely received. Maybe even more important would be the fact that your job helped steer you toward problems worth solving.

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

#109

Earlier quoted context omitted.

Sure, no problem. Let me know if you have any questions or want to chat about random compsci topics.

I'll probably have some questions after looking over some more of the papers. We seem to have a healthy intersection of common interests. What's the best way to get in touch?

Cool! You can mail me at sillysaurus2@gmail

What sort of projects are you interested in?

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

#110
post #34

The other responses are great. But one meta point I think is worth making. Don't overestimate how much competency you gain from just getting a CS degree. Lots of people coasted their way through undergrad without internalizing a heck of a lot. The fact that you are motivated to go out and get knowledge puts you, IMO, at a great advantage. My background: I did a BS in CS/Economics but spent most of my time playing onl…

This is why I am considering the BS. I already had the college experience at Penn State. Meaning parties, friends, girls, football, etc. This time it would be purely about going to class and learning. I bet I wouldn't even have to do Gen Eds since I already have a BS.

I think the marginal benefit of a second BS-level degree is small given the cost in time and money.

If you're going back to school then you should definitely consider an MS. Maybe you're worried that you wouldn't be accepted or that it would be too challenging? In that case, narrow down a list of universities/departments where you would like to enroll, and identify what you need to study in order to get accepted.

Alternatively, teach yourself, and try to join a top tech company that focus on making the kind of software you're interested in. Working with great programmers has a large impact on your learning. Perhaps you're underestimating this impact because your first job wasn't challenging enough.

Post reply on HN