Comments 101
Какой базовый уровень у студентов?

Что требуется включить в курс?

Какова направленность курса?
Базовый уровень достаточно разный. Все студенты прошли через полтора года информатики, основного обзора технологий, научились решать простые задачи с помощью Visual Basic, ознакомлены с Java. Это будут студенты, которые пойдут работать в фирмы средней руки, но некоторые — в школы. Они должны уметь создавать веб-ресурсы и статические, и динамические. То есть основы PHP и конфигурирования веб-сервера уровня Apache обязательно должны быть. Мы с ними также выводили некоторую графику с помощью gd2, т.е. строили диаграммы и графики, работали с плоскими файлами, создавая простые базы данных, и основы MySQL тоже изучали. Но эти студенты уже выпустились.
Конфигурирование Апача сразу нафиг — эта задача не имеет никакого отношения к веб-программированию.

Тогда делать упор на HTML, CSS, самая база PHP и JS. Иначе времени не хватит просто.

Если с базами данных они не работали еще на других предметах — не надо включать их в курс.

Причем, в части PHP надо делать упор на уже решенные на VB задачи. Может быть, имеет смысл дать те же самые.

Это если интегрально смотреть на курс. А дальше конкретика уже зависит от того, как пойдет.
Да, я тоже думал о решении одни и тех же задач на разных языках. Базы данных идут параллельно на другой кафедре с другим преподавателем… это слегка усложняет взаимодействие.

Но я как раз и хочу посоветоваться о том, какие именно задачи лучше ставить специфичные для веб-разработки. Например, уже надоело делать калькулятор с использованием методов GET и POST, но страшновато ставить сложные задачи, потому что времени мало.
Вам может и надоело, а вот студенты бывают очень разные. И не все с первого раза даже калькулятор сделают.
Тоже верно. Значит, речь о многоуровневых заданиях, на выбор студентов…
Я лично считаю, что должен быть базовый набор заданий + интересные задачки для любоптных.

Калькулятор пусть делают все, а то видел я таких, которые делали феерически красивые вещи, но при этом даже с массивами работать не умели.
Можно же придумать множество задач такого плана :) Надоел калькулятор — сделайте небольшую web-галерею или еще что-нибудь подобное. Тем более что на PHP и обработка изображений легко делается.

Дайте студентам самим выбрать задачу — им интересно, вам — разнообраие :)
Может быть целью дисциплины является также и знакомство со стандартными… тривиальными решениями именно PHP, как веб-серверного языка? Всякие там понятия сессий, пост\гетов…
Я ни в коем случае не против обучения на примере стандартных тривиальных решений.

Это вопрос того, как направить желание студента учиться, дать выбрать интересную область и поставить некоторые условия для выполнения задачи (грамотно использовать GET/POST и так далее).
Да. Вот именно — направить желание студента учиться. Но проблема в том, что… я работаю преподавателем пятый год, а перед этим сам был студентом. Так вот глаз замыливается ужасно быстро, а еще перед глазами коллеги, которые бросили попытки направлять желание давным-давно. Как вы полагаете, если брать задания с сайтов фрилансеров — это отражает реальную обстановку в области веб-разработки?
Да, однако через полгода ситуация поменяется, поэтому учить так не стоит.
Я не полностью уловил, в каком смысле поменяется ситуация..? Хочется быть готовым к разным поворотам событий.
В любом.

Тренды на рынке имеют свойство меняться. А на рынке IT они меняются с феерической скоростью — поэтому в универах десятилетия и проходят базовые алгоритмы на паскале.

Сегодня эпоха веб2.0, всем нужна интерактивность. Завта будет эпоха веб3.0, всем нужна будет агрегация и интеграция.
Может быть, тогда лучше осваивать в первую очередь, например, Google API для работы с RSS, или аналогичное? Агрегация уже стала, по-моему, одним из ведущих трендов.

Тут ведь проблема в том, чтобы совместить вещи, не меняющиеся десятилетиями, с тем, что будет на острие ножа завтра. Иначе студенты будут посылать мне бандероли с возбудителем сибирской язвы, когда поймут, что я пытался законопатить их мозг чем-то, не имеющим отношения к реальности.
Работе с реальностью обучают в ПТУ, а ваша задача — научить людей решать задачи самостоятельно, а не используя всевозможные фреймворки и либы.

