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

<p>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 <em>a lot</em> 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.</p>

CC BY-SA 4.0
2018-08-01T20:48:37.807Z
2018-08-01T20:48:37.807Z
vonbrand
<p>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. </p>

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

<p>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. </p>

<p>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. </p>

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

<p>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 <em>also</em> 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. </p>

<p>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.</p>

<p>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.  </p>

<p>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. </p>

CC BY-SA 4.0
2018-06-20T10:24:39.830Z
2018-06-20T11:40:42.047Z
2018-06-20T11:40:42.047Z
Buffy
<p>The answer to this question is highly dependent on which courses you are interested in. </p>

<p>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.</p>

<p>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.</p>

<p>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. </p>

CC BY-SA 4.0
2018-07-16T17:32:28.800Z
2018-07-16T17:32:28.800Z
igordsm
<p>There are so many resources on the internet for self-learning computer science, such as the <a href="https://ocw.mit.edu/index.htm" rel="noreferrer">MIT OCW courses</a>. However, some of those courses are around 5 to 6 years old taught in 2012 or 2013.</p>

<p>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.</p>

<p>Would it be beneficial to learn from them? what about computer networking?</p>

CC BY-SA 4.0
2018-06-20T10:33:05.233Z
[Cross-posted](https://cs.stackexchange.com/q/93253/1960)
Peter Taylor
CC BY-SA 4.0
2018-06-20T10:41:48.923Z
Most of the good stuff was written in the 1960s.
ctrl-alt-delor
CC BY-SA 4.0
2018-06-20T15:03:14.420Z
It is all footnotes to Dijkstra anyway.
Scott Rowe
CC BY-SA 4.0
2018-06-20T16:21:23.940Z
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.
Clay07g
<resource-information><exams>
Would it be beneficial to learn computer science (or other computer related stuff) from 5-6 year old material?
# Would it be beneficial to learn computer science (or other computer related stuff) from 5-6 year old material?

(Asked by: username_0 on 2018-06-20)

There are so many resources on the internet for self-learning computer science, such as the [MIT OCW courses](https://ocw.mit.edu/index.htm). 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?

**Tags:** resource-information, exams

> **Comments:**
> **username_1**: [Cross-posted](https://cs.stackexchange.com/q/93253/1960)  
> **username_2**: Most of the good stuff was written in the 1960s.  
> **username_3**: It is all footnotes to Dijkstra anyway.  
> **username_4**: 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.  

---

## 3 answers

### Answer by username_6 on 2018-06-20. Score: 6

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.


---

### Answer by username_7 on 2018-07-16. Score: 3

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.


---

### Answer by username_5 on 2018-08-01. Score: 2

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.


---

