Skriftlig eksamen igen

Et vue ud over Agri Nord-hallen med de 170 eksamensborde.

I dag var det igen tid til skriftlig eksamen, og denne gang var det det største hold, jeg nogensinde har undervist. Knap 170 studerende skulle til eksamen i Syntaks og semantik i Agri Nord-sportshallen ude ved Aalborg City Syd. Universitetets egne bygninger er efterhånden blevet for små. Studiesekretærerne Lene og Lone var der sammen med mig, og vi skulle være klar, hvis der opstod en uventet situation. Der skete dog kun lidt, og meget af tiden kunne vi sidde og beskæftige os med andre gøremål. Af og til kastede vi et blik ud på salen; den tonede rude giver det hele et underligt tusmørkeskær.

Kl. 13.00 var det hele slut, og jeg kunne cykle ud til mit kontor på Selma Lagerløfs Vej. Ikke så længe efter at jeg dukkede op, kom Lene og Lone med de knap 170 eksamenssæt, og jeg gik straks i gang med at rette. Det bliver en travl weekend, men jeg vil have det hele overstået i stedet for at skubbe alt dette foran mig. Skriftlig eksamen tager tid, men jeg turde slet ikke tænke på hvordan en mundtlig eksamen for 170 studerende ville blive. Jeg kan især holde pauser, når jeg selv vil og fornemmer at koncentrationen er ved at glippe. Ulempen ved skriftlig eksamen er, at det bliver sværere at give hver enkelte studerende råd med på vejen.

Skal man lære om beregnelighed?

Standseproblemet på vers. Et digt af Geoffrey K. Pullum fra University of Edinburgh.

Lige for tiden er der diskussioner om indholdet af uddannelserne i datalogi og software på mit institut. Der er nogle, der nu taler for, at man skal fjerne det kursus, der hedder Beregnelighed og kompleksitet fra pensum. Det er det kursus, der handler om uafgørbare og svære beregningsproblemer og tager udgangspunkt i Alan Turings resultater herom.

Datalogifaget fornyr sig hele tiden, siger de, der taler for at afskaffe Beregnelighed og kompleksitet, og det må være på sin plads at tage fat på nogle andre emner nu og måske have nogle flere værktøjsfag. Skulle man absolut nævne at der findes problemer, der ikke kan løses med en algoritme, kunne man jo gøre det kort i den første uge på første semester – så er dét overstået. Det er måske et fundamentalt resultat, men fundamental er jo det samme som elementær. I øvrigt kan man klare sig fint uden, lyder det – de fleste kandidater bliver trods alt først og fremmest programmører, og den slags skal aldrig prøve at løse uafgørbare problemer.

Jeg er selvfølgelig alt andet end neutral her; Beregnelighed og kompleksitet var det første kursus, jeg underviste i da jeg blev universitetslærer i sin tid, og der er ikke nogen på mit institut, der har holdt det så mange gange som mig. Til efteråret skal jeg holde kurset igen, og igen til 2019. Måske bliver det sidste gang nogensinde, studerende møder disse emner, men hvis det sker, vil jeg være endog meget trist til mode. I så fald bliver AAU (så vidt jeg kan se) hjemsted for en af de få datalogiuddannelser derude, hvor studerende ikke skal lære noget om algoritmers begrænsninger.

Mit dybeste argument for at Beregnelighed og kompleksitet ikke skal forsvinde fra vores datalogi- og softwareuddannelser er, at det er vigtigt, at studerende lærer om hvad man ikke kan og aldrig vil kunne. Datalogi er i højere grad end andre naturvidenskaber præget af den teknologiske udvikling, men også datalogi har en kerne af begreber, der ikke forandrer sig. De programmeringssprog og de maskinarkitekturer, vi har i vore dage, er ikke blevet bedre i stand til at løse standseproblemet eller tvetydighedsproblemet for kontekstfrie grammatikker end de sprog og arkitekturer, der fandtes for 20 år siden. Det er ikke alt, man kan programmere sig uden om, og dén faglige realisme og ydmyghed skal en person med en universitetsuddannelse i datalogi være i besiddelse af. Fundamentale resultater i videnskab er ikke nødvendigvis elementære; faktisk er det typisk tilfældet i matematik og naturvidenskab, at de vigtigste resultater er alt andet end nemme at forstå og ofte endda strider mod intuitionen.

