Как я проводил курсы по программированию

6 Июл
2012

Добрый день, уважаемое сообщество. Хочу поведать историю о том, как я пытался повысить интерес студентов к программированию и качество кода, который эти студенты пишут.
Интересоваться программированием и всем что связано с компьютерами я начал еще в школе и в качестве места получения высшего образования был выбран институт ИТ-направления.

Год назад, закончив второй курс, я устроился работать программистом в местный научно-технический центр. Денег, конечно, там больших не было, но меня и интересовали больше не деньги, а опыт и знания, которые я получу. Мне тогда очень повезло с наставником, который быстро и жестко отучил меня от говнокода, а так же заставил соблюдать кодстайл.

Через несколько месяцев по воле случая мне пришлось увидеть лабораторные работы студентов на год младше меня. Сказать что я ужаснулся — не сказать ничего, но я думаю вы сами все понимаете. Тогда я понял, что дальше так жить нельзя и в конце марта объявил о том, что буду проводить курсы по программированию для студентов нашего института.

Поскольку знания мои на тот момент очень хорошо покрывали институтский курс ООП, но в серьезных областях были недостаточны, я решил строить программу курсов «для начинающих».

Вот примерный план того, о чем я собирался рассказывать:
1. Выполнение программы, компилятор, препроцессор.
2. Типы данных С, переменные, константы, функции, условия, циклы, множественные условия (switch), структуры.
3. Виды памяти, работа с памятью, ссылки и указатели, ошибки работы с памятью.
4. Классы, объекты, методы, конструкторы, деструкторы, перегрузка.
5. События, механизмы обработки событий.
6. Парадигмы ООП (инкапсуляция, наследование, полиморфизм).
7. Наследование, виды наследования, типы свойств и методов (public, private, protected).
8. Полиморфизм, виртуальные функции, чисто виртуальные функции, абстрактные классы.
9. Инкапсуляция, классы-друзья, ошибки проектирования объектно-ориентированных систем.
10. Стандартная библиотека шаблонов: контейнеры, методы, итераторы.
11. Исключения.
12. Проблеммы, связанные с исключениями, интеллектуальные указатели.
13. Проект boost, библиотеки Smart Pointer и Scope Exit.
14. Codestyle, создание поддерживаемых приложений.

Через публичные странички факультетов нашего института я пустил объявление и тем самым совершил свою первую ошибку. Курсы оказались настолько актуальными, что к вечеру того же дня количество человек в созданной группе ВКонтакте перевалило за сотню. Встала проблема: количество людей нужно уменьшать. В качестве преподавателя я рассчитывал только на себя и большое количество человек я бы просто не потянул. Курсы я хотел проводить для «качества» и количество человек рассчитывал исходя из того, что смогу на протяжении всего занятия держать внимание на себе. Держать внимание 5-8 человек можно, 10-12 только имея достаточный опыт, а больше уже практически нереально. А если учесть, что это был мой дебют, то ситуация была аховая: заинтересовать людей я сумел, а работать со всему уже не могу.

Сначала я пытался отсеить людей, зашедших «мимоходом» и устроил «перепись» — тех, кто хотел посещать курсы я попросил отписаться в специальной теме. Отписалось больше 50-ти человек, что тоже было слишком много. Тогда пришлось действовать более кардинально: местом проведения курсов я определил студгородок и сказал, что курсы будут проходить в вечернее время. Таким образом я потерял примерно половину будущих «учеников» и теперь их стало около 30-ти, но с таким количеством уже можно было начинать работать.

Разумеется я смотрел правде в глаза и понимал, что количество людей на первом и последнем занятии будет отличаться на порядок (так, кстати говоря, и получилось). Поэтому я объявил о том, когда будет первое занятие.

Занятия должны были проходить «комнате самостоятельного обучения» (помещение, где студенты могут учиться в тишине в любое время суток), где имелось достаточное количество столов, стульев и, самое главное, была доска.

На первом занятии был аншлаг и несколько человек сидело на столах из-за нехватки стульев. Пришло около 30-ти человек, большинство было с первого-второго курса.

На второе занятие количество людей уменьшилось примерно до 15-ти, чему я был в какой-то мере рад, и далее уменьшалось все медленнее. На последнее же занятие пришло 4 человека 🙂

К сожалению, из-за нехватки опыта в подобных мероприятиях, я не рассчитал скорость изложения материала и последние 2 пункта моего первоначального плана я не затрагивал. К тому же из-за той же нехватки времени мне пришлось рассказывать только теорию без практического закрепления (оно было предложено в другой форме, но об этом ниже)

Итак, какие я смог сделать выводы:
1. Нужно правильно рассчитывать эффект, который произведет PR-акция. 4 публичные страницы один раз сделали репост объявления и привели в группу более 100 человек и это количество пришлось уменьшать.
2. Нужно правильно рассчитывать скорость изложения и не брать слишком много тем.
3. Нужно наладить хорошую обратную связь. Я пытался это сделать через объявления от имени группы, просил людей писать отзывы в группе, но появилось всего 3-4 отзывы и те абсолютно положительные.
4. В программировании важна практика. Именно поэтому я решил не оставлять людей, «дошедших до конца» и предложил им совместно заниматься программированием, но это уже тема для другой статьи.

Ну и чтобы не быть голословным оставлю несколько ссылок:
1. vk.com/cplusplus_to_all — группа ВКонтакте.
2. www.in-versia.ru/blogs/1/posts/161/ — статья в газете, которая выпускается в нашем институте
3. www.zelenograd.ru/news/7488/ — статья в местном инфопортале

Буду рад любым советам, предложениям и конструктивной критике.
По материалам Хабрахабр.



загрузка...

Комментарии:

Наверх