Основа будь-якого програмування на пазлах.

Вітаю, Хабровчане!

У цій статті я хочу розповісти про свій досвід роботи викладачем програмування на C++ у коледжі при технічному університеті. Це був унікальний досвід у житті, який багато чому мене навчив. Коли йдеться про цікаві факти з особистого минулого — цей уривок із життя спадає на думку одним із перших.
Поїхали.

Спочатку трохи про себе.
У 2016 році я закінчив інститут із червоним дипломом за спеціальністю «Інформаційна безпека автоматизованих систем». За час навчання мені неодноразово вдавалося реалізовувати свій потенціал у написанні наукових статей, участі у конкурсах та грандах. У 2015 році мені довелося стати переможцем всеросійського конкурсу молодих вчених «Розумник». У 2016 році до закінчення навчання вже був влаштований у велику організацію міста на посаду «Фахівця з інформаційної безпеки, криптографії та шифрування».
Коротко якось так. Можна уявити, що про програмування я все ж таки мав уявлення.

І ось 2017 рік. Аспірантури. Мене попросили протягом семестру викладати в коледжі C++, за що мені обіцяли хороші бонуси з полегшення тягаря аспіранта і більше нічого.

Щиро кажучи, мені було щиро цікаво спробувати себе у цьому кредо.

перша пара
Вересень. Перший навчальний тиждень. До мене прийшли студенти. «Найнеслухняніша група» — так їх називали.
23 особи. "Программісти".

Як належить, спершу я представився. Розповів їм стримано зміст частини «Спочатку трохи про себе»…
Далі почалося страшне. На запитання "Що ви вмієте?" студенти (відтепер називатимемо їх так) відповіли, що вміють вони трохи більше, ніж зовсім нічого (ну це означало, що деякі з них знали, як виглядає MS VS і могли створити проект «Hello world»)… Програмісти. Останній курс…

Далі вони докладно, «у фарбах» пояснили, що нічого їх не навчили і що взагалі вони у програмуванні розчарувалися.

Майже всі дні до наступного заняття у мене пройшли так:
Основа будь-якого програмування на пазлах.

... але за день до нього виникла ідея докласти сили до виправлення ситуації, що склалася в умах і свідомості цієї молоді. І тоді «Остапа понесло».

Введення у програмування
На наступне заняття я приніс… пазл.
Так Так. Пазл. "Як приручити дракона". Правила були простими. Група була поділена на 3 команди. Кожна команда збирала свою частину. Одні – ліс, інші – землю, треті – дракона у центрі картинки. Поки вони всю пару збирали пазл, я розповідав, що збір пазла - це теж програмування, Що програмісти часто використовують чужий код, що в кожному проекті є кілька різних команд, фіч, модулів.
Поступово до процесу підключилися і найвтомленіші студенти.
Коли я закінчив втирати про ідею програмування в концепції бізнесу, процесів і пазлів, настав час встановити правила навчання.
На кожне заняття кожен студент мав виписати до зошита по 10 термінів із IT. Будь-яких. Кожен має свої. Сенс у тому, що я брав зошит одного студента, знаходив серед усіх термінів максимально прикладні і питав щодо них іншого студента. Коли інший студент каже «Я цього терміна не записав», це не було караним (через здоровий глузд), але той студент повинен був виписати «недостаючі» терміни (як і всі, у кого їх не було) і знайти їх значення до наступного заняття.

Так ми й вчинили. Кожне заняття починалося з бадьорого рандому щодо двох-трьох студентів. Хлопці мали запал до цього процесу.

теми занять
Приступаючи до навчання, дуже важливо дати учням гарну літературу. На мій погляд ідеальним посібником була книга:
Основа будь-якого програмування на пазлах.

Свого часу мені довелося вкрадливо прочитати її обійняти з Microsoft Visual Studio. Тоді вдалося зрозуміти програмування практично з нуля. Ідеальний варіант.

Заходиш скромно до студентів і кажеш: «Щоб стати програмістами, вам треба всього лише прочитати і спробувати все те, що в цій книзі», і кидаєш книгу на стіл. Головне — не переплутати книжки у своєму рюкзаку.

Перед кожною темою мені, безумовно, доводилося ґрунтовно готуватися. Читав того ж Лафорі та ще кілька цікавих джерел із Мережі.
Пояснювати проходило чи не з азів. Причому зрозуміти, де студенти обрив базових знань мали дедуктивно.
Масиви -> Робота з пам'яттю (конструктори) -> Посилання -> Як працює пам'ять -> Накопичувачі -> Що таке фізичний накопичувач -> Двійкове представлення даних…
Основа будь-якого програмування на пазлах.

Дуже неслабкий краш-тест знань фундаментальних фактів про програмування. Я вже не програміст, я історик!

І от, отже, йдуть історичні баталії кілька пар поспіль. Якось до нас заглядає до кабінету секретар з кафедри та побачивши групу, витягає очі, вдивляється та зачиняє двері. Як мені повідомили пізніше, вона була в шоці, що цей гурт сидів так тихо і так уважно мене слухав… Тьху, ізі.