På vej over tærsklen

I  disse uger kommer der ganske mange studerende fra 4. semester på datalogi- og software-uddannelserne forbi mit kontor for at stille spørgsmål i forbindelse med deres projekt, der snart er slut. I projektet er et vigtigt læringsmål, at de studerende skal lave en definition af et programmeringssprog. Og her får de brug for indhold fra kurset Syntaks og semantik, som jeg har holdt.

Det er interessant at snakke med dem og få et indblik i deres projekter, og jeg opdager, at så godt som alle har de samme udfordringer, de samme “traditionsrige fejl”. For to år siden skrev jeg om disse “traditionsrige fejl”, men jeg har nu et endnu klarere billede af præcis hvilke misforståelser, der finder sted i så godt som alle projekter på dette forløb. Jeg er nu nået til at kunne forudsige, hvad problemerne er, få minutter inde i en samtale med en projektgruppe. Det er specielt at være nået dertil, at jeg kan se ned over en kompliceret definition og ofte umiddelbart se, hvor der er problemer. Bl.a. har jeg i alle projekter set programmeringssprog, hvor man kan erklære variabler midt i det hele. De studerende tænker aldrig over, at dette er en rigtig dårlig idé af flere grunde – men når jeg fortæller dem det, indser de det så godt som altid!

At jeg så hurtigt kan sætte fingrene på nogle usvigelige ømme punkter skyldes selvfølgelig ikke, at de studerende er inkompetente, men at der findes nogle helt bestemte såkaldte “tærskelbegreber”, som er karakteristiske for et fagområde og som altid volder besvær.

Det, jeg nu overvejer, men som jeg ikke ved om er en god idé, er at prøve at lave en udførlig liste over de traditionsrige fejl med en forklaring af hvordan man “kommer over tærsklen” for hver enkelt af dem. Grunden til at jeg er usikker på om dette egentlig er en god idé, er at jeg faktisk også opdager, at de studerende lærer noget vigtigt af at gå i stå eller have et problem – når ellers de opdager, at de har et problem. Det sker nemlig ikke altid.

Datalogiens videnskabsteori?

Der er et lovkrav om at alle danske universitetsuddannelser skal have et kursus i fagets videnskabsteori. Da loven blev indført, var der en del af mine kolleger, der undrede sig – jamen, er alle de teoretiske aspekter af et fag da ikke videnskabsteori?

Og svaret er jo nej. Videnskabsteori er et fagområde, der beskæftiger med med hvad videnskab er og ikke er, med videnskabens erkendelsesformer og hvordan forskellige videnskabsgrene forholder sig til hinanden.

Der har været forskellige kurser på datalogiuddannelserne i Aalborg, der på en eller anden måde har handlet om videnskabsteori. I mange år var der et kursus, der hed “Datalogiens filosofi”, men det handlede udelukkende om systemudvikling. Det nuværende kursus om videnskabsteori er gået i helt andre retninger og tager fat på så forskellige emner som læsning og skrivning af artikler, forskningsetik, evaluering af eksperimenter og matematikkens grundlagskrise (det sidste ville nok appellere mere til matematikstuderende).

Det er formodentlig godt og velovervejet, men det går op for mig, at der måske ikke er nogen enighed om hvad datalogiens videnskabsteori egentlig dækker over. Jeg beskæftiger mig ikke med maskinintelligens, men det undrer mig, at man kan holde et kursus helt uden at komme ind på alle diskussionerne om hvorvidt maskiner vil kunne tænke. Det er egentlig trist, at datalogiens videnskabsteori ikke har en bedre plads end i et kursus til allersidst på bacheloruddannelsen.

