Еще кого-нибудь обосру — на очереди TU Darmstadt

Вот я, например, ругаю отечественных доцентов, пытающихся преподавать «информатику» и одновременно хвалю всяких там иностранных Керниганов. Впору заподозрить меня в «низкопоклонстве перед Западом» — но нет, обгадить надо всех ровным слоем. Сегодня под раздачу попадет Технический университет Дармштадта — так получилось, что я добрался до тамошних лекций по Allgemeine Informatik (на русский переводится примерно как «общая информатика»), почитал конспект гуглотранслейтом и ужаснулся.

http://www.ke.tu-darmstadt.de/lehre/archiv/ws0607/ai1/material/

Технический университет Дармштадта — это вам не кот чихнул, а, как подсказывает нам Педивикия, «один из наиболее известных технических университетов, является членом TU 9». Вводный курс по «общей информатике» читает профессор Йоханн Фурнкранц — может, он действительно большой специалист по «искусственному интеллекту», но преподавать не умеет от слова совсем.

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

Вопрос первый стоимостью 10 баллов — про память компьютера Commodore C64. Мгновенно отсекает студентов, не слышавших слова типа «шина адреса» и «шина данных» — ну или привыкших думать над вопросом, а не мгновенно переводить все встреченные числа в двоичный вид. Теоретически, ответ на этот вопрос можно найти в лекциях — на 6 слайде лекции про фон-Неймановскую архитектуру немножечко рассказывается о разрядности данных и адреса, но многие ли студенты будут в состоянии это запомнить, понять и применить на экзамене?

Второе задание на 12 баллов проверяет склонность к зубрежке и начетничеству, которую многие преподаватели путают с освоением предмета. Вопрос — «что такое дигитализация и почему это важно для современных компьютеров?» Прилежный студент-отличник должен встать по стойке «смирно» и бодро оттарабанить заученное: «Современные компьютеры — это цифровые компьютеры и вся информация, как то: символы, тексты, изображения, музыка, видео и так далее должна быть преобразована в цифровую форму, то есть представлена последовательностью из нулей и единиц!» Просто прекрасен вопрос о том, является ли Java интерпретируемым или компилируемым языком. Интересно, можно ли на экзамене сказать про JIT-компиляцию, или профессор выпадет в осадок?

Задание третье, 8 баллов — таблицы истинности. Ну тут сложно придумать что-то совсем нехорошее. Единственная претензия с моей стороны — вот такие обозначения для всяких там дизъюнкций и конъюнкций только запутывают. Одна и та же операция может обозначаться аж тремя способами («как в математике», буковками — OR, AND, NOT, и «как в Java» — &&, ||, !) — не многовато ли?

Задание четвертое аж на 15 баллов. Тут начинается «программирование». О том, как оно изучается — надо сказать отдельно. Быть может, и неплохо вводный курс программирования начинать с «робота» типа того, который был в учебнике Кушниренко (вообще, «гонять робота по клетчатой доске» — прекрасный способ продемонстрировать «содержательное» программирование, не прибегая к математике типа метода Ньютона или даже квадратных уравнений), но «немецкий» Karel J. Robot — это что-то чудовищное.

Во-первых — может быть, многие уже забыли, но Си-подобный синтаксис — это полная дикость для человека, видящего его в первый раз. Хуже может быть только какой-нибудь APL (и то не факт). Немецкий «робот» — это довольно тонкая «обертка» над языком Java, соединенная с редкостно уебищной IDE. Вы удивитесь, но у живого человека возникают проблемы с тем, надо или не надо ставить точку с запятой после for(…) или if(…), где ставить и где не ставить какие скобки (их, напомню, в Си и других языках с похожим синтаксисом аж три сорта), ну и так далее. В любом редакторе кода для «кушниренковского» (в широком смысле — отношу сюда и разработанного в 57 школе «Робота«) эта проблема решалась тем, что все конструкции языка программирования вводились через контекстное меню (что-то типа Code Snippets во «взрослых» IDE) — здесь же не умеющих программировать студентов оставляют наедине с ущербным текстовым редактором (кажется, даже без подсветки синтаксиса). Зато полдесятка слайдов в лекции по работе с Karel J. Robot и задание в одной из контрольных посвящены всевозможным «орфографическим» ошибкам — что как бы намекает на основные сложности.

Впрочем — и это будет второй и главной претензией к содержанию курса — он вовсе не рассчитан на «не умеющих программировать». Первый же пример кода в этом курсе появляется во второй лекции (слайд 21). Вы уже знаете, что такое переменная, массив, цикл? Тогда вам остается только покивать головой «Ja, Ja» в ответ на объяснения со следующего слайда. Не знаете? Это ваши проблемы. Я почти не шучу — «программирование» начнется в лекциях по Karel J. Robot и новые понятия будет появляться в бешеном темпе. Прекрасно, если вы что-то слышали про условный оператор и циклы в любом языке программирования. Не слышали? У вас есть три слайда, чтобы разобраться.

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

Столько же баллов «стоит» и задание номер 5 — элементарная задача по работе с массивами. Единственная сложность, видимо — «программирование на бумаге».

Следующие два задания по программированию — снова «робот» (25 баллов) и Java (15 баллов), надо реализовать довольно подробно расписанное «техническое задание». Казалось бы, в оцененной в 25 баллов задаче надо как-то проявить смекалку и креативность? Но нет, там тупейший кодинг, сопряженный с борьбой против убогости «робота».

Что же видим по итогам двух семестров (в техническом университете, хочу заметить)? Проверяемый уровень знаний соответствует примерно российскому ЕГЭ по «информатике», да еще и отягощен бездумным изучением Java. В курсе не разбирается ни одного хоть сколько-то нетривиального алгоритма (видимо, из-за нехватки времени). Да что там говорить, когда в лекции «Что такое методы» примерно половина слайдов уделена вопросу, чем метод класса (то есть с ключевым словом static) отличается от метода объекта!

Теперь — маленькая вишенка на торте. Напомню, что этот курс читается всем специальностям, где предусмотрена «информатика», в частности — магистрам по специальности «компьютерная лингвистика«. Два семестра из четырех отводится на этот лютый онанизм, предназначенный скорее для будущих «профессиональных программистов на Java» — и лишь в третьем семестра ВНЕЗАПНО в программе появляется Python с NLTK. Хочется спросить — а почему бы не начать с того же питона? Но нет, сначала надо вынести мозг при помощи Java, а затем немногим выжившим — показать их настоящий профессиональный инструмент.

UPD Первая лекция третьего семестра у компьютерных лингвистов начинается со сравнения Java и Python в духе «в Java ужас-ужас и непонятно, а в Python все очень легко и просто»:

java-vs-python

Вопрос о целесообразности изучения Java в течение двух первых семестров остается открытым.

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *