Учебный процесс в IT

индекс
214,21

Опыт собственного преподавания на примере 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 от зла pascal. На ура были приняты ассоциативные массивы, и потихоньку появлялась радость от своего родного и работающего кода. Рассказал, что в PHP очень много встроенных функций, предостерег от изобретения велосипеда и назвал шесть волшебных букв — php.net. Но так как народ мой не очень любит читать, то кажется туда ходить будут редко, только по нужде. Обзор стандартных функций был запланирован чуть дальше.

Следующим этапом была работа с файлами, сейчас упражняемся уже несколько занятий. Говоря «работа с файлами», я имел в виду загрузку файлов на сервер, всевозможную обработку, а также чтение/запись файлов на сервере. Удивительно, но мало то знал HTML — а я-то думал, что сейчас его знает любой школьник. Думаю, есть несколько причин:
  • 1) Распространение WYSIWYG-редакторов. Это конечно добро, но как без знания основных тегов что-то писать?!
  • 2) Лень читать и запоминать язык разметки.
Пришлось делать дополнительно занятие для изучения основ HTML, и тогда мои примеры на тему «загрузка файлов на сервер» стали понятнее. Загрузкой файлов и особенно от обработкой GET/POST запросов студенты увлеклись, понимание было близко к полному, проблемы на данном этапе остаются от забывчивости первых занятий — приходится доставать старую методичку. Тем лучше справляются студенты, чем лучше они работали с файлами на других ЯП.

И, наконец, самое интересное — взаимодействие c Mysql. На это ушло несколько занятий и занимаемся до сих под. В моем универе SQL «преподают», по почему-то его никто не помнил. Я был к этому готов и сделал занятие, посвященное основам SQL и рассказал про phpMyAdmin. Как я писал выше, визуальные среды — это не очень хорошо, но работать через командную строку мои студенты не смогли бы, просто знаю это. Понимание типов данных и общей концепции прошло хорошо, сейчас работаю над полным пониманием SQL. На данном этапе в практической реализации у студентов несколько проблем, все порываются писать команды непосредственно в коде PHP, делаю акцент на правильном построении запросов и обработке.
Реализовали web-форму с авторизацией по логину/паролю и небольшое файлохранилище.

Обучение продолжается, хоть энтузиазм студентов иссяк. Я суммировал свои ожидание с реально полученными фактами. Я хотел расшевелить застарелую культуру преподавания зла pascal, и у меня это получилось. Другой вопрос, насколько это нужно самим студентам. По моим прикидкам, в нашем ВУЗе заинтересованных — 10-15%. Отсюда выводы
  • 1) Без мотивации со стороны студентов преподавание любого ЯП превращается в пытку студентов же.
  • 2) При должном подходе, с упором на практику, возможно в короткие сроки подготовить «криэйторов», кто-то из них поймет суть языка и будет применять его.
  • 3) Преподаванием современных ЯП должны заниматься молодые преподаватели. Возможно, не самый объективный пункт в выводах, но без энергии нельзя донести до студентов эту самую суть.
  • 4) Модель «доброго преподавателя» работает на примере PHP на 75 процентов хорошо.


Буду рад любым замечаниям и предложениям.
UPD.
Копии документов на GoogleDocs
PHPLan
3_BasisPHP
4_Functions
5_Arrays
6_Files
7_Mysql

+18
21 февраля 2010, 20:11
64

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

+10
Andrey_Rogovsky #
Основная проблема — народ не любит читать. Как привить любовь к чтению? Это должно быть еще в детстве.
+8
ipfw #
Люди делятся на тех кто любит читать и на тех кто еще не знает, что любит.
+4
android_net #
Я это узнал в 23 года, к моему глубокому сожалению :(
0
quiet_drago #
Возник 1 вопрос, сожалеете, что узнали, или что аш в 23 года?
0
android_net #
«что аш в 23»
+6
13i #
Народ не любит читать то, что ему не интересно. Например, один может прочитать книжку, а другой сотню статей, но зато к книжке не притронется и про него потом скажут, что он не любит читать.
НЛО прилетело и опубликовало эту надпись здесь
0
TuKTeeK #
Ну теперь видите. :)

Просто прочитать пару страниц и получить в голове представление того что прочитал, гораздо приятнее, чем читать книгу в которой мысль бывает и по сотне страниц размазана.
+1
13i #
да я и сам, признаюсь, не припомню никого из знакомых.
ну хотя бы на меня посмотрите.
+10
ixSci #
Возможно, в этом виновата школа, на уроках литературы, зачастую, дают слишком сложные книги, я до сих пор помню с каким трудом я читал «Преступление и наказание», «Войну и мир», «Тихий Дон», сейчас же я с удовольствием читаю подобные книги. С другой стороны, в школьные годы я с удовольствием читал Дюма, «Мастер и Маргариту» Булгакова и прочую, не очень сложную, литературу. Возможно, надо прививать любовь к литературе постепенно, по возрастающей и не кидать детей сразу в дебри классиков.
–7
romx #
Ну вообще-то не кидают, начинают с Колобка, с Мойдодыра, с «Мама мыла раму», не они виноваты, что вы все это отчего-то пропустили :-|
0
Cancel #
Что-то я не припомню вообще сказок в школе. Это уровень детского сада, или домашнего чтения. А в школе сразу начинается пц какой-то: т.н. «сказки» Толстого (инфернальный кошмар), про природу что-то и т.п.

Я вот в школе не читал ни Достоевского, ни Толстого, лишь быстро пробегал, читал критические статьи, чтобы сочинение написать и забыть. А читал дома совершенно другое. Так что именно школа виновата, что прививают отвращение к чтению.
–2
romx #
Ну да, конечно, знакомо, у таких людей все время кто-нибудь, да виноват :)
0
Cancel #
А по существу возразить нечего? Я благодарен школьной литературе только за то, что она научила меня читать произведения по диагонали.

А вот что мне нравилось, я читал запоем. Я читал официальный вариант «Мастера и Маргариты», я читал черновики Булгакова (которые в журнале «Слово» публиковали). Это было круто, это было интересно. А Достоевский и толстой — это ужасно скучно и тоскливо. Для школьника. И они в школьной программе не нужны, поскольку дети до таких текстов ещё не доросли.
+1
djkobraz #
Основная проблема не в том какие дают читать книжки, а в том что-то кто-то решает за нас — что нужно нам прочесть… Это как в ресторане — вы заказываете то что нравится вам, а если принесут что-то другое — то есть вы его будете только если уж очень голодны, и к тому же при условии что это не вызывает у вас отвращения… Мы читаем в поезде неинтересные газеты, потому что нам скучно, и выбросим их когда выйдем из вагона, но есть книжки которые нас увлекают, порой даже забирая время здорового ночного сна…
0
Mithgol #
Школа целенаправленно разлагается вредителями: в школе намеренно преподают чтение на скорость, уделяя пониманию прочитанного мало внимания. В итоге выходят дети с навсегда изувеченными навыками, которые читают текст с бешеной скоростью, игнорируя возникающее непонимание. У них нет рефлекса посмотреть в словаре впервые попавшееся слово или возвратиться переосмыслить не до конца воспринятое словосочетание, предложение, мысль.
+1
Mithgol #
[данные РИА Новости о чтении]
0
Cancel #
Сейчас в моде другой стиль — не растекаться словесами по странице, пуская одно сложноподчинённое предложение за другим, а кратко, компактно и сжато изложить суть. Выживает то, что востребовано.
0
TuKTeeK #
Естественно, информации-то все больше и больше с каждым годом. Хотя мне больше нравится когда информация доносится несколько раз разными способами. Если сразу не понял — вот тебе пример, вот аналогии, вот сравнение, вот противопоставление.
+2
Cancel #
Есть и другая версия. Просто сейчас всё стало заметнее, раньше, без интернетов, тупое быдло (условно говоря) не было глобально заметно, а сейчас во всяких вконтатках стало.

