Programmering, algoritmik og matematik en nødvendig sammenblanding?



Relaterede dokumenter
DM507 Algoritmer og datastrukturer

Introduktion til DM507

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

Skriftlig Eksamen DM507 Algoritmer og Datastrukturer

Skriftlig Eksamen Algoritmer og sandsynlighed (DM538)

Dynamisk programmering

Dynamisk programmering

Grundlæggende køretidsanalyse af algoritmer

Undervisningsbeskrivelse

Algoritmer og invarianter

Ej blot til lyst: Programmering og matematisk dannelse i det 21. århundrede

Dansk A, Engelsk B og Matematik B. Bachelor: Bestået adgangsgivende eksamen (stx, eux, hf, hhx, htx, adgangskursus eller

Skriftlig Eksamen Algoritmer og Datastrukturer (DM507)

CV for Lasse Nielsen

Abstrakte datatyper C#-version

Datalogistudiet. Rolf Fagerberg. Institut for Matematik og Datalogi Syddansk Universitet. Studiestart, 1. september 2014

Bevisteknikker. Bevisteknikker (relevant både ved design og verifikation) Matematisk induktion. Matematisk induktion uformel beskrivelse

Perspektiverende Datalogikursus

Datalogistudiet. Institut for Matematik og Datalogi (IMADA) SDU. Information til kommende studerende

Skriftlig Eksamen Kombinatorik, sandsynlighed og randomiserede algoritmer (DM528)

Skriftlig Eksamen Algoritmer og Datastrukturer (dads)

Programmering for begyndere Lektion 2. Opsamling mm

Stk. 2 Tilknytning Uddannelsen hører under Studienævn for Matematik og Datalogi, og de studerende har valgret og valgbarhed til dette studienævn.

Fakta om ingeniør- og cand. scient.-uddannelserne Optag på uddannelserne

DM507 Algoritmer og datastrukturer

BRP Kursusintroduktion og Java-oversigt

Studieordning for bacheloruddannelsen i softwareudvikling ved IT-Universitetet i København

It i folkeskolens matematikundervisning

Studieordning for bacheloruddannelsen i datalogi (eng. Computer Science)

Datalogi C + Datastrukturer og Algoritmer

Alle de studerende jeg har vejledt, har været under ordningen. D.v.s. først fire års studier efterfulgt af et fire-årigt ph.d. studium.

Undervisningsbeskrivelse

DM507 Algoritmer og datastrukturer

Den digitale revolution

Fakta om ingeniør- og cand. scient.-uddannelserne Optag på uddannelserne

Eksamineret Scrum Master

Evalueringsrapport. IMADAs Fagråd. Matematik, Datalogi og Mat.øk. 16. maj Kontaktpersoner

En note om Programmering

Programmering. Det rent og skært nødvendige, det elementært nødvendige! Morten Dam Jørgensen

Matematik på Københavns Universitet - den gavnlige skønhed

22 Hobe. Noter. PS1 -- Hobe. Binære hobe. Minimum-hob og maximum-hob. Den abstrakte datatype minimum-hob. Opbygning af hobe. Operationen siv-ned.

DTU. License to Thrill

Aalborg Universitet It-institut Uddannelse Adgangskrav 2012 Institut for Elektroniske

Martin Olsen. DM507 Projekt Del I. 19. marts 2012 FOTO: Colourbox

Stk. 2 Generel profil i datalogi... 5 Stk. 3 Specialisering i data science... 6 Stk. 4 Gymnasierettet specialisering... 7

Skriftlig Eksamen Algoritmer og Sandsynlighed (DM538)

Skriftlig Eksamen Diskret Matematik (DM528)

Symmetrisk Traveling Salesman Problemet

Fagets IT Introduktion til MATLAB

Divide-and-Conquer algoritmer

Analyse af algoritmer

Undersøgende matematik i prøverne. Odense 26. april 2019

Divide-and-Conquer algoritmer

Udarbejdet af CFU Absalon

Computerassisteret fysioterapi og fysisk træning

STATUS PÅ DATALOGIFORSKNING OG -UDDANNELSE Professor Stephen Alstrup, Datalogisk Institut, KU Næstformand i ATV s Digitale Vismænd

Transkript:

Programmering, algoritmik og matematik en nødvendig sammenblanding? Oplæg til IDA møde, 29. november 2004 Martin Zachariasen DIKU 1

Egen baggrund B.Sc. i datalogi 1989; Kandidat i datalogi 1995; Ph.D. i datalogi 1998. Lektor ved Datalogisk Institut, Københavns Universitet Flerårig erfaring med undervisning i algoritmik. 2

Inspiration til oplæg Egne indtryk/fordomme om ingeniørers programmeringskundskaber. Tema om matematik og datalogi i tidsskriftet Communications of the ACM, september 2003. En række artikler omhandlende emner som f.eks.: Hvorfor er matematik relevant for dataloger (og programmører)? I hvilke sammenhænge er matematisk/algoritmisk tankegang væsentlig for programmører? Hvad er de professionelle programmørers syn på matematik/algoritmik? 3

Ingeniørers programmeringskundskaber... Baseret på egne samt andre datalogers indtryk af ingeniørers programmeringskundskaber er dybest set aldeles uvidenskabelige og ubegrundede fordomme. + Gode problemløsere får tingene til at virke. +/ Vælger robuste fremfor originale løsninger. Udviklede programmer ikke altid velstruktureret, og de kan være svære at vedligeholde. 4

Programmering: Konkret eller abstrakt? Programmering bliver af de fleste studerende opfattet som noget konkret og jordnært, specielt når den sammenlignes med matematikken. Men alligevel: Programmering er 100 % abstraktion. Påstand: Programmering er dybest set en matematisk aktivitet. Grundlæggende kompetencer udvikles derfor igennem relevant træning i matematisk tankegang og argumentation. 5

Programmering som matematisk aktivitet 1. Forståelse af syntaks og semantik 2. Argumentation for korrekthed 3. Argumentation for tids- og pladsforbrug 6

1. Forståelse af syntaks og semantik Mange dele af et programmeringssprogs syntaks og semantik er arvet fra matematikken. Syntaks: Tildeling, sammenligning, indeksering. Semantik: Variable, mængder, kvantorer, funktioner, Boolsk algebra, rekursion. 7

2. Argumentation for korrekthed Denne argumentation bør foregå på skrivebordet før programmeringen påbegyndes, men opstår ofte sideløbende i forbindelse med fejlfinding. Matematiske værktøjer: Matematisk induktion, (løkke) invarianter. Eksempler: Argumentation for korrekthed af rekursive programmer ved anvendelse af matematisk induktion. Argumentation for korrekthed af slutresultatet af en iteration ved anvendelse af løkke-invarianter. 8

3. Argumentation for tids- og pladsforbrug Denne aktivitet er ikke altid central, men et godt kendskab til tids- og pladskompleksiteten af udbredte datastrukturer og basale algoritmer kan ofte være meget nyttig. Matematiske værktøjer: Basale matematiske funktioner (polynomier, logaritmer etc.), udregning af summer, rekursionsligninger, kompleksitetsklasser (P og NP). Eksempler: Dynamisk udvidelse af arrays (amortiseret analyse). Aktivitetsplanlægning (varianter med forskellig beregningskompleksitet). 9

Konklusioner Gentagen træning i matematisk tankegang og argumentation giver bedre programmer: Programmer der udnytter sprogets konstruktioner effektivt. Programmer der er (mere) korrekte, dvs. fejlfrie. Programmer der er velstruktureret, nemme at generalisere og vedligeholde. Programmer der har et minimalt tids- og pladsforbrug. 10

Valg af det første programmeringssprog Bør blot være et moderne og forholdsvis udbredt programmeringssprog, der indeholder alle de elementer, som er typiske for programmeringssprog. Bemærk: Det er ikke formålet med en ingeniøruddannelse at give den studerende al den viden og de kompetencer, som det første job kræver. Bruce et al: One of the most important goals for a college or university education is to provide the foundation for further learning. 11

Personlige anbefalinger Traditionelle programmeringskurser bør ikke stå alene, men skal tilbydes sammen med træning i relevante matematiske færdigheder. Disse matematiske færdigheder kan delvis opnås igennem tværgående programmeringsprojekter, der stiller krav om redegørelse for korrekthed og tidsforbrug. Projekternes tema kan tage udgangspunkt i den aktuelle fagretning (bygning, elektro, kemi, informatik, etc.). 12