Дійкстра у своєму нарисі « Про жорстокість справді викладання обчислювальної науки» робить наступну пропозицію щодо вступного курсу програмування:
З одного боку, ми навчаємо, як виглядає предикатне числення, але ми робимо це зовсім інакше, ніж філософи. Для того, щоб навчити програміста-початківця до маніпулювання неінтерпретованими формулами, ми навчаємо його більше як булева алгебра, ознайомлюючи студента з усіма алгебраїчними властивостями логічних сполучників. Для подальшого розриву посилань на інтуїцію ми перейменовуємо значення {true, false} булевого домену як {black, white}.
З іншого боку, ми викладаємо просту, чисту, імперативну мову програмування, з пропуском і кратним призначенням як базові заяви, з блочною структурою для локальних змінних, крапкою з комою як оператором для складання висловлювань, приємною альтернативною конструкцією, приємною повторення та, за бажанням, виклик процедури. До цього ми додаємо мінімум типів даних, скажімо, булеві, цілі числа, символи та рядки. Важливим є те, що, що б ми не ввели, відповідна семантика визначається правилами доказування, які йдуть із нею.
Від самого початку і весь курс ми підкреслюємо, що завдання програміста - це не просто записати програму, а те, що його головне завдання - дати офіційний доказ того, що запропонована ним програма відповідає однаково формальній функціональній специфікації. Розробляючи докази та програми рука об руку, студент отримує широкі можливості вдосконалити свою маніпулятивну спритність з обчисленням предиката. Нарешті, для того, щоб донести додому повідомлення про те, що цей вступний курс програмування - це передусім курс з формальної математики, ми впевнені, що мова програмування не була реалізована на кампусі, щоб студенти були захищені від спокуси перевірити свої програми .
Він підкреслює, що це серйозна пропозиція, і викладає різні можливі заперечення, включаючи те, що його ідея є "абсолютно нереальною" та "надто складною".
Але цей кайт не летить ні за постулат, як було доведено, неправильно: з початку 80-х років такий вступний курс програмування успішно проводиться сотням першокурсників коледжу щороку. [Тому що, на мій досвід, сказати, що цього разу недостатньо, попереднє речення слід повторити ще хоча б два рази.]
На який курс іде Дайкстра, і чи є інша література, яка обговорює його?
Нарис з’явився в 1988 році, коли Дайкстра був в Техаському університеті в Остіні, що, мабуть, є підказкою - вони містять архів Діжкстри, але він величезний, і мені особливо цікаво почути від інших про цей курс.
Я не хочу обговорювати, чи ідея Діккстра тут добра чи реальна. Я розглядав можливість розміщення цього повідомлення на cstheory.se або cs.se, але тут зупинився, тому що: а) у спільноті освітян може бути більше шансів на те, що хтось може легко відповісти; б) сам Дійкстра підкреслює, що його курс - це "насамперед курс у формальна математика ". Сміливо позначте міграцію, якщо ви не погоджуєтесь.