Last year I worked as a teacher in one of the provincial training centers (hereinafter referred to as the TC) specializing in programming training. I will not name this training center, I will also try to do without the names of companies, the names of authors, etc.
So, I worked as a teacher in Python and Java. This TC bought methodological materials for Java, and they launched Python when I came and offered it to them.
A manual for students (in fact, a textbook or a self-help guide) I wrote on Python, but the teaching of Java and the methodological materials that were used there had no small impact.
To say that they were terrible is to say nothing. The modus of the Java textbook, which is supplied by a very well-known company in Russia, was not to teach a person the basics of this language in general and the OOP paradigm in particular, but to make parents who came to open lessons see how their son or daughter copied a snake or chess from the textbook. Why do I say written off? Very simply, the fact is that the textbook provided entire sheets (A4) of code, some points of which were not explained. As a result, the teacher either has to control at what point in the code each student is currently located, explaining each line, or everything slides into cheating.
You will say: "Well, what's wrong, let the teacher work better, and chess and the snake are finally cool!"
Well, everything would be cool if the number of people in the group was not under 15, and this is already significant if you are going to follow everyone, explaining: "And yet, what are we writing this?"
In addition to the number of people in the group, there is another problem associated with this manual. The code is written... how should I tell you, just awful. A set of anti-moderns, archaic, since the textbook has not been updated for a long time, and our favourite, of course, is the style guide. Therefore, even if you control all your wards and can quickly and clearly explain to them what the code being written off means, the code itself is so terrible that it will teach them the wrong thing, to put it mildly.
Well, the finale that literally destroys this textbook - from the very beginning there is no at least some adequate introduction explaining what data types are, that they are object and primitive, what criterion checks the property that generates this dichotomy, etc. In the first chapter, you and your students are invited to make (write off) a program that makes a window and writes "Hello!" there, but it does not explain what this code sheet actually means, only links to further classes, for example, "main" is mentioned — the entry point, but the very concept of "entry point"is not even mentioned.
To sum up, this waste paper was a meme even among teachers and management. She did not teach the children absolutely nothing, once I came across a group that had been studying for a year on these materials, as a result, they could not even write a cycle, I note that they were all very smart and soon everything was not so bad. Most colleagues tried to deviate from the methodological materials so that the material was absorbed, and not just flew into the air, although there were less conscientious people who considered it normal that their student writes off without any explanations.
When it became clear that I would leave the UC, and the Python program should somehow be continued next year, I began to write my textbook. In short, I divided it into two parts, in the first I explained everything about data types, their essence, operations with them and language instructions. Between the topics, I did QnA so that the future teacher could understand how the student learned the topic. Well, in the end, I did a small task-a project. The first part explains the basics of the language in this way and chews them, which is about 12-13 lessons of 30-40 minutes each. In the second part, I have already written about OOP, described how the implementation of this paradigm in Python differs from most others, made many links to the style guide, etc. To summarize — I tried to be as different as possible from what was in the Java tutorial. I recently wrote to the current Python teacher, asked for feedback on the materials, and now I am glad that everything is fine, that the children really understand Python programming.
What conclusion I would like to draw from this story: my dear parents, if you decide to send your child to the UC, then carefully monitor what they are doing, that your child is not wasting time in vain, so as not to discourage him from programming in the future.
UPD: As you correctly noticed in the comments, I said almost nothing about the submission of the material. I will say right away that I believe that there should be more practice, as much as possible. At the end of each lesson in the first part, I did 4-5 small practical tasks on the topic of the chapter. Between the chapters there were QnA (control lessons), where there were also practical, but already evaluated tasks, as well as at the end of the first part there was a project with a topic to choose from. In the second part, I made an introduction to OOP through the creation of a mini-game console, the development of which was the entire second part and the entire introduction to the paradigm.