7
$\begingroup$

There are so many resources on the internet for self-learning computer science, such as the MIT OCW courses. However, some of those courses are around 5 to 6 years old taught in 2012 or 2013.

There are good books on computer science but they are expensive so I proceeded for the pdfs but they sometimes are available only of the old edition for the same around 5-6 years old.

Would it be beneficial to learn from them? what about computer networking?

$\endgroup$
4
  • 1
    $\begingroup$ Cross-posted $\endgroup$ Commented Jun 20, 2018 at 10:33
  • 10
    $\begingroup$ Most of the good stuff was written in the 1960s. $\endgroup$ Commented Jun 20, 2018 at 10:41
  • 5
    $\begingroup$ It is all footnotes to Dijkstra anyway. $\endgroup$
    – Scott Rowe
    Commented Jun 20, 2018 at 15:03
  • 2
    $\begingroup$ More specific examples might help. For example, the book "Clean Code" is still widely accepted as an applicable book today, whereas an "Introduction to Visual Studio" book written in 2008 might not be very useful right now. $\endgroup$
    – Clay07g
    Commented Jun 20, 2018 at 16:21

3 Answers 3

6
$\begingroup$

For many things it is possible, even advantageous, to learn from older books and materials. But it also depends on your goals. Computer Science, like any field, has some things that are fundamental and the fundamentals change only very slowly. The major programming paradigms, for example, were all created in the previous century. The fundamentals of compiling programs haven't changed in a long time.

Also, while some areas have shiny-bright new stuff, a beginning student isn't going to study those first, but only after gaining some background in things that haven't changed in a long time.

So, if you are a student, seeking a broad understanding of the field, then older materials won't be a handicap, though at some point you will want/need to learn the newer bells and whistles.

But if you have a specific need, such as learning some specific technology at the expense of other things, then you should probably go with recent materials, even knowing that some of the details you learn will, themselves, change in a few years.

Even networking has a lot of fundamental ideas that need to be understood before you can grasp the details of the latest networking protocols.

Let me give an example. Recent versions of Java have introduced "exciting" new capabilities, including function abstraction. The beginning student won't study those things at the beginning, however, but will be more concerned with creating good OO programs. If you study Java from older materials, but also study something of functional programming (say Scheme or Haskell), also from old books, the new features of Java won't be a surprise to you. On the other hand, if you are faced with an eventual exam (such as the Advanced Placement CS-A) exam, then you need to study from materials that will prepare you for the questions that will be on that exam - likely newer books.

But in general, many of the older books are true classics that will give you a deep understanding of fundamental things that make it possible for you to move easily into new things as they are introduced. Learn what is important. It is even enlightening to adapt old ideas, such as top-down-program-decomposition, to newer frameworks and to understand why things change. But that also requires background in the fundamentals.

Since you also mention online courses, you should note that a course from a few years ago is almost certainly still relevant. This is partly due to the fact that the creators of such courses are generally highly skilled and also value the newest ideas. It is very likely that the courses were very current at the time of creation, as well as being grounded in fundamental knowledge.

As a final note, it is also sadly true that some of the older books have not been updated and the key, deep, ideas in them are not readily available elsewhere. The newer books may not incorporate the ideas of the older books so you may even lose something by only learning from the latest materials. I have one example of a book that had a truly excellent first edition (a Java textbook). The second edition, however, left out many of the parts that made the first so excellent, however. This is due to the unfortunate practice of book publishers to emphasize new editions whether they are an improvement over the old or not.

$\endgroup$
3
$\begingroup$

The answer to this question is highly dependent on which courses you are interested in.

Courses focused on fundamentals can benefit from these older materials. Of course algorithms and discrete math (including graphs) fall into this category but even more "applied" courses such as OOP or Operating Systems can benefit from these older books/courses. Some examples may be outdated, but the ideas and skills developed are (probably) still valid.

Course in hot research areas (ML or AI, Computer Vision, etc) can still benefit, but will also need varying degrees of complementary material. If the courses are introductory, though, the amount of useful content is still large. No one will remotely understand the latest Deep Learning model without some fundamentals in probability and optimization and these can be easily found in older material.

The only situation where old material does not help, IMHO, is in predominantly technical courses, like Web development or Cloud computing. Regarding Computer Networking, if you just want to learn some concepts then a book, even if older, would be more than fine. Most of the underlying stuff has not changed much in the last years. The practical aspects are more complicated to self educate since they may require a lab (or many VMs) to experiment and are highly technical, so you would need up to date materials.

$\endgroup$
2
$\begingroup$

Re: expensive books: There are hundreds of lecture notes floating around, ranging from awful to outstanding. Check them out too.

Re: oldish material: I've used much older texts (up to 20 years old). It very much depends on the subject matter. For the standard CS fare (regular expressions and languages, algorithms, combinatorics, complexity, most of computer architecture and operating systems) it just doesn't matter. For much programming, say in C++, the language has changed a lot recently, an old C++ text just won't do. For cutting edge stuff, graduate level material, I'd go with the old saying: Today's research will be discussed in next year's conferences, the paper will finally show up two or three years after that, and it might get integrated into a textbook some five years later. By Moore's law, most of it will be last year's run-of-the-mill by then.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.