Torben Mogensen header

Revision af datalogiuddannelsen: Statusrapport

Som nævnt i et tidligere indlæg, er vi på Datalogisk Institut ved at arbejde med en revision af bacheloruddannelsen i datalogi med virkning fra efteråret 2013.

Der har nu været en masse møder og diskussion, og selv om der stadig er en del ting, der ikke er på plads endnu, tegner der sig alligevel et billede af, hvor vi (revisionsudvalget) vil hen.

En af punkterne er, at vi gerne vil profilere vores uddannelse skarpere i forhold til DTUs og ITUs softwareudviklingslinjer ved at fokusere mere på den egentlige datalogi, inklusive det teoretiske fundament for faget. Ved at gøre dette mere eksplicit i uddannelsen, sikrer vi, at de nye studerende trækker deres studievalg ud fra de rigtige forudsætninger og ikke miskonceptioner om, at der er tale om en udvidet programmøruddannelse. Blandt andet vil der allerede på første studieår være et kursus i teoretisk datalogi (beregnelighed, kompleksitet, sprogklasser, osv).

Et andet punkt er, at vi vil tage mere hensyn til de studerende, der ikke kan programmere på forhånd. Det gøres ved at strække det introducerende programmeringsskursus over et helt semester i stedet for en blok (8-9 uger), som er tilfældet nu. Endvidere er fokus ikke så meget på at lære et komplet programmeringssprog, men i stedet at lære at programmere, dvs. computational thinking og ræsonnementer (formelle og uformelle) om programmernes virkemåde og køretider. Det kan sagtens gøres i en et simpelt programmeringssprog eller en simpel delmængde af et ellers mere omfattende sprog -- det kræver blot, at man kan isolere brugerne fra de komplicerede dele af sproget. Konkret er tanken lige nu at bruge Python, men holde brugen af objekter og andre komplicerede sprogelementer på et minimum.

Der bliver så et senere kursus, der tager de mere avancerede programmeringssprogelementer op. Tanken er her at bruge Scala, så man kan dække både objekter, funktionsværdier, polymorfe (generiske) typer, typeinferens, undtagelser (exceptions) og meget mere uden at skulle lære flere forskellige sprog.

Resten er mest en omrokering af eksisterende emner samt oprettelse af flere specialiseringer, men her er der stadig mange detaljer, der ikke er på plads endnu. Når de ting er klart til at fremlægge en mere konkret og detaljeret plan (hvilket gerne skulle være tilfældet indenfor en uges tid), skal forslaget i høring på instituttet, og efter høringssvarene er indkorporeret, skal forslaget skrives op som en formel studieordning, der skal godkendes af studienævnet. Også her kan ændringer komme på tale. Når den nye studieordning er færdigrevideret og godkendt, vil jeg give en mere detaljeret beskrivelse her. Indtil da vil jeg gerne høre, om I synes ideerne er skingrende sindsyge eller klarsynede forbedringer.

Kommentarer (34)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
Jonas Nyrup

Lækkert at høre, med en klarere profil.
Mener helt sikkert det er vigtigt at få skelnet de praktiske og teoretiske IT-uddannelser fra hinanden. Tror en stor del af frafaldet på datalogiuddannelsen netop skyldes, at nye studerende desværre betragter den som den udvidede programmøruddannelsen.

På SDU skiftede vores to programmeringskurser fra rent Java til først i første kursus at bruge Python og så i næste kursus (objektorienteret programmering) at bruge Java.
Den primære grund var at der skal skrives mindre kode i Python for at få noget kørende kode.

  • 4
  • 1
Baldur Norddahl

Den primære grund var at der skal skrives mindre kode i Python for at få noget kørende kode.

I Scala skal man kun lave minimalt med kode for at komme igang. Eksempel:

baldur@neaira:~$ echo 'println("hello world")' > /tmp/hello.scala  
baldur@neaira:~$ scala /tmp/hello.scala  
hello world

Det bliver spændende at høre om erfaringer med Scala som undervisningssprog.