Лабораторні роботи
Перші прикладні відомості – перші «лаби». Загалом за семестр група здала 10 лабораторних робіт. По-перше, вони робили найпростіші консольні. a + b, а в останніх — писали, хай і консольні, але досить цікаві програми, такі, як обчислення значення інтеграла деякої довільно заданої функції одним із трьох методів — приблизно такі ж завдання були на підсумковій атестації — курсовій роботі.

Ось тільки підхід приймання НЕ був звичним. Все навчання в інституті я стикався з тим, що бути розумним і вміти складати звітні роботи — це не те саме. Мене це докорінно не влаштовувало.

— Хлопці, я подумав. Давайте побудуємо «понятійні» відносини. Якщо хтось із вас вважає, що програмування йому не потрібне — двері геть там. Я викладаю вам безкоштовно. Мені хочеться бачити тут лише цікавих, небайдужих та небайдужих ентузіастів. Решту прошу не витрачати загальний час — сказав я в перший день прийому лабораторних робіт. Після цього 5 осіб одразу перестало відвідувати заняття. Це було логічно та очікувано. З рештою спробувати зробити щось зрозуміле можна було.

— … мені не цікаво дивитися, як вам хтось зробив роботу, аби тільки здати. Ви можете не бути програмістами, але людьми вам на моїх заняттях бути доведеться.

Виглядало це так:

case отличник

Сідає до мене студент здавати роботу.
- Сам робив?
- Так.
— Ось що таке?
- "Відповідає правильно".
*Запитую ще по парі моментів. Відповідає правильно *
- Заведено. Чудово.

case болтун

- Сам робив?
- Так.
— Ось що таке?
- *Відповідає НЕправильно / не відповідає *.
*Запитую ще по парі моментів. Той самий результат*
- Не прийнято. НЕУД. Чекаю на перездачу.

case хорошист

- Сам робив?
- Так.
— Ось що таке?
— відповідає вірно, але не впевнено, плаває.
*Запитую ще по парі моментів. Той самий результат*
- Заведено. Добре.

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

- Сам робив?
- Ні.
- Чому?
- Важко. Мені допомагав ... * Чесно називає студента-відмінника з групи *
— Розбирався?
- Так, майже все зрозумів.

— Ось що таке?
- "Відповідає правильно".
*Запитую ще по парі моментів. Відповідає більш-менш правильно, іноді повністю повз, нехай навіть на 50 на 50 вірних і невірних*
- Заведено. Добре.

Решта всіх випадків описувати немає сенсу. Так, «хорошист» може бути незадоволений, що «трієчник» отримує таку саму оцінку, виїжджаючи на чесність. Отоді все залежить від настрою. Або я прошу «хорошиста» подивитися на підлогу, адже «зараз я викину щіпку мудрості», а потім розповім суть підходу, опишу, що в житті має більшу цінність і поясню, що «трієчнику» було набагато важче здати, ніж йому, «хорошисту». ", і т.д…
…або, як свого часу, мій викладач, намалюю маленький зуб у клітці журналу навпроти цього незадоволеного і наступного разу персонально для нього доповню лабораторну роботу. Просто так. Щоб не «гасив» товаришів.

Основа будь-якого програмування на пазлах.

Оцінки
Навчальний процес, як і весь світ, буквально потопає у цінниках та оцінках.
Студенти – теж людиОднак «рамки», на мій погляд, треба було «похитати» і тут.
Протягом семестру всім було дано бонусне завдання. Зареєструватись на Github.com, залити туди порожній проект на C++, зробити 2 апдейти, закоммітити їх та запушити. За ці дії було призначено 15. Так-так, не 4, не 5, а 15. Троє розібралися. Психотипу студента це було ще якось зрозуміло, проте далі був інший випадок.
Якось нашу пару перенесли так, що вона стала останньою, так ще й через пару-вікно. Однак на неї все-одно прийшло 15 людей. Пояснювати нову тему на честь такого героїзму мені не хотілося, тому що ми чисто за темами вже досить добре просунулися + наступна тема була не дуже простою для втомлених мозків (моїх та учнів). Тоді я вирішив поговорити про філософію.

— Оголошую атракціон небаченої щедрості. Усі мені кажуть, яку оцінку поставити йому за сьогоднішню пару.
Усі захотіли за «п'ятіркою».
— Вважайте, вже є, — сказав я. Усі зраділи.
Тиша.
- а чому ніхто не захотів 7-ку або 10-Ку?
Всі вилупили очі і почали безглуздо посміхатися.
— Хіба ви поставите? До журналу?! — пролунав голос із задньої парти.
- Та легко! - сказав я, - оголошую бліц за термінами, хто відповість на 10 моїх питань - ставлю 20-ку в журнал, без каверзи, хто не відповість — тому -10 (мінус десять).