В противном случае, студенты будут посылать вам лучи рака яичек, когда узнают, что вы учили их тому, чему они должны учиться сами, а фундамента никакого они не получили.

Выпускники вуза должны разрабатывать фреймворки и апи, а не использовать их для быдлокодинга и рисования формочек.
Web-галерея, поместил в UPD. У нас уже был эксперимент, когда два-три студента из числа самых заинтересованных предлагают задачи другим, но иногда получается так, что все студенты примерно одного уровня, а прошлогодними задачами пользоваться нельзя, так как решения быстро попадают в сеть =)
Я имел в виду, что каждый студент может выбрать себе задачу сам. А вы можете поставить ему условия, которые считаете нужными (непременно использовать в калькуляторе MySQL, например :)).

Так и обучение будет для студентов интереснее и с сетью проблем меньше — условия выполнения задачь можно менять :)
Вы меня конечно извините, может быть я и не прав в своих суждениях, но как мне кажется, настройка веб-сервера и понимание основных принципов его работы, является необходимым знанием для веб-разработчика. Да, конечно большинство не настраивают сами веб-сервера, но без знания того, что происходит внутри, написать что-то живое весьма и весьма сложно.
Да не вопрос — только тогда придется выкинуть либо PHP, либо JS, потому что времени на изучение всего просто не хватит.

Я все-таки считаю, что вопрос администрирования сервера для веб-разработчика — это вторая очередь.
Какое-то продвинутое администрирование не нужно, но хотя бы чтобы могли запустить на своем компе сервер и знать куда копать, если его надо «подкрутить». Думаю это лучше помогает понять суть происходящего на веб-сервере… и чтобы не считали его непонятным черным ящиком для складирования скриптов.
Не совсем понятно, вы хотите студентов научить создавать сайты с «0» или дать им представление о web-разработке и используемых технологиях?

Курс не очень длинный. Может быть, стоит сделать его обзорным? Продемонстрировать много разных сайтов. Объяснить, как они сделаны и можно ли было сделать лучше. Рассказать о технологиях и языках.

Те, кому это пондобится в будущем, будут знать где искать информацию. А те, кому не нужно и не интересно не будут забивать себе головы и просто посмотрят картинки. А может быть и заинтересуются :)
То есть собственно говоря предоставить их самим себе… Вложить максимум сил в отбор хороших примеров и прокомменировать их, примерно как это делает Лебедев?

Нулевой уровень дается в школе (есть отбросить скептическую усмешку) — это программа современного курса ИКТ за 9 класс, они там учатся делать простейшие веб-страницы (хотя во всех учебниках мы видим что-то вроде FONT COLOR=#FF00FF)
Нееее… не надо как Лебедев :) Такого количества мата из уст преподавателя студенты не оценят :)

А если серьезно, то вы правы — рассмотрение множества примеров, «разбор полетов», обзор используемых технологий и их назначения будут интересны и полезны для получения охвата предметной области.

Дальнейшее углубление в материал при таком подходе — личное дело студента, производится по мере необходимости.
Вы действительно считаете, что 2 пары в неделю в течение одного семестра достаточно для курса «Веб-проектирование и веб-технологии»? RoR, C#, PHP и тд? сузьте область, непонятно же =)
Я с огромной радостью уделил бы этому пару лет, а лучше больше =)
Но план менять очень трудно, практически невозможно, он был составлен не мной и дан как условие задачи. В первую очередь PHP, но есть очень большое желание заниматься RoR. =)
В общем-то, наверное, это действительно лучше, но план есть план. Отсюда и проблема.
А еще неплохо бы попытаться научить студентов грамотно разрабатывать структуру сайта. До того, как браться за HTML, CSS и PHP нужно понять, для какой цели ведется разработка, какая информация должна быть представлена и как она должна быть подана.
Спасибо, внесено в UPD. Возможно, тут сильная связь с проектированием информационных систем вообще, с проектным менеджментом, так как речь идет о требованиях заказчика, техническом задании или UML-диаграммах, работе в группе…
Если речь действительно о педагогическом институте, то не стоит перегибать палку. Главное, чтобы студенты поняли последовательность действий — вначале анализ и проектирование, а уже потом разработка.