Selv mødte jeg videnskabsteori lidt tidligere i min universitetsuddannelse. Jeg er så gammel, at jeg kom ind til datalogi som del af en tofagsuddannelse sammen med matematik, og i matematikuddannelsen var der dengang et kursus om matematikkens didaktik og videnskabsteori. Ad dén vej stiftede jeg bekendtskab med Mill, Hume, Russell, Whitehead, Popper, Lakatos og alle de andre – og med alle diskussionerne om positivisme, empirisme, Wienerkredsen osv.  Ikke alle syntes, det var specielt fascinerende, men det gjorde bl.a. jeg.  Og på datalogiuddannelsen var der også mulighed for at tage fat på videnskabsteori; jeg husker et projekt om netop maskinintelligensens begrænsninger.

Jeg har opdaget, at der faktisk er en del resurser derude, der tager fat på datalogiens videnskabsteori og måske kunne inspirere os til at tænke lidt videre. Stanford Encyclopedia of Philosophy, hvor jeg ofte har brugt en ledig stund, har en spændende artikel om datalogiens videnskabsteori.  William Rapaport fra University at Buffalo/The State University of New York har skrevet en bog på mere end 500 sider om datalogiens videnskabsteori, fyldt med diskussionsøvelser og det hele. Og Luciano Floridi har skrevet en bog, Philosophy and Computing, der tager et helt andet fokus and Rapaports bog, men stadig er en bog om datalogiens videnskabsteori.

På Aarhus Universitet er der en studiekreds om datalogiens videnskabsteori. Måske burde vi have noget tilsvarende i Aalborg.

Datalogi som støttefag?

På sin altid interessante blog om undervisning og datalogi skriver den amerikanske universitetslærer Mark Guzdial om datalogiundervisning i USAs grundskoler.

Et forsøg i USA med at undervise børn i 3. til 5. klasse i simpel datalogi (som indeholder simpel programmering som beskrevet i forløbet CS Fundamentals hos Code.org) har den fristende konklusion, at der måske kan være læringsmæssige fordele, der smitter af på præstationerne i andre skolefag. I al fald klarede de elever sig bedre i en senere eksamen, der fulgte et særligt tværfagligt forløb, der integrerede datalogikundskaber med naturvidenskab og samfundsfag og benyttede problembaseret læring. Den eksamen, som eleverne tog, var delstatens eksamen (der vel svarer til de nationale tests) inden for matematik, naturvidenskab og engelsk. Så måske blev eleverne bedre til andre fag af at blive undervist i datalogi.

Men ved vi strengt taget slet ikke. Der er meget, vi ikke kan se af beskrivelsen af forløbet, hvilket Mark Guzdial da også påpeger. Var det virkelig datalogi-indholdet, der gjorde forskellen og giver noget nyt til skolens almene dannelse? Eller var det monstro problembaseret læring, der var udslagsgivende? Eller skyldtes forskellen simpelthen, at lærerne blev ekstra motiverede og gjorde en bedre indsats?

Uanset hvad er det vigtigt at finde ud af.

En fælles basis?

I dag kan jeg læse om endnu et initiativ, der skal gøre noget ved den sørgelige tendens det er, at der næsten ingen kvinder er, der studerer datalogi. Denne gang er det et initiativ ved University of Waterloo i Canada.

Her er der både en massiv indsats ved ungdomsuddannelserne og en anderledes tilgang på universitetets uddannelser, der bliver satset på. Blandt andet skal alle matematikstuderende have et kursus i datalogi på første år.

Netop dét er noget, der er forsvundet på Aalborg Universitet. For mange år siden, da der fandtes en teknisk-naturvidenskabelig basisuddannelse, skulle alle studerende have et kursus i datalogi. Det var ikke et fantastisk kursus (jeg var selv med til at holde det flere gange), men i det mindste var der da noget. Nu er der rigtig mange studerende, der ikke møder datalogi overhovedet – herunder specielt dem, der vil studere matematik. Det er en voldsom ændring fra dengang, hvor en stor procentdel af kandidaterne i matematik fra AAU havde et sidefag/bifag i datalogi – og omvendt.

Der var mange ulemper ved basisuddannelsen; fra min egen studietid husker jeg min ærgrelse over ikke at kunne komme til at beskæftige mig med matematik før på 3. semester. Men der var faktisk også nogle fordele forbundet med at udskyde det endelige studievalg bare lidt. (Og så har vi ikke talt om hvor nemt dette gjorde det at fortryde sit valg uden at det havde voldsomme konsekvenser for den studerendes SU mv.)