Я вот точно могу сказать, по своему родному мелкому городу. Как раньше ничего не читали, так и сейчас не читают. Ничего не изменилось.
0
Cancel #
Ой, не надо ерунды говорить. Этому (осмысленному чтению) НИКОГДА не учили в школе, ни в советской, ни в российской.
0
Arris #
В моей школе учили. Как на русском, так и на хинди.

Сейчас правда жалею часто, что относился к этому безалаберно.
0
Mithgol #
Вообще же статья Л. А. Ясюковой «Психолого-педагогические причины неграмотности современных школьников» (2007 года) наглядно свидетельствует, что учителей начальных школ принуждают следовать именно такой «передовой» методике, благодаря которой очень многие русские дети вырастают совершенно неграмотными.
0
taliban #
я в детстве не любил читать, сейчас же мне интересно, дело не в детстве, а в том _что_ ты читаешь, если интересно будешь читать
+1
Ladygin #
Респект вам за терпение! :)
Кому то это не интересно, а кто-то сам собирает информацию и изучает…
+2
coolmiha #
Кстати о терпении — да, это штука со мной.
Но все еще только начинается, осенью будет жарче.
0
SychevIgor #
Действительно, мое Вам уважением за терпение.
Сам являюсь студентом до сих пор и по этому расскажу Вам чуть чуть с другой стороны. Мне так же как Вы сейчас в свое время читали ЯП на добровольной основе.

Что возникает не понимание у студента и он списывает с бумажки -это первое время нормально. Я так месяца два с бумажки списывал. Потом начал больше понимать писать сам и править баги в распечатках, через год научился писать самостоятельно и искать решение проблемы. Просто искать решения проблемы даже на известном ресурсе(у меня правда это был msdn) по началу трудно, тк проблему не можешь идентифицировать.
В общем первые пару месяцев, если студенты как на пример я в начале обучения программирование не знают совсем(мой уровень был на уровне c>>«Hello Word»; с 2 ошибками в синтаксисе), придется смириться и долго и мучительно «втирать» знания в мозг, как Вы это и делали.

На счет рекурсии — смысл рекурсии мне стал понятен на середине курсов- РЕКУРСИВНЫЕ АЛГОРИТМЫ, ОПТИМИЗАЦИЯ АЛГОРИТМОВ, которые мне читали целый семестр каждый.
До этого курса 2 года не понимал: как их писать(сам вызов функции понятен, не понятно было как писать сам алгоритм рекурсивно), зачем их писать(мне сразу сказали что он проигрывает по времени работы циклам и любой рекурсивный алгоритм может быть сведен к циклам).

В общем что бы понять ЗАЧЕМ (КОЗЕ БОЯН), я должен был прослушать 2 семестровых курса( на которых мне объяснили какие накладные расходы на рекурсию, теорему Бунтли-Хаккен-Сакса, рассказали про рекурсивные и потоковые алгоритмы сортировки).
Так, что не удивляйтесь их не пониманию, я не знаю был ли у них курс по рекурсивным алгоритмам или нет, но понимания необходимости их использования вместо циклов -очень сложно. Особенно когда самый очевидный вариант обойтись без них
0
Alroniks #
Построить дерево намного проще через рекурсию и это самый простой и легко усваиваемый пример. Я понял рекурсию благодаря работе именно с деревьями. А еще у нас был LISP, вот там рекурсия радовалась :)
–1
ppiskun #
Страно, почему никто не понимает рекурсий? Как только предо мной встала задача — сделать выпадающее меню неограниченной вложенности, рекурсию я понял за 3 минуты. И это учитывая то, что я — школоло
0
nini #
А у нас проф по базам данных хитро свою методичку делал. В самом начале шли нормальные слайды, вступление там, что такое SQL, пояснения к sql запросам и к их результам и т.п.

Но когда становилось сложнее и появлялись всякие лефт, райт, аутер и т.п. джоины и другое, он делал просто:
Частично убирал данные из запроса или его результата. Таким образом, например, были видны исходные данные в таблице, результаты выборки, а в самом запросе стояло грубо говоря что-то типа SELECT * from table1… JOIN table2 ON table1.id = table2.table1ID.

За счет этого студентам приходилось по крайней мере слушать, подписывать свои комментарии на страницах методички, заполнять пустые места. Конечно, в своем рассказе он старался подводить студента к самостоятельному выводу, и потом быстро заполнял пустое место и переходил к следующей странице.
+1
nini #
Дело было в Германии, тут особо не посписываешь.
+1
coolmiha #
Да, оригинальный метод. Но рассчитан на внимательного слушателя.
+3
nini #
Ну кто невнимательно слушает сам себе злобный буратино. У нас к каждой лекции потом практическое занятие было, где знания из лекции очень помогали, а в конце экзамен был само собой.

По алгоритмам один проф любил для любознательных и не только вначале лекции задать задачку на дом с заковыркой. А через неделю спрашивал, как и кто решил.
0
atlete #
Очень интересный подход. Как минимум заставляет пошевелить мозгами.
А также заставляет мыслить не стандартно при появлении какой-либо нестандартной задачи.
0
iNight #
Эх, нам бы таких преподавателей…
А то ж ведь наши только издеваются над студентами, не понял, не знаешь, иди учи, а нет, чтобы объяснить. Я правда совсем не программист, но думаю, что любому предмету нужно учить обязательно показывая, как это работает и что будет.
+2
nini #
Да, тут обычно стараются доступно обьяснить. Но не разжевывают. Если студент по ходу лекции не догоняет, это его обязанность готовиться к незнакомому материалу заранее. Своеобразная pre- и postподготовка.

Например, выс.математика преподается как обычно — «из этого естественным образом следует это». Для неподготовленного, это «естественное» оказывается совершенно сверхьестественным.
0
Cancel #
так это «естественным образом» адресуется именно что подготовленным.
+2
kmike #
Хм, по опыту — в программировании ничего кроме «иди учи» (самостоятельного обучения) не работает. Не знаю как где, а у нас кто до поступления не умел программировать (=не учился сам), тот и к выпуску не научился.
+2
Mirowind #
Я сейчас веду кружок в одном внешкольном учебном заведении, не знаю как у вас со студентами, у меня со школьниками главной возникшей проблемой была мотивация.
Вышла примерно такая пропорция: из 10 человек 3 хотят что-то знать, из этих 3-х только 1 пытается освоить какой-либо материал самостоятельно. Остальные 7 радуются, что на машинах «есть интернет и можно посидеть ф контакте», хотя им никто и не дает.