Выбрать конкретную модель и стредства проектирования (требования, ТЗ, UML и так далее) — это следующий шаг :)
Спасибо =) Буду надеяться, что получу еще подсказки по поводу того, на каком конкретном материале все это реализовать. Ибо лекции студенты переносят все хуже и хуже. Когда смотришь водкасты с лекций, которые проводят гугловские ребята, все выглядит шикарно: юморная аудитория, обманчивая беззаботность лектора, шутки, которые сопровождают баги на экране. А реальность педагогического института суровее =)
Подозреваю, что дело и в самом деле в подаче материала и самом общении со студентами. Мы тоже на лекциях смеялись вместе с преподавателем, обсуждая плюсы и минусы авиационных посадочных систем или архитектур вычислительных машин — нам всем вместе было интересно об этом говорить.

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

а еще меня умиляет вот эта фраза:
>>Я работаю в педагогическом вузе, где много внимания уделяется новым методам преподавания. Используется проектная методика, деятельность в малых группах, проблемные задачи и так далее. Студенты учатся создавать вики-статьи и пользуются всеми преимуществами Сети.

ппц и совок в одном лице. такими умными словами описать умение строчить псевдотеги в вики — это надо уметь. только вопрос, это у вас там универ для умственноотсталых, где преподаются вещи, которые самостоятельно в течение получаса осваивают 13-летние дети?
Ну студенты бывают разные… Никто же не говорит, что вики-разметке учат пол семестра. Это полезное умение, которое никому не помешает. Я думаю, что автор привел только один самый банальный пример… или Вы хотели подробный развернутый отчёт? Автор как раз и просит помощи, чтобы сделать содержание курса более актуальным.
В педагогическом вузе уровень подготовки в области программирование ниже, чем в профильных вузах, и это вполне естественно. Хотя некоторые студенты к пятому курсу уже успешно проходят испытательные сроки в более или менее приличных фирмах, а некоторые работают в школах.

Моя реальность такова, что я оказался в данном месте и в данное время, то есть в таком вузе и с такими студентами, и ищу возможность улучшить ситуацию насколько это возможно. Поэтому я и обратился за помощью. Возможно, что изучать разные движки браузеров через год будет совершенно неактуально, и может быть, кто-нибудь из комментирующих предложит что-то, более достойное изучения. На это я и рассчитываю!
Скажите пожалуйста, а что является фундаментальным по дисциплине «Веб-проектирование и веб-технологии». Математика? Она изучается на курсах других предметов (курс дискретной математики, матанализа и т.д.). Построение алгоритмов? Это изучается как я помню на курсе «Основы алгоритмизации и программирования». Протоколы передачи данных? Это насколько я помню, предмет под названием «КТС». Что конкретно в веб-разработке является фундаментальным, что не изучается на курсах остальных дисциплин?

То что это преподаётся на лекциях несомненно упущение программы, я бы давал это в качестве самостоятельного задания с ссылками на источники информации.
Одна из основ — это алгоритмы, в том числе специфические для работы со сложными клиент-серверными приложениями, специфика работы с протоколами, не поддерживающими состояния, как в простейшем случае с HTTP.

Из графики и мультимедиа к нам приходит веб-графика и flash.

Но фундамент веб-разработки, на мой взгляд, это в том числе интерфейсы веб-приложений. Оттуда вылезает AJAX как вещь, родившаяся исключительно на основе работы с вебом.

Т.е. триада (X)HTML + CSS + Javascript, далее переход к серверным технологиям. PHP (или другие серверные решения) + AJAX. Базы данных, как было отмечено в одном из комментариев, это довольно-таки отдельная тема, но MySQL слишком тесно связан с вебом, чтобы можно быть его игнорировать в этом курсе.
> Что конкретно в веб-разработке является фундаментальным, что не изучается на курсах остальных дисциплин?

