Om grymheten i att verkligen lära ut datavetenskap
"On the Cruelty of Really Teaching Computing Science" är en vetenskaplig artikel från 1988 av EW Dijkstra som hävdar att datorprogrammering bör förstås som en gren av matematiken och att ett programs formella bevisbarhet är ett viktigt kriterium för korrekthet.
Trots titeln handlar det mesta av artikeln om Dijkstras försök att sätta in datavetenskap i ett bredare perspektiv inom naturvetenskap , och undervisningen tas upp som en följd i slutet. Dijkstra gjorde specifikt ett "förslag till en introduktionsprogrammeringskurs för förstaårsstudenter" som bestod av Hoare-logik som ett otolkat formellt system .
Debatt om genomförbarhet
Sedan termen "programvaruteknik" myntades har formell verifiering nästan alltid ansetts vara för resurskrävande för att vara genomförbar. [ citat behövs ] I komplexa applikationer är svårigheten att korrekt specificera vad programmet ska göra i första hand också en vanlig felkälla. Andra metoder för mjukvarutestning används i allmänhet för att försöka eliminera buggar och många andra faktorer beaktas vid mätningen av mjukvarans kvalitet .
Fram till slutet av sitt liv hävdade Dijkstra att de centrala utmaningarna med datoranvändning inte hade möts på ett tillfredsställande sätt, på grund av en otillräcklig betoning på programmets korrekthet (även om det inte undanröjde andra krav, såsom underhållbarhet och effektivitet ).
Pedagogiskt arv
Datavetenskap som lärs ut idag följer inte alla Dijkstras råd. Läroplanerna betonar generellt tekniker för att hantera komplexitet och förbereda sig för framtida förändringar, efter Dijkstras tidigare skrifter. Dessa inkluderar abstraktion , programmering genom kontrakt och designmönster . Programmeringstekniker för att undvika buggar och konventionella programvarutestmetoder lärs ut som grundläggande krav, och eleverna utsätts för vissa matematiska verktyg, men formella verifieringsmetoder ingår inte i läroplanen förutom kanske som ett avancerat ämne. Så på något sätt har Dijkstras idéer följts; de idéer han kände starkast för har dock inte varit det.
Nybildade läroplaner i programvaruteknik har antagit Dijkstras rekommendationer. Fokus för dessa program är den formella specifikationen av mjukvarukrav och design för att underlätta den formella valideringen av systemets korrekthet. I Kanada är de ofta ackrediterade ingenjörsexamina med liknande kärnkompetenser inom fysikbaserad teknik.
- ^ Dijkstra, Edsger W. På grymheten av att verkligen undervisa beräkningsvetenskap (EWD-1036) (PDF) . EW Dijkstra-arkivet. Center for American History, University of Texas i Austin . ( transkription )
- ^ Dijkstra, Edsger W. Slutet av datavetenskap? (EWD-1304) (PDF) . EW Dijkstra-arkivet. Center for American History, University of Texas i Austin . ( transkription )
-
^ MIT-kurser:
- Eric Grimson, Peter Szolovits och Trevor Darrell. 6.001 Struktur och tolkning av datorprogram . Våren 2005. Massachusetts Institute of Technology: MIT OpenCourseWare, https://ocw.mit.edu . Licens: Creative Commons BY-NC-SA .
- Robert Morris och Samuel Madden. 6.033 Datorsystemteknik . Våren 2009. Massachusetts Institute of Technology: MIT OpenCourseWare, https://ocw.mit.edu . Licens: Creative Commons BY-NC-SA .
- Ronitt Rubinfeld och Albert Meyer. 6.042J Matematik för datavetenskap . Hösten 2005. Massachusetts Institute of Technology: MIT OpenCourseWare, https://ocw.mit.edu . Licens: Creative Commons BY-NC-SA .
- Daniel Jackson. 6.170 Software Studio. Våren 2013 . Massachusetts Institute of Technology: MIT OpenCourseWare, https://ocw.mit.edu . Licens: Creative Commons BY-NC-SA .
- ^ " Mjukvaruteknikprogram är inte datavetenskapsprogram " (PDF) . Arkiverad från originalet (PDF) 2013-09-27 . Hämtad 2012-10-30 .