Answers.Body: <p>It is possible to learn from tutorial sites and youtube videos, but you have to be careful. For instance, I never open links to &quot;geeks for geeks&quot; because of the low quality. On the other hand, I recommended &quot;C++ weekly&quot; to you (there are over 300 episodes) which is made by an expert, and each video is very focused. <code>learncpp.com</code> is also recommended.</p>
  <p>But as the author of several textbooks I'd say, find out what the recommended textbooks are in the field you are interested in, and then take the time to work your way through such a book. That was you get material in a logical progression and from a unified point of view.</p>
  <p>And then it depends on what field you are interested in. It's hard to say anything about &quot;in computer science&quot; in general.</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2022-02-18T17:19:59.940Z
Answers.LastActivityDate: 2022-02-18T17:19:59.940Z
Answers.UserDisplayName: Victor Eijkhout
Answers.Body: <blockquote>
  <p><em>&quot;The problem with teaching yourself is that you have a great student, but a terrible teacher.&quot;</em> -- author unknown</p>
  </blockquote>
  <p>You've keyed into one of the primary problems of teaching yourself.  Without expertise, how do you know what to study in the first place?</p>
  <p>Buffy is absolutely right that building projects is vital to learning.</p>
  <p>I also wanted to share with you a textbook strategy for when you are forced to learn a new topic on your own.  A textbook is typically designed to give you a good representation of the basics of a topic.  In fact, outlining what the important areas of a topic <em>are</em> is one of the most valuable things that a textbook does!</p>
  <p>However, textbooks can also be difficult to follow, particularly when you lack background knowledge in the field.  And when you get stuck, there is no one to ask.</p>
  <p>By contrast, Youtube videos and tutorials are often easy to follow, but they are also very narrow in scope, and they never give you a sense of whether you are seeing the larger picture.</p>
  <p>A reasonable way to get a solid foundation, then, to use a mix of different approaches taken in tandem.</p>
  <p>Find a textbook, and work through it, a bit at a time.  If there is something you don't understand, mark it and move on.  When you've read your fill, go back and look over what you've marked.</p>
  <p>Some of it will be clear to you on this second read, or based on information that came later in the book.  This is perfect!</p>
  <p>Some of it will still be unclear.  You now have your target for tutorials for the evening.</p>
  <p>Now, what this does it make sure that you have a solid, well-rounded foundation in an area, even without the benefit of a teacher.</p>
  <p>However, enthusiasm also counts for a lot in learning.  You are more likely to be able to follow through on learning about things you find interesting!  So don't be afraid to stray from the textbook to pursue interesting side-areas.  But when you've had your fill, come back to the textbook.  The textbook is what will make sure that your basic understandings are well-rounded and relatively complete.</p>
  <p>Good luck!</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2022-09-15T06:30:17.487Z
