At first I will say, I known some basics Python and Haskell. For now I decided to follow my programming road with Python. I have chosen a few issues and their learning path, hence I would like to know if they will be a good way to get to know Python programming language better, with the implementation of algorithms including languages, with the implementation and knowledge of data structures and modules and frameworks.
Also I would like to ask what should I add to my list or delete? Of course, the issues will be mixed up so that you do not learn only data structures all day long and maybe it is a good idea? Additionally, I would like to know if additional projects or exercises are needed in all situations? I know that some issues are very easy and after reading I am able to notice the problems, advantages, disadvantages or exemplary implementation that arise.
If I have mistaken the forum, I am sorry and I am asking for appropriate redirection.
You certainly don't need a list longer than this one. If you do even half of this you will have learned enough to know pretty much what should be next. Having a complete list now gives you very little.
What you really need is practice and feedback. For practice, find some significant problem and build a program to solve it. Use the best methodology you know about (including testing) and if it works, fine, otherwise look at some other methodologies. You can often find problems in books or online, but knowing that something is significant is harder for a self learner.
But the biggest impediment for the self learner is getting adequate feedback. Just because something works isn't evidence that it is actually good or well structured. For feedback you need someone with more python knowledge than you have and who can comment on your code and even on your approach. That is one of the big advantages of taking regular courses. A teacher/professor can provide problems that are just hard enough to stretch your skills, but also give you the feedback on what you are doing and point to the next steps.
But reading about all those things won't make a programmer out of you, nor will building a "complete" list.
Write programs. Get feedback. There is no shortcut.
Your list of items is very complete and would fill a good part of a Bachelor's degree curriculum. One thing to not overlook is that some of the aspects you highlight make little sense in the context of Python.
For instance, interfaces (as in Java Interfaces) express the behavior of classes that implements them, and can simulate multiple-inheritance. In Python, you have some kind of abstract classes and multiple-inheritance, which allows you to have the same results, but work really differently.
Likewise, the notion of type polymorphism (as in parametric polymorphism or Java/C# generics) is precisely that a function/method cannot inspect a parametric argument. In Python, function arguments are not typed so all this is moot. You can pass any argument to any function and it may or may not fail depending on what the function does.
This is not a critic of Python, but rather a remark that for some concepts, most of the teaching material that you will find will use another language (where the concepts makes more sense). Trying to shoehorn them in Python may result in non-idiomatic code that is both hard to read and does not fully illustrate the concept you study and its benefits.
Not the answer you're looking for? Browse other questions tagged self-learning python programming or ask your own question.