Дела, кстати, немного улучшились после того как большую часть возможностей PHP стал демонстрировать в контексте использования User API тоже же контакта… по крайней мере, заинтересованных в изучении языка стало куда больше. Раз уж не получается вбить в голову подрастающему поколению, что социальные сети это зло…

Насчет Pascal — тут у нас ситуация немного хуже. Полностью от него избавиться до сих пор не выходит. Практически на всех конкурсах и школьных олимпиадах у нас (в Украине, как у соседей — к сожалению не осведомлен) для реализации практических заданий дается только Pascal. Домашние же работы — на чем угодно.
Это сильно затормаживает переход к более новым языкам программирования. Хотя на практике для обучения основам программирования уже год как заменяю Pascal языком Python.

Вообще это радует, что все больше людей пытаются отказаться от использования в обучении морально устаревших технологий. Удачи вам в этом нелегком деле :)
+2
coolmiha #
Спасибо. Я наверно еще не понял, во что ввязался) но это «нечто» мне нравится.
Про «Вконтакте» я на занятиях только упоминаю, до User API его далеко еще. Удивительно, но даже про соцсети не все знают, не говоря уже про изучение принципов их работы.
А насчет pascal — ничто не вечно.
0
Barttos #
У нас (Молдова) в школе только паскал, олимпиады на выбор pascal, c, c++, задания одинаковые.
–1
Mirowind #
Да, на независимых конкурсах у нас так уже начали делать тоже, а вот на школьных олимпиадах пока главенствует pascal…
+3
stand_up #
В Украине тоже распространен паскаль :)
Я не в курсе с какими знаниями сейчас люди приходят в универ, но когда я поступал, программирование как таковое понимали единицы, те кто пришли из математических лицеев. Я же пришел со школы и для меня логика, программирование и все что с ним связано было новинкой. Поэтому только курсе на 4-5 полностью я понял, что те 2 года «сидении» на Паскале не прошли зря. Первые шаги — нужно научится просто мыслить алгоритмично, набить руку, пытаться своими руками кодить алгоритмы и чем больше тем лучше… По мойму на этом этапе все равно на каком языке, а Паскаль проще все таки для понимания. Когда уже прошел это все кажется, что оно одинаково, но разница все же есть. А потом уже можно, да и нужно, переходить на C, потом на C++, и уже тут начинать изучать принципы объектного программирования.
Может уже сейчас дети смогут и с 1-го курса понять объектное программирование, но 10 лет назад это было бы крайне сложно и из всей группы осилили б его максимум 10%.

Задача института научить учится. В любом случае заканчиваешь его и понимаешь, что это только начало…
+1
Arris #
Хороший язык Pascal. Вот только изучать его в качестве основного в ВУЗе — плохо.

В детском садике еще ладно, ну в третьем классе… но блин… в ВУЗе…
+9
ipfw #
Вы молодец что стараетесь что-то изменить в системе образования, но мне непонятна такая ненависть к паскалю. Да пхп это актуально, круто и т.д, но вспомните свой путь, научившись программировать хоть на чем-то, дальнейшее изучение других ЯП той же парадигмы сводиться к простому запоминанию семантики, ключевых слов и особенностей языка.

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

Ваш подход интересен тем что он позволяет сразу «взять быка за рога» и писать на популярном, развивающемся языке, причем результаты видны уже в самом начале обучения, но задумайтесь, что получиться в конечном итоге? Программисты без способности к самообучению, постоянному совершенствованию (а это почти всегда чтение специализированной литературы)? Да грош цена таким специалистам.

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

В любом случае Вы получили (и продолжаете получать) бесценный опыт, а это самое главное. Спасибо что делитесь. Удачи.
–1
coolmiha #
Спасибо.
Мне сложно описать свои чувства к паскалю, да, это мой первый язык, (тут еще на статью мыслей наберется).
Наверно, ставя себя на место студентов, я бы не хотел начинать с простого. С места — в карьер. Кто не справился — на второй круг, и так далее.
+16
mx2000 #
А как вы после PHP объясните людям принципы строго типизированных языков? Взяв PHP в качестве первого языка, вы оказываете медвежью услугу, имхо.
+2
SabMakc #
Полностью с Вами согласен.
Основная причина преподавания pascal не в том, что программу менять не хотят, а в том, что это азы.
Да, после изучения С/С++ я вообще не могу смотреть на pascal, но благодаря именно этому языку я научился программировать.
Рascal специально разрабатывался для обучения студентов, и, я думаю, это не просто так было сделано. У РНР совсем другая специфика, и, если после pascal можно выучить и РНР и С/С++ (впочем, как и любом другом языке), то после РНР выучить С/С++ будет очень и очень сложно (т.к. между РНР и С/С++ есть фундаментальное отличие: строгая типизация).
Да, это устаревший язык, но мы в 1м классе не учимся же поэмы сочинять, мы просто изучаем азы писания и чтения.
На мой взгляд, РНР надо изучать, но только после того, как азы уже будешь знать, т.е. после pascal.
–1
Mithgol #
На всякий случай укажу, что существует доходчивое доказательство, согласно которому для первоначального обучения студентов программированию гораздо лучше годится именно язык Паскаль, нежели Си.

(Ссылку эту я впервые на Хабрахабре увидал, но там к ней какие-то на удивление умоотвлечённые комментарии даются.)
0
SabMakc #
к ней какие-то на удивление умоотвлечённые комментарии даются.
Так в том топике не высказывается мысль того, что Рascal — зло ;)
А в данном топике была высказана конкретная идея заменить его на РНР, что и вызвало волну комментариев, говорящих о нецелесообразности такого решения.
А за указанною Вами статью Gaen надо указать спасибо, самый аргументированный комментарий. Хотя и говорится лишь о нецелесообразности разу С давать в связи его сложности. Здесь же нецелесообразность РНР связана не со сложностью. а со специфичностью этого языка.
0
coolmiha #
Да, спасибо, отличная статья.
+1
Wave #
Исходя из опыта обучения в физмате и т.п.
но рекурсию стали считать колдовством. Договорились, что лучше рекурсией не злоупотреблять.

Это неправильно. Нужно давать и давать однотипные простейшие примеры на заданную тему, пока мозг студента не привыкнет к концепции и не запомнит на уровне рефлексов входящие и результат. В какой-то момент наступает понимание. Даже не внезапно, а как со взрослением.
Правда на это требуется время (и осознанная студентом необходимость).

Исходя из опыта крупных проектов: я до сих пор пишу в ФАРе. Уж сколько раз пробовал сжиться с нетбином, эклипсом или чем-то таким. Ведь в навороченых IDE есть очень много гитик, ускоряющих и облегчающих разработку. И всё равно возвращался в ФАР.

По моим прикидкам, в нашем ВУЗе заинтересованных — 10-15%.