Формальные языки. Вы этого не упомянули.
Совершенно верно. Может быть, если посмотреть DTD и КС-грамматику XML, то начинаешь лучше понимать, как устроено порождение слов в языке, но наверное формальные языки и грамматики — это фундамент программирования вообще, и изучается часто в курсе дискретной математики. А вопрос был — «что не изучается на курсах остальных дисциплин».
Могу порекомендовать только по вопросам практики. Пусть слабые студенты изучают как работать с контентом в CMS (может быть их потом заставят обновлять корпоративные сайты), сильные — пишут простейшие веб-приложения с использованием БД. Сильных, вдобавок, надо заставлять работать с каким-нибудь фреймворком — чтобы привыкали к профессиональному подходу, а не плодили быдлокод.
Не обязательно заставлять делать много, главное чтобы качественно выполняли работу и знали, как это может пригодиться в будущем.
Спасибо. Думаю, работа с CMS и редактирование уже кем-то созданного ресурса очень популярный вид деятельности для начинающих в небольших организациях, поэтому нужно это включать непременно. Какие порекомендуете для начала? Joomla, Drupal, ...?
Принципы на самом деле одни и те же — изучение настроек системы, чтение документации, добавление/редактирование страниц с помощью визуального редактора, заполнение различных форм. Я бы посоветовал популярные, что правда не значит — самые простые. Если брать по данным недавнего опроса iTrack, то это Joomla, Wordpress, 1С-Битрикс. Последняя CMS из списка платная — но 30 дней работает без проблем, по умолчанию есть демо-сайт со всеми возможностями для редактирования. В зашифрованные исходники Битрикса вряд ли кто полезет, да и в открытые — лучше не лезть, станет плохо =)
Большое спасибо! Это поможет, но:
В том очень интересном посте все началось с обсуждения лекций и комментарии в основном посвящены содержанию. Кроме того, речь идет о техническом вузе. Мне же больше всего хочется получить примеры заданий для студентов не технического вуза, более слабых.
Автор, посмотрите в сторону parser3 — ничего проще для создания динамических страничек я не видел, да и работа с mysql — сделана тоже очень просто.
А вообще, конечно, радует тенденция — по-больше бы таких прогрессивных преподователей ;-)
Спасибо =) Стараемся… И за идею поработать с Парсером тоже, — я к нему присматривался, но как-то не решался пока не освою сам давать на занятиях. Как вы считаете, насколько это прогрессивно — дать задания по, допустим, Парсеру, не объясняя ничего, а просто поставив задачу?
парсер гораздо проще пхп. подходит для проектов <= средние. (там есть даже встроенное кэширование).

К нему можно переходить, сразу после изучения основ HTML. А начать можно прямо по хелпу.

Те, кто «втянется» в веб-программирование уже сами выберут, что им дальше изучать.
Насчет примеров задач. Для сильных студентов можно посоветовать написать простую логическую игру многопользовательскую. Например шахматы. Это не сложно в принципе и довольно-таки интересно.
Думаю, гораздо интереснее написать простой клон twitter'а — как раз и динамика и бд и джаваскрипт.
Да, но такие системы, как twitter, пишутся командами, в которых как минимум два-три человека (хотя как сообщает вики, в случае с твиттером как раз один человек). И потом, означает ли это, что нужно дать задание создавать проект в начале семестра и ожидать выполнения в конце? И должно ли это быть как бы одно большое задание, для выполнения которого и потребуется изучить все нужные технологии? Или же параллельно студенты должны выполнять еще какие-то задания, не содержательные, а скорее формальные?
Если не брать в рассчет хайлоад, то сам твиттер устроен очень просто. Если не сильно налегать на оформление и api, то можно уложиться в пару сотен строк кода.
Только не вводите, пожалуйста, формальные задания. Тот же калькулятор должен выполняться студентами с особнанием того, зачем они его делают.

Вообще осознание цели — это хорошая мотивация для человека делать что-то старательнее… или бросить с концами, если цель не его. Но это уже другой вопрос.
Подброшу свои 5 копеек.

Преподаю в нашем Политене на одной из профильный специальностей. В частности, Интернет-технологии, 4 семестр (2 курс).

1. Организация Сети, её структура, основные протоколы и их назначение (обзор)
2. Протокол HTTP — что это, основы работы, запрос-ответ, заголовки
3. Протокол CGI — вкраце
4. Обзор/повторение HTML — они уже изучали основы, я рассматриваю его с точки зрения концепции, в привязке в WWW.
5. CSS
6. PHP — семантика, основные бибилиотеки, связка с БД на примере MySQL
7. XML/XSLT/XSD — что такое и зачем надо, подробно рассматривается в другом курсе.

Лабы и итоговая работа строится на пошаговом (по мере изучения технологии) создании веб-сайта с простой логикой и работой с БД.
— постановка задачи на дальнейшую работу, написание требований к своему сайту, разработа структуры
— работа через telnet, чтобы увидеть как работает HTTP
— разработка HTML-макета будущего сайта с использованием CSS
— разработка динамической составляющей, т.е. написание PHP кода для ожидвления сайта. Это может быть лента новостей с админкой и комментариями юзеров или что-то подобное.