Coursera har i øvrigt oprettet et kursus i Scala med undervisning af Martin Odersky himself: https://www.coursera.org/course/progfun

  • 3
  • 5
Baldur Norddahl

Hvis man skal tage maksimalt hensyn til de "nye" uden programmeringskendskab bør man holde sig til ét sprog i starten af studiet. Har man overvejet at man måske lige så godt kan isolere en delmængde af Scala sproget? Start for eksempel med scala-script (ligesom mit hello world ovenover) uden pakker og objekter.

Senere i studiet kan man have et værktøjsfag som introducerer andre sprog. Hvorfor ikke have et fag som forudsætter almindelig rutine i Scala og som giver et lynkursus til de mest benyttede sprog i industrien? C, C++, C# og Java. Så kommer man ikke ud af studiet helt uden kendskab til de mest brugte sprog.

  • 1
  • 0
Troels Henriksen

Det har erfaringsmæssigt ikke været et problem at de studerende skulle lære mere end ét sprog i løbet af deres første år (for slet ikke at snakke om de derpå følgende), så det er et kriterie man nok ikke bør optimere på. Scala er nok for stort til den type grundlæggende programmering de skal starte med at lave, men jeg kan godt se idéen i at bruge det til at undervise i forskellige programmeringsparadigmer.

(Selvfølgelig bør man naturligvis bruge Haskell til det hele. Et objekt i Haskell kan sagtens simuleres med en type der indeholder en eksistentielt kvantificeret skolem typevariabel og en eksplicit metodetabel!)

  • 3
  • 0
Esben Nielsen

ser det ud til at nogen ikke giver efter for presset fra politikere og erhvervsliv om at lave en pølsefabrik, det laver folk, som vi lige har brug for her og nu - og så ikke kan få job, når de kommer ud om 5 år, hvor kravene er noget helt andet.

Jeg har desværre på fornemmelsen at andre (Århus) går den anden vej: Erhvervslivet kan bruge dataloger; men vi kan ikke uddanne nok, dels fordi mange falder fra og dels pga. for få ansøgere. Så laver man studiet om til at være mere anvendeligt og mere praktisk orienteret i håb om at flere består, og man får flere ansøgere. Men det jo i virkeligheden ikke det, som gjorde datalogerne efterspurgte i første omgang!

Jeg har indtryk af, at der skete ikke noget lignende med datamatikeruddannelsen: Pga. presset for uddanne flere bliv uddannelsen fuldstændig devalueret i forhold til, hvad den var i midten af 90'erne, hvor datamatikere havde meget større anseelse end nu.

(Jeg er ikke selv datalog, jeg læste fysik.)

  • 3
  • 0
Jon Loldrup

Et par kommentarer:

1: Har i også tænkt jer at reformere formen, eller skal undervisningens ankerpæl stadig være 2x45 minutters forelæsning foran tavle?
Verden synes at flytte sig bort fra denne ide, ret hurtigt.
Der findes vildt lækre lær-at-kode-sites på nettet. Hvis man googler "learn to code" finder man f.eks. http://www.codecademy.com/ som er ja, vildt lækkert og en verden til forskel fra den klassiske undervisningsform DIKU praktiserer. BAM. Næsten for nemt.
Har DIKU forholdt sig til den slags værktøjer?

2: Der findes masser af forskning som dokumenterer hvilke undervisningsformer der virker bedst. Har i tænkt jer at inkorporere forskningsresultater, eller skal det, som sædvanlig, være op til hver enkelt lære (og hans begrænsede tidsressourcer) at vælge den undervisningsform, som han tilfældigvis tror er god?
Jeg foreslår et rådgivende udvalg som prøver at skubbe de mest klokkeklare forskningsresultater ind i undervisningen. Det er så deres opgave at researche forskning, og hjælpe underviserne i den rigtige retning. Den slags praktiserer DIKU intet af i dag.
Som et lille tip til denne forskningsgruppe, vil jeg foreslå at i fokuserer på så konkrete forskningsresultater som muligt. Der er flere skoler inden for didaktikken, og hvis man rammer de konstruktivistisk orienterede artikler, har man budt sig selv på en ørkenvandring. Don't go there.