Я сейчас на заочке на “программной инженерии”. В группе из восьми человек я единственный, кто имеет серьёзный опыт программирования. Ещё пара имеют хоть какое-то представление о сабже и намерены учиться. Остальные на уровне от чайника до пользователя вконтакта. Кто просто сюда смог поступить на бюджет, кто не понял сразу, куда ввязался.

Кстати, о паскале. Его изучение почти не помогло никому при изучении шарпа. А в целом мне вспоминается цитата откуда-то с около-башорга: «понимать книгу “С++ за 21 день” я начал только где-то через полгода».
+5
DileSoft #
Вы сказали студентам, что на ПХП написан их любимый «Вконтакте» и вообще полРунета? ;)
0
stand_up #
Действительно, и для меня было с самого начала тяжело понять, что скрипт выполняется и все… Что соединение с БД происходит каждый раз при запросе скрипта… Из книжки конечно скопипастил и что-то заработало, но все равно интуитивно пытаешься сперва все «подогнать» под виндовые приложения, когда 1 раз запустил и все коннекты, значения переменных сохраняются, пока не закроешь программу… Если б кто-то на пальцах объяснил — было б сразу понятнее.
0
Wott #
имхо:

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

Что бы не терялся энтузиазм нужно двигаться мелкими шажками, но неуклонно. Люди годами играются в ММОРГи только потому что прогресс на лицо. Как это сделать — сходу не скажу. Наверно надо придумать конечную цель — сделать себе сайт, раз уж PHP, и разбить его на этапы, добиваясь какого-то результата каждое занятие, начав с простой страницы ( привет HTML ) и заканчивая симпатичным «хомяком». Видимость прогресса очень важна. И каждый этап должен заканчиваться вознаграждением.
НЛО прилетело и опубликовало эту надпись здесь
+33
xonix #
Пытался написать глубокомысленный содержательный комментарий, но что-то слова плохо идут. Стер и напишу тезисно следующее.

— Паскаль в качестве первого ЯП — весьму тру.
— Паскаль вообще в обучении — тоже тру, несмотря на то что на практике применяется все реже. Просто потому что грамотно спроектирован, минималистичен, строг, на нем удобно давать алгоритмику, АТД,…
— Высокоуровневые языки (lisp, python, возможно SML, Haskell) надо давать после низкоуровневых, или факультативно. Иначе студенты просто не поймут, как они работают, какие низкоуровневые структуры/особенности лежат в их основе, как оптимизировать код, не оценят удобство высокоуровневых языковых конструкций (примут их как должное).
— ПХП вообще не место в образовательно процессе, ибо не учит ничему хорошему и весьма нишевый (хоть и ниша большая). Кому надо пройдут курсы или прочитают книжку.

Резюмируя свою мысль, отмечу что совершенно не понял постановки вопроса замены традиционного и оправданного в обучении Pascal'я на нишевый динамический ЯП, не самым лучшем образом иллюстрирующих хорошие практики программирования.

Сам прошел по пути паскаль (школа) — дальше универ — си (алгоритмы) — си (unix system v) — Java (ООП) и считаю весьма правильным.

Моё мнение, уж простите, но таким подходом вы плодите и без того не малую армию, мягко говоря, низкоквалифицированных разработчиков, кроме PHP, Mysql ничего толком не знающих.

Подозреваю минусы от адептов пхп, ну да ладно, всего лишь высказал мнение.
0
coolmiha #
Все по делу сказали.
Но все же надо принять во внимание — специалистов по Java, ох, у нас весьма сложно отыскать. Я намеренно не пишу название ВУЗа, потому что все равно это ничего не скажет. Но протащить хотя бы PHP — это первый шаг.
А специалистов по С++ попросту нет.
+9
faberge_eggs #
Без ассемблера цепочку считаю не полной, понимание «что же все-таки происходит» сразу переходит на новый уровень.
+1
elw00d #
Ассемблер обычно изучается параллельно с изучением Си. Это действительно дает глубокое понимание того, как работает Си.
0
FlashXL #
Как мне кажется, синтаксис Паскаля в оптимальном соотношении оперирует всякими значками, спец.символами ($, #, & и прочие), в основном — полноценные слова типа begin, end, and, or, array of integer и т.п. Это все проще воспринимается.
0
zahardzhan #
Помоему, высокоуровневые языки (начиная от Питона — Руби, Лисп) гораздо лучше отражают сущность программирования, чем низкоуровневые — будь то Паскаль, Си и (только сильно не пинайте) Джава, поэтому их надо давать до низкоуровневых. Низкоуровневые языки, как правило, прививают плохой вкус — нормальное программирование в них предстает в виде борьбы с ограничениями в выразительной силе самого языка (паттерны ООП и иже с ними).
0
ProRunner #
Переместите топик в какой-нибудь блог, чтобы он появился на главной. Например, в Учебный процесс. Присоединиться к блогу (знак плюса), а потом редактировать и выбрать нужный блог из списка.
0
coolmiha #
Перенес, спасибо!
0
Roler #
«но мало то знал HTML — а я-то думал, что сейчас его знает любой школьник»
Да мало где учат HTML.
Сейчас в школах, в основном, либо учат создавать папки пятью способами, либо, в лучшем случае, паскалю.
+1
Gibbzy #
ну и как научились люди массивы сортировать пузырьком или sort($array)?

0
vanomel #
coolmiha, будь я твоим студентом, то обязательно разок в форму ввёл бы что нибудь типа ";DROP TABLE test;"
0
coolmiha #
Да пожалуйста.
Вопрос про безопасность разрабатываемых программ будет обсуждаться обязательно, но после основной программы.
0
andoriyu #
>Удивительно, но мало то знал HTML — а я-то думал, что сейчас его знает любой школьник. Думаю, есть несколько причин:

а какой это курс? я когда пошел в универ тоже не знал HTML, но уже знал asm и c/c++. даже после первого семестра изучения html я мало, что знал — основные теги я знаю, а ничего нового там не преподавали. паскаль я тоже не знал, но не мешало мне досрочно закрыть сессию на 5 :)

маленько о дьявольком паскале: в сша он идет под названием «основы ЯП из-за его простоты изучения. и идет он только 1 семестр. потом любой из доступных ЯП на выбор.
–1
coolmiha #
Пятый курс.
Про паскаль в США дьявольское открытие для меня.
0
andoriyu #
ну на 5 курсе таки надо уже знать HTML O_o хотя из принципа :)

