Live data from Hacker News

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

news.ycombinator.com

71–80 of 122 posts

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

#71
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…

+1 for Algorithms & Data Structures

In my experience with non-CS developers, this is one of their biggest shortcomings when trying to solve non-trivial programming issues in the real world.

However, if you have a design background and a knack for UI, then don't sell yourself short. There are lots of programmers and plenty of great artists, but talented people with both skill sets are seriously hard to find. Take a look at this article for an idea of what most developers (myself included) come up with for UI: http://www.codinghorror.com/blog/2006/11/this-is-what-happen...

If you have the ability to prevent atrocious designs like the one in that article then you are solving important and challenging problems. There's a reason user experience (UX)design is such a buzzword right now.

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

#72
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 like fogus' list quite a bit:

http://blog.fogus.me/2011/09/08/10-technical-papers-every-pr...

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

#74
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…

When I went to CMU, databases was not in the core curriculum, but statistics and programming languages was. I don't think there was even an undergraduate-level databases course in the CS department.

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

#75
You might be interested in my school, http://hackreactor.com. Our course is 50% CS (data structures, algorithm design and analysis) and software engineering (modularity, refactoring) and 50% web fundamentals and writing a lot of app code, and students are constantly working together on extracurricular study. This weekend, they're throwing a machine learning workshop (developed by students; alums invited), and in two weeks we're playing host to a PL design/implementation class (http://proglangmasterclass.com/). You can reach out to me at shawn@hackreactor.com.

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

#76
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 like fogus' list quite a bit: http://blog.fogus.me/2011/09/08/10-technical-papers-every-pr...

That's a great kickoff point.

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

#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.

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

#78
One of the biggest factors I think you should consider if you want to go the self learning route is if you'll have the time to while juggling a full time job as well. You might be able to take a few courses, but will you be able to dedicate your full attention to it, and really dig into the subjects?

If I were you I wouldn't add on any more debt until I've settled my current one. With a good CS job, that shouldn't take more than 2-3 years, considering you have no dependants and presumably relatively low living costs. In the meantime, maybe take part time courses where you can get class credit, and if you plan it right you might be able to complete your degree in a year or so, considering you already have your basic requirements done. Just do some research into making sure your class credits will be able to transfer. Good luck.

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

#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:

Structure And Interpretation Of Computer Programs:

http://ocw.mit.edu/courses/electrical-engineering-and-comput...

Mathematics For Computer Science:

http://ocw.mit.edu/courses/electrical-engineering-and-comput...

The first one is pretty much a master class in software engineering, the other prepares you for studying algorithms, I would consider those the two main more theoretical facets of programming at a professional level. With that background you can try to work on their algorithms course:

http://ocw.mit.edu/courses/electrical-engineering-and-comput...

It would also be very valuable to eventually take all the core mathematics subjects from OCW: Single+multivariable calculus, linear algebra and probability theory - the profit is less immediate but those things do come very useful. All those six courses on the MIT OCW are top notch.

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

#80
post #36

Earlier quoted context omitted.

The goal is simply acquire a much deeper understanding of computing that I feel I missed out on by not studying CS in college. I see myself as extremely employable doing app and web development for the immediate future. Under the hood everything is like magic to me and I don't want to feel like that. I also feel like I don't know enough to know what my dream job in computing is yet. Your thoughts are limited by your…

You might like to try the old "go down the stack" process as a first exercise then. There was a post about it recently on here. A Web app developer who knows a lot about things work right down to the metal is a lot more valuable than one who doesn't. How do the processes behind your webapps work? Why or why can't your app support 10,000 clients hitting it at once? What's happening at the HTTP level? The TCP/IP level?…

Taking notes has always been my weakest point as a student so that is something I will definitely have to focus on. I think it's sound advice though.
Post reply on HN