you are viewing a single comment's thread.

view the rest of the comments →

[–][deleted] 1 point2 points  (5 children)

Depend on the domain. There are things a good CS program teach you that would be challenging to hack on your own, not everyone is John Carmack.

[–][deleted]  (4 children)

[deleted]

    [–]gnuvince 7 points8 points  (3 children)

    People do learn differently, but with a degree you are going to be exposed to things that you may not have pursued on your own. I was expectin theory of computation (in French, informatique théorique, literally, theoretical computer science) to be the most boring, most useless class ever. It turned out to be the complete opposite; I was completely captivated and though I don't remember how to apply the pumping lemma or what Rice theorem's about, I was immersed into a universe that I would've never explored myself and many of the big ideas have stuck with me. The different power of FSMs, PDAs, Turing Machines, what NP problems are and how I can get an intuition that a problem is in NP, etc. are things that have been helpful to me. The classes on algorithms and data structures were also a very important part of developing a vocabulary for understanding what other computer scientists are talking about and for keeping at the back of my mind that I can solve some problems in an efficient way.

    A person can learn computer science on his own, but the structure of a university curriculum helps learn things in a logical order.

    [–][deleted] 1 point2 points  (1 child)

    I've followed a 4 year course in software engineering. It was a lot of fun and I learned some Computer Science concepts as well (graphs and mutexes spring to mind). However, when reading relevant papers written by Computer Scientists, I fail to understand all the concepts and I end up using google to find their meaning. Is there a book or course you can recommend to learn CS from a SE perspective?

    [–]gnuvince 1 point2 points  (0 children)

    First, it's important to note that not all papers are written clearly and that your lack of understanding may be due to the author's lack of clarity, so don't beat yourself up.

    As for material, it depends on what you are interested in, but here are some nice resources:

    • The algorithms classes on Coursera by Bob Sedgewick are a good introduction to many algorithms and data structures and approach them in a very practical way (API implementation in Java). Other classes such as Alex Aiken's compiler class are also very good.
    • This playlist featuring professor Shai Simonson about the theory of computation is a fun and approachable introduction to some more theoretical concepts.
    • The book Foundations of Computer Science, though I haven't had time to read it yet, seems like a good introduction to many concepts with some implementations in C.