Для меня это было тоже дьявольское открытие. Я такую речь там закатил о том, что я свалил в США только, чтобы паскаль не учить. Впрочем курс не обязательный если познания в ЯП уже есть можно пропустить. Мой знакомый(а точнее classmate из math класса) ходит на основы(паскаль), и на java.
–2
tarantul85 #
Хорошим делом занимаетесь! Я помню своих преподов из времён совка. Они просто впихивали информацию. Из-за этого я ненавидел некоторые предметы. А вы, автор, чуть ли не по Макаренко преподаёте, с самоанализом. Побольше бы таких как вы. Респектую.
–1
coolmiha #
Спасибо. Конечно, вопросами педагогики я не увлекался особо… Еще выручает возраст студентов — с пятым классном было бы намного сложнее.
–1
tarantul85 #
Ну не знаю… Мне кажется что 5-ый класс обучить программированию было бы даже проще. Лично мне было проще обучать младших школьников, превратив всё это дело в игру и добавив немного конкуренции.
+7
mordet #
Смотрю на Вас с пониманием, тоже читал курсы по сетям (не очень) заинтересованным первокурсникам. Мне удалось заинтересовать примерно половину потока, вторую, незаинтересованную, я сразу распустил по домам и выставил минимальные баллы для прохождения этого этапа.
С первого взгляда, недальновидный поступок, но вот результат: я вытаскивал студентов из тесной аудитории в парк (весна, лето...) и _разговаривал_ с ними сидя на скамейках в дружеской атмосфере.
Не только основы типа видов топологий сетей, но и детальное рассмотрение модели OSI прошло на ура.

А вот разговор об обучении студентов php меня всегда пугает. Ну нельзя начинать обучение не со строго типизированного языка! Да, гораздо проще работать со строками в php, чем в Си, но без понимания элементарного расположения переменных в памяти толкового программиста не сделать, хоть глаз выколи.
Паскаль прекрасен своим синтаксисом! Очень хорошо «усваивается» все языковые структуры, пишутся первые алгоритмы. Далее очевидным продолжением почти везде (и не зря) дают Си, затем ООП на плюсах — и это выработанный временем прием.

Вот как бы Вы переучивались с php на си-подобный язык? Правильно, с мучением и головной болью. А теперь вспомните, сколько эндорфинов Вы получили, изучая после Си Питон? :)
–4
BegiBober #
с мотивацией делайте так:
кто мотивирован учите с теми питон
кто не мотивирован — в отдельную группу писать обфускатор для перла
0
BegiBober #
ололо
забыл тэг ирония — надо сразу в карму плюнуть )))
–2
BegiBober #
вот так всегда бывает, минусов натыкали в карму, а плюсик ткнули в коммент :'(
+1
ulysses #
> 1) Без мотивации со стороны студентов преподавание любого ЯП превращается в пытку студентов же
Без мотивации студентов преподавание чего-угодно превращается в пытку, и пытку — не только студентов, кстати (знаю по опыту :))

> 3) Преподаванием современных ЯП должны заниматься молодые преподаватели. Возможно, не самый объективный пункт в выводах, но без энергии нельзя донести до студентов эту самую суть.
Ну, это вы, наверное, не видели старых энергичных и молодых полумёртвых преподавателей: и те, и дургие имеются в некотором количестве. Другое дело, что преподаватели старшего возраста часто с меньшей охотой осваивают такие чисто прикладные технологии, как новые ЯПы, и тут просто не стоит проблема выбора (сложно найти пожилого преподавателя, успевшего изучить уже Питон 3000, например).
+1
Aux #
Начинание безусловно хорошо, но я хочу сказать пару слов про паскаль. Проблема паскаля не в языке, а подаче преподавателями. Увы у нас его преподают так, что плакать хочется. В итоге люди не знают ни паскаля, ни как компьютер работает и навыков качественного программирования не получают…
–1
Grox #
А если вы покажите современную среду разработки приложений, то мотивации может быть больше. Да, поначалу понимания тонкостей будет меньше. Зато мотив — мы работаем с самыми крутыми визуальными средами, на которых разрабатывают крутые проги.

Кроме того, студентам будет проще. Не нужно усложнять, они и так слабо понимают. А когда человеку все просто, то если ему интересно — он лучше и быстрее будет учиться.

Например, подсказка, на полях, что есть синтаксическая ошибка, это здорово. Заставит ии сразу её найти или запустить прогу уже зная, что будет ошибка и не расстраиваться, а прочитать где она и пойти дальше.

Это просто ускорит понимание, прохождение языка и даст возможность быстрее всё попробовать.

А вот FAR можно оставить для закачки файлов по FTP. Хотя большинство сред делает это нажатием пары кнопок. Так как понимать, как и где оно лежит нужно сразу.
+1
rednaxi #
Вы учитесь на пхп 5.3?
Более ранние версии пхп местами убоги и плохо помогают научится программировать если вы говорите что учите пхп вместо паскаля. Это принципиально разные языки и они никак друг друга не заменяют.
Опять же некоторые ваши идеи мне не понятны-например учить людей функциям на примере факториалов и чисел фибоначи это какие то странные примеры, на мой взгляд.
То, что люди не знают хтмл это вполне нормально, по моему. Мне кажется, большая часть программистов, которые не работают с вебом, не знают хтмл просто из за ненадобности.
Зачем использовать удаленный сервер? В чем преимущество? Почему бы не поставить локальный сервер и нормальную IDE (пхпед, нетбинс) с возможностью отладки — во первых люди смогут по шагам увидеть как работает их программа (полезно для понимания рекурсии например, ну и для поиска ошибок отладка незаменимая вещь).
–4
coolmiha #
php 5.3
Если функция, значит она должна что-то делать и что-то возвращать. Посоветуйте еще примеры.
IDE я не ставил, частично из-за ограничений по правам на машинах в моей аудитории; чтобы избежать объяснений о про ном ПО и проч.
И отладка нужна пока 1-2 человекам из всей группы, вот кстати нарисовалась проблема — хотят, чтобы работало, отладкой будут заниматься самые заинтересованные.
0
AK74U #
Добейтесь права поставить IDE. Вообще, старайтесь предоставить наилучшие условия для работы, в рамках своих сил.
+1
SabMakc #
Eclipse PDT прекрасно работает как portable приложение, причем можно даже Java машину не ставить, а скинуть в папку с PDT и настроить ini файл.
Также NetBeans работает как portable ( с возможностью не ставить Java), но полностью portable его не получится сделать: он использует папку документов (куда должен быть доступ) для хранения проектов и настроек (настройки для исправления такого поведения есть, но они не работают должным образом).
Поэтому ограничения по правам можно без проблем обойти.
+5
Pilat #
Я чего-то не понял. Вы пишете, что пять лет мучат паскалем, потом пишете что студенты не поняли передачу по ссылке и рекурсию. Они что, в курсе паскаля это не изучали? Это же сразу преподают. И после этого паскаль — зло?
–2
coolmiha #
Ха, может и изучали. Но это никто не понимает!
Я не рассчитывал, что такие базовые вещи вгонят студентов в ступор. Приходится упрощать.
+2
Pilat #
Я понял — это не студенты плохие, это не преподаватели негодные, это не тот язык! Надо перебрать несколько языков и чудесным образом рекурсия вдруг станет понятной!

Так всё-таки какие-то результаты есть по итогам курса? Поняли что такое рекурсия и функция? Если не поняли — наверно, стоит Вам, простите, менять область деятельности.

–2
coolmiha #
Курс еще не закончился, но некоторые итоги есть.
Функции поняли, рекурсию пара человек поняла.
Ну, область деятельности… Мой курс рассчитан на студентов, умеющих программировать хоть на чем-нибудь. Не судите строго.
+1
Pilat #
А смысл-то какой преподавать студентам, которые за несколько лет не поняли рекурсию? Тут даже на преподавателей трудно сваливать — в книжках всё расписано.