В общем, в концу 2 курса народ получает представление о том, как работает Веб и как под него что-то сделать.

А вот что вам давать им на 4 курсе — тут уже вопрос. По идее, надо бы вводный курс чуть пораньше давать — как у меня, например, на 2 курсе. А подробное изучение отдельных технологий, вроде XML/XSLT/XSD/RSS/XML-RPC или же Javascript/AJAX/HTML5 сотоварищи — уже позднее, перед дипломом.

Большое вам спасибо. Конечно, вводный курс лучше бы раньше. Но влиять на учебный план обычно бывает довольно трудно. Мы пытаемся делать вставные модули в некоторые дисциплины на 1 и 2 курсе. Ведь хочется дать студентам возможность побыстрее изучить какие-то базовые вещи, чтобы они могли устраиваться на работу и хоть отчасти компенсировать оплату за обучение.

Через telnet я обычно демонстрирую на первой лекции по серверному программированию — посылаю запрос сначала телнетом, потом браузером.

Вы как-нибудь привлекаете студентов к формулированию заданий, и делают ли они каждый свой сайт или работают группами? И как вы даете им лабы? Я вот раньше делал отдельные PDF-файлы, а теперь размещаю все материалы в факультетском MOODLE'е.
Студенты выбирают себе тему сами — тут главное не сама задача, а то, как её решают… задача ведь обучить, а не получить что-то на продажу :) И работают по одному. Командная работа — штука сложная, чтобы её совмещать с изучением совершенных технологий. Позже есть отдельный курс, где им дают совместные задания, здесь же задача — дать понимание технологий, без отвлечения на что-то ещё.

Задания формулируются в виде документа, который берется в электронном виде в начале семестра. Надо бы и вправду куда-нибудь выложить :) Как раз сейчас готовлю методичку по эту предмету — вот в финальном варианте сложу все задания в приложении, а сам документ выложу в открытый доступ, в Инет. Университетские сервера стараюсь избегать, слишком много бюрократии и случайностей при обслуживании оборудования :))
У нас с Вами структура курса схожая (я ниже написал), но у меня после 1-го пункта еще сетевое программирование (без веба, чисто на сокетах клиенты и сервера, на яве). Ну и базовый не ПХП, а ява+сервлеты+jsp, пхп обзорно.
Ну, тут уж 1) кому что ближе 2) что они к началу семестра уже знают. У нас на 2 курсе Яву они ещё не знают — так что берем что попроще, тем более что число часов на практику ограничено.
хм… Главное не давать им пользоваться готовыми скриптами и CMS-ками… Ибо достали тупые «вэб разработчики» которые в жизни пару раз настроили phpBB и думают что они достигли вершины web проектирования… Да а вообще одно из сааамых главных — научить студентиков грамотно защищать ресурс от иньекций и дырок. Остальному всему пусть сами учатся.
Если цель вырастить «винтик в производственной цепочке», то ваш подход на относительно беглое знакомство с конкретными технологиями вполне применим.

Однако, ИМХО, для выращивания «монстра Веб-разработки» (если человек знаком с принципами программирования, то для приобщения к вебу достаточно показать ему что это за среда и как в ней «жить») необходимо дать обзор большинства имеющихся технологий (и их взаимосвязей) и возможных применений. Ну и конечно же дать «направление копания» (оф.сайты, сообщества, документации).

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

Поэтому, может и цинично, но да — от винтиков в цепочке производства тоже никуда не деться.
Да, кстати. Очень знакомо такое состояние «разрывания» между сильными и слабыми студентами. И каждый раз приходится искать новый ответ на эту дилемму…

Вспомнилось тут… мой профессор говорил, что лучше рассказать 5% информации, но их поймут 95% аудитории, чем рассказать 95% процентов информации, а их поймут только 5%…

Что-то в его словах есть… :)
с удовольствием бы почитал статью «Как отучить студентов от веб-разработки»
Я бы ещё добавил пару лекций о популярных фрэймворках и перспективах их развития.
Судя по всем комментариям выше, это могло бы стать прекрасной темой для холивара: полезны или вредны фреймворки для студентов. Но иногда, как например в этом случае, бывает просто интересно, что же еще можно такого придумать, чего еще раньше не было. То же касается и перспектив развития =)
Упомянуть как-то надо, чтобы не изобретали велосипед, когда это не нужно имхо.
Согласен 100%. Иногда, мне кажется, даже просто ради восхищения человеческой мыслью — когда видишь, какой там бывает код, просто захватывает дух =)
Я преподаю «Программирование в Интернет» на мат. факультете, 2 семестра по 2 ленты в неделю. У нас темы такие:

