I was asked how to learn computer science on your own. Pure self-education without supervision and my involvement. This is
not how my daughter was learning. I was supervising and guiding her education.
But this is how I was learning my self. And actually, I am still learning.
How to teach your self computer science without any external help.
You are learning something by doing it. It means you learn Programming mostly by writing programs. It is like a child learning to speak or to walk.
You can help your self by reading books, watching videos doing some other supporting activities. But you understand something only if you can apply it in a program. The best way to be sure you understand some idea to write a working program using it. For example, if you want to understand computer graphics write a game or graphics editor.
All your education is a long path going from one programming task to another. For the first task choose something so simple you sure you can do it. Like, print “hello.” Each next task should require slightly more then you can do right now. But you should be able to learn what you are missing in 1-2 weeks and finish the task. If you cannot solve the task choose simpler task and repeat.
It may be difficult to know what you can do in 2 weeks before you learn how to do it. But try to do your best.
Choose tasks which are more interesting for you if you like games write games. If you like mathematics write some calculation and so on.
Celebrate every small success. If you do a task per week for two years, it may be enough for you to become a professional even if each task is only slightly harder then the previous one. But you need to support your motivation. So every finished task is a great success.
One of the most important question what should I study and in what particular order? The key is to study only what you really need. This way you will learn to do real programming faster. And then you can expand your knowledge more efficiently.
Here is a simple algorithm allowing you to find you what knowledge and experience you really need to have.
Imagine you already are a professional software developer. What would you like to do?
You choose a big project you want to make. For example, to write a real game. Describe what that game should do.
Now try to do it. You cannot do it right now. What prevents you? What don’t you know how to do? Choose one small obstacle.
For example, you want to write a game, but you do not know how to draw any graphics. Here you small task – write a program drawing a square.
When you solve this task repeat again, what does stop you know? Maybe you do not know how to react to the keyboard? Then come up with a very simple task doing it. Solve this task.
Repeat.
Going this way toward a big program means you are learning exactly what you need to write this program. It can be a programming language, computer architecture, mathematics, physics, game theory, AI, quantum physics
When you choose and finished several big projects accordingly job you want to be doing, you got all minimal knowledge and experience to do this job.
You can explore each field you are studying but not too far. Otherwise, you may start to learn a lot of materials you do not need right now, and that means you won’t study what you need.
Your understanding of what you want to do on your future job may change during the process. You address it by choosing big projects accordingly. If your goals changed dramatically, you could abandon some projects. But in the end, you have enough big projects to cover your desired field of work.
Read a lot of source code written by others. Try to learn the correct coding style. Your code should be readable as a good book. Try to find out what you are missing to do what you do better.
Then you should learn how to find a job and how to pass the technical interview. But this is a separate story.
Here I published a list of recommended books and videos.
https://www.anysolo.com/books-and-vi...er-programmer/