Dijkstra, dalam esainya Tentang kekejaman yang benar-benar mengajarkan ilmu komputasi , membuat proposal berikut untuk kursus pemrograman pengantar:
Di satu sisi, kami mengajarkan apa yang tampak seperti kalkulus predikat, tetapi kami melakukannya sangat berbeda dari para filsuf. Untuk melatih programmer pemula dalam memanipulasi formula yang tidak diinterpretasikan, kami mengajarkannya lebih sebagai aljabar boolean, membiasakan siswa dengan semua properti aljabar dari penghubung logis. Untuk lebih lanjut memutuskan tautan ke intuisi, kami mengganti nama nilai {true, false} dari domain boolean sebagai {hitam, putih}.
Di sisi lain, kami mengajarkan bahasa pemrograman yang sederhana, bersih, imperatif, dengan loncatan dan penugasan berganda sebagai pernyataan dasar, dengan struktur blok untuk variabel lokal, titik koma sebagai operator untuk komposisi pernyataan, konstruksi alternatif yang bagus, konstruksi yang bagus pengulangan dan, jika diinginkan, panggilan prosedur. Untuk ini kami menambahkan minimal tipe data, katakanlah booleans, integer, karakter dan string. Yang penting adalah bahwa, untuk apa pun yang kami perkenalkan, semantik yang terkait ditentukan oleh aturan pembuktian yang menyertainya.
Sejak awal, dan sepanjang kursus, kami menekankan bahwa tugas programmer tidak hanya untuk menulis sebuah program, tetapi bahwa tugas utamanya adalah untuk memberikan bukti formal bahwa program yang ia usulkan memenuhi spesifikasi fungsional formal yang sama. Sementara merancang bukti dan program bergandengan tangan, siswa mendapat banyak kesempatan untuk menyempurnakan kelincahan manipulatif dengan kalkulus predikat. Akhirnya, untuk mengembalikan pesan bahwa kursus pemrograman pengantar ini terutama merupakan kursus matematika formal, kami memastikan bahwa bahasa pemrograman yang dimaksud belum diterapkan di kampus sehingga siswa dilindungi dari godaan untuk menguji program mereka. .
Dia menekankan bahwa ini adalah proposal yang serius, dan menguraikan berbagai kemungkinan keberatan, termasuk bahwa idenya "benar-benar tidak realistis" dan "terlalu sulit."
Tapi layang-layang itu tidak akan terbang baik untuk postulat telah terbukti salah: sejak awal 80-an, kursus pemrograman pengantar tersebut telah berhasil diberikan kepada ratusan mahasiswa baru setiap tahun. [Karena, menurut pengalamanku, mengatakan ini sekali saja tidak cukup, kalimat sebelumnya harus diulang setidaknya dua kali lagi.]
Kursus mana yang dirujuk Dijkstra, dan adakah literatur lain yang tersedia yang membahasnya?
Esai ini muncul pada tahun 1988 ketika Dijkstra berada di University of Texas di Austin, yang mungkin merupakan petunjuk - mereka menjadi tuan rumah arsip Dijkstra tetapi ini sangat besar, dan saya sangat tertarik untuk mendengar dari orang lain tentang kursus ini.
Saya tidak ingin membahas apakah ide Dijkstra baik atau realistis di sini. Saya mempertimbangkan untuk memposting ini di cstheory.se atau cs.se tetapi menetap di sini karena a) komunitas pendidik mungkin lebih cenderung memiliki seseorang yang dapat menjawab dengan mudah, dan b) Dijkstra sendiri menekankan bahwa kursusnya "terutama kursus di matematika formal. " Jangan ragu untuk menandai migrasi jika Anda tidak setuju.