1) IP-сети, Интернет
2) сетевое программирование на Java
3) HTML, CSS
4) Javascript
5) сервлеты + JSP
6) PHP
7) обзор прочего: MVC, применение SQL-СУБД, основные виды уязвимостей сетевых/веб приложений
Пропустил:

4.1) веб-сервера (Apache, Tomcat, IIS)
4.2) CGI

в 7 еще немного про CMS/frameworks
Спасибо, а чего вы требуете от студентов, что они должны представить? Например, все делают стандартный набор лабораторок и получают баллы (один подход), или есть творческие задания, индивидуальные или групповые. Тут есть еще одна проблема. Вот, например, тема 4.1. Установить Tomcat не так сложно, но все это требует настройки; как у вас обстоит дело с этим? Вы делаете «предзаказ» инженеру или сами ставите нужное ПО?
1) Делаем по 15-20 лабораторных: стандартный набор задач по вариантам разной сложности, вариант выбирается вначале года по желанию студента.
2) Несколько необязательных задач повышенной сложности по темам, которые не изучались или рассматривались обзорно (на «автомат»)
3) Тесты

Про нужное ПО: вначале года у нас обычно «инженеры» собирают требования к ПО с преподавателей. Конкретно апач и томкэт не заказываю, т.к. используем версии, которые не требуют инсталяции (скачиваем с нашего сайта, там же где и конспекты лекций, условия задачи, тестирование и т.д., используем Moodle).
Появилась еще такая мысль, что можно брать отправную точку — например AJAX и динамическое изменение клиентского интерфейса — и далее «выращивать» обучение исходя из тех инструментов, в которых возникает необходимость. Тут же

потом не будут ли «неокрепшие» студенты думать, что веб-приложение — это обязательно аякс? у меня на аякс только одна необязательная задача (из пункта 2, на автомат)
Да, такая опасность есть =) Я прошу прощения, вы какие-нибудь материалы размещаете в открытом доступе, помимо локалки?
Открыто, к сожалению, нету, все материалы сделаны по заказу универа по договору (была у нас такая программа в универе) и сам открыто опубликовать их не могу. Хотя сам лично считаю, что это неправильно и такие вещи вузы могли бы публиковать открыто, как делает, к примеру, mit (я про ocw.mit.edu).
ИМХО — нужны основы проектирования как обычных, так и веб-приложений, заложить четкое понимание концепций веб-программирования, понимание работы механизмов доступа к данным и так далее. html, php, java servlet, js etc — это все вторично, так как Ваша задача научить веб-программированию, а не «заделать по-быстрому из CMS» и не научить конкретному языку.
По поводу заданий — подойдут любые, будь то магазин туалетной бумаги или сервис заявки на убийство а-ля Хитмен.
Так как у вас выполнение лабораторны в малых группах — то вполне подойдет вариант разделения труда (архитектор-кодер-тестер-дизайнер-...). Как уже говорилось выше, для подобной работы вполне подойдет SCRUM. Не забываем делать скидку на ленивость студентов и то, что добрая половина начнет делать работы в последний момент
Для начала изучения «основ проектирования как обычных, так и веб-приложений» нужно понимать как всё крутится — tcp/ip, http, html, cs, js, веб-сервера, cgi/php/servlet. Иначе это как начать решать диффернциальные уравнения пропустив алгебру и мат. анализ. Имхо.
Не совсем понимаю, как может (x)html, css, js быть вторичным, ведь это фундамент, на котором выросло современное веб-программирование. Ведь концепции появились не на пустом месте, точно так же, как, скажем стандарт ECMA-262 появился в результате необходимости теоретически закрепить то, что было сделано в раннем Javascript. Я имею в виду что сегодня можно учить ООП как таковому, давая примеры на ОО-языках, которых множество теперь. Но можно ли учить веб-программированию не на материале конкретного языка, который в случае Javascript занимает всю клиентскую нишу?

