на «О жестокости по-настоящему преподавания информатики»

33

Дейкстра в своем эссе « О жестокости реального обучения информатике» предлагает следующее предложение для вводного курса по программированию:

С одной стороны, мы учим тому, что похоже на исчисление предикатов, но делаем это совсем не так, как философы. Чтобы обучить начинающего программиста манипулированию неинтерпретируемыми формулами, мы учим его больше как булевой алгебре, знакомя студента со всеми алгебраическими свойствами логических связок. Чтобы еще больше разорвать связи с интуицией, мы переименовываем значения {true, false} логического домена в {black, white}.

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

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

Он подчеркивает, что это серьезное предложение, и излагает различные возможные возражения, в том числе то, что его идея «совершенно нереальна» и «слишком сложна».

Но этот змей тоже не взлетит, поскольку постулат оказался неверным: с начала 80-х годов такой вводный курс по программированию успешно читается сотнями первокурсников колледжа каждый год. [Поскольку, по моему опыту, одного этого слова недостаточно, предыдущее предложение следует повторить еще как минимум два раза.]

На какой курс ссылается Дейкстра, и есть ли другая литература, в которой он обсуждается?

Эссе появилось в 1988 году, когда Дейкстра учился в Техасском университете в Остине, что, вероятно, является подсказкой - они хранят архив Дейкстры, но он огромен, и мне особенно интересно услышать от других об этом курсе.

Я не хочу обсуждать, является ли идея Дейкстры хорошей или реалистичной здесь. Я подумал о том, чтобы опубликовать это на cstheory.se или cs.se, но остановился на этом, потому что: а) в сообществе педагогов, скорее всего, найдется кто-то, кто может легко ответить, и б) сам Дейкстра подчеркивает, что его курс "в первую очередь является курсом в формальная математика. " Не стесняйтесь помечать для миграции, если вы не согласны.

Мэтью Тауэрс
источник
2
Я почти уверен, что Дейкстра критикует особый стиль преподавания математики (тот, который строит все, в стиле Бурбаки, из аксиом) и что это задумано как сатира . Однако у меня нет никаких доказательств, подтверждающих это (откуда комментарий, а не ответ).
lol "мы видим, что данный язык программирования не был реализован в университетском городке, так что студенты защищены от соблазна проверить свои программы". кажется, он имеет в виду класс, который он сам преподавал / концептуализировал? напоминает мне о «обучении CS без компьютеров»
vzn
4
@ LoopSpace Я не думаю, что Дейкстра славится сильными мнениями, и он определенно занимался математикой в ​​CS.
Рафаэль
1
Вы проверили курсы, которые он сам дал? Такая неопределенная ссылка, вероятно, указывает на его собственный опыт.
Рафаэль
4
это явно не сатира. Дейкстра был сторонником / защитником идей, приведенных здесь. Кстати дубликат
Vzn

Ответы:

18

Это почти то же самое, что было в образовании Ту Эйндховена по компьютерным наукам, разработанным и реализованным Дейкстрой и его коллегами, с момента его начала, примерно в 1980 году, до тех пор, пока влияние Дейкстры не начало ослабевать, где-то в середине 1990-х годов.

Я начал изучать CS в университете Неймегена в 1982 году; одноклассник сделал то же самое в Эйндховене. Каждую весну в нашей старой средней школе был день, когда бывшие ученики представляли выбранную область обучения нынешним ученикам, и мы оба были там, чтобы представить CS, поэтому мы сравнивали наш опыт. Они были очень разные. В Неймегене мы получили реальный опыт работы с реальными языками программирования, фактически выполняя наши программы заданий на реальном компьютере (если быть точнее, виртуальной машине VM / CMS). Не так в Эйндховене. Мой бывший одноклассник сказал мне, что им не разрешали прикасаться к компьютеру в первый год. Программирование в Эйндховене означало обучение математическому построению доказуемо правильных алгоритмов из математически сформулированных проблемных определений. На бумаге.

Это отношение было несколько смягчено после ухода Дейкстры, но даже в начале 1990-х годов курсы под названием Programmeren (Программирование), насчитывавшие от 1 до 9 и продолжавшиеся несколько лет, все еще состояли из той же деятельности, и один из них представлял собой серьезное препятствие для студенты. Я никогда не учился ни на одном из этих курсов, но сомневаюсь, что какое-либо использование компьютеров имело место.

На случай, если вам интересно: сегодняшнее образование в области компьютерных наук в университете Эйндховена совсем другое.

reinierpost
источник
Отличный ответ, я почти потерял надежду на этот вопрос, но, похоже, вы его поняли. Любая идея, где я мог бы найти больше о курсе TU Eindhoven 80s CS, на который вы ссылаетесь?
Мэтью Тауэрс
Не уверена. Я тоже не уверен, что мой ответ лучший - меня там не было в то время.
сообщение от
1
У меня есть копия программы Programmeren 1 en 2 , датированная августом 1982 года, ксерокопированная из почерка Дейкстры. В библиотеке TU Eindhoven есть онлайн-сканирование. В 1984 году Дейкстра и Фейен превратили это в книгу, выпущенную на английском языке в 1988 году: метод программирования .
reinierpost
У вас есть ссылка на онлайн-версию, @reinierpost?
АдрианN
2

Взгляните на «Метод программирования Эдсгера В. Дейкстры, WHJ Фейен, Шутка Стерринга». Содержит материал, приведенный в цитатах. Восхитительное чтение.

Ив Дауст
источник
Является ли эта литература, которая обсуждает содержание курса, такого как предложенный Дейкстра? Если это так, пожалуйста, предоставьте резюме / введение в источник, который вы предоставляете. Если нет, вы уверены, что это отвечает на вопрос?
Дискретная ящерица
@Discretelizard: это курс.
Ив Дауст