The basis of any programming on ... puzzles

Greetings, Khabrovites!

In this article, I want to talk about my experience as a C++ programming teacher in a college at a technical university. It was a unique experience in life that taught me a lot. When it comes to interesting facts from the personal past, this passage from life comes to mind one of the first.
Come on.

First, a little about myself.
In 2016, I graduated from the Institute with honors with a degree 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 happened to become the winner of the All-Russian competition for young scientists "UMNIK". In 2016, before graduation, he was already employed by a large city organization as a Specialist in Information Security, Cryptography and Encryption.
Briefly something like this. It can be imagined that I, nevertheless, had an idea about programming.

And here is 2017. Postgraduate. I was asked to teach C++ at the college for a semester, for which I was promised good graduate student relief bonuses and nothing else.

Frankly, I was genuinely interested in trying myself in this credo.

The first pair
September. First week of school. Students came to me. "The most naughty group" - that's what they were called.
23 people. "Programmers".

As usual, I introduced myself first. I told them with restraint the contents of the part “First a little about myself” ...
Then the terrible began. To the question "What can you do?" students (we'll call them that from now on) answered that they could do little more than nothing (well, that meant that some of them knew what MS VS looked like and could create a "Hello world" project)... Programmers. Last course…

Further, they explained in detail, “in colors”, that they had not been taught anything and that in general they were disappointed in programming ...

Almost all the days until the next lesson I went like this:
The basis of any programming on ... puzzles

… but the day before it, the idea arose to make efforts to correct the current situation in the minds and consciousnesses of these young people. And then "Ostap suffered."

Introduction to programming
For the next lesson, 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 collected their part. Some are the forest, others are the earth, others are the dragon in the center of the picture. While they were putting together a puzzle for the whole couple, I told them that putting together a puzzle is also programmingthat programmers often use someone else's code, that each project has several different teams, features, modules ...
Gradually, the most sluggish students joined the process.
When I finished rubbing the idea of ​​programming into business concepts, processes and… puzzles, it was time to set the learning rules.
For each lesson, each student had to write out 10 terms from IT in a notebook. Any. Everyone has their own. The point is that I took a notebook of one student, found among all the terms most applied and asked another student about them. When another student says "I did not write down this term", it was not punishable (by virtue of common sense), but that student had to write down the "missing" terms (like everyone else who did not have them) and find their meanings to the next occupation.

So we did. Each lesson began with a jaunty random call for two or three students. The guys had enthusiasm for this process.

Lesson topics
It is very important to give students good literature when starting training. In my opinion, the book was the perfect guide:
The basis of any programming on ... puzzles

At one time, I had to insinuatingly read it in an embrace with Microsoft Visual Studio. Then I managed to understand programming almost from scratch. Perfect option.

You come modestly to the students and say: “To become programmers, you just need to read and try everything that is in this book,” and throw the book on the table. The main thing is not to mix up the books in your backpack ...

Before each topic, of course, I had to thoroughly prepare. I read the same Laforet and several other interesting sources from the Web.
To explain it took place almost from the basics. Moreover, it was necessary to deductively understand where the students had a break in basic knowledge.
Arrays -> Working with memory (constructors) -> References -> How memory works -> Drives -> What is a physical drive -> Binary representation of data…
The basis of any programming on ... puzzles

A very strong crash test of knowledge of fundamental facts about programming. I'm no longer a programmer, I'm a historian!

And so, there are historical battles going on for several couples in a row. One day, the secretary from the pulpit looks into our office and, seeing the group, goggles his eyes, peers and closes the door. As I was told later, she was shocked that THIS group sat so quietly and listened to me so attentively ... The, easy.

Laboratory works
The first applied information is the first "labs". In total, the group passed 10 laboratory works during the semester. At first they made the simplest console a + b, and in the latter they wrote, albeit console, but quite interesting applications, such as calculating the value of the integral of some arbitrarily given function by one of three methods - approximately the same tasks were at the final certification - term paper.

Here is just the acceptance approach not was habitual. Throughout my studies at the institute, I was faced with the fact that being smart and being able to hand in reports are not the same thing. It didn't suit me at all.

Guys, I've been thinking. Let's build "conceptual" relationships. If any of you think that he does not need programming, the door is over there. I teach you for free. I would like to see only curious, caring and caring enthusiasts here. I ask everyone else not to waste the total time - I said on the first day of receiving laboratory work. After that, 5 people immediately stopped attending classes. It was logical and expected. With the rest, it was possible to try to do something intelligible.

- ... I'm not interested in watching someone do a job for you, just to pass. You may not be programmers, but you should be people in my classes have.

It looked like this:

case отличник

A student sits down next to me to hand over work.
- Did you do it yourself?
- Yes.
— What is this?
*answers correctly*.
* I ask a couple more points. Answers correctly*
- accepted. Great.

case болтун

- Did you do it yourself?
- Yes.
— What is this?
- *answers incorrectly / does not answer *.
* I ask a couple more points. Same result*
- Not accepted. FAILURE I'm waiting for a transfer.

case хорошист

- Did you do it yourself?
- Yes.
— What is this?
- *answers correctly, but not confidently, swims *.
* I ask a couple more points. Same result*
- accepted. Fine.

case ровныйТроечник

- Did you do it yourself?
- Нет.
- Почему?
- Difficult. He helped me ... * honestly calls an excellent student from the group *
— Understood?
Yes, I understand almost everything.

— What is this?
*answers correctly*.
* I ask a couple more points. Answers more or less correctly, sometimes completely wrong, even if by 50 to 50 correct and incorrect *
- accepted. Fine.

All other cases do not make sense to describe. Yes, a “good guy” may be unhappy that a “C” gets the same mark, riding on honesty. Then it all depends on the mood. Or I ask the "good student" to look at the floor, because "now I will drop a pinch of wisdom", and then I will tell the essence of the approach, describe what in life has more value and explain that it was much more difficult for the "C" student to pass than he, the "good student" ", etc…
... or, as in my time, my teacher, I will draw a small tooth in a magazine cage opposite this disgruntled person and next time I will personally supplement the laboratory work for him. Just. So as not to "extinguish" comrades.

The basis of any programming on ... puzzles

Grades
The educational process, like the whole world, is literally buried in price tags and grades.
Students are people too, however, the "framework", in my opinion, had to be "shaken" here too.
During the semester, everyone was given a bonus task. Register for github.com, upload an empty C++ project there, make 2 updates, commit them and push. For these actions, 15 were appointed. Yes, yes, not 4, not 5, but 15. Three figured it out. It was still somehow clear to the student's psychotype, but then there was another case.
Once our couple was transferred so that it became the last one, also through a couple-window. However, 15 people still came to it. I didn’t want to explain a new topic in honor of such heroism, since we have already advanced quite well in terms of topics + the next topic was not very simple for tired brains (mine and students). Then I decided to talk about philosophy.

- I declare an attraction of unprecedented generosity. Everyone tells me what rating to give him for today's pair.
Everyone wanted a "five".
“Consider it already,” I said. Everyone rejoiced.
Silence.
Why didn't anyone want 7-ku or 10-ku?
Everyone rolled their eyes and started smiling stupidly.
- Will you put it on? To a magazine?! came a voice from the back.
- Yes Easy! - I said, - I announce a blitz on terms, who will answer my 10 questions - I put 20-ku in a magazine, without a catch, whoever does not answer - to -10 (minus ten).

“The team perked up, the controversy began,” everyone had honestly earned marks. Two volunteered. With minor inaccuracies, they went through 10 questions in turn about stack, queue, constructor, destructor, garbage collector, encapsulation, polymorphism, hash functions…
Each in a magazine was drawn 20… but the importance of the magazine and grades has fallen in the eyes of everyone. Now I regret that I didn't ask if they would like to "share" their assessment with anyone. It seems to me that they would share ... From now on, everyone handed over the "lab" knowledge and honesty.

From that moment on, another type of lab surrender appeared:


case честноНеЕгоНоОнПытался

- Did you do it yourself?
- Нет.
- Почему?
- Difficult. He helped me ... * honestly calls an excellent student from the group *
— Understood?
- Sergey Nikolaevich, honestly - I don’t understand anything, I myself wrote comments opposite each line - well, this is not mine, I will be a tractor driver
— What is this?
*reads the comment opposite the line*.
- ...
- ...
— What is the difference between Belarus MTZ and Don 500 and K700?
- ??! .. The first one is a wheeled tractor of Minsk production, often used in light and medium types of agricultural production. It also has small wheels in front and large wheels in the back. The Don 500 is basically a combine harvester, and the K-700 Kirovets is a Soviet off-road general-purpose wheeled tractor, traction class 5.
- accepted. Fine (!!!).
— Thank you, Sergey Nikolaevich!!!

In my homeland, talking about a tractor is almost like talking about SOLID here.

Genius
There was a Genius in my group. The student from the very first class was very late and did not begin to assemble that puzzle together with everyone. Then I asked him to do what I planned for everyone for the next lesson - write on a piece of paper about himself, what he is interested in, what he is interested in. According to the results, “Genius” had 2-3 lines: something like “I know the futility of being” ...

… Oh, God, in my group in one person at the same time the second Lao Tzu and Kojima …
The basis of any programming on ... puzzles

To my surprise, on the first two pairs, he really brilliantly answered questions about terms, but the effect did not last long. "Genius" stopped attending classes and the next time he came only to the delivery of the first laboratory work, which was successfully did not pass for objective reasons. Then, due to absenteeism, he naturally accumulated debts, which, as he believed, I was simply obliged to count him, so to speak, "brotherly".
Non-attendance at couples + overestimated HRW was contrary to the established principles of attending my classes. "Genius" had only 2 ways out of the situation - to rehabilitate (the expected path) or score on pairs and hope for the "troika" set by the dean's office to get rid of the loafer.
Well, this is “Genius” ... you must immediately act “brilliantly”. This young man did not find anything better than to write in a general dialogue on VK (where I and all the students of this group were) an angry tirade with curses and insults addressed to me.

Hmm… Disappointment.
What struck me the most was that, before completing the punitive operation by the college authorities, he decided to apologize to me. For what? - I really don't understand. At that time, I had long been independent of criticism, especially such, frankly, stupid. My personality was not affected, but the processes - there are processes, as a teacher, I could not help informing about this. As it turned out, so many complaints had already accumulated against him during his studies that this case turned out to be the last. He was expelled. Since the last year of vocational college.
Perhaps he has been watching me through the scope of a sniper rifle for a long time, but to be honest, I don’t care.
Oh, genius, you are heartless ...

Finale
For me personally, the teaching experience was one of the most instructive. It helped me consolidate my fundamental knowledge of programming after studying at the institute. I felt confident in my chosen specialty (the range of available specialties). Of particular importance is the fact that the "naughtiest group" imbued me with respect and friendliness - it's worth it. I managed to find a way to their inner innovators, tried to instill reality, not these stereotyped priorities. It’s a pity that we didn’t get to the “puzzles” in coding - when everyone would have to make a part of the code, and by combining all the parts into one, we would have a big working program ...
I hope that someday each of them will feel it ... but for now, below are screenshots with reviews from several students after 2 years.

The basis of any programming on ... puzzles

It is still too early to draw conclusions about the success of a programmer's career with any of them, because now most of this group is studying at a university. Time will show.

I hope the article was helpful. Thank you for your attention!
Creative success and positive mood, colleagues!

Source: habr.com

Add a comment