Опыт собственного преподавания на примере PHP
PHP вместо Pascal
Всегда увлекался программированием, начиная от участия в местных ACM в школе и до фрилансинга на PHP/Python в более зрелом возрасте. Не испытываю особой привязанности к какому-либо языку программирования, ибо считаю, что любую задачу можно написать на любимом ЯП.
Все пять лет в университете нас мучали pascal, а так как я остался в аспирантуре, решил по собственному желанию протащить идею преподавания более современных ЯП. Выбрал PHP и уже два месяца преподаю на курсах для желающих, осенью дадут «настоящих студентов».
Учитывая высокую мотивацию(как-никак, сами пришли и захотели изучить), народу первый месяц было много, две группы по 10 человек, занятия я проводил раз в неделю. Публика была с различным опытом, студенты старших курсов в основном; уровень был чудовищно низок. Начал с основ — редактирование файлов в FAR, заливка на ftp и просмотр результатов в браузере. Удивительно, как сложно было объяснить, что скрипт выполняется «где-то там», и для чего нужны манипуляции с загрузкой файлов. От Денвера я отказался, для некоторых товарищей просто рассказал, как пользоваться дистрибутивом и обозначил рамки его применения.
Вот план всех занятий PHPLan
Рассказ про установку под *nix я прервал, потому что боялся прослыть еретиком, студенты в нашем универе мало слышали про Linux, хоть во многих аудиториях стоит Gentoo со всеми user-friendly фишками типа автомонтирования флешек. Условились, что нас интересует только язык, и особенно в приложении к разработке Web-страниц, а установку и настройку оставим на потом.
Основы рассказывал с учетом знания того же pascal. В целом понимании хорошее, после пару занятий все запомнили, что для php нужен спецтэг.
Вообще, главный акцент я буду делать на практике. Вспоминая свои лекции, когда на проекторе лектор чтото мелкое показывает и бубнит под диктовку — ЭТО УЖАСНО, человек
- Во-первых, ничего не увидит
- Во-вторых, если увидит и запишет, но ничего не поймет, будет злиться
- В-третьих, когда дело дойдет до практики, все забудется.
Столкнулся с первой проблемой — очень неохотно читают, буквально не видят, что там написано и делают странные ошибки. Сначала списывал это на обилие английских слов(ха-ха, а как же pascal?), потом отчаялся понять. Не хотят читать — ладно, очевидно понравилась практика — но явного восторга пока не было.
Вторая проблема — я поставил себя как «доброго преподавателя». Что такое «добрый преподаватель»? Этот тот, который никогда не оставит студента один-на-один со своей ошибкой, и не скажет — «ну вот тут что-то не работает, но я не буду искать». Я твердо решил, что студент не уйдет от меня без понимания, почему возникла ошибка и почему он ее не победил. В будущем я буду несколько «злее», потому что ученики расслабились и уже не хотят сами исправлять ошибки.
Возникли некоторые сложности с отладкой программ, но придерживаясь минимализма, никаких крутых сред я не использую. FAR+Colorer.
Далее были функции. Вспоминая, как я изучал в свое время такие вещи как «функция», «аргументы», «возвращаемое значение» постарался объяснить на примерах(числа фибоначчи, факториалы). Не поняли совсем область видимость переменных и передачу по ссылке. И в целом функции были восприняты с недоумением, должно быть человек еще не представляет, как их можно использовать в написании больших проектов, эту проблемы мы решим написание большого проекта со множеством файлов.
Рассказал про рекурсию, не понял ни один человек из 20. Написал на доске и удостоверился, что оно работает — никто не понял, но рекурсию стали считать колдовством. Договорились, что лучше рекурсией не злоупотреблять.
Дошли до массивов.На этом этапе студенты начали понимать отличия PHP от
Следующим этапом была работа с файлами, сейчас упражняемся уже несколько занятий. Говоря «работа с файлами», я имел в виду загрузку файлов на сервер, всевозможную обработку, а также чтение/запись файлов на сервере. Удивительно, но мало то знал HTML — а я-то думал, что сейчас его знает любой школьник. Думаю, есть несколько причин:
- 1) Распространение WYSIWYG-редакторов. Это конечно добро, но как без знания основных тегов что-то писать?!
- 2) Лень читать и запоминать язык разметки.
И, наконец, самое интересное — взаимодействие c Mysql. На это ушло несколько занятий и занимаемся до сих под. В моем универе SQL «преподают», по почему-то его никто не помнил. Я был к этому готов и сделал занятие, посвященное основам SQL и рассказал про phpMyAdmin. Как я писал выше, визуальные среды — это не очень хорошо, но работать через командную строку мои студенты не смогли бы, просто знаю это. Понимание типов данных и общей концепции прошло хорошо, сейчас работаю над полным пониманием SQL. На данном этапе в практической реализации у студентов несколько проблем, все порываются писать команды непосредственно в коде PHP, делаю акцент на правильном построении запросов и обработке.
Реализовали web-форму с авторизацией по логину/паролю и небольшое файлохранилище.
Обучение продолжается, хоть энтузиазм студентов иссяк. Я суммировал свои ожидание с реально полученными фактами. Я хотел расшевелить застарелую культуру преподавания
- 1) Без мотивации со стороны студентов преподавание любого ЯП превращается в пытку студентов же.
- 2) При должном подходе, с упором на практику, возможно в короткие сроки подготовить «криэйторов», кто-то из них поймет суть языка и будет применять его.
- 3) Преподаванием современных ЯП должны заниматься молодые преподаватели. Возможно, не самый объективный пункт в выводах, но без энергии нельзя донести до студентов эту самую суть.
- 4) Модель «доброго преподавателя» работает на примере PHP на 75 процентов хорошо.
Буду рад любым замечаниям и предложениям.
UPD.
Копии документов на GoogleDocs
PHPLan
3_BasisPHP
4_Functions
5_Arrays
6_Files
7_Mysql



комментарии (150)