На мой взгляд, как раз (x)html, css, js — обёртка приложения (если не говорить о JS как о средстве обмена обмена информацией с сервером, а-ка AJAX). Важно понимание работы приложения изнутри, а не «снаружи». Возможно я говорю о более высоком уровне, нежели уровень Ваших студентов, и им нужны html, css и js, но в моем понимании веб-программирование — это понимание работы веб-приложений, а не некий уровень умения написания разметки и скриптов.

>нужно понимать как всё крутится — tcp/ip, http, html, cs, js, веб-сервера, cgi/php/servlet.
соглашусь, если акцент на фразе «понимать как всё крутится».
Тогда я хотел бы попросить Вас привести примеры в стиле edhell — т.е. кратких заголовков содержания — того, что относится именно к принципам работы веб-приложений изнутри, к концептуальному уровню.
конкретика нужна будет при полной разработке курса. но в общем виде я бы описал так:

Основы http, ftp, различных серверов, понимание отличия web-приложения от обычного.
Понимание модели MVC – с одной стороны, это бесспорно классика ООП, но с другой – позволяет дать явное различие модели и представления, а не только представления ((x)html, css, js). Соответственно к MVC добавляются другие паттерны (!)web-приложений и идею саму реализации серверной части, а это уже существенно; появляется возможность осмысленно дать материал по представлею.
Важное отличие web -приложений в самой их сути: запрос-ответ, где сервер отдает информацию и забывает о ней. Таким образом, необходимо толково объяснить механизм хранения и передачи данных. Простейший AJAX: обзор XML и JS применительно к теме передачи данных.
Безусловно, работа с базами данных. Описание важных моментов, будь то пул подключений, минимизирующий затраты на подключение к базе, или понятие транзакций (знакомое слово из курса БД редко кто воспринимает всерьез до плотной работы с БД), но никак не SQL. Можно сюда же уместить фреймворки на примере hibernate.