På én måde har vi faktisk en rest af basisuddannelsen endnu på datalogiuddannelserne, for de første fire semestre af datalogi- og softwareuddannelserne er helt identiske. Og det sker da også, at studerende skifter fra den ene uddannelse til den anden.

Anonym bedømmelse?

I den akademiske verden sender vi forskningsartikler ind til bedømmelse ved konferencer og tidsskrifter, og bedømmelsen er anonym. Jeg ved ikke, hvem der har bedømt mine artikler.

Men noget af det mest ærgerlige, når man får en indsendt artikel afvist, er netop at man ikke kan tage til genmæle over for en bedømmelse, man synes er urimelig. Nogle gange har jeg været ude for bedømmere, der helt har misforstået min artikel. Heldigvis har nogle konferencer inden for datalogi derfor inden for de seneste år indført rebuttal-faser, hvor man kan tage til genmæle over for bedømmelserne i håb om at få dem ændret til det bedre.

Men hvorfor skal bedømmelse af akademiske artikler overhovedet være anonym? Bertrand Meyer, der er professor i datalogi i Zürich, stiller netop dét spørgsmål i et debatindlæg, og jeg synes, at han har fat i noget vigtigt. Anonyme bedømmelser skulle gøre det muligt at fremføre kritik uden risiko for repressalier, men det kan nemt føre til useriøs og overfladisk kritik. Dette kender vi allerede i ikke ringe omfang fra studerendes evaluering af undervisning.

Hvis man ved, hvem bedømmeren er, lægger det et større pres på bedømmeren for at skrive en grundig og seriøs bedømmelse. Og et andet argument mod anonymiteten er at anonymitet kan gøre det meget sværere at opdage videnskabelig uredelighed. Anonym bedømmelse gør det meget nemmere at stjæle andres ideer uden at blive opdaget: Hvis man får fat i en lovende artikel, kan man give den en dårlig bedømmelse, så den ikke bliver godkendt, og derefter skrive en artikel selv om det samme.

At bygge og forstå

Institut for datalogi ved AAU.

For mange år siden, da jeg studerede matematik, brugte jeg det meste af projektarbejdet på femte semester på ørkesløse diskussioner om hvad matematik mon var for et fag. Senere kom de ørkesløse diskussioner om hvad datalogi mon er for et fag,

For otte år siden var jeg med til at udarbejde de nye studieordninger for datalogi- og softwareuddannelserne på Aalborg Universitet, og nu er der endnu en revision på trapperne. Denne gang er jeg dog ikke med.

I dag var jeg til et møde i min faggruppe på instituttet, hvor de seneste tanker fra det nuværende udvalg blev præsenteret. Ingen af mine kolleger virkede til at være særlig glade; det nye forslag til ny struktur af uddannelserne virkede på mange af os mest som en kluntet ikke-angrebspagt mellem nogle temmelig forskellige opfattelser af hvad datalogi er. For der er bestemt ikke enighed; forslaget er sikkert resultatet af ørkesløse diskussioner. Jeg håber, at det nye udvalg en dag vil komme frem til et bedre bud på en ny struktur af vores uddannelser. Ellers ville jeg egentlig hellere beholde den gamle struktur (og det siger jeg ikke kun, fordi jeg selv var med til at udarbejde den).

Efterhånden er det gået op for mig, at jeg på én og samme tid slet ikke kan give en kort forklaring af hvad datalogi er og samtidig har en temmelig klar idé om hvad der er særligt for denne nye naturvidenskab. Nu afdøde Robin Milner sagde i sin tale, da han blev æresdoktor ved universitetet i Bologna, at

For twenty-five years I have been trying to merge programming, the prescriptive or synthetic activity, with the task of description or analysis in computing.