Answers.Text: The only thing I can add to your answer is I would ask him why would you want to learn C++, is there  a particular need for that or just like what he said in his question, "When a beginner starts learning some new thing like programming language and they start learning form some random stuff"?  Then C++ is a terrible choice.
Answers.UserDisplayName: Qiulang 邱朗
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2022-02-19T04:18:24.213Z
Answers.LastActivityDate: 2022-02-19T04:18:24.213Z
Answers.UserDisplayName: Ben I.
Answers.Body: <p>It is interesting that you have tagged this question with <a href="/questions/tagged/active-learning" class="post-tag" title="show questions tagged &#39;active-learning&#39;" rel="tag">active-learning</a>, but none of the things you describe are actually active.</p>
  <p>Watching videos, no matter how good, or reading books is passive. What you need is to become more active in your learning, but it is difficult to do it on your own without guidance.</p>
  <p>The key to learning almost anything is reinforcement and feedback. Reinforcement comes when you do some things repeatedly so that your brain wiring changes. But it is possible to reinforce bad habits as well as good, hence the need for feedback in what you do.</p>
  <p>Combine the above with active learning and the implication is that you spend at least as much time doing exercises and, in CS, in programming, as you do in reading or watching video. Most books and some videos suggest exercises, but neither provides feedback. Even a provided answer key is a wobbly crutch unless you use it wisely and only after you have created some answers or programs.</p>
  <p>Also, learning the syntax and semantics of a language is insufficient to truly learn much of anything unless you are already a skilled programmer. The key is learning how to put the various bits and pieces to create something that is both correct and maintainable.</p>
  <p>If you absolutely can't find a human to guide you in your learning then a possibility is to find someone else like yourself and try to learn together. Challenge one another. Give each other feedback. Find books or whatever that have a lot of exercises or, more importantly, lots of difficult projects. Short programs may be needed at the beginning, but you have to learn to go beyond that.</p>
  <p>Learn something about testing, especially test-first development. Learn something about pair programming if you can find a partner. Find a challenging project. Learn something about design patterns.</p>
  <p>A simple computer simulator with an assembly language.</p>
  <p>A board game where the computer manages the game or even plays one side. Checkers, Chutes and Ladders, ...</p>
  <p>A dungeons and dragons world with People and monsters, things including magic things, and places including passages between them. It needn't even be graphical.</p>
  <p>An RPN calculator.</p>
  
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2022-02-18T16:58:57.180Z
Answers.Text: @Hamza “The key to learning almost anything is reinforcement and feedback. … hence the need for feedback in what you do.” So well put. Consider that phrase stolen. Believing there is one, direct, royal road to understanding is an illusion. Understanding can come for one person from different resources, take unknown amounts of time, require back-tracking from misunderstandings, generalising special cases, giving specific examples of impenetrable, generalised definitions, and many, many other things.
Answers.UserDisplayName: Clive Long
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2022-02-18T16:59:02.047Z
Answers.Text: There always comes a point when the student has to strike out and try to apply their incomplete, partial understanding – only to find there a gaps in the student’s knowledge and more study is needed if the student genuinely wants to  progress and improve.
Answers.UserDisplayName: Clive Long
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2022-02-18T20:16:51.440Z
Answers.Text: sorry comments above were aimed mainly at Buffy - the author of the answer. My error on at-label thing.
Answers.UserDisplayName: Clive Long
Answers.ContentLicense: CC BY-SA 4.0
Answers.CreationDate: 2022-02-18T16:13:05.937Z
Answers.LastActivityDate: 2022-02-18T16:13:05.937Z
Answers.UserDisplayName: Buffy
Body: <h2>Videos tutorials</h2>
  <p>When I start learning C++ form video tutorials I grasp lot of concepts. But after some time I realize in this course that too many topics like (operator overloading, nested classes etc.) are missing or not clearly defend.</p>
  <h2>Documentation / Books</h2>
  <p>In this category, in my observation is that when I open some C++ random books or documentations like(Geek for Geek) there is almost every single thing that I want to learn through video tutorials.
  But in my case, I think this is my problem... when I start learning some thing form these source like book or doc. I don't understand some points / topics .</p>
  <h2>Question</h2>
  <p>Which resource is best for learning (Computer science skills, programming etc. )
  How to find best learning source as a beginner.</p>
  <h2>Beginner</h2>
  <p>When a beginner starts learning some new thing like programming language and they start learning form some random stuff and after some thing they realize I am just wasting my time, just like my case I haven't wasted my time but I think my concepts are not good / clear  and same situation happens. I saw my friends they start learning C++ after some time they leave  programming and I think they hate it.</p>
  
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2022-02-19T05:22:29.403Z
Comments.Text: I remember using Karel the Robot in high school and remember it being fairly fun/educational.
Comments.UserDisplayName: c1moore
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2022-02-19T19:01:39.117Z
Comments.Text: One problem is that different people have different (possibly preferred) ways of learning and different kinds of documentation and tutorials are better/worse for different kinds of learning.
Comments.UserDisplayName: RBarryYoung
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2022-02-20T12:42:07.190Z
Comments.Text: Learning to program ≠ Learning C++ ≠ Leaning computer science
Comments.UserDisplayName: ctrl-alt-delor
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2022-09-15T06:27:37.953Z
Comments.Text: You already have some excellent answers but I want to repeat your words here  "they start learning form some random stuff and after some thing they realize I am just wasting my time" So why did you learn C++ in the first place? If you just want to a programming language C++ should be your first or second languge.
Comments.UserDisplayName: Qiulang 邱朗
Comments.ContentLicense: CC BY-SA 4.0
Comments.CreationDate: 2022-09-15T06:35:33.460Z
Comments.Text: @Qiulang邱朗 :: i say that "after some time they realize I am just wasting my time, just like my case I haven't wasted my time but I think my concepts are not good / clear  " it mean this is just example in my case situation is not that one ... my concepts are not clear but i am trying . .. read again my question
Comments.UserDisplayName: Hamza
Tags: <self-learning><programming><secondary-education><active-learning>
Title: Which resource is best for learning something new in computer science?
ThreadText: # Which resource is best for learning something new in computer science?
  
  (Asked by: username_0 on 2022-02-18)
  
  ## Videos tutorials
  
  When I start learning C++ form video tutorials I grasp lot of concepts. But after some time I realize in this course that too many topics like (operator overloading, nested classes etc.) are missing or not clearly defend.
  
  ## Documentation / Books
  
  In this category, in my observation is that when I open some C++ random books or documentations like(Geek for Geek) there is almost every single thing that I want to learn through video tutorials.
  But in my case, I think this is my problem... when I start learning some thing form these source like book or doc. I don't understand some points / topics .
  
  ## Question
  
  Which resource is best for learning (Computer science skills, programming etc. )
  How to find best learning source as a beginner.
  
  ## Beginner
  
  When a beginner starts learning some new thing like programming language and they start learning form some random stuff and after some thing they realize I am just wasting my time, just like my case I haven't wasted my time but I think my concepts are not good / clear and same situation happens. I saw my friends they start learning C++ after some time they leave programming and I think they hate it.
  
  **Tags:** self-learning, programming, secondary-education, active-learning
  
  > **Comments:**
  > **username_1**: I remember using Karel the Robot in high school and remember it being fairly fun/educational.  
  > **username_2**: One problem is that different people have different (possibly preferred) ways of learning and different kinds of documentation and tutorials are better/worse for different kinds of learning.  
  > **username_3**: Learning to program ≠ Learning C++ ≠ Leaning computer science  
  > **username_4**: You already have some excellent answers but I want to repeat your words here  "they start learning form some random stuff and after some thing they realize I am just wasting my time" So why did you learn C++ in the first place? If you just want to a programming language C++ should be your first or second languge.  
  > **username_0**: @username_4 :: i say that "after some time they realize I am just wasting my time, just like my case I haven't wasted my time but I think my concepts are not good / clear  " it mean this is just example in my case situation is not that one ... my concepts are not clear but i am trying . .. read again my question  
  
  ---
  
  ## 3 answers
  
  ### Answer by username_6 on 2022-02-19. Score: 8 | Accepted answer
  
  > *"The problem with teaching yourself is that you have a great student, but a terrible teacher."* -- author unknown
  
  You've keyed into one of the primary problems of teaching yourself. Without expertise, how do you know what to study in the first place?
  
  username_7 is absolutely right that building projects is vital to learning.
  
  I also wanted to share with you a textbook strategy for when you are forced to learn a new topic on your own. A textbook is typically designed to give you a good representation of the basics of a topic. In fact, outlining what the important areas of a topic *are* is one of the most valuable things that a textbook does!
  
  However, textbooks can also be difficult to follow, particularly when you lack background knowledge in the field. And when you get stuck, there is no one to ask.
  
  By contrast, Youtube videos and tutorials are often easy to follow, but they are also very narrow in scope, and they never give you a sense of whether you are seeing the larger picture.
  
  A reasonable way to get a solid foundation, then, to use a mix of different approaches taken in tandem.
  
  Find a textbook, and work through it, a bit at a time. If there is something you don't understand, mark it and move on. When you've read your fill, go back and look over what you've marked.
  
  Some of it will be clear to you on this second read, or based on information that came later in the book. This is perfect!
  
  Some of it will still be unclear. You now have your target for tutorials for the evening.
  
  Now, what this does it make sure that you have a solid, well-rounded foundation in an area, even without the benefit of a teacher.
  
  However, enthusiasm also counts for a lot in learning. You are more likely to be able to follow through on learning about things you find interesting! So don't be afraid to stray from the textbook to pursue interesting side-areas. But when you've had your fill, come back to the textbook. The textbook is what will make sure that your basic understandings are well-rounded and relatively complete.
  
  Good luck!
  
  > **Comments:**
  > **username_4**: The only thing I can add to your answer is I would ask him why would you want to learn C++, is there  a particular need for that or just like what he said in his question, "When a beginner starts learning some new thing like programming language and they start learning form some random stuff"?  Then C++ is a terrible choice.  
  
  ---
  
  ### Answer by username_7 on 2022-02-18. Score: 7
  
  It is interesting that you have tagged this question with [active-learning](/questions/tagged/active-learning "show questions tagged 'active-learning'"), but none of the things you describe are actually active.
  
  Watching videos, no matter how good, or reading books is passive. What you need is to become more active in your learning, but it is difficult to do it on your own without guidance.
  
  The key to learning almost anything is reinforcement and feedback. Reinforcement comes when you do some things repeatedly so that your brain wiring changes. But it is possible to reinforce bad habits as well as good, hence the need for feedback in what you do.
  
  Combine the above with active learning and the implication is that you spend at least as much time doing exercises and, in CS, in programming, as you do in reading or watching video. Most books and some videos suggest exercises, but neither provides feedback. Even a provided answer key is a wobbly crutch unless you use it wisely and only after you have created some answers or programs.
  
  Also, learning the syntax and semantics of a language is insufficient to truly learn much of anything unless you are already a skilled programmer. The key is learning how to put the various bits and pieces to create something that is both correct and maintainable.
  
  If you absolutely can't find a human to guide you in your learning then a possibility is to find someone else like yourself and try to learn together. Challenge one another. Give each other feedback. Find books or whatever that have a lot of exercises or, more importantly, lots of difficult projects. Short programs may be needed at the beginning, but you have to learn to go beyond that.
  
  Learn something about testing, especially test-first development. Learn something about pair programming if you can find a partner. Find a challenging project. Learn something about design patterns.
  
  A simple computer simulator with an assembly language.
  
  A board game where the computer manages the game or even plays one side. Checkers, Chutes and Ladders, ...
  
  A dungeons and dragons world with People and monsters, things including magic things, and places including passages between them. It needn't even be graphical.
  
  An RPN calculator.
  
  > **Comments:**
  > **username_8**: @username_0 “The key to learning almost anything is reinforcement and feedback. … hence the need for feedback in what you do.” So well put. Consider that phrase stolen. Believing there is one, direct, royal road to understanding is an illusion. Understanding can come for one person from different resources, take unknown amounts of time, require back-tracking from misunderstandings, generalising special cases, giving specific examples of impenetrable, generalised definitions, and many, many other things.  
  > **username_8**: There always comes a point when the student has to strike out and try to apply their incomplete, partial understanding – only to find there a gaps in the student’s knowledge and more study is needed if the student genuinely wants to  progress and improve.  
  > **username_8**: sorry comments above were aimed mainly at username_7 - the author of the answer. My error on at-label thing.  
  
  ---
  
  ### Answer by username_5 on 2022-02-18. Score: 2
  
  It is possible to learn from tutorial sites and youtube videos, but you have to be careful. For instance, I never open links to "geeks for geeks" because of the low quality. On the other hand, I recommended "C++ weekly" to you (there are over 300 episodes) which is made by an expert, and each video is very focused. `learncpp.com` is also recommended.
  
  But as the author of several textbooks I'd say, find out what the recommended textbooks are in the field you are interested in, and then take the time to work your way through such a book. That was you get material in a logical progression and from a unified point of view.
  
  And then it depends on what field you are interested in. It's hard to say anything about "in computer science" in general.
  
  
  ---
  
  