на тему: "Про жорстокість дійсно викладання обчислювальної науки"


33

Дійкстра у своєму нарисі « Про жорстокість справді викладання обчислювальної науки» робить наступну пропозицію щодо вступного курсу програмування:

З одного боку, ми навчаємо, як виглядає предикатне числення, але ми робимо це зовсім інакше, ніж філософи. Для того, щоб навчити програміста-початківця до маніпулювання неінтерпретованими формулами, ми навчаємо його більше як булева алгебра, ознайомлюючи студента з усіма алгебраїчними властивостями логічних сполучників. Для подальшого розриву посилань на інтуїцію ми перейменовуємо значення {true, false} булевого домену як {black, white}.

З іншого боку, ми викладаємо просту, чисту, імперативну мову програмування, з пропуском і кратним призначенням як базові заяви, з блочною структурою для локальних змінних, крапкою з комою як оператором для складання висловлювань, приємною альтернативною конструкцією, приємною повторення та, за бажанням, виклик процедури. До цього ми додаємо мінімум типів даних, скажімо, булеві, цілі числа, символи та рядки. Важливим є те, що, що б ми не ввели, відповідна семантика визначається правилами доказування, які йдуть із нею.

Від самого початку і весь курс ми підкреслюємо, що завдання програміста - це не просто записати програму, а те, що його головне завдання - дати офіційний доказ того, що запропонована ним програма відповідає однаково формальній функціональній специфікації. Розробляючи докази та програми рука об руку, студент отримує широкі можливості вдосконалити свою маніпулятивну спритність з обчисленням предиката. Нарешті, для того, щоб донести додому повідомлення про те, що цей вступний курс програмування - це передусім курс з формальної математики, ми впевнені, що мова програмування не була реалізована на кампусі, щоб студенти були захищені від спокуси перевірити свої програми .

Він підкреслює, що це серйозна пропозиція, і викладає різні можливі заперечення, включаючи те, що його ідея є "абсолютно нереальною" та "надто складною".

Але цей кайт не летить ні за постулат, як було доведено, неправильно: з початку 80-х років такий вступний курс програмування успішно проводиться сотням першокурсників коледжу щороку. [Тому що, на мій досвід, сказати, що цього разу недостатньо, попереднє речення слід повторити ще хоча б два рази.]

На який курс іде Дайкстра, і чи є інша література, яка обговорює його?

Нарис з’явився в 1988 році, коли Дайкстра був в Техаському університеті в Остіні, що, мабуть, є підказкою - вони містять архів Діжкстри, але він величезний, і мені особливо цікаво почути від інших про цей курс.

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


2
Я впевнений, що Дайкстра критикує певний стиль того, як викладали математику (той, який будує все, в стилі Бурбакі, з аксіом), і що це задумане як сатира . Однак у мене немає жодних доказів, які б це підтвердили (звідки коментар, а не відповідь).

lol "ми впевнені, що мова програмування не була реалізована на кампусі, щоб студенти були захищені від спокуси перевірити свої програми". здається, він має на увазі клас, який сам викладав / концептуалізував? нагадує мені "викладання CS без комп’ютерів"
vzn

4
@LoopSpace Я не вважаю, що Dijkstra є горезвісним щодо твердих думок, і він, безумовно, був з математичної сторони CS.
Рафаель

1
Ви перевірили курси, які він сам провів? Неспецифічна така посилання, ймовірно, вказує на його власний досвід.
Рафаель

4
це, мабуть, не сатира. Дайкстра був прихильником / прихильником взагалі цитуваних ідей. btw дублікат
vzn

Відповіді:


18

Це значною мірою те, що освіта TU Eindhoven Computing Science, розроблена та впроваджена Dijkstra та його колегами, була схожа з того часу, коли вона почалася, приблизно в 1980 році, поки вплив Дійкстри не почав слабшати, десь на півдорозі 1990-х.

Я почав вивчати КС в Неймегенському університеті в 1982 році; однокласник робив те ж саме в TU Eindhoven. Кожної весни в нашій старій загальноосвітній школі відбувся день, коли колишні школярі представлятимуть вибране поле навчання нинішнім студентам, і ми обидва були там, щоб запровадити КС, тому ми порівняли наш досвід. Вони сильно відрізнялися. У Неймегені ми отримали фактичний досвід роботи з власними мовами програмування, фактично запускаючи наші програми призначення на фактичному комп’ютері (якщо бути точним віртуальною машиною VM / CMS). У Ейндховені не так. Мій колишній однокласник сказав мені, що не дозволяли торкатися комп'ютера протягом першого року. Програмування в Ейндховені означало навчитися математично конструювати доказово правильні алгоритми з математично викладених визначень проблеми. На папері.

Це ставлення було дещо послабленим після того, як Дайкстра пішов, але навіть на початку 1990-х курси під назвою " Програмінг" (Програмування), що налічували від 1 до 9, і тривалими декількома роками, все ще складалися з тієї самої діяльності, і одна, зокрема, була серйозною перешкодою для студенти. Я ніколи не проходив жодного з цих курсів, але сумніваюся, що це стосувалося використання комп’ютерів.

Якщо вам цікаво: сьогоднішня освіта з інформатики в TU Eindhoven дуже відрізняється.


Чудова відповідь, я майже втратив надію на це питання, але це здається, що ви його зрозуміли. Будь-яка ідея, де я можу дізнатися більше про курс TU Eindhoven 80s CS, про який ви посилаєтесь?
Меттью Тауерс

Не впевнений. Я навіть не впевнений, що моя відповідь найкраща - я тоді не був там.
reinierpost

1
Я є власником копії програми « Programmeren 1 en 2» , датованого серпнем 1982 року, записаного в рукописному тексті Дійкстри. Бібліотека TU Eindhoven має сканування в Інтернеті. У 1984 році Дайкстра і Фейєн розробили це в книзі, виданій англійською мовою в 1988 році: Метод програмування .
reinierpost

Чи є у вас посилання на онлайн-версію, @reinierpost?
adrianN


2

Погляньте на «Метод програмування Едсгера У. Дійкстра, WHJ Feijen, Joke Sterringa». Він містить матеріал, викликаний цитатами. Приємне читання.


Це література, яка обговорює зміст курсу, такого, як пропонував Дійкстра? Якщо так, будь ласка, надайте резюме / вступ до джерела, яке ви надаєте. Якщо ні, то ви впевнені, що це відповідає на питання?
Дискретна ящірка

@Discretelizard: це курс.
Ів Дауст
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.