Det er en fin opsummering af det, også jeg nu mener at vide. Jeg vil hævde, at datalogi er en videnskab, der handler om at bygge og om at forstå programmer og data. For at kunne bygge, skal man først forstå. Men for at kunne forstå, skal man også prøve at bygge selv, præcis ligesom en vordende matematiker skal kunne formulere egne definitioner og bud på sætninger og prøve at bevise/modbevise dem. Og de fleste, der får en uddannelse i datalogi, får et arbejde, hvor de både skal bygge og forstå.

Når vi skal analysere programmer, skal vi bruge matematiske teorier for at forstå deres adfærd. Men vi skal selvfølgelig også forstå, hvordan programmerne påvirker det enkelte menneske og samfundet – og det kræver nogle helt andre analyseredskaber. Begge former for forståelse og analyse er vigtige.

Datalogiens murermestervillaer

Foto: Mikkel Hede.

Fordi konflikten er blevet udsat, kan jeg få afsluttet dette års forløb af kurset Syntaks og semantik. Forhåbentlig kan dette kursus og det projektarbejde, de fleste studerende, der følger kurset, laver samtidig, skabe en god forståelse for de teorier og teknikker, der skal til, når man laver et programmeringssprog.

Det er altid lidt ærgerligt for mig at skulle fortælle de studerende, at de fleste af de programmeringssprog, de kender, faktisk ikke er særligt teoretisk velfunderede. Man kommer let til at miste troværdighed, for når de berømte programmeringssprog ikke har fulgt de samme teoretiske principper som man bliver undervist i, hvordan kan underviserne så tillade sig at kræve den slags af de studerende?

De allerfleste udbredte programmeringssprog er faktisk en slags “datalogiens murermestervillaer”. En murermestervilla er en hustype, der var populær i Danmark i det 20. århundrede. De var ikke tegnet af arkitekter, men var udtryk for solidt håndværk. Det gjorde, at de på den ene side var grundigt konstruerede og på mange måder driftssikre, på den anden side måske ikke så kreativt designede og heller ikke godt fremtidssikrede. F.eks. er det ikke altid nemt at energisikre en murermestervilla, og ofte er loftsetagen lidt underlig. Men der er mange, der stadig bor i murermestervillaer, og de kommer sikkert til at stå i mange år endnu.

Udbredte programmeringssprog som C, C++, Javascript mm.  er selvfølgelig i et vist omfang produkt af viden fra datalogi.  Men nogle af dem blev til inden der fandtes et solidt grundlag for hvordan man kunne definere semantikken af et programmeringssprog, og andre blev skabt af nogen, der ikke vidste ret meget om den slags. Seneste velkendte eksempel er vel det nu så populære Python, der blev til i 1991. Engang sagde Guido van Rossum, der er hovedmanden bag dette sprog, i et interview at

But Python’s compiler has no idea what your code means, and that’s useful too.

Den slags er lidt ærgerligt at læse. Der er ikke andet for end at minde de studerende om at vi ikke uddanner murermestre på et universitet, men at godt håndværk selvfølgelig er vigtigt at kende til, også for akademikere.

En lang dag i Lissabon

I dag var det så tid til mødet om Horizon 2020-ansøgningen, som var min egentlige grund til at rejse til Lissabon, og for første gang var alle deltagere samlet. Det var mig, der havde taget initiativ til mødet og skulle prøve at styre slagets gang.

Vi begyndte mødet kl. 9.00, holdt en (lidt for) lang (men god) frokostpause og var først færdige kl. 19.30. Vi fik en masse nyttige kommentarer fra det konsulentbureau, vi havde hyret, og bagefter fik vi en meget grundig diskussion af alle de andre ting, vi også skulle have på plads i den lange ansøgning, som vi nu er ved at udarbejde. En del misforståelser blev ryddet af vejen, og vi lærte en hel masse om hinanden nu, hvor vi for første gang sad over for hinanden.

Det var et udbytterigt møde, men bagefter var vi også pænt trætte. De fleste af de portugisiske deltagere tog hjem med det samme, mens de fleste af resten af os tog på restaurant, hvor vi endte med at tale om musik og mad og forskellen på ravne og krager.

Nu mangler vi bare at få skrevet 165 sider og så afvente evalueringspanelets dom. Forhåbentlig går det bedre denne gang.