"Команда пожвавилася, почалася полеміка", у всіх були чесно зароблені оцінки. Двоє зголосилися. З невеликими неточностями вони по черзі витримали по 10 питань про стек, чергу, конструктор, деструктор, збирач сміття, інкапсуляцію, поліморфізм, хеш-функції.
Кожному журналу була намальована 20-ка…але важливість журналу та оцінок впала в очах кожного. Зараз я шкодую, що не спитав, чи не хочуть вони «поділитися» своєю оцінкою з кимось. Мені здається, поділилися б… Відтепер кожен здавав «лабу» знаннями та чесністю.

З цього моменту виник ще один тип здачі лаби:


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

- Сам робив?
- Ні.
- Чому?
- Важко. Мені допомагав ... * Чесно називає студента-відмінника з групи *
— Розбирався?
- Сергію Миколайовичу, ось чесно - нічого не розумію, ось сам коментарі написав навпроти кожного рядка - ну не моє це, я буду трактористом
— Ось що таке?
- * Читає коментар навпроти рядка *.
- ...
- ...
— Чим відрізняється Білорусь МТЗ від Дон 500 та від К700?
— ??!.. Перший — колісний трактор Мінського виробництва, який часто використовується на легких і середніх типах сільськогосподарського виробництва. У нього ще спереду маленькі, а ззаду великі колеса. Дон 500 — це, в основному, збиральний комбайн, а К-700 «Кіровець» — радянський колісний трактор загального призначення підвищеної прохідності, тяговий клас 5.
- Заведено. Добре (!!!).
- Дякую, Сергію Миколайовичу!!!

На моїй батьківщині поспілкуватися за трактором – це майже як тут за SOLID.

геній
Був у мене у групі Геній. Студент із першої пари сильно запізнився і не став разом з усіма збирати той пазл. Тоді я попросив його зробити те, що для всіх планував на наступне заняття — написати на листку подумки, чим він захоплюється, що йому цікаво. За результатами «Генія» мала 2-3 рядки: щось на кшталт «пізнаю марність буття»…

… О, Боже, у мене в групі в одній особі одночасно другі Лао Цзи та Кодзіма…
Основа будь-якого програмування на пазлах.

На мій подив на перших двох парах він справді блискуче відповідав на питання про терміни, проте ефект тривав недовго. «Геній» перестав відвідувати заняття і наступного разу прийшов лише на здачу першої лабораторної роботи, яку успішно не здав з об'єктивних причин. Потім через прогули у нього закономірно нагромадилися борги, які, як він вважав, я був просто зобов'язаний йому зарахувати, так би мовити, «по-братськи».
Невідвідування пар + підвищене НСВ суперечило встановленим принципам відвідування моїх занять. «Генія» мала лише 2 виходи із ситуації — реабілітуватися (очікуваний шлях) або забити на пари і сподіватися на «трійку», поставлену деканатом, щоб позбутися нероби.
Ну це ж «Геній»… одразу ж треба вчинити «геніально». Цей юнак не знайшов нічого кращого, як написати в загальному діалозі в ВК (де був я та всі студенти цієї групи) гнівну тираду з лайками та образами на мою адресу.

Мда… Розчарування.
Найбільше вразило, що перед завершенням процесу каральної операції з боку управління коледжем він вирішив вибачитися переді мною. За що? - Мені щиро незрозуміло. На той момент я був уже давно незалежний від критики, тим більше такої, відверто дурної. Моя особистість зачеплена не була, а ось процеси є процеси, як викладач я не міг не повідомити про це. Як виявилося, на нього за час навчання накопичилося вже стільки скарг, що цей випадок виявився останнім. Його відрахували. З останнього курсу ПТУ коледжу.
Можливо він уже давно спостерігає за мною в приціл снайперської гвинтівки, але мені, якщо чесно, все одно.
Ех, геніальність, безсердечна ж ти...

Епілог
Особисто для мене досвід викладання був одним із найбільш повчальних. Мені це допомогло закріпити фундаментальні знання щодо програмування після навчання в інституті. Я відчув у собі впевненість у вибраній спеціальності (спектри доступних спеціальностей). Особливу важливість становить те, що «найнеслухняніша група» перейнялася до мене повагою та дружелюбністю — це дорогого варте. Я зумів знайти шлях до їхніх внутрішніх новаторів, постарався прищепити реальність, а не ці шаблонні пріоритети. Шкода, що ми не дійшли до «пазлів» у кодингу — коли кожен мав би зробити частину коду, і, поєднавши всі частини в одну, ми отримали б велику робочу програму…
Сподіваюся, колись кожен із них відчує це… а поки що нижче зібрані скрини з відгуками кількох студентів через 2 роки.

Основа будь-якого програмування на пазлах.

Робити висновки про успішність кар'єри програміста у когось із них поки що зарано, адже зараз більша частина цієї групи навчається у ВНЗ. Час покаже.

Сподіваюся, стаття була корисною. Дякую за увагу!
Творчих успіхів та позитивного настрою, колеги!

Джерело: habr.com

Додати коментар або відгук