“Bilişim bilimini gerçekten öğretmenin zulmü üzerine”


33

Dijkstra, makalesinde , bilgisayar bilimlerini öğretmenin zulmü üzerine , bir giriş programlama kursu için aşağıdaki öneride bulundu:

Bir yandan, belirleyici hesabın neye benzediğini öğretiyoruz, ancak bunu filozoflardan çok farklı yapıyoruz. Acemi programcıyı yorumlanmamış formüllerin manipülasyonunda eğitmek için, öğrenciye mantıksal bağlaçların tüm cebirsel özelliklerini tanıyarak, boolean cebiri olarak öğretiyoruz. Sezgiye olan bağlantıları daha da kesmek için, boolean alanın {true, false} değerlerini {black, white} olarak yeniden adlandırıyoruz.

Öte yandan, basit, temiz, zorunlu bir programlama dili, temel ifadeler olarak bir atlama ve çoklu atama ile, yerel değişkenler için blok bir yapı, ifade kompozisyonu için operatör olarak noktalı virgül, güzel bir alternatif yapı, güzel tekrarlama ve eğer istenirse bir prosedür çağrısı. Buna boolean, integer, karakter ve string gibi minimum veri türlerini ekliyoruz. Önemli olan, ne tanıtırsak sunalım, karşılık gelen anlambilimin kendisiyle birlikte gelen ispat kuralları ile tanımlanmış olmasıdır.

En başından ve tüm kurs boyunca, programcının görevinin yalnızca bir program yazmak değil, aynı zamanda ana görevinin de önerdiği programın eşit olarak resmi işlevsel şartnameye uygun olduğuna dair resmi bir kanıt vermek olduğunu vurguluyoruz. Ellerinde kanıtlar ve programlar tasarlanırken, öğrenci manipülatif çevikliğini yordayıcı hesap ile mükemmelleştirmek için geniş bir fırsat elde eder. Son olarak, bu tanıtıcı programlama kursunun öncelikle resmi bir matematik dersi olduğu mesajını eve götürmek için, söz konusu programlama dilinin kampüste uygulanmadığını, böylece öğrencilerin programlarını test etme isteğinden korunduğunu görüyoruz. .

Bunun ciddi bir öneri olduğunu vurguluyor ve fikrinin "tamamen gerçekçi değil" ve "çok zor" olduğu da dahil olmak üzere çeşitli olası itirazları ortaya koyuyor.

Ancak bu uçurtmanın her iki varsayım için de uçmayacağı kanıtlandı: 80'li yılların başından bu yana, böyle bir tanıtım programı kursu her yıl yüzlerce üniversite birinci sınıf öğrencisine başarıyla verildi. [Tecrübelerime göre, bir kez bunun yeterli olmadığını söylemek, önceki cümlenin en az iki kez tekrarlanması gerekir.]

Dijkstra hangi kursa atıfta bulunuyor ve onu tartışacak başka literatür var mı?

Deneme 1988'de Dijkstra'nın Austin'deki Texas Üniversitesi'ndeyken ortaya çıktı, muhtemelen bir ipucuydu - Dijkstra arşivine ev sahipliği yaptılar, ancak çok büyük ve özellikle bu kurs hakkında başkalarından duymak istiyorum.

Dijkstra'nın fikrinin burada iyi veya gerçekçi olup olmadığını tartışmak istemiyorum. Bunu cstheory.se veya cs.se'ye göndermeyi düşündüm, ancak buraya yerleştiğim için: a) bir eğitimci topluluğunun kolayca cevap verebilecek birisine sahip olma olasılığı daha yüksek olabilir ve b) Dijkstra'nın kendi kursunun "öncelikle" resmi matematik. " Kabul etmiyorsanız, geçişi işaretlemek için çekinmeyin.


2
Dijkstra'nın matematiğin nasıl öğretildiğine (her şeyi inşa eden, Bourbaki stiline, aksiyomlardan) bir stilini eleştirdiğine ve bunun hiciv olarak tasarlandığından eminim . Ancak, bunu destekleyecek hiçbir kanıtım yok (bu nedenle yanıt yerine yorumdan).