3: Oleksandr Shturmov, studerende på DIKU, har sat sig for at reformere DIKUs OOPD-kursus i år. Han har taget en moderne undervisningsplatform i brug. Jeg foreslår at DIKUs ledelse tager et godt og åbensindet kig på dette kursus!

  • 0
  • 0
Povl H. Pedersen

Jeg ser en fordel ved at vælge lidt mere perifære programmeringssprog. Da jeg startede på datalogi, så startede vi med RASMUS som var en database opfundet og lavet på DAIMI i Århus. Her havde også de ikke-programmeringskyndige muligheder for at være med. Så blev det Modulo-2, året efter var det vist det hjemmelavede Trine, så noget concurrent-Pascal.

Dem der kunne programmere på forhånd kunne bruge noget af det de havde med, men de var ikke lysår foran dem med mindre programmeringserfaring. Og når man skifter sprog, så er sproget bare en udtryksform.

Om jeg skal skrive noget kode i C/C++/Objective-C/Pascal/PHP/Javascript eller andet er lidt ligegyldigt. Problemet løses på samme måde, og problemet er det interessante. Kodningen kan enhver kodekarl lave, og der er meget outsourcing af dette.

På et eller andet tidspunkt ender man så op på en platform man skal bruge til noget, og så må man lære det API der findes der. Vi lærte at kode mod X-Windows som det første.

Så det at fokus ikke er mainstream sprogene ser jeg som en fordel. Det er med til at give datalogen hans fleksibilitet. Han skal ikke være en Java eller dotNOT ekspert når han er færdig, men han skal kunne blive det hvis han ønsker det.

Datalogen er ikke og skal ikke være konkurrenten til den 15-årige knægt der har lært at lave dynamiske hjemmesider. Han skulle gerne kunne meget mere end kun programmere.

Ligesom der er forskel på en tømrer og en ingeniør, så skal der også være forskel på en programmør og en datalog. Og en programmør skal kunne lære en masse nyt hvis han vælger at læse datalogi.

  • 1
  • 0
Kasper Grubbe
  • 1
  • 0
Torben Mogensen Blogger

Vi er bekendt med fordelene ved at bruge hjemmelavede sprog, som ingen kender i forvejen: Primært, at det stiller alle på nogenlunde lige fod, og at det er svært at snyde sig til svar på hjemmeopgaver ved at søge/spørge på nettet. Men der er bestemt også ulemper: Man skal selv skrive lærebøgerne, man skal selv vedligeholde implementeringen af sprogene (på flere platforme), og chancen for, at man nogensinde kommer til at bruge sprogene efterfølgende er minimal.

Jeg tror i øvrigt at ideen om at stille alle lige ved at vælge et ukendt sprog er overdrevet: I min erfaring er det ikke svært at lære et nyt sprog, det svære er at lære programmeringsprocessen. "Computational thinking", som det også kaldes.

  • 0
  • 0
Peter Pedersen

... fint? Men hvad er fordelen så ved "perifære" (entlig lidt et skod udtryk) programmeringssprog? Jeg køber ikke at nogen sprog er bedre end andre. Der er alt for mange domæner og anvendelsesområder. Det lyder som om Torben og de andre lektorer sætter fokus på teoretisk videnskab fra starten, og ikke lige pludselig når Algo starter :-)

  • 0
  • 0
Troels Henriksen

Fordelen ved de "perifære" sprog er ikke at de er obskure (som Torben påpeger betvivler jeg også selv de påståede fordele ved at bruge udkendte sprog), men at de oftest er enklere end industrielt brugte sprog. De er typisk mindre belastede af bagudkompatibilitet og andre kompromiser, hvilket gør det nemmere at præsentere den grundlæggende beregningsmodel for programmering.

  • 1
  • 0
