pada "Pada kekejaman yang benar-benar mengajarkan ilmu komputasi"

33

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.

Matthew Towers
sumber
2
Saya cukup yakin Dijkstra mengkritik gaya tertentu tentang bagaimana matematika telah diajarkan (yang membangun segalanya, gaya Bourbaki, dari aksioma) dan bahwa ini dimaksudkan sebagai sindiran . Namun, saya tidak punya bukti untuk mendukung hal itu (di mana komentar daripada jawaban).
lol "kami memastikan bahwa bahasa pemrograman yang dipermasalahkan belum diterapkan di kampus sehingga siswa terlindungi dari godaan untuk menguji program mereka." sepertinya dia mengacu pada kelas yang dia sendiri ajarkan / konseptualisasikan? mengingatkan saya pada "mengajar CS tanpa komputer"
vzn
4
@LoopSpace Saya tidak berpikir begitu Dijkstra terkenal karena pendapat yang kuat, dan dia jelas berada di sisi matematika CS.
Raphael
1
Sudahkah Anda memeriksa kursus yang ia sendiri berikan? Referensi yang tidak spesifik seperti itu mungkin menunjuk pada pengalamannya sendiri.
Raphael
4
rupanya bukan sindiran. Dijkstra adalah seorang pendukung / advokat secara umum dari ide-ide yang secara khusus dikutip di sini. btw duplikat
vzn

Jawaban:

18

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.

reinierpost
sumber
Jawaban yang bagus, saya hampir kehilangan harapan untuk pertanyaan ini tetapi sepertinya Anda sudah mendapatkannya. Adakah ide di mana saya dapat menemukan lebih banyak tentang kursus TU Eindhoven 80s CS yang Anda maksud
Matthew Towers
Tidak yakin. Saya juga tidak yakin jawaban saya adalah yang terbaik - saya tidak ada di sana saat itu.
reinierpost
1
Saya memiliki salinan Programmeren 1 en 2 silabus, tanggal Agustus 1982, xeroxed dari tulisan tangan Dijkstra. Perpustakaan TU Eindhoven memiliki pemindaian online. Pada 1984 Dijkstra dan Feijen mengembangkan ini menjadi sebuah buku, diterbitkan dalam bahasa Inggris pada tahun 1988: A Method of Programming .
reinierpost
Apakah Anda memiliki tautan ke versi online, @reinierpost?
adrianN
2

Lihatlah "Metode Pemrograman oleh Edsger W. Dijkstra, WHJ Feijen, Joke Sterringa". Ini berisi materi yang ditimbulkan dalam kutipan. Bacaan yang menyenangkan.

Yves Daoust
sumber
Apakah literatur ini yang membahas konten kursus seperti yang disarankan oleh Dijkstra? Jika demikian, berikan ringkasan / pengantar untuk sumber yang Anda berikan. Jika tidak, apakah Anda yakin ini menjawab pertanyaan?
Kadal diskrit
@ Discretelizard: ini adalah kursus.
Yves Daoust