Greetings, Habr users!
In this article, I want to share my experience as a programming instructor for C++ at a college affiliated with a technical university. It was a unique experience in my life that taught me a lot. When it comes to interesting facts from my personal past, this episode comes to mind as one of the first.
Let's go.
First, a little about myself.
In 2016, I graduated with honors in "Information Security of Automated Systems." During my studies, I repeatedly managed to realize my potential in writing scientific articles, participating in competitions and grants. In 2015, I had the honor of winning the All-Russian competition for young scientists "UMNIK." By 2016, before graduating, I was already hired by a large organization in the city as a "Specialist in Information Security, Cryptography, and Encryption."
In brief, that's how it was. One can imagine that I had some understanding of programming.
And so it was 2017. Graduate school. I was asked to teach C++ at the college for a semester, for which I was promised good bonuses to ease my graduate burden and nothing more.
To be honest, I was genuinely interested in trying myself in this role.
The first class
September. The first week of school. Students came to me. "The most unruly group" — that's what they were called.
23 people. "Programmers."
As expected, I introduced myself first. I told them modestly the content of the section "First, a little about myself"...
Then the terrifying part began. When I asked, "What do you know?" the students (let's call them that from now on) responded that they knew just a bit more than nothing at all (which meant that some of them knew how MS VS looked and could create a "Hello world" project)... Programmers. Last year...
Then they explained in detail, "in colors," that they hadn't been taught anything and that they were generally disappointed in programming...
Almost all the days leading up to the next class went like this:

... but a day before it, an idea arose to direct efforts towards correcting the situation in the minds and consciousness of this youth. And then "Ostap went on a roll."
Introduction to Programming
For the next class, I brought... a puzzle.
Yes, yes. Puzzle. 'How to Train Your Dragon.' The rules were simple. The group was divided into 3 teams. Each team assembled its own part. Some worked on the forest, others on the land, and the third on the dragon in the center of the picture. While they were assembling the puzzle, I explained that assembling a puzzle is also programming, that programmers often use others' code, that every project has several different teams, features, modules…
Gradually, even the most sluggish students joined the process.
When I finished explaining the idea of programming in the context of business, processes, and… puzzles, it was time to establish the rules of learning.
For each class, every student had to write down 10 IT terms in their notebook. Any terms. Everyone had their own. The point was that I would take one student's notebook, find among all the terms the most practical ones and ask another student about them. If the other student said, 'I didn't write down that term,' it wasn't punishable (due to common sense), but that student had to write down the 'missing' terms (just like everyone who didn’t have them) and find their meanings by the next lesson.
That's how we did it. Each class began with a lively random selection of two or three students. The guys were enthusiastic about this process.
Class Topics
When starting to teach, it is very important to provide learners with good literature. In my opinion, the ideal textbook was the book:

In my time, I had to read it carefully alongside Microsoft Visual Studio. At that time, I managed to understand programming almost from scratch. The perfect option.
You modestly approach the students and say, 'To become programmers, you just need to read and try everything in this book,' and you drop the book on the table. The main thing is not to mix up the books in your backpack…
Before each topic, I had to prepare thoroughly. I read the same Lafore and several other interesting sources from the Web.
I had to explain almost from the basics. Moreover, understanding where the students had gaps in their foundational knowledge had to be deduced.
Arrays -> Memory Management (constructors) -> References -> How Memory Works -> Storage Devices -> What a Physical Storage Device Is -> Binary Representation of Data…

A pretty intense crash test of fundamental programming facts. I'm no longer a programmer; I'm a historian!
So, historical battles unfold for several pairs in a row. One day, our department's secretary peeks into the office, sees the group, stares wide-eyed, and then closes the door. I was later informed that she was shocked that THIS group was sitting so quietly and attentively listening to me... Haha, easy.
Laboratory work
The first applied knowledge — the first 'labs'. Over the semester, the group submitted 10 laboratory works. In the first ones, they did simple console a+b, while in the last ones, they wrote, although console-based, quite interesting applications, such as calculating the value of an integral of a certain arbitrarily defined function using one of three methods — similar tasks were included in the final assessment — the course project.
However, the acceptance approach do not was familiar. Throughout my studies at the institute, I faced the fact that being smart and being able to submit coursework are not the same. This fundamentally dissatisfied me.
— Guys, I've been thinking. Let's establish 'conceptual' relationships. If anyone of you thinks programming is not necessary for them — the door is over there. I teach you for free. I want to see only curious, concerned, and passionate enthusiasts here. I ask everyone else not to waste our collective time — I said on the first day of lab work submissions. After that, 5 people immediately stopped attending classes. This was logical and expected. It was possible to try to make something sensible with the rest.
— ... I'm not interested in seeing someone else do your work, just to pass. You may not be programmers, but you will have to be people in my classes..
It looked like this:
case excellent studentA student comes to me to submit work.
— Did you do it yourself?
— Yes.
— What is this?
— *answers correctly*.
*I ask a couple more questions. Answers correctly*
— accepted. Excellent.
case chatterbox — Did you do it yourself?
— Yes.
— What is this?
— *answers INCORRECTLY / does not answer*.
*I ask a couple more questions. Same result*
— NOT accepted. FAILED. Waiting for a retake.
case good student — Did you do it yourself?
— Yes.
— What is this?
— *answers correctly, but not confidently, flounders*.
*I ask a couple more questions. Same result*
— accepted. Good.
case average student — Did you do it yourself?
— No.
— Why?
— It's hard. I had help... *honestly names an excellent student from the group*
— Were you confused?
— Yes, I understood almost everything.
— What is this?
— *answers correctly*.
*I'm still asking a couple of things. He answers more or less correctly, sometimes completely off, even if it’s 50-50 right and wrong.*
— accepted. Good.
It doesn't make sense to describe all other cases. Yes, a "good student" may be unhappy that a "mediocre student" receives the same grade by relying on honesty. In this case, it all depends on the mood. Either I ask the "good student" to look at the floor because "now I'm going to drop a pinch of wisdom," and then I'll explain the essence of the approach, describing what has greater value in life and clarifying that it was much harder for the "mediocre student" to pass than for him, the "good student," etc.
...or, like my teacher once did, I would draw a small tooth in the square of the journal next to this discontented student and next time personally complete the lab work for him. Just like that. So that he wouldn’t "dampen" his classmates.

Grades
The educational process, like the whole world, is literally drowning in price tags and grades.
Students are people too, however, I think the "boundaries" should be "shaken" here as well.
During the semester, everyone was given a bonus task. To register on , upload an empty C++ project, make 2 updates, commit them, and push. For these actions, 15 points were assigned. Yes, yes, not 4, not 5, but 15. Three figured it out. It was somewhat understandable for the student’s psychotype; however, there was another case later.
Once our class was rescheduled so that it became the last one, and there was also a window between classes. Yet 15 people still showed up. I didn’t want to explain a new topic in honor of such heroism since we had already progressed quite well on the topics + the next topic was not very easy for tired brains (mine and the students'). So, I decided to talk about philosophy.
— I declare a carnival of unprecedented generosity. Everyone tells me what grade to give him for today’s class.
Everyone wanted a "five".
— consider, it’s already done, — I said. Everyone was happy.
Silence.
— Why did no one want 7- or 10- grade?
Everyone stared with wide eyes and began to smile foolishly.
— Will you really put it in the journal?! — a voice came from the back desk.
— Easy! — I said, — I declare a blitz on terms, whoever answers 10 of my questions — I will give a 20-grade in the journal, no tricks, whoever doesn’t answer — will get -10 (minus ten).
"The team became lively, and a debate began," everyone had honestly earned their grades. Two volunteered. With minor inaccuracies, they each answered 10 questions about stack, queue, constructor, destructor, garbage collector, encapsulation, polymorphism, hash functions...
Each entry in the journal was illustrated 20 points... but the importance of the journal and grades fell in everyone's eyes. Now I regret not asking if they wanted to "share" their grades with someone. I think they would have... From now on, everyone submitted their "lab" with knowledge and honesty.
From that moment, another type of lab submission appeared:
case honestlyNotHisButHeTried — Did you do it yourself?
— No.
— Why?
— It's hard. I had help... *honestly names an excellent student from the group*
— Were you confused?
"Sergey Nikolaevich, honestly — I don’t understand anything, I wrote my comments next to each line — it’s just not for me, I’ll be a tractor driver."
— What is this?
"*reads the comment next to the line*.
— …
— …
"What’s the difference between a Belarus MTZ and a Don 500 and a K700?"
"??!.. The first one is a wheel tractor produced in Minsk, often used in light and medium types of agricultural production. It has small wheels in front and large wheels in the back. The Don 500 is mainly a harvesting combine, while the K-700 'Kirovets' is a Soviet wheeled tractor for general-purpose use with enhanced cross-country capability, traction class 5."
"Accepted. Good (!!!)."
"Thank you, Sergey Nikolaevich!!!"
In my homeland, talking about tractors is almost like discussing SOLID here.
Genius
I had a Genius in my group. A student who arrived very late to the first class and didn’t join everyone in assembling that puzzle. So I asked him to do what I had planned for everyone for the next lesson — write on a sheet about himself, what he enjoys, what interests him. The result was that ‘Genius’ had 2-3 lines: something like ‘I contemplate the futility of existence’…
... Oh God, I have in my group, in one person, simultaneously the second Lao Tzu and Kojima...

To my surprise, in the first two classes, he indeed answered questions about terms brilliantly, but the effect didn’t last long. ‘Genius’ stopped attending classes and only showed up the next time to submit his first lab work, which he successfully failed for objective reasons. Then, due to absences, he naturally accumulated debts, which, as he thought, I was simply obliged to grant him, so to speak, ‘brotherly’..
Not attending classes + inflated ego contradicted the established principles of attending my classes. 'Genius' only had two options — to rehabilitate (the expected path) or to skip classes and hope for a 'passing grade' assigned by the dean's office to get rid of the slacker.
Well, this is 'Genius'... here you have to act 'geniusly'. This young man found nothing better than to write in the general chat on VK (where I and all the students in this group were) an angry tirade filled with insults and abuses directed at me.
Sigh… Disappointment.
What struck me the most was that before the college administration's punitive action was completed, he decided to apologize to me. Why? — I honestly don't understand. At that point, I was already long independent of criticism, especially such overtly foolish criticism. My personality was not affected, but processes are processes, and as a teacher, I could not fail to report this. It turned out that over the course of his studies, there had accumulated so many complaints against him that this case became the last straw. He was expelled. From the last course of the vocational school.
Perhaps he has long been observing me through the crosshairs of a sniper rifle, but to be honest, I don't care.
Ah, genius, you heartless thing…
Epilogue
Personally, for me, the teaching experience was one of the most enlightening. It helped me cement my foundational knowledge of programming after my studies at the university. I felt confident in my chosen field (the spectrum of available specialties). The special importance lies in the fact that 'the most unruly group' developed respect and friendliness towards me — that is worth a lot. I managed to find a way to their inner innovators, trying to instill reality, not these template priorities. It's a pity we did not reach the 'puzzles' in coding — when each should have made a part of the code, and by combining all parts into one, we would have gotten a large working program…
I hope that someday each of them will feel this… meanwhile, below are screenshots with feedback from several students two years later.

It's still too early to draw conclusions about the success of any of their programming careers since most of this group is currently studying at a university. Time will tell.
I hope this article was helpful. Thank you for your attention!
Wishing you creative success and a positive mood, colleagues!
Source: habr.com
