INF2810: Funksjonell Programmering Oppsummering og eksamensforberedelser Erik Velldal & Stephan Oepen Universitetet i Oslo 18. mai 2017
I dag 2 Kort oppsummering Praktisk om eksamen Hvem vant konkurransen om flest oblig-poeng gjennom semesteret? Prøveeksamen: Spørsmål og svar.
Noen knagger 3 Abstraksjon Rekursjon Prosedyreorientering Evaluering Funksjonell programmering
Abstraksjon 4 Abstraksjon for å kontrollere kompleksitet (skjuler og isolerer). Kan se på prosedyredefinisjoner som en abstraksjon: Kode som bruker square bryr seg ikke om hvordan den utfører kvadreringen så lenge den returnerer det den lover. Generelle mønstre for bruk av prosedyrer, abstrahert til høyereordens-prosedyrer. Abstraksjonsbarrierer mellom ulike deler av et program. Abstrakte datastrukturer definert utfra et sett av operasjoner vi kan utføre på dem; Grensesnittet gjemmer implementasjons-detaljene. F.eks; prosedyrer som opererer på en representasjon av mengder; bygget på binærtrær; bygget på lister; bygget på par; bygget på lambda. Metalingvistisk abstraksjon
Rekursjon 5
Rekursjon Rekursive definisjoner av prosedyrer Direkte rekursjon og gjensidig rekursjon Prosedyre vs prosess Rekursive og trerekursive prosesser Iterative prosesser Kompleksitet Ulike typer idiomer for rekursjon, f.eks; over tall, over lister, over trær,... inn / ut, basistilfeller, utsatt evaluering, halerekursjon, m.m. Rekursiv oppbygging av datastrukturer Liste den tomme lista eller et par der cdr er en liste. Rekursivt definerte datastrukturer (define ones (cons-stream 1 ones)) Metasirkulær evaluator Lisp-program for å evaluere Lisp-program 6
Prosedyreorientering Prosedyrer som 1.klasses objekter Høyereordens prosedyrer: andre prosedyrer som argumenter / returverdi Lambda-uttrykk; navngitte og anonyme prosedyrer let og lokale variabler via anonyme prosedyrer Prosedyrebasert objektorientering + lokal tilstand via innkapsling + verditilordning Prosedyrer som datastrukturer (f.eks cons-celler)λ7
Evaluering av kode 8 Evalueringsregler Substitusjonsmodellen Omgivelsesmodellen Metasirkulær evaluator Kode som data Utsatt evaluering Memoisering Eager/Applicative-order vs Lazy/normal-order evaluation Samspillet mellom (ikke-)funksjonell programmering og ulike modeller og strategier for evaluering.
Funksjonell programmering med noe imperativt attåt Hovedfokus: Funksjonell programmering. Prosedyrer som spesifikasjon for å beregne matematiske funksjoner: Alltid samme resultat gitt samme argumenter. Beregninger utføres som funksjonelle transformasjoner av data (i stedet for destruktive endringer av tilstandsvariabler). Prosedyrer kalles for sin returverdi: ingen side-effekter. Semantikken til uttrykk uavhengig av hvor og når de brukes. La så til muterbare datastrukturer og destruktive operasjoner for modellering av endringer i tid og lokal tilstand. λ +! 9
Praktisk om eksamen 10 Digital eksamen, med Inspera. Når? Tid: 29. mai kl. 14:30 (4 timer). Hvor? Sal B Silurveien 2 Sal D Silurveien 2 Sjekk i Studentweb hvor du skal møte. Hjelpemidler: Ingen. Pensum: Forelesningsnotatene + seksjonene vi har gjennomgått fra SICP; se nøyaktig oversikt på emnesiden: www.uio.no/studier/emner/matnat/ifi/inf2810/v17/pensumliste/ NB: Sjekk også i StudentWeb at du faktisk er oppmeldt!
Siste gruppetimer 11 Uke 21 Gruppelærerne kjører gruppetimer ut neste uke. Repetisjon og ønskerepriser. Repetisjon av utvalgte temaer, kom gjerne med ønsker i tråden på Piazza. Jobbing med tidligere eksamensoppgaver (se emnesiden). Mulighet til å stille spørsmål.
Trommevirvel og fanfare! 12 62 mulige poeng. Disse sanket inn flest oblig-poeng igjennom semesteret og vinner tradisjonen tro en rekursiv t-skjorte:
Trommevirvel og fanfare! 12 62 mulige poeng. Disse sanket inn flest oblig-poeng igjennom semesteret og vinner tradisjonen tro en rekursiv t-skjorte: 3. Egil Elias Ravnå Birkeland (60.25p)
Trommevirvel og fanfare! 12 62 mulige poeng. Disse sanket inn flest oblig-poeng igjennom semesteret og vinner tradisjonen tro en rekursiv t-skjorte: 2. Belal Hamraz (60.75p) 3. Egil Elias Ravnå Birkeland (60.25p)
Trommevirvel og fanfare! 12 62 mulige poeng. Disse sanket inn flest oblig-poeng igjennom semesteret og vinner tradisjonen tro en rekursiv t-skjorte: 1. Torbjørn Vik Lunde (61p) 2. Belal Hamraz (60.75p) 3. Egil Elias Ravnå Birkeland (60.25p)
You might also like... 13 INF4820 Algoritmer for kunstig intelligens og naturlige språk Generelle teknikker for mønstergjennkjenning, maskinlæring, klassifikasjon, kunnskapsrepresentasjon, dynamisk programmering, memoisering, m.m. Særlig vekt på algoritmer og datastrukturer for analyse av naturlige språk. Fokus på praktisk implementasjon, i Common Lisp. Gis H18 av Murhaf Fares fra språkteknologigruppa. Muligens også med bidrag av Erik og/eller Stephan. www.uio.no/studier/emner/matnat/ifi/inf4820
Kursevaluering 14 FUI har nå sendt ut invitasjoner til kursevaluering. Det betyr mye at dere svarer! Midtveisevalueringen er bare til kursinternt bruk: FUIs kursevaluering er mer omfattende og synlig på instituttnivå. https://nettskjema.uio.no/answer/83934.html
Prøveeksamen: oppgaver med løsningsforslag