Forelæsning Uge 7 Torsdag Eksamen Kursusevaluering Præmiering af de bedste projekter Smukke computer genererede billeder
Eksamen Du kan kun gå til eksamen hvis du har fået godkendt alle afleveringsopgaver Eksamen er en 30 minutters praktisk prøve uden forberedelse Kan sammenlignes med en køreprøve, hvor man ikke må lave væsentlige fejl For at bestå skal man "med sikker hånd" kunne løse størstedelen af opgaverne, herunder brug af arraylister og simple løkker Eksamen afvikles i grupper af ca. 25 personer. I skal medbringe en bærbar computer og har selv ansvar for, at den fungerer tilfredsstillende og har netadgang, således at I kan tilgå Javas klassebibliotek Hver eksaminand skal individuelt løse en simpel programmeringsopgave. Eksamenssættet består af ca. 10 opgaver, som skal løses i rækkefølge Undervejs er der tre checkpunkter. Ved disse skal I tilkalde en instruktor (og være klar til at demonstrere jeres kode) Det er vigtigt, at I husker at få jeres kode godkendt af en instruktor hver gang I passerer et checkpoint På den måde undgår I at forsætte uden at det, som I har lavet hidtil, er korrekt 2
Eksamen fortsat Lav jeres program så letlæseligt og velstruktureret som muligt (jvf. Java style guiden) Ved eksamen behøver I dog ikke at bruge tid på at skrive lange kommentarer Ved prøvens afslutning afleveres jeres besvarelse på samme måde som ved de obligatoriske afleveringer i løbet af kurset Til stede ved eksamen vil være eksaminator (forelæser), en intern censor samt et antal instruktorer Det er tilladt at kommunikere med disse personer (opklarende spørgsmål, hjælp til at komme videre, etc.) Det er ikke tilladt at kommunikere med de øvrige eksaminander Eneste tilladte hjælpemidler er JavaDoc for Javas klassebibliotek (API) samt BlueJ editoren (eller en anden Java editor) Man må ikke auto-generere kode for konstruktører og lignende Det er ikke tilladt at benytte bogen eller at tilgå andet materiale, herunder slides, noter og gamle BlueJ projekter Bliver man taget i dette, bortvises man fra eksamen 3
Eksamen fortsat Eksamen bedømmes med bestået/ikke bestået Resultatet oplyses via mit.au.dk i løbet af nogle få dage Husk at medbringe studiekort til eksamen Du kan bytte eksamenstidspunkt med en medstuderende, hvis I pr. email orienterer os (forelæseren og den administrative instruktor) om bytningen senest dagen inden den første af jer skal til eksamen Reeksamen Reeksamen for kurset afholdes i løbet af januar måned Du kan kun til reeksamen, hvis du inden ordinær eksamen har godkendte afleveringsopgaver 4
Eksamensforberedelse Løs tidligere eksamensopgaver Et stort udvalg kan findes under uge 7 på ugeoversigten Videoer med løsning af fire eksamensopgave kan findes under uge 4-6 på ugeoversigten Husk at det ikke er nok at se videoerne. I skal også bagefter selv prøve at løse opgaverne Tag tid så I kan se hvor meget i kan klare på 30 minutter Læs materiale Læs BlueJ bogen og anden dokumentation efter behov mens I øver jer på eksamensopgaverne 90% af de fremmødte består 5
Kursusevaluering Clickerevaluering nu Officiel evaluering senere (som på alle andre kurser) Har projektet i uge 5 bidraget til at styrke dine programmeringskompetencer? Har de teoretiske øvelser (med instruktorer) været udbytterige? Har det været en fordel, at I ved øvelserne har programmeret parvis? Har videoerne til BlueJ-bogen været udbytterige? Har videoerne til Greenfoot-bogen været udbytterige? Har videoerne med løsninger af tidligere eksamensopgaver været udbytterige? Har videoerne fra forelæsningerne været udbytterige? Har forelæsningerne været udbytterige? Har repetitionsforelæsningen i uge 6 været udbytterig? Har brugen af clickere bidraget til at holde dig mere koncentreret ved forelæsningerne? 1. Ved ikke 2. Slet ikke 3. Lidt 4. Noget 5. Meget Har kurset, som helhed, været udbytterigt? 6
Læringsmål og interesse Deltagerne skal ved afslutning af kurset kunne anvende grundlæggende konstruktioner i et sædvanligt programmeringssprog identificere og forklare arkitekturen af simple programmer identificere og forklare betydningen af simple specifikationsmodeller implementere simple specifikationsmodeller i et sædvanligt programmeringssprog anvende standardklasser ved realisering af programmer Er der sammenhæng mellem kursets læringsmål, undervisningens tilrettelæggelse og eksamensformen? Har kurset gjort dig interesseret i at tage flere datalogi/it kurser? Svar kun på dette spørgsmål, hvis du ikke er datalogi eller it studerende 1. Ved ikke 2. Slet ikke 3. Lidt 4. Noget 5. Meget 7
Præmiering af de bedste projekter Nominerede Lommeregner Sebastian Hindballe Martensen & Nanna Graves Sørensen, MA1 Jeppe Tilby, MA2 Mads Lykke Clemmensen & Mads Bach Villadsen, MA3 Jakob Wadsager & Morten Eriksen, MA3 Camilla Hald Jacobsen & Tobias Grønbæk Andersen, Hold 4 Christian Lynge Ravnsbæk & Jesper Hørlyk Sigaard, Hold 5 8
Nominerede Kaninjagt Alex Kire Hansen & Peter Ellerup Frank, DA1 Mathias Søholm & Asibullah Tayeb, DA2 Jeppe Løvstad & Eric Petersen, DA2 Nikolaj Ignatieff Schwartzbach, DA3 Anders Hofmeister Brønden, DA4 Jon Michael Aanes & Mikkel Milo Tromborg Nielsen, DA5 Lasse Letager Hansen & Kasper Schmidt Kristensen, DA5 Emil Holm Gjørup & Simon Friis Vindum, DA6 Christian Due Svendsen & Mikkel Norsgaard Thomsen, DA7 Marie-Louise Dybdahl Troelsen & Jesper Damgaard Christensen, IT1 Anders Kromann Nielsen & Kenneth Bach Gorking, IT2 Emil Kongsgaard Guldager & Thomas Øther Rasmussen, IT3 Jonas Hjort Knudsen & Toke Frederiksen, Hold 1 Till Heinzel, Hold 2 Theo Scheichenbauer Janas & Henrik Kristian Thomsen, Hold 3 Pia Højsager & Charlotte Hvid Laursen, Hold 3 Torstein Dahl Bratberg, Hold 4 9
Vindere Lommeregner Vinder: Camilla Hald Jacobsen & Tobias Grønbæk Andersen Kaninjagt Nr. 3: Torstein Dahl Bratberg Pæn og veldokumenteret kode Koden er opdelt i mange små hjælpemetoder, hvilket gør den let at forstå Bruger rekursion til at beregne gcd Pæn og veldokumenteret kode Gode idéer til optimering af kanin Stor arbejdsindsats (én-mands gruppe) Nr. 5 i benchmark Nr. 2: Jonas Hjort Knudsen & Toke Frederiksen Pæn og veldokumenteret kode Gode abstraktioner gør det muligt for dem at bruge algoritmeskabeloner God logisk prioritering Nr. 2 i benchmark Vinder: Jeppe Løvstad & Eric Petersen Pæn og veldokumenteret kode Går metodisk til værks Husker tidligere observationer Godt scoresystem med velvalgte vægte Nr. 1 i benchmark 10
Fraktaler Mandelbrotmængden Benoit B. Mandelbrot 1924-2010 Professor Emeritus, Yale University IBM Fellow Emeritus, Thomas J. Watson Research Center 11
Definition af mandelbrotmængden Mandelbrotmængden er en mængde af punkter i det to-dimonsionelle plan Et punkt (a,b) tilhører mandelbrotmængden, hvis og kun hvis nedenstående talfølge ikke går mod uendelig n= 0 x 0 = 0 y 0 = 0 n 0 x n+1 y n+1 = x n2 y n2 + a = 2 x n y n + b 12
Følgen for (a,b) = (0,1) y n= 0 x 0 = 0 y 0 = 0 n 0 x n+1 = x n2 y n2 + a y n+1 = 2 x n y n + b 1 2 x (x 0, y 0 ) = (0, 0) (x 1, y 1 ) = (0, 1) (x 2, y 2 ) = (-1, 1) (x 3, y 3 ) = (0, -1) (x 4, y 4 ) = (-1, 1) (x 5, y 5 ) = (0, -1) (x 6, y 6 ) = (-1, 1) 13
Følgen for (a,b) = (0,1.01) y n= 0 x 0 = 0 y 0 = 0 n 0 x n+1 = x n2 y n2 + a y n+1 = 2 x n y n + b 1 2 x (x 0, y 0 ) = (0, 0) (x 1, y 1 ) = (0, 1.01) (x 2, y 2 ) = (-1.02, 1.01) (x 3, y 3 ) = (0.02, -1.05) (x 4, y 4 ) = (-1.10, 0.97) (x 5, y 5 ) = (0.28, -1.12) (x 6, y 6 ) = (-1.18, 0.38) (x 7, y 7 ) = (1.26, 0.12) (x 8, y 8 ) = (1.57, 1.32) (x 9, y 9 ) = (0.72, 5.14)... 14
Mandelbrotmængden Approximativ beregning af mandelbrotmængden Det er umuligt at udføre et uendeligt antal iterationer på endelig tid Man vælger derfor et forudbestemt, maksimalt antal iterationer max Man kan vise, at hvis en talfølge en gang kommer uden for cirklen (dvs. (x n, y n ) 2), vil den divergere Hvis en talfølge ikke kommer uden for cirklen indenfor max iterationer, antager man, at den aldrig kommer udenfor og dermed tilhører mandelbrotmængden 15
Sort/hvid algoritme (pseudokode) for each point (a,b) { (x,y)=(0,0); n=0; while (x,y) 2 && n < max { beregn næste punkt i talfølgen n++ } } if n = max { color(a,b) = black; // member } else { color(a,b) = white; // not member } 16
Mandelbrot og Peter Moldave (1980) Mandelbrotmængden nogle punkter er oplagt med og nogle punkter er oplagt ikke med I randområdet sker der noget uhyre interessant der på samme tid er guddommeligt smukt og djævelsk svært at fatte 17
Farve algoritme for each point (a,b) { (x,y)=(0,0); n=0; while (x,y) 2 && n < max { beregn næste punkt i talfølgen n++ } } if n = max { color(a,b) = black; // member } else { color(a,b) = white; col(n); // not member } Farven bestemmes af antal skridt inden divergering 18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Slut 33
David Boll (1991) Satte sig for at bekræfte at halsen har tykkelse 0 og betragtede derfor (x, y) = ( 0.75, ) for gående mod 0. 0.1 0.01 0.001 0.0001 0.00001 0.000001 0.0000001 Iterationer 33 315 3143 31417 314160 3141593 31415927 34
Tak for nu! Held og lykke til eksamen! 35