И так далее, давая студентам комплексное понимание web-программирования. Никто не заставляет говорить об онтологиях (в контексте web 3.0) или распределенных приложениях, но то, что я описал, на мой взгляд, даст некую комплексную базу для web-разработчика, а не основу для мальчика – Drupal`ьчика.

Нельзя привязываться к конкретному языку, ведь как Вы упоминали выше – их множество: PHP, Java (model1, model2), руби и так далее.
По представлению – HTML, CSS, JS – очень простые темы для того, чтобы на них особо заострять внимание, то есть выдавать их за основу курса. Ведь простенький сайт для народ.ру, даже моя девушка сделала за два часа, с учетом фотошопа и освоения html, css и готовых скриптов js.
вот за это большое спасибо.
итак:
— протокол HTTP; кодировки, URL-кодирование и x-form-url-encoded;
— взаимодействие между разными уровнями приложения;
— модели и паттерны, включая Model-View-Controller;
— XML и JSON; метаданные;
— базы данных;
— особенности работы с совместным доступом к ресурсам;
— клиентская сторона (XHTML-CSS-JS);
— серверные платформы и языки (..........).

Вы меня верно поняли.
однако я бы немного не так сказал по поводу
>— взаимодействие между разными уровнями приложения;
>— модели и паттерны, включая Model-View-Controller;
В первую очередь сама модель модель-представление контроллер. Исходя из пониманя модели на основе паттернов проектирования показать разноуровневое взаимодействие.

>— базы данных;
>— особенности работы с совместным доступом к ресурсам;
Эти темы стоит объединить, так как база данных есть общий ресурс: кто первый, того и тапочки. Повторное изучение будет убивать драгоценные «часы».

>— серверные платформы и языки (..........)
Для практической части стоит определиться на каком языке будут примеры, тщательно продумав какой язык наиболее доступно объяснит примеры. От этого зависит выбор языка, на котором будет писаться бОльшая часть лабораторных работ.
Спасибо, будем думать. Пока я склоняюсь к РНР, хотя очень хочется как следует разобраться с Web Tier, потому что подозреваю, на материале Java можно подобрать примеры к какой угодно идее =)
Я упрощенно написал список тем выше по названиям технологий (http, html и т.д.). Излагать я пытаюсь именно в русле раскрытия самих принципов веба (http как базовый протокол веб-приложений, html/css как клиентская часть веб-приложений, расширение функциональности веб-серверов на примере cgi, java servlet, php и т. д.).
Да, но у вас и название дисциплины достаточно широко обозначено. Ведь под «программирование в Интернете» можно подвести написание клиента для аськи, или VoIP или даже на еще более низком уровне — т.е. тут в основе стек протоколов, верно?
Я конечо извиняюсь, но 4 курс должен уметь уже работать более-менее самостоятельно. Находить нужные данные и доки в сети и думать об архитектуре а не о реализации.

Веб это не PHP или JSP на сервере или JS на клиенте, а взаимодействие клиент-сервер, с пониманием ограничений и множественного доступа и представлении информации + UI. Конкретный язык или тонкости технологии стунденты должны уже сами находить. В принципе согласен с Monyag по структуре, но упор должен делаться на наращивании понимания того что твориться с реальным приложением, а не освоением языка или фреймворка. Для начала полезно сделать простой пример что бы убедиться что все умеют базовые вещи, чтобы потом этот пример усложнять.

Лабы должны строиться по этому же принципу — как пример: сделали калькулятор, потом пытаемся считать что-то долгое, но итеративное, потом считаем на общих данных с возможными конфликтами или блокировками.
Или возьмем паттерны. Сначала пишем простой элементик, пусть простой tip, потом делаем их несколько разных, потом усложняем/меняем вид/поведение/взаимодействие для половины из них, что бы было понятно зачем нужно разделение на уровни.

По задачам — биржы фрилансеров имхо вредны, большая часть там тупые и стандартные задачи. Примеры надо придумывать вдумчиво и с переспективой на дальнейшее развитие, это не дело 5 минут. Главное для задачи — показать нужное и убрать лишнее. Это как Пушкин — должно быть просто и гениально одновременно.
Я бы посоветовал посмотреть на гайды — там встерчаются простые но интересные примеры.

И на последок о UI. Возможно это отдельная тема, но для веба важно иметь понимание об асинхронности, событиях и взаимодействии с пользователем. Думается что лаба с часиками + запрос на сервер + какой-то движняк на действия мышкой будет полезен.
Существует очень много суждений как общих, так и частных относительного того, что должны уметь студенты на том или ином курсе. Естественно ждать от студента на 4-м курсе некоторой самостоятельности — с этим не поспоришь. Но когда я выполняю обязанности преподавателя (это не всегда упоение властью над студентами), я отчасти — обслуживающий персонал. Точно так же, как фрилансер по отношению к клиенту. От клиента ждешь разве самостоятельности? Разве ему скажешь: RTFM!!!?

Нет. Поэтому я сделал этот пост с целью собрать мнения экспертов, вполне возможно, студентов (видимо, на Хабре очень много студентов старших курсов на программистских или дизайнерских направлениях). И может меня пронзит что-то вроде Пушкина — простое и гениальное — когда я впитаю мысли, которыми вы со мной поделились. Так что спасибо )
Я собственно и студентам ( вел семинары 3-му курсу ) и заказчикам с удовольствием обьясняю где и в каком месте они могут почитать по теме :) если это действительно базовые вещи.
И те и другие привыкают к тому что у меня есть все ответы, но навык самостоятельного изучения важнее любой информации что можно донести в столь малое отведенное время. Вся конкретика поменяется быстрее чем студент защитится. Сведения станут бесполезными, зато навык выручит.

Шесть лет назад в правительстве было принято решение организовать специальность «Информационные технологии в образовании». Предполагалось, что эти студенты смогут разрабатывать не очень сложные ресурсы для нужд образования. Ну, например, создать для учителя физики интерактивную модель и вывесить ее на веб-странице. Все это теперь кажется наивным…
С течением времени выяснилось. что в образование студенты идут не очень охотно (что вполне естественно), а идут в фирмы. И надо добиться, чтобы за них потом не было мучительно стыдно. Поэтому люди вроде меня проводят ночи в попытках сделать для них приличный курс, ну и, заодно, что-то новое узнать и для себя. Как-то так.
интересно, спасибо
а где можно почитать (посмотреть) то, что уже было разработано студентами?
Мы исповедуем идею портфелей (я использую слово «веб-портфолио») — каждый студент выкладывает по мере обучения всякие штуки которые он(она) делает. А вот и пример
)) Они не совсем педагоги. У них план обучения на 70% примерно — технологии, а педагогика им нужна как бы для того, чтобы говорить на более-менее одном языке с учителям. Вы там можете посмотреть, у них есть ссылки друг на друга, чтобы было нечто вроде сети портфелей.
Only those users with full accounts are able to leave comments. Log in, please.