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.
sumber
Jawaban:
Ini seperti apa yang dilakukan pendidikan Ilmu Komputasi TU Eindhoven, yang dirancang dan diimplementasikan oleh Dijkstra dan rekan-rekannya, sejak saat dimulai, sekitar tahun 1980, hingga pengaruh Dijkstra mulai berkurang, di suatu tempat setengah jalan pada tahun 1990-an.
Saya mulai belajar CS di Universitas Nijmegen pada tahun 1982; teman sekelasnya melakukan hal yang sama di TU Eindhoven. Setiap musim semi, sekolah menengah kami yang lama memiliki hari di mana mantan siswa akan memperkenalkan bidang studi pilihan mereka kepada siswa saat ini, dan kami berdua di sana untuk memperkenalkan CS, jadi kami membandingkan pengalaman kami. Mereka sangat berbeda. Di Nijmegen, kami memperoleh pengalaman aktual dengan bahasa pemrograman aktual, benar-benar menjalankan program penugasan kami pada komputer yang sebenarnya (mesin virtual VM / CMS, tepatnya). Tidak demikian halnya di Eindhoven. Mantan teman sekelas saya memberi tahu saya bahwa mereka tidak diizinkan menyentuh komputer di tahun pertama. Pemrograman, di Eindhoven, berarti belajar untuk secara matematis membangun algoritma yang benar terbukti dari definisi masalah yang dinyatakan secara matematis. Di kertas.
Sikap ini agak santai setelah Dijkstra pergi, tetapi bahkan pada awal 1990-an, kursus yang disebut Programmeren (Pemrograman), berjumlah 1 hingga 9, dan mencakup beberapa tahun, masih terdiri dari kegiatan yang sama, dan satu khususnya menyajikan rintangan besar bagi murid-murid. Saya tidak pernah mengikuti kursus-kursus itu, tetapi saya ragu penggunaan komputer apa pun.
Jika Anda bertanya-tanya: pendidikan ilmu komputer saat ini di TU Eindhoven sangat berbeda.
sumber
Lihatlah "Metode Pemrograman oleh Edsger W. Dijkstra, WHJ Feijen, Joke Sterringa". Ini berisi materi yang ditimbulkan dalam kutipan. Bacaan yang menyenangkan.
sumber