lol "Söz konusu programlama dilinin kampüste kullanılmadığını görüyoruz, böylece öğrenciler programlarını test etme isteğinden korunuyorlar." kendini öğrettiği / kavramsallaştığı bir sınıfa atıfta bulunuyor gibi görünüyor? bana "bilgisayarsız CS öğretmek"
vzn

4
@LoopSpace Sanmıyorum ki, Dijkstra güçlü görüşler için ün salmış ve kesinlikle CS'nin matematik tarafındaydı.
Raphael

1
Kendisinin verdiği dersleri kontrol ettiniz mi? Bunun gibi spesifik olmayan bir referans muhtemelen kendi deneyimine işaret ediyor.
Raphael

4
görünüşe göre hiciv değil. Dijkstra, burada özellikle alıntı yapılan fikirlerin genel bir savunucusu / savunucusuydu. btw yinelenen
vzn

Yanıtlar:


18

Bu, TU Eindhoven'in Dijkstra ve meslektaşları tarafından tasarlanan ve uygulanan Bilgisayar Bilimi eğitiminin, 1980'lerde Dijkstra'nın etkisi, 1990'lı yılların yarısında bir yerde azalmaya başlayana kadar olduğu gibiydi.

1982'de Nijmegen Üniversitesi'nde CS eğitimi almaya başladım; bir sınıf arkadaşı TU Eindhoven'da da aynısını yaptı. Her baharda eski ortaokulumuz eski öğrencilerin seçtikleri çalışma alanını mevcut öğrencilere tanıtacağı bir gün geçirirdi ve ikimiz de CS'yi tanıtmak için oradaydık, bu yüzden deneyimlerimizi karşılaştırdık. Çok farklıydılar. Nijmegen'de, atama programlarımızı gerçek bir bilgisayarda çalıştıran (bir VM / CMS sanal makinesi), gerçek programlama dilleriyle gerçek bir deneyim edindik. Eindhoven'da öyle değil. Eski sınıf arkadaşım bana ilk yılda bir bilgisayara dokunmalarına izin verilmediğini söyledi. Programlama, Eindhoven'da, matematiksel olarak belirtilen problem tanımlarından matematiksel olarak doğru şekilde düzeltilmiş algoritmalar yapmayı öğrenmek anlamına geliyordu. Kağıtta.

Bu tutum Dijkstra'nın ayrılmasından sonra biraz gevşetildi, ancak 1990'ların başında bile , 1'den 9'a kadar olan Programmeren (Programming) adı verilen ve birkaç yıl süren kurslar hala aynı aktiviteden oluşuyordu ve özellikle bunlardan biri için büyük bir engel oluşturuyordu. öğrenciler. Bu derslerin hiçbirini almadım, ancak bilgisayar kullanımından herhangi bir şey olduğundan şüpheliyim.

Merak ediyorsanız: TU Eindhoven'da bugünün bilgisayar bilimleri eğitimi çok farklı.


Harika cevap, neredeyse bu soruya dair umudumu yitirmiştim, ama anlıyorsunuz gibi geliyor. Bahsettiğiniz TU Eindhoven 80s CS kursu hakkında daha fazla bilgi bulabileceğim bir fikrin var mı?
Matthew Towers

Emin değil. Cevabımın da en iyisi olduğundan emin değilim - O sırada orada değildim.
reinierpost

1
Dijkstra'nın elyazısından xeroxed Ağustos 1982 tarihli Programmeren 1 ve 2 müfredatının bir kopyasına sahibim . TU Eindhoven kütüphanesinde bir tarama var. 1984'te Dijkstra ve Feijen bunu 1988'de İngilizce olarak yayınlanan bir kitap haline getirdi: Programlama Yöntemi .
reinierpost

@Reinierpost'ın online versiyonuna bir bağlantınız var mı?
adrianN


2

"Edsger W. Dijkstra, WHJ Feijen, Joke Sterringa'dan Programlama Yöntemi" konusuna bakın. Alıntılarda çağrılan materyali içerir. Keyifli bir okuma.


Dijkstra'nın önerdiği gibi bir kursun içeriğini tartışan bu literatür mü? Öyleyse, lütfen sağladığınız kaynağa bir özet / giriş yapın. Değilse, bunun soruyu yanıtladığından emin misiniz?
Kesikli kertenkele

@Discretelizard: kurs bu.
Yves Daoust
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.