Да, кстати насчёт IDE. Для установки Eclipse прав не нужно особых — достаточно прав на запись файлов. Конечно он большущий, это минус. Но он может быть установлен на сетевом диске, например, да и как можно преподавать в таких ужасных условиях? Нужели обновление файлов на сервере нельзя было сделать менее трудоёмким — есть rsync — сделать всем по командному файлу, есть WinSCP. В конце концов надо было поставить апач локально. Вот чем хорош паскаль — нет этих проблем, на которые, скорее всего, уходило половина времени.

Не могу я разделить Вашего восторга. Не то Вы делаете. Студентам надо было преподавать программирование на бэйсике в excel и access — в их области это очень востребовано.
+7
DYPA #
процитирую ваши заблуждения:
>Не испытываю особой привязанности к какому-либо языку программирования, ибо считаю, что любую задачу можно написать на любимом ЯП.
>Все пять лет в университете нас мучали pascal

чему учили вас 5 лет вы не совершенно не поняли ;)
паскалю учат не ради языка — а ради алгоритмов, которые уже позволяют реализовывать задачу на любом языке. php не академический язык, он не разрабатывался для преподавания программирования. паскаль был не интересным потому что вместо прикладного софта вы писали чисто академический софт, отсюда и жуткая нелюбовь к нему…

мануалом нужно учить пользоваться еще на стадии установки софта (в случае php). нафига преподавать клиент серверную технологию сразу если php замечательно выполняется из консоли (опа какая новость!!!).

Gentoo и Far как то не вяжется в вашем рассказе, обращайте особое внимание на лицензии программ!!! Выдайте удобный инструмент для разработки (блокнот с поддержкой utf8, например geany или IDE -netbeans). для отладки нужен xdebug или рассказать о механизме exception в php

кстати раз уж вы пошли в сторону упрощения кодинга — почему на js который выполняется в браузере? почему не ruby — который сейчас является «передним фронтом» в вебразработке? почему не питон с его громадными возможностями по разработке десктоп софта?
–3
coolmiha #
Питон это безусловно хорошо, но тут всплывут проблемы похуже загрузки файлов на сервер (хотя бы отступы). Если начать не с малого, с простейших вещей, я распылюсь и меня не хватит. Может, задумок у меня много, но я вынужден пока концентрироваться на вот таком минимализме.
Gentoo я упомянул, потому что она стоит в некоторых аудиториях, мы на винде работаем.
0
DYPA #
вы упрекаете студентов в неумении читать — но сами увидели только питон… все свои задумки можно выкинуть — основная задача — научить студентов думать, читать, анализировать прочитанное и самостоятельно решать поставленные задачи. не стоит учить языку программирования — стоит учить думать и прикладывать свой мыслительный потенциал к языку программирования
0
alekciy #
Может я где-то просмотрел, но какая это специальность? Кем будут в будущем эти студенты?
–2
coolmiha #
Студенты хотят быть специалистами по «прикладная информатика в экономике» и «информационные системы и технологии».
А вы про какую специальность подумали?
0
alekciy #
Абсолютно не про какую. Именно поэтому и захотел уточнить, IT это специальность или нет.
–2
AK74U #
Интересно, как вы рассказали им про фетчинг?
НЛО прилетело и опубликовало эту надпись здесь
+5
larikov #
Ваша попытка преподавания конечно же заслуживает уважения, но, все-таки, прежде чем начать кого-то чему-то учить, необходимо самому досконально разобраться в предмете преподавания.
Например, почему вы используете массив $HTTP_POST_FILES, который deprecated начиная с версии 4.1.0
–3
coolmiha #
$_FILES использовать?
Спасибо за уточнение
+6
Sherman81 #
Неужели вы серьезно думаете, что студентов надо обучать именно языку программирования, да еще и такому? У студента, в России, и так слишком мало времени, чтобы стать программистом благодаря, а не вопреки институту.

Php же, являясь неплохим языком для практической работы, тем не менее совершенно не подходит для обучения студентов. Все базовые концепции(которые необходимо знать студенту) в нем довольно сильно запрятаны внутри zend engine.

Структуры данных.
Несколько примеров. Да, на php можно реализовать свои структуры данных, но это сделать гораздо сложнее, чем на той же java.

Массивы(вектора). Они там есть, но это не совсем вектора, это контейнер имеющий интерфейс, как вектора, так и ассоциативного контейнера(map). Это вынос мозга. К тому же, вы даже не сможете это объяснить за десять минут неподготовленному человеку. Вам надо будет «спуститься» внуть zend engine.

Стек. Снова тот же массив, но с доступом через push/pop функции. Опять же, чтобы описать работу надо нырять в zend engine.

Довольно много вещей в php реализованы откровенно плохо. Из последнего, например, NS. Вообще, php — язык больше практический, чем академичский.

А помимо структур данных студент должен обязательно знать все о вычислениях. Что такое рекурсия, что такое tail recursion optimization, lazy вычисления и так далее.

Неплохо бы хотя бы озвучить что такое first class functions, closures, pattern matching.

Обязательно надо рассказать про полиморфизм(но не только приминительно к ООП).
–4
MadJeck #
Да вы что, там никто не понимает что такое рекурсия а вы хотите сразу свалить теоретические основы? Лучший способ отбить всякое желание учиться. Я учился программировать вообще в 14 лет редактируя скрипты для GTA vice city (там бы такой забавный язык на основе стек машины), а если бы мне начали читать курс по java (ничего не имею против но этот монструозный синтаксис кого угодно испугает) просто испугался заниматься программированием.
+2
Sherman81 #
>этот монструозный синтаксис

Это ваше мнение. Я, в институте, смог писать программы на java уже на третьем-четвертом занятии(1 лабораторная). Не обязательно сразу готовить студента к scjp.

Минус java скорее в том, что в этом языке почти нету элементов функционального программирования, которые я перечислил в конце своего комментария.
–3
MadJeck #
Да мое мнение. 3-4 занятие это не показатель, я тоже когда читали курс лекций по java не ходил на занятия при этом всей группе делал лабы. Просто действительно мне кажется синтаксис довольно избыточен за счет очень строгого ООП и прочего, я уверен это очень помогает в больших проектах и работе в команде, но удовольствия и легкости написания кода не прибавляет.
P. S. Ещё про рекурсию (мне можно не объяснять что это :) ), но раз студенты автора не смогли её понять то как они поймут весь этот теоретический багаж знаний?
+1
Sherman81 #
Кстати, а что сложного в рекурсии-то? Откройте SICP и посмотрите, как элегантно там вводятся это и другие понятия.
–1
MadJeck #
Слабовато, застряли на php 4 версии максимум. Кстати если бы использовали mysqli с stmt не пришлось бы особо мучиться с безопасностью.
–2
apkawa #
Хочу спросить совета.
Я вот уже как то привык разрабатывать сайты на Django, но проблема в том, что я плююсь от php.
Но все таки подумываю о том, чтобы освоить php.
Вопрос, с чего лучше всего начинать и какой фреймворк похож на Django, чтоб сильно не плеваться.
0
apkawa #
Спрашиваешь совета, а в ответ только минусуют и в карму плюют. Хоть бы аргументы привели.
+4
alex_anokhin #
Тоже преподавал PHP (60 часовой курс). Правда не в ВУЗе, а в учебном центре предприятия, где PHP применяется промышенно, т.е. готовил разработчиков под местные нужды. Уровень слушателей зачастую был аналогично низким, поэтому думаю, мой опыт применим.

