Дейкстра в своем эссе « О жестокости реального обучения информатике» предлагает следующее предложение для вводного курса по программированию:
С одной стороны, мы учим тому, что похоже на исчисление предикатов, но делаем это совсем не так, как философы. Чтобы обучить начинающего программиста манипулированию неинтерпретируемыми формулами, мы учим его больше как булевой алгебре, знакомя студента со всеми алгебраическими свойствами логических связок. Чтобы еще больше разорвать связи с интуицией, мы переименовываем значения {true, false} логического домена в {black, white}.
С другой стороны, мы учим простой, чистый, императивный язык программирования, с пропуском и множественным назначением в качестве базовых операторов, со структурой блоков для локальных переменных, точкой с запятой в качестве оператора для композиции операторов, хорошей альтернативной конструкцией, хорошей повторение и, если необходимо, вызов процедуры. К этому мы добавляем минимум типов данных, скажем, логические, целые числа, символы и строки. Существенным является то, что для того, что мы вводим, соответствующая семантика определяется соответствующими правилами доказательства.
С самого начала и на протяжении всего курса мы подчеркиваем, что задача программиста состоит не только в том, чтобы записать программу, но и в том, что его основная задача состоит в том, чтобы дать формальное доказательство того, что предлагаемая им программа соответствует в равной степени формальной функциональной спецификации. При разработке доказательств и программ рука об руку студент получает широкие возможности для совершенствования своей маневренности с помощью исчисления предикатов. Наконец, чтобы донести до нас мысль о том, что этот вводный курс по программированию является в первую очередь курсом по формальной математике, мы проследим за тем, чтобы данный язык программирования не был реализован в кампусе, так что студенты защищены от соблазна проверить свои программы ,
Он подчеркивает, что это серьезное предложение, и излагает различные возможные возражения, в том числе то, что его идея «совершенно нереальна» и «слишком сложна».
Но этот змей тоже не взлетит, поскольку постулат оказался неверным: с начала 80-х годов такой вводный курс по программированию успешно читается сотнями первокурсников колледжа каждый год. [Поскольку, по моему опыту, одного этого слова недостаточно, предыдущее предложение следует повторить еще как минимум два раза.]
На какой курс ссылается Дейкстра, и есть ли другая литература, в которой он обсуждается?
Эссе появилось в 1988 году, когда Дейкстра учился в Техасском университете в Остине, что, вероятно, является подсказкой - они хранят архив Дейкстры, но он огромен, и мне особенно интересно услышать от других об этом курсе.
Я не хочу обсуждать, является ли идея Дейкстры хорошей или реалистичной здесь. Я подумал о том, чтобы опубликовать это на cstheory.se или cs.se, но остановился на этом, потому что: а) в сообществе педагогов, скорее всего, найдется кто-то, кто может легко ответить, и б) сам Дейкстра подчеркивает, что его курс "в первую очередь является курсом в формальная математика. " Не стесняйтесь помечать для миграции, если вы не согласны.
источник
Ответы:
Это почти то же самое, что было в образовании Ту Эйндховена по компьютерным наукам, разработанным и реализованным Дейкстрой и его коллегами, с момента его начала, примерно в 1980 году, до тех пор, пока влияние Дейкстры не начало ослабевать, где-то в середине 1990-х годов.
Я начал изучать CS в университете Неймегена в 1982 году; одноклассник сделал то же самое в Эйндховене. Каждую весну в нашей старой средней школе был день, когда бывшие ученики представляли выбранную область обучения нынешним ученикам, и мы оба были там, чтобы представить CS, поэтому мы сравнивали наш опыт. Они были очень разные. В Неймегене мы получили реальный опыт работы с реальными языками программирования, фактически выполняя наши программы заданий на реальном компьютере (если быть точнее, виртуальной машине VM / CMS). Не так в Эйндховене. Мой бывший одноклассник сказал мне, что им не разрешали прикасаться к компьютеру в первый год. Программирование в Эйндховене означало обучение математическому построению доказуемо правильных алгоритмов из математически сформулированных проблемных определений. На бумаге.
Это отношение было несколько смягчено после ухода Дейкстры, но даже в начале 1990-х годов курсы под названием Programmeren (Программирование), насчитывавшие от 1 до 9 и продолжавшиеся несколько лет, все еще состояли из той же деятельности, и один из них представлял собой серьезное препятствие для студенты. Я никогда не учился ни на одном из этих курсов, но сомневаюсь, что какое-либо использование компьютеров имело место.
На случай, если вам интересно: сегодняшнее образование в области компьютерных наук в университете Эйндховена совсем другое.
источник
Взгляните на «Метод программирования Эдсгера В. Дейкстры, WHJ Фейен, Шутка Стерринга». Содержит материал, приведенный в цитатах. Восхитительное чтение.
источник