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. Oppsummering og eksamensforberedelser

INF2810: Funksjonell Programmering. Eksamensforberedelser

INF2810: Funksjonell Programmering. Eksamensforberedelser

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

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

INF2810: Funksjonell Programmering

INF2810: Funksjonell Programmering

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

INF2810: Funksjonell Programmering. Tilstand og verditilordning

INF2810: Funksjonell Programmering. Tilstand og verditilordning

INF2810: Funksjonell Programmering. En metasirkulær evaluator

INF2810: Funksjonell Programmering. En Scheme-evaluator i Scheme

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

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

INF2810: Funksjonell Programmering. En metasirkulær evaluator

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

INF2810: Funksjonell Programmering. Lister og høyereordens prosedyrer

INF2810: Funksjonell Programmering. Mengder og lokal tilstand

INF2810: Funksjonell Programmering. Tilstand og verditilordning

INF2810: Funksjonell Programmering

INF2810: Funksjonell Programmering

INF2810: Funksjonell Programmering

INF2810: Funksjonell Programmering. Tilstand og verditilordning

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. En Scheme-evaluator i Scheme

INF2810: Funksjonell Programmering. Muterbare data

UNIVERSITETET I OSLO

INF2810: Funksjonell Programmering. Mer om verditilordning og muterbare data.

INF2810: Funksjonell Programmering. Kommentarer til prøveeksamen

UNIVERSITETET I OSLO

INF2810: Funksjonell Programmering. Strømmer og utsatt evaluering

INF2810: Funksjonell Programmering. Strømmer og utsatt evaluering

INF2810: Funksjonell Programmering. Mer om verditilordning og muterbare data.

INF2810: Funksjonell Programmering. Dataabstraksjon og Trerekursjon

Høyere-ordens prosedyrer

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

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

INF2810: Funksjonell Programmering. Trær og mengder

INF2810: Funksjonell Programmering. Utsatt evaluering og strømmer

INF2810: Funksjonell Programmering. Trær og mengder

INF2810: Funksjonell Programmering. Trær og mengder

INF2810: Funksjonell Programmering. Utsatt evaluering og strømmer

INF2810: Funksjonell Programmering. Utsatt evaluering og strømmer

INF2810: Funksjonell Programmering. Utsatt evaluering og strømmer

Innlevering 2b i INF2810, vår 2017

INF2810: Funksjonell programmering: Introduksjon

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. Køer, tabeller, og (litt om) parallelitet

INF2810: Funksjonell Programmering. Mer om strømmer

INF2810: Funksjonell Programmering. Mer om strømmer

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

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

INF2810: Funksjonell Programmering. Lister og høyereordens prosedyrer

INF2810: Funksjonell Programmering. Strømmer

INF2810: Funksjonell programmering: Introduksjon

INF2810: Funksjonell Programmering. Strømmer

INF2810: Funksjonell Programmering. Introduksjon

Eksamen i HUMIT 2710, Funksjonell programmering, våren Ingen hjelpemidler er tillatt. <resten av forsiden> Side 1 av 7

Velkommen til. INF våren 2017

Innlevering 2a i INF2810, vår 2017

INF2810: Funksjonell Programmering. Introduksjon

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Velkommen til. IN1010 Objektorientert programmering Våren 2018

INF2810: Funksjonell Programmering. Huffman-koding

INF2810: Funksjonell Programmering. Huffmankoding

INF2810: Funksjonell Programmering. Muterbare data

INF2810: Funksjonell Programmering. Huffman-koding

INF2810: Funksjonell Programmering. Huffman-koding

INF2810: Funksjonell Programmering. Introduksjon

INF2810: Funksjonell Programmering. Huffman-koding

INF2810: Funksjonell Programmering. Huffman-koding

INF2810: Funksjonell Programmering. Muterbare data

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

Innhold. INF1000 Høst Hva skal evalueres? Fra kurssidene. Hvorfor har vi en lærebok? Uke 11: Repetisjon og pensumgjennomgang

Moderne Funksjonell Programmering i Lisp

UNIVERSITETET I OSLO

INF2810: Funksjonell Programmering. Huffman-koding

Innhold. IN1000 Høst Hva skal evalueres? Fra kurssidene. Uke 12: Pensumgjennomgang og eksamenstips

Eksamen i SLI230, vår 2003.

Gjennomgåelse av eksamensoppgaven i HUMIT2710 fra våren 2004

INF Introduksjon til design, bruk, interaksjon Introduksjon

INF Introduksjon til design, bruk, interaksjon Introduksjon

Velkommen! I dag. Viktige beskjeder. Studieadministrasjonen. IN Høst Siri Moe Jensen Geir Kjetil Sandve Henrik Hillestad

LISP PVV-kurs 25. oktober 2012

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

INF3110 Programmeringsspråk. Dagens tema. Typer (Kapittel 3 frem til ) Innføring i ML (Kapittel & ML-kompendiet.) 1/19

IN1010 Objektorientert programmering Våren 2019

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

Lisp 2: Lister og funksjoner

IN1140: Introduksjon til språkteknologi. Forelesning #1

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

Transkript:

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