Oleksandr Shturmov

1: Har i også tænkt jer at reformere formen, eller skal undervisningens ankerpæl stadig være 2x45 minutters forelæsning foran tavle?
Verden synes at flytte sig bort fra denne ide, ret hurtigt.

Fortæl mig om en betydningsfuld universitet der benytter det til andet end reklame. Fortæl mig om en videnskabelig artikel der fortæller om fordelene ved dette form for de studerende der faktisk dukker op på campus.

Har DIKU forholdt sig til den slags værktøjer?

Det ses i øjeblikket som sekundært. Men jeg har tænkt mig at nævne det når vi begynder at snakke undervisningsform i diverse kurser på det nye studieordning.

2: Der findes masser af forskning som dokumenterer hvilke undervisningsformer der virker bedst. Har i tænkt jer at inkorporere forskningsresultater, eller skal det, som sædvanlig, være op til hver enkelt lære (og hans begrænsede tidsressourcer) at vælge den undervisningsform, som han tilfældigvis tror er god?

Som du vil læse i http://dl.acm.org/citation.cfm?id=1345441, og som jeg kan fortælle dig efter mit OOPD projekt, er situationen altså sådan at artikler der relater sig til både didaktiken og datalogi er utroligt lokale, og lader ikke til at bruge den videnskabelige metode i udførsel. De er normalvis af formen "vi har prøvet det her på vores fakultet og det har vist sig at virke ret godt i forhold til hvad vi havde før". Denne form tvinger en til at sætte spørgsmål til den generelle anvendelighed af de resultater de finder.

3: Oleksandr Shturmov, studerende på DIKU, har sat sig for at reformere DIKUs OOPD-kursus i år. Han har taget en moderne undervisningsplatform i brug. Jeg foreslår at DIKUs ledelse tager et godt og åbensindet kig på dette kursus!

Jeg er med i bachelorrevisionsudvalget ;) Jeg må også indrømme at fravær af et decideret OOPD kursus i det nye studieordning har haft en påvirkning på dybden af mit projekt.

  • 0
  • 0
Jon Loldrup

Fortæl mig om en betydningsfuld universitet der benytter det til andet end reklame. Fortæl mig om en videnskabelig artikel der fortæller om fordelene ved dette form for de studerende der faktisk dukker op på campus.

verden != universiteter

Jeg er ikke i tvivl om at det er en fordel at have studerende på campus. Online-only kurser tiltrækker et bredere klientel end almindelig undervisning, og det sætter formentlig frafaldsprocenten væsentligt op.

Men, det betyder ikke at eleverne ikke kan have gavn af elektroniske guidede læringssystemer. Guidede læringssystemer har potentiale til at forkorte feedback-cyklen dramatisk. Det er en fordel når man skal lære en færdighed (som programmering). Færdighedstræning kræver mange repetitioner.

Som du vil læse i http://dl.acm.org/citation.cfm?id=1345441, og som jeg kan fortælle dig efter mit OOPD projekt, er situationen altså sådan at artikler der relater sig til både didaktiken og datalogi er utroligt lokale, og lader ikke til at bruge den videnskabelige metode i udførsel. De er normalvis af formen "vi har prøvet det her på vores fakultet og det har vist sig at virke ret godt i forhold til hvad vi havde før". Denne form tvinger en til at sætte spørgsmål til den generelle anvendelighed af de resultater de finder.

Man kan også bruge lidt bredere resultater end strikst vedrørende programmeringsundervisnign. F.eks. læste jeg (i en videnskabelig artikel, som jeg nu ikke lige kan finde referencen på) at hvis man har 8 opgaver eleven skal udføre, så får eleven mere ud af sessionen, hvis halvdelen af de 8 opgaver erstattes med eksempler. Det er der nok ikke nogen på DIKU der er bekendt med. Faktisk synes jeg ofte kurserne er meget spegede med eksempler, men meget 'gavmilde' med opgaver som man ikke har fået lagt en ordentlig grund for. Så bliver skolen mere en 5-ǻrig intelligens-test end en uddannelse. Hvis man sørger for en bedre harmoni mellem eksempler og opgaver, tror jeg man får hurtigere progression hos det brede mellemlag af dataloger.

  • 0
  • 0