Если занимаетесь в компклассе, то полезно установить нечто вроде VNCи показывать «как правильно» на преподавательском ПК, студенты с удовольствием это наблюдают, только не переборщите, а то так и будут ждать пока вы не начнете показывать :)…

Раз уж вы выбрали PHP, который практически не отдираем от web, то придется давать и основы «смежных» технологий. Понятия сервер, клиент, порты, HTTP, URL, FTP, HTML, GET, POST, CSS и прочие страшные слова, хотябы самые основы. Я, например, эмулировал через telnet сеанс связи с веб-сервером, показывая запрос и ответ :)…

Так же пришел к тому, что нужно (как тут уже кто-то заметил) идти от простого к сложному:
Т.е. придумать простое приложение (не обязательно веб-сайт) и по мере накопления теории реализовывать расширение функциональности (так обучаемые сразу видят результат, сохраняя, при этом, высокий уровень мотивации). Как примерно было у меня:
клиент-сервер, сервера, порты, веб-север, создание веб-странички со словом 'Привет, Мир!' (закачка по ftp, просмотр по http). демонстрация запросов-ответов. (ессно у каждого студента своя директория на сервере и свой vhost, учить устанавливать apache считаю лишним тем более на винде)
— создание таблички с данными студентов — HTML
— расрашивание таблички CSS
— терия PHP, ссылки и интересные сайты, phpclub.ru, например :)
— далее эволюция таблички по вкусу вовлекая все новые и новые ф-ции PHP
— массивы, цилкы — заменили статический список студентов на динамику
— функции — разнесли все по функциям
— HTML-линки, операции с массивами — прикрутили сортировку
— работа с файлами — вынесли список в CSV-файл и прочитали из скрипта,
— CRUD для нового студента — HTML-формы, GET, POST, оработка пользовательских данных в PHP
— ввели СУБД в схему, переделали все с файлов на СУБД
— генерация PDF с этой таблицей и т.п.

Ессно всю теорию подкрепляем практикой. Я делал мини-задания по ходу урока

Обязательно расскажите по системы версионинга и заливайте все что нарабатываете в %ваш любимый VCS%.

Обязательно расскажите про фреймворки (их преимущества и недостатки) и переделайте пример на %ваш любимый фреймворк% и расскажите как легко было бы переделать с файлов на СУБД если бы сразу писали под %ваш любимый фреймворк%.

Имхо тогда есть шанс пополнить не армию быдло неквалифицированных специалистов, а думающих и развивающихся разрабочиков :)…
0
Pilat #
тут есть маленький вопрос — а сколько на всё это часов отведено…
–2
coolmiha #
Времени немного.
Занятие раз в неделю по 1.5 часа
0
Pilat #
да, маловато. Если бы они, конечно, в своё время прошли курс паскаля — хватило бы, а так…
+11
shiko_1st #
Не надо считать себя умнее гражданина Вирта.

Паскаль удобен тем, что его языковые конструкции логичны, строги, просты и понятны. Да-да, begin end куда понятнее фигурных скобок; or куда понятнее || и т.д. Все это сокращает время на обучение собственно языку, и позволяет раньше перейти к обучению программированию.

Да, среда Borland Pascal 7 устарела. Но никто не мешает поставить тот же Free Pascal, или там Lazarus.
0
Aledensoft #
Да, если уж на то пошло, есть и бесплатная версия Delphi (Turbo).
0
Mithgol #
Кажись, Embarcadero Technologies (нынешний владелец Delphi) эту версию ужé не раздаёт.

Во всяком случае, на их странице Delphi слово «Turbo» встречается только в наименовании продукта TurboRuby.
0
Aledensoft #
Да, к сожалению, пока что планы о возобновлении линейки Turbo только на словах. Хотя это не делает менее легальной старую еще борландскую турбо-делфи.
+1
Gospodin #
Лично мое мнение таково что PHP надо изучать курсе так на 3-м, не раньше, младшие курсы лучше посвятить изучению языков Pascal/C, причем начать именно с Паскаля, при этом желательно это все совместить с изучением базовых вещей, таких как указатели, рекурсия, алгоритмы и т.д. Если студент не в состоянии освоить столь базовые вещи то вряд ли из него вырастет что-то отличное от быдлокодера (возможно у него склад ума такой, т.е. не всегда это вина преподавателя).
Технологии надо изучать, но торопиться с этим не стоит, ВУЗ должен в первую очередь научить студента постигать новое, а на примере изучения новых технологий это получится как нельзя лучше.
Так-же мне кажется уместно было бы познакомить студента с различными средами разработки ибо они направлены на улучшение качества труда разработчика, на мой взгляд FAR не лучшая среда для разработки, таким образом как минимум навязывать его не стоит т.к. найдутся те кого это может отпугнуть (хотя на вкус и цвет...). Так-же полезно было-бы познакомить студентов с отладчиками кода. А еще в случае с изучением веб-технологий полезно студенту показать как на локальной машине запустить веб-сервер со всеми сопутствующими приложениями (с XAMPP-ом вроде не должно возникнуть особых вопросов), если студент сможет этим заниматься в домашних условиях это ему пойдет только на пользу.
0
alexott #
C учить надо не в самом начале, а после того, как люди прослушают курсы по железу и т.д. — все-таки С — это ассемблер, а не язык высокого уровня
+1
Tsukanov #
Огромнейшее вам спасибо за материалы! Всё время хотел найти что-то подобное для начала обучения и вот…
+6
rimmer333 #
Не имея целью лично вас обидеть, но подчеркнуть горечь ситуации, спрошу: в каком ПТУ такие блестящие умы учатся, если не секрет?
0
coolmiha #
Ведущий ВУЗ единственного наукограда за Уралом.
0
coolmiha #
Не единственного;(
А «самого крупного наукограда в России»
+1
alexott #
ээээ — Томск?
0
coolmiha #
Томск — не наукоград.
0
alexott #
и кто считается тогда наукоградом? новосибирск — гораздо меньше отношения к науке…
0
ulysses #
За последний год участвовал в двух школах для студентов, заточенных именно под науку (одной — международной, для студентов PhD): представители Новосибирска неизменно были (причём заметными делегациями), а Томска — нет. В целом, про НГУ я знаю намного больше хорошего. Так что с вами не согласен :)
0
alexott #
зависит от направления наверное? у нас студенты и аспиранты массово ездили на конференции по ядерной физике и т.п.
0
ulysses #
Возможно. Я имею ввиду теор. информатику, логику и алгебру.
0
alexott #
а, ну это — да, я в томске не упомню сильной школы в этой части, если только в ТГУ…
0
zahardzhan #
Тото я думаю, почему в ТУСУРе и ТМЦДО всё настолько плохо.
0
alexott #
WTF ТМЦДО?
0
gigimon #
Почему сразу ПТУ? Я вот в ВУЗе учусь, 4 курс, тут народ после полугодового курса по Си (около 80 часов), спрашивает как переменные объявить.
+6
alexott #
Если это программа обучения студентов программированию, а не веб-деву, то это ужас.
Необходимо учить именно программировать, а не кодировать — то лучше смотреть на то, как это делается в SICP, и примерно также преподавать. Конкретный язык тут не играет роли, надо заинтересовать людей, чтобы они придумывали решение, хоть на псевдокоде, хоть на чем — иначе они научатся выполнять только конкретные задачи, а делать что-то нестандартное — уже не смогут.

