
For the entire past year, I worked as a teacher at one of the provincial training centers (hereinafter referred to as TC) specializing in programming education. I will not name this training center, and I will generally try to avoid mentioning company names, author names, etc.
So, I taught Python and Java. This TC purchased teaching materials for Java, and they launched Python when I came and offered them this.
I wrote the guide for students (essentially a textbook or self-study guide) on Python, but the teaching of Java and the teaching materials used there had a significant influence.
To say they were awful is an understatement. The Java textbook supplied by a very well-known company in Russia was not designed to teach a person the basics of this language as a whole and the OOP paradigm in particular, but rather for the parents, who came to open lessons, to see how their child copied the snake game or chess from the textbook. Why do I say copied? Quite simply, the textbook contained entire sheets (A4) of code, some parts of which were not explained. As a result, the teacher either had to keep track of where each student was in the code, explaining every line, or it devolved into copying.
You might say: “So what? Let the teacher work better, and the chess and the snake game are really cool!”
Well, it would all be great if the number of people in the group wasn't around 15, which is significant when you plan to monitor everyone while explaining: “So what are we actually writing?”
In addition to the number of people in the group, there is another problem associated with this teaching material. The code is written... how can I put this, simply terribly. A collection of anti-patterns, outdated practices since the textbook hasn’t been updated for a long time, and of course, our favorite—style guides. Therefore, even if you manage to control all your charges and can quickly and understandably explain what the copied code means, the code itself is so poorly written that it will teach them, to put it mildly, the wrong things.
And so, the final point that literally destroys this textbook is the complete lack of an adequate introduction that explains what data types are, that there are object and primitive types, what criterion checks the property that creates this dichotomy, and so on. In the very first chapter, you and your students are asked to create a program that opens a window and displays "Hello!"; however, it does not explain what this piece of code actually means, only referring to further lessons. For example, it mentions "main" — the entry point, but the concept of an "entry point" is not explained.
In summary, this paper was a meme even among educators and staff. It didn't teach children anything at all. Once, I came across a group that had been studying this material for a year, and in the end, they couldn't even write a loop. I should note that they were all very smart, and soon things weren't so bad. Most colleagues tried to deviate from the methodological materials so that students could grasp the material rather than have it just fly away into thin air, although there were also less conscientious individuals who considered it normal for their students to copy without any explanations.
When it became clear that I would leave the training center and that the Python program had to continue somehow next year, I started writing my own textbook. In short, I divided it into two parts. In the first part, I explained everything about data types, their essence, operations with them, and language instructions. Between topics, I included Q&A sections so that future teachers could understand how well students grasped the material. At the end, I created a small project assignment. Thus, the first part explains the basics of the language in detail, which amounts to about 12-13 lessons of 30-40 minutes each. In the second part, I wrote about OOP, describing how the implementation of this paradigm in Python differs from most others, and I made many references to style guides, etc. To summarize — I tried to be as different as possible from what was in the Java textbook. Recently, I wrote to the current Python instructor, asking for feedback on the materials, and I am pleased to say that everything is fine, and the children truly understand programming in Python.
What conclusion I would like to draw from this story: dear parents, if you decide to send your child to a training center, please closely monitor what they are doing, so that your child does not waste time unnecessarily and does not lose the desire to program in the future.
UPD: As correctly pointed out in the comments, I didn't say much about the delivery of the material. I will say right away that I believe there should be more practice, as much as possible. At the end of each lesson in the first part, I had 4-5 small practical assignments related to the chapter. Between chapters, there were Q&A sessions (control lessons), which also included practical assignments, but these were evaluated tasks. Additionally, at the end of the first part, there was a project on a topic of choice from the proposed ones. In the second part, I introduced OOP by creating a console mini-game, which was the focus of the entire second part and the introduction to the paradigm.
Only registered users can participate in the survey. , please.
Is your child learning programming at a training center?
4,6%Yes3
95,4%No62
65 users voted. 27 users abstained.
Source: habr.com
