INF2810: Funksjonell Programmering. Oppsummering og eksamensforberedelser

Like dokumenter
INF2810: Funksjonell Programmering. Oppsummering og eksamensforberedelser

INF2810: Funksjonell Programmering. Oppsummering og eksamensforberedelser

INF2810: Funksjonell Programmering. Oppsummering og eksamensforberedelser

INF2810: Funksjonell Programmering. Eksamensforberedelser

INF2810: Funksjonell Programmering. Eksamensforberedelser

INF2810: Funksjonell Programmering

INF2810: Funksjonell Programmering

INF2810: Funksjonell Programmering. Lokale variabler. Og trær.

INF2810: Funksjonell Programmering. En Scheme-evaluator i Scheme, del 2

INF2810: Funksjonell Programmering. En Scheme-evaluator i Scheme, del 2

INF2810: Funksjonell Programmering. En Scheme-evaluator i Scheme, del 2

INF2810: Funksjonell Programmering. En metasirkulær evaluator

INF2810: Funksjonell Programmering. En Scheme-evaluator i Scheme

INF2810: Funksjonell Programmering

INF2810: Funksjonell Programmering. En metasirkulær evaluator

Rekursjon og lister. Stephan Oepen & Erik Velldal. 1. februar, Universitetet i Oslo

INF2810: Funksjonell Programmering

INF2810: Funksjonell Programmering. Lister og høyereordens prosedyrer

INF2810: Funksjonell Programmering. En metasirkulær evaluator, del 2

INF2810: Funksjonell Programmering. En metasirkulær evaluator, del 2

INF2810: Funksjonell Programmering. Lister og høyereordens prosedyrer

INF2810: Funksjonell Programmering. En Scheme-evaluator i Scheme

INF2810: Funksjonell Programmering. Kommentarer til prøveeksamen

INF2810: Funksjonell Programmering. Strømmer og utsatt evaluering

INF2810: Funksjonell Programmering. Muterbare data

UNIVERSITETET I OSLO

INF2810: Funksjonell Programmering. Mer om verditilordning. Tabeller. Og strømmer.

Høyere-ordens prosedyrer

INF2810: Funksjonell Programmering. Mer om verditilordning. Tabeller. Og strømmer.

INF2810: Funksjonell Programmering. Trær og mengder

INF2810: Funksjonell Programmering. Mer om Scheme. Rekursjon og iterasjon.

Innlevering 2b i INF2810, vår 2017

INF2810: Funksjonell programmering: Mer om Scheme. Rekursjon og iterasjon.

INF2810: Funksjonell Programmering. Mer om Scheme. Rekursjon og iterasjon.

INF2810: Funksjonell Programmering. Mer om Scheme. Rekursjon og iterasjon.

INF2810: Funksjonell programmering: Introduksjon

INF2810: Funksjonell Programmering. Køer, tabeller, og (litt om) parallelitet

INF2810: Funksjonell Programmering. Mer om strømmer

INF2810: Funksjonell Programmering. Lister og høyereordens prosedyrer

INF2810: Funksjonell Programmering. Strømmer

INF2810: Funksjonell programmering: Introduksjon

Innlevering 2a i INF2810, vår 2017

Velkommen til. INF våren 2017

UNIVERSITETET I OSLO

INF2810: Funksjonell Programmering. Huffman-koding

Velkommen til. IN1010 Objektorientert programmering Våren 2018

INF2810: Funksjonell Programmering. Huffman-koding

INF2810: Funksjonell Programmering. Huffman-koding

INF2810: Funksjonell Programmering. Introduksjon

INF2810: Funksjonell Programmering. Huffman-koding

INF2810: Funksjonell Programmering. Huffman-koding

INF1000 Eksamensforberedelser og -tips. Høst 2014 Siri Moe Jensen

INF2810: Funksjonell Programmering. Muterbare data

INF2810: Funksjonell Programmering. Huffman-koding

(define (naer-nok-kuberot? y x) (< (abs (- (kube y) x)) 0.001)) (define (naermere-kuberot y x) (/ (+ (* y 2) (/ x (kvadrat y))) 3))

Typer. 1 Type: boolean. 2 Verdimengde: {true, false} 3 Operatorer: NOT, AND, OR... 1/19. Forelesning Forelesning

INF2220: Forelesning 1. Praktisk informasjon Analyse av algoritmer (kapittel 2) (Binær)trær (kapittel )

Pensum: fra boken (H-03)+ forelesninger

INF Algoritmer og datastrukturer. Hva er INF2220? Algoritmer og datastrukturer

IN1010 Objektorientert programmering Våren 2019

Lisp 2: Lister og funksjoner

Transkript:

INF2810: Funksjonell programmering INF2810: Funksjonell Programmering Oppsummering og eksamensforberedelser Erik Velldal & Stephan Oepen Universitetet i Oslo 31. mai 2016 I dag Kort oppsummering Praktisk om eksamen Hvem vant konkurransen om flest oblig-poeng gjennom semesteret? Prøveeksamen: Spørsmål og svar. 2

Noen knagger Abstraksjon Rekursjon Prosedyreorientering Evaluering Funksjonell programmering 3 Abstraksjon 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 4

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 Evalueringsregler Substitusjonsmodellen Omgivelsesmodellen Metasirkulær evaluator Utsatt evaluering Memoisering Eager/Applicative-order vs Lazy/normal-order evaluation Kode som data 8

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). En prosedyre kalles for sin returverdi alene: ingen side-effekter. Semantikken til uttrykk uavhengig av hvor / når de brukes: tidspunkt for evaluering uten betydning. La så til muterbare datastrukturer og destruktive operasjoner for modellering av endringer i tid og lokal tilstand. Funksjonell transformasjon vs destruksjon / verdiendring. 9 Praktisk om eksamen Når? Fredag 10. juni kl. 14:30 (4 timer). Hvor? God spredning: Store fysiske lesesal, PC-avd. Fysikkbygningen Gymsal 1 Idrettsbygningen Gymsal 2 Idrettsbygningen Gymsal 3 Idrettsbygningen Gymsal 4 Idrettsbygningen Leseal 4613 Kristine Bonnevies hus (Biologibygn.) Sjekk i StudentWeb hvor du skal sitte! 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/v16/pensumliste/ NB: Sjekk også i StudentWeb at du faktisk er oppmeldt! 10

Siste gruppetime Gruppelærerne Håkon og Vegard har en siste gruppetime onsdag 1/6 kl 12.15 14.00 på Fortress (rom 3468) Repetisjon og ønskerepriser. Plan: Repetisjon av utvalgte temaer, kom gjerne med ønsker i tråden på Piazza. Gjennomgang av utvalgte oppgaver fra eksamen 2014 og 2015. Stor Kahoot! med spørsmål fra hele pensum. Mulighet til å stille spørsmål. 11 Trommevirvel og fanfare! 65 mulige poeng. Disse sanket inn flest oblig-poeng igjennom semesteret og vinner tradisjonen tro en rekursiv t-skjorte: 1. Eivind Alexander Bergem (61p) 2. Tony Valle (58p) Matias Hermanrud Fjeld (58p) Kristine Jevne Berge (58p) Jan Inge Lamo (58p) Morten Aske Kolstad (58p) 3. Ingvild Larsen (57p) 12

You might also like... 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 hver høst av Erik Velldal og/eller Stephan Oepen. www.uio.no/studier/emner/matnat/ifi/inf4820 13 En beskjed fra FUI 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/73097.html 14

Prøveeksamen: oppgaver med løsningsforslag