И еще — в данном курсе, вы даете PHP в отрыве от самого веба — в итоге люди не будут понимать как и что работает, какие есть виды запросов, как обрабатываются параметры, как они представляются в запросе и т.д. Отсюда будут идти все проблемы с безопасностью и т.д.

P.S. я сам преподавал программирование на разных языках — фортран, С и Паскаль, но в обучении упор в первую очередь делался на построение алгоритма/решение задачи
0
sunsey #
а по-моему в такой ситуации лучше учить хоть что то, и заинтересовывать хоть чем то, чем вообще никак…
+6
Lazin #
уж лучше паскаль чем PHP, худший первый язык программирования сложно себе представить
+1
delaf #
Для мотивации нужно предложить студентам заработать свою первую 1000$ благодаря парсерам и граберам :)
+1
rwsh #
У меня ситуация такова на пятом курсе нужно научить группу хоть как-то
программировать. При этом 95% — девушки, которые дальше почты и ворда
не заходили. При этом базового знания программирования ноль.

Как не странно — остановился на PHP. Самый быстрый для старта язык +
язык для реальных подработок. И главное — ничего не нужно инсталировать.

Не рискнул обучать выкладыванию на хостинг… Я реализовал для них виртуальные файлы:
студент заходить в свою учетную запись, там создает файлы и их исполняет. При этом
там видит ленту заданий и оценок, а также может и задать вопрос. Если интересно могу
поделится.

А вообще Ваш подход к преподаванию мне нравится.

P.S. Преподаю я в РУДН на кафедре дифференциальных уравнений.
+2
hellraiser09 #
PHP в качестве первого языка программирования – это просто лютый пиздец
+4
rudevich #
Меня всегда бесило в молодых преподавателях то, что они придумывали всякие идиотские сокращения типа «PHPlan» или «Rubyть». После этого антипатия к объекту изучения стабильная.
–3
Levsha100 #
О Боже!
Неужели пхп настолько сложный язык?
я просто в шоке…
0
yarodin #
Мне кажется, что школьная программа информатики, исходя даже из объема отведенных часов, не предназначена ни для чего кроме Basic'a.
0
stas_agarkov #
учить других — это страшное издевательство. не каждый может вытерпеть по многу раз повторять одно и тоже каждый год новой толпе людей.
+2
yarodin #
И да, чуть не забыл, главное не делайте характерную ошибку всех преподавателей «информатики» или программирования: повремените с программированием, или по крайней мере постарайтесь как-то оттянуть момент изучения массивов и работы с ними, пока обучаемые не пройдут матрицы в курсе линейной алгебры.
0
coolmiha #
Они это уж точно прошли, сдали и забыли как страшный сон.
+1
egorinsk #
Итак.

У вас не выложены первые лекции, но я подозреваю, вы все излишне усложнили.

Для начала стоило бы рассказать про принцип работы HTTP (без деталей вроде HTTP-заголовков и прочей мути!), что есть GET-запросы (переход по ссылке, ввод адреса вручную и отправка формы) и POST (отправка формы) + еще методы для извращенцев и есть боты. В чем разница вообще между GET и POST. Что такое URL. Что такое ссылки и зачем. Упомянуть про формы, зачем они нужны, но без лишних усложнений и подробностей.

Затем — кратко, без лишних усложнений про HTML, что мол в текст добавляются теги и получается красивый текст. Что можно добавлять CSS и картинки. Разобрать на примере, что происходит при открытии страницы.

Затем, на практике, научить загружать текст и HTML на сервер и открывать, И только потом рассказать про возможность выполнения кода на сервере и собственно PHP. Почему PHP удобно перемешивать с HTML кодом? Почему не стоит этого делать в сложных проектах?

Теперь по тому, что есть.

Теги PHP — сейчас использутся только [?php, использование коротких тегов — дурной тон, использование процентов — извращение, [?= — тоже дурной тон. Использвоание [script ...] — двусмысленно, слишком похоже на яваскрипт. В общем, хватило бы только одного вида тегов.

Говоря о комментарих, хорошо бы упомянуть зачем вообще они нужны. Не описан процесс обработки PHP-файла интерпретатором (как он проходит сверху вниз и выполняет послеждовательно все блоки). Не упомянуто, что такое переменная и зачем она нужна :) То же про константы. Типы данных и gettype/settype — явно лишнее в начале курса.

Битовые операции − можно сломать мозг, логические — стоило бы объяснить зачем нужны.

Примеры дурацкие, ну вы сами прочитайте: «Оба флага истинны». Каких таких флага? Какое отношение флаг имеет к компьютерной программе?? Что вообще делает эта программа.

Цикл — не написано что такое и зачем нужен. :(

Не хочу обижать, но лекция PHP_BAsics под номером 3 выглядит как копипаста из мануала, такая же сухая и непонятная. Мне она очень не понравилась. Мануалы пишут для тех, кто уже знает язык и хочет вспомнить, что делает какая-то функция, а не для начинающих, вот в чем проблема :(

> Функция представляет собой самостоятельный фрагмент программы, предназначенный для реализации определенных действий.

Ну мозг же сломать можно, не? Я это наизусть запомнить не смогу ((

0
coolmiha #
Спасибо за замечания.
Насчет примеров… да, суховато… фантазии не хватает.
0
sergray #
Могли бы Вы показать программу обучения программированию на Паскале, который Вы так стремитесь изжить из учебного процесса?
0
coolmiha #
Наверно нет, потому что я ее не писал.
+1
sergray #
Безотносительно к выбранным языкам программирования, хочется понять чему учили до Вашего курса и чему Вы пытаетесь научить. Преподавание (и не только оно одно), как мне кажется, должно начинаться с целеполагания, т.е. с определения того, чему учить. На чём и как — это второстепенные вопросы после «чему учить». Ваш курс охватывает сразу несколько областей прикладного программирования с уклоном в веб-технологии. Мне казалось, что программирование начинается с другого, что учит думать, учит самостоятельно изучать языки, учит алгоритмическим приемам решения задач, а не знакомит с API и интеграцией отдельных технологий.
0
coolmiha #
Мои студенты несколько курсов изучали программирование; «алгоритмы и методы» у них тоже были, кстати, но их забыли после экзамена. Я пытаюсь разобраться, почему — и внести долю интереса. С уклоном в практику.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.