# Which resource is best for learning something new in computer science?

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

• I remember using Karel the Robot in high school and remember it being fairly fun/educational. Feb 19 at 5:22
• 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. Feb 19 at 19:01
• Learning to program ≠ Learning C++ ≠ Leaning computer science Feb 20 at 12:42
• 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. Sep 15 at 6:27
• @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 Sep 15 at 6:35

"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?

Buffy 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!

• 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. Sep 15 at 6:30

It is interesting that you have tagged this question with , 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.

• @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. Feb 18 at 16:58
• 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. Feb 18 at 16:59
• sorry comments above were aimed mainly at Buffy - the author of the answer. My error on at-label thing. Feb 18 at 20:16

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.