Jon Loldrup

Fortæl mig om en betydningsfuld universitet der benytter det til andet end reklame. Fortæl mig om en videnskabelig artikel der fortæller om fordelene ved dette form for de studerende der faktisk dukker op på campus.

Hvis i vurderer guidede undervisningssystemer til at være lidt for 'fancy', hvad er så holdningen til undervisningsvideoer som supplement eller alternativ til forelæsninger? Som f.eks.:
http://www.screencast.com/users/loldrup/folders/IP_2011

Rent økonomisk må det være billigere at lave videoer én gang, og så erstatte forelæsninger med kortere konfrontations-/spørge-timer, end, at forelæseren gentager dem samme lektie igen og igen, år efter år.

  • 0
  • 0
Jonas Finnemann Jensen

Som studerende kan jeg informere om at jeg interessere mig minimalt for perifære programmeringssprog og endnu mindre for hjemmelavedede sprog. Undervisere der introducere den slags mister meget hurtigt min interesse.
Typisk er de hjemmestikkede løsninger jeg har set, uformelle, dårligt dokumenterede og generelt plaget af elendig ingeniørskab, platforms uafhængighed, etc.

Der er rigtigt at datalogi ikke primært handler om ingeniørskab, og værktøjer som revisions kontrol, bygge systemer, dokumentation, design patterns og hvad der nu ellers gør udviklere gode. Men derfor behøver man ikke give dårlige eksempler.

Anyways, når dagen er omme, handler det om at lærer de studerende noget. Og du får ikke studerende til at sidde oppe om natten og kode dit hjemmelavede sprog. Hvis du lærer dem C++, Python, whatever, er der betydeligt større chance for at de bruger mere tid på det en strengt nødvendigt for at bestå den næste eksamen.

Ps. synes iøvrigt det er en god ide med nogle teoretiske fag i starten af studiet :)

  • 2
  • 1
Torben Mogensen Blogger

Hjemmelavede sprog behøver ikke at være uformelle, dårligt dokumenterede og dårligt/snævert implementerede. De fleste sprog starter jo som "hjemmelavede" et eller andet sted, inklusive stort set alle mainstream-sprog. Forskellen ligger ikke så meget i, om de er hjemmelavede (designet og udviklet af 1-2 personer) eller ej (udviklede af større grupper på tværs af flere virksomheder eller læreanstalter), men mere om formålet med designet. Sprog, der er udviklet til undervisning, er ofte meget godt dokumenterede og meget præcist definerede, men de kan mangle biblioteksfunktioner og have begrænset anvendelighed udenfor undervisning. Det kan dog komme med tiden: Pascal og BASIC var begge lavet til undervisning men blev mainstream-sprog med udbredt anvendelse i industrien. Andre hjemmelavede sprog er ofte lavet for at løse meget specifikke opgaver. Det gælder f.eks. Java (webprogrammering), C (operativsystemer) og ML (bevissystemer). Flere af disse har så - med skiftende held - bredt sig ud til andre formål. Men sådanne sprog kan ofte være dårligt dokumenterede, upræcist specificerede og meget platformsspecifikke.

Flere universiteter bruger hjemmelavede sprog fordi de kan gøre dokumentere dem præcist og formelt og lave implementeringer, der virker på tværs af platforme uden at valget af platform påvirker virkemåden. F.eks. bruger Carnegie-Mellon universitetet C0, som er et C-lignende sprog med mere præcis definition end C og en mere platformsuafhængig implementering.

  • 0
  • 0
Henrik Winther Jensen

Det er et glimrende oplæg Torben har stillet op. Jeg er en gammel datalog som er rigtig glad for den uddannelse jeg fik. Det pudsige er at i mine øjne er det uddannelsens fejl jeg lærte mest af! Jeg lærte at arbejde med sindsyge deadlines, sære regler, en administration der havde åbent mellem 11 og 11:30 på ulige hverdage, en hjemmelavet pascal udviklingssystem, hvor editoren ikke kunne bladre baglæns, man var nødt til at loade hele programmet igen hvis man var kommet forbi det sted man skulle rette. Samtidig blev jeg stillet over for ideer som har været en del af min bagage siden, og som jeg kan bruge den dag i dag. Gud forbyde at jeg nogensinde kommer til at skulle skrive et større program i Prolog, men de principper som Prolog er baseret på kan sagtens bruges i Java, og jeg kender til dem. Det som i mine øjne gjorde DIKU til et godt uddannelsessted, var de sammensatte og svære udfordringer, mine opfindsomme, intelligente og sjove lærere og medstuderende. Det var en uddannelse der udviklede mit intellekt, ikke mine evner til at bruge et værktøj.

Det vigtigste for Datalogi uddannelsen er at lære eleverne at tænke selv, selv at kunne finde de nødvendige informationer. Etablere et netværk med ligeværdige, og være i stand til at tage udfordringerne på sig, ligegyldigt hvad de måtte gå ud på.

  • 3
  • 0
Jon Bendtsen

Ikke som obligatorisk. Men der er planer om at indføre et valgfrit projektkursus med frit indhold inden bachelorprojektet. Så de, der gerne vil skrive kerner, kan gøre det på dette kursus.


Jamen hvordan skal folk så lære at drikke kærnemælk ;-)

Jeg synes det er sørgeligt at nye dataloger ikke lærer om noget så grundlæggende for datalogi. Hvilke andre tidligere obligatoriske fag er røget ud?

  • 0
  • 2
Peter Andersen

Kerneopgaven var den absolut fedeste opgave på DIKU (bortset fra T-kort'ene..), skarpt forfulgt af arkitekturopgaverne.

Jeg tror en del af løsningen vil være at profilen for DIKU bliver skarpere, så de studerende er mere klar over hvad studiet omhandler INDEN studiestart. Vil du bare gerne sidde og kode c# og ASP.NET, så er DIKU formentlig ikke noget for dig. Ligeledes håberjeg noget af det rigide system jeg havde kontakt med er ved at være fortid - for det var godt nok en dræber.
Mange af dem jeg startede med (incl. mig selv) vidste ikke tydeligt nok hvad Datalogi var for en størrelse, derfor var der mange der frafaldt.

  • 1
  • 0
Troels Henriksen

Et af problemerne, i hvert fald undervisningsmæssigt, ved datalogi som det er organiseret i Danmark er at det er så utroligt bredt. Der er ikke særligt stor lighed mellem arbejdsopgaverne for en forsker i effektiv parallelisering på GPUer og en forsker i brugervenlighed for børn, men studiet rummer begge ekstremer. Jeg ser selv datalogi som en uddannelse hvor man skal have et bredt teoretisk fundament, men i særdeleshed også omfattende programmering af komplekse programmer, helst så tæt på en konceptuel beregningsmodel som muligt (forstået som at undervisningen ikke skal handle om at sætte allerede eksisterende byggeklodser sammen). Det betyder absolut ikke at man skal søge at undervise i industrielt anvendte sprog, nærmere tværtimod, men jeg ser evnen til at inkarnere avanceret teori i form af konkrete programmer som noget af det essentielle for en datalog.

  • 4
  • 0
Troels Henriksen

Studerende på EPFL har kurset på coursera.org som obligatorisk kursus. Så hvorfor ikke også hos DIKU?

Der er blevet kigget på Scala. Selv synes jeg at det er for komplekst (især er typesystemet ganske tungt), men jeg tror stadigvæk at det er en mulighed. SML er, grundet dets simplicitet, på mange måder et rigtig godt undervisningssprog, så det er svært at finde en erstatning.

  • 1
  • 0
Log ind eller Opret konto for at kommentere