Final exam TDT4165 Programming languages Endelig eksamen TDT4165 Programmeringsspråk. Contact / Kontakt: Hans Christian Falkenberg ( )

Like dokumenter
Final exam TDT4165 Programming languages Endelig eksamen TDT4165 Programmeringsspråk

Midterm exam TDT4165 Programming languages Midtsemestereksamen TDT4165 Programmeringsspråk

Slope-Intercept Formula

Unit Relational Algebra 1 1. Relational Algebra 1. Unit 3.3

Midterm exam TDT4165 Programming languages Midtsemestereksamen TDT4165 Programmeringsspråk

Eksamen ENG1002/1003 Engelsk fellesfag Elevar og privatistar/elever og privatister. Nynorsk/Bokmål

EN Skriving for kommunikasjon og tenkning

EXAM TTM4128 SERVICE AND RESOURCE MANAGEMENT EKSAM I TTM4128 TJENESTE- OG RESSURSADMINISTRASJON

Eksamen i TDT4165 Programmeringsspråk

5 E Lesson: Solving Monohybrid Punnett Squares with Coding

Midterm exam TDT4165 Programming languages Midtsemestereksamen TDT4165 Programmeringsspråk SOLUTIONS / LØSNINGER

UNIVERSITETET I OSLO

Oppgave 1a Definer følgende begreper: Nøkkel, supernøkkel og funksjonell avhengighet.

Hvor mye teoretisk kunnskap har du tilegnet deg på dette emnet? (1 = ingen, 5 = mye)

Information search for the research protocol in IIC/IID

KROPPEN LEDER STRØM. Sett en finger på hvert av kontaktpunktene på modellen. Da får du et lydsignal.

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

UNIVERSITY OF OSLO DEPARTMENT OF ECONOMICS

Dynamic Programming Longest Common Subsequence. Class 27

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

Eksamen i TDT4165 Programmeringsspråk (med rette- eller løsningsforslag) , 15. desember 2011

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

Databases 1. Extended Relational Algebra

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

MID-TERM EXAM TDT4258 MICROCONTROLLER SYSTEM DESIGN. Wednesday 3 th Mars Time:

Neural Network. Sensors Sorter

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Call function of two parameters

Hvor mye praktisk kunnskap har du tilegnet deg på dette emnet? (1 = ingen, 5 = mye)

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

TDT4165 PROGRAMMING LANGUAGES. Exercise 01 Introduksjon til Oz

UNIVERSITETET I OSLO

Om du er i tvil, forklar dine antakelser. Alle programmer skal skrives i Oz.

Emnedesign for læring: Et systemperspektiv

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

Trigonometric Substitution

Enkel og effektiv brukertesting. Ida Aalen LOAD september 2017

Examination paper for SØK2009 International Macroeconomics

Eksamensoppgave i GEOG Menneske og sted I

IN2010: Algoritmer og Datastrukturer Series 2

Den som gjør godt, er av Gud (Multilingual Edition)

TDT4117 Information Retrieval - Autumn 2014

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

Gir vi de resterende 2 oppgavene til én prosess vil alle sitte å vente på de to potensielt tidskrevende prosessene.

1 User guide for the uioletter package

Hvordan føre reiseregninger i Unit4 Business World Forfatter:

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

Fakultet for informasjonsteknologi, Institutt for datateknikk og informasjonsvitenskap AVSLUTTENDE EKSAMEN I. TDT42378 Programvaresikkerhet

Eksamensoppgave i GEOG1004 Geografi i praksis Tall, kart og bilder

Kartleggingsskjema / Survey

UNIVERSITY OF OSLO DEPARTMENT OF ECONOMICS

Eksamensoppgave i AFR1000 Innføring i Afrikastudier

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

buildingsmart Norge seminar Gardermoen 2. september 2010 IFD sett i sammenheng med BIM og varedata

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

Perpetuum (im)mobile

Vurderingsveiledning SPR3008 Internasjonal engelsk Eleven gir stort sett greie og relevante svar på oppgavene i samsvar med oppgaveordlyden.

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

NORGES TEKNISK-NATURVITENSKAPELIGE UNIVERSITET Geografisk institutt

Moving Objects. We need to move our objects in 3D space.

Hvor mye teoretisk kunnskap har du tilegnet deg på dette emnet? (1 = ingen, 5 = mye)

Examination paper for TDT4252 and DT8802 Information Systems Modelling Advanced Course

Medisinsk statistikk, KLH3004 Dmf, NTNU Styrke- og utvalgsberegning

EKSAMENSOPPGAVE I SØK 1002 INNFØRING I MIKROØKONOMISK ANALYSE

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

AVSLUTTENDE EKSAMEN I/FINAL EXAM. TDT4237 Programvaresikkerhet/Software Security. Mandag/Monday Kl

Endelig ikke-røyker for Kvinner! (Norwegian Edition)

FIRST LEGO League. Härnösand 2012

The exam consists of 2 problems. Both must be answered. English

Søker du ikke om nytt frikort/skattekort, vil du bli trukket 15 prosent av utbetalingen av pensjon eller uføreytelse fra og med januar 2016.

Appendix B, not for publication, with screenshots for Fairness and family background

SVM and Complementary Slackness

Du kan bruke det vedlagte skjemaet Egenerklæring skattemessig bosted 2012 når du søker om frikort.

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

Examination paper for BI2034 Community Ecology and Ecosystems

EKSAMENSOPPGAVE I BI2014 MOLEKYLÆRBIOLOGI

Besvar tre 3 av følgende fire 4 oppgaver.

Andrew Gendreau, Olga Rosenbaum, Anthony Taylor, Kenneth Wong, Karl Dusen

UNIVERSITY OF OSLO DEPARTMENT OF ECONOMICS

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

Eksamensoppgave i SOS1000 Innføring i sosiologi

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

Elektronisk innlevering/electronic solution for submission:

Eksamensoppgave i SOS1000 Innføring i sosiologi Examination paper for SOS1000 Introduction to Sociology

GEO231 Teorier om migrasjon og utvikling

Examination paper for (BI 2015) (Molekylærbiologi, laboratoriekurs)

Trådløsnett med. Wireless network. MacOSX 10.5 Leopard. with MacOSX 10.5 Leopard

EKSAMEN I FAG TDT4180 MMI Mandag 18. mai 2009 Tid: kl

Exercise 1: Phase Splitter DC Operation

Eksamen ENG1002 og ENG1003 Engelsk fellesfag Elevar og privatistar/elever og privatister. Nynorsk/Bokmål

Han Ola of Han Per: A Norwegian-American Comic Strip/En Norsk-amerikansk tegneserie (Skrifter. Serie B, LXIX)

The Norwegian Citizen Panel, Accepted Proposals

Transkript:

Fal exam TDT4165 Programmg languages Endelig eksamen TDT4165 Programmergsspråk Date / Dato December 1 st 2010 / 1. desember 2010 Time / Tid Language / Språk 4 hours English / Bokmål Contact / Kontakt: Hans Christian Falkenberg (997 21 309) Reviewer / Gjennomgått av: Øyste Nytrø Support code / Hjelpemiddelkode: C. No written / handwritten materials. Only specified, simple calculator. Ingen skrevne / håndskrevne hjelpemidler. Kun bestemt, enkel kalkulator. The weighted sum of the midterm exam and this, with weights beg 30% and 70% respectively, is compared to this exam only (ie. weight 0% and 100% respectively). The better of these two sums will decide your grade. The acronym 'CTMCP' is used to refer to the curriculum book (by van Roy and Haridi). If you skip or answer correctly a question, your score will be reduced correspondgly. Different tasks contribute differently to the total score; see each task for details. All code examples are given Oz. When asked to write code, write Oz code. Use concise answers, without text that is irrelevant or does not contribute to the answer. You may also disagree with what is stated CTMCP or with what was explaed durg the lectures, but you should give convcg arguments such cases. On average, there is somewhat more than 6 mutes available per subtask. Den vektede summen av midtsemestereksamen og denne, med hhv. 30% og 70% vekt, sammenlignes med kun den elige eksamen (dvs. vektet hhv. 0% og 100%). Den beste av disse to summene vil bestemme karakteren d. Akronymet 'CTMCP' brukes for å referere til pensumboka (av van Roy og Haridi). Om du utelater eller svarer feil på et spørsmål reduseres poengene de tilsvare. Forskjellige oppgaver bidrar forskjellig til totalsummen; se hver enkelt oppgave for detaljer. Alle kodeeksempler er gitt i Oz. Når du blir bedt om å skrive kode, skriv Oz-kode. Bruk konsise svar, uten tekst som er irrelevant eller ikke bidrar til svaret. Du kan være uenig i hva som er oppgitt i CTMCP eller forklart i forelesngene, men du må i så fall oppgi overbevise argumenter. I gjennomsnitt er det noe mer enn 6 mutter tilgjengelig per deloppgave. 1 / 7

This is the grammar for the declarative kernel language (DSKL) defed chapter 2.3 of CTMCP: Dette er grammatikken for det deklarative kjernespråket (DSKL) defert i CTMCPs kapittel 2.3: <statement> ::= skip <statement> <statement> <id> <statement> <id> = <id> <id> = <value> if <id> then <statement> else <statement> case <id> of <pattern> then <statement> else <statement> { <id> { <id> }* } <value> ::= <number> <record> <procedure> <number> ::= <teger> <float> <pattern> ::= <record> <record> ::= <literal> <literal> ( { <feature>:<id> }* ) <procedure> ::= proc { $ { <id> }* } <statement> <literal> ::= <atom> <bool> <feature> ::= <atom> <bool> <teger> <bool> ::= true false <id> starts with an upper case letter, <atom> starts with a lower case (keywords must be enclosed apostrophes), <float> has a dot and a fractional part while <teger> has no dot. Beyond that, the exact defitions of these are not important. Task 1 Syntax and semantics (15%) 1.a Briefly expla the meang of «syntax» our context. Forklar kort betydngen av «syntaks» i vår kontekst. 1.b Briefly expla the meang of «semantics» our context. Forklar kort betydngen av «semantikk» i vår kontekst. 1.c Expla the parts of the abstract mache for DSKL. Forklar bestanddelene i den abstrakte masken for DSKL. 1.d Give an example of syntactic sugar for DSKL. Expla both the syntax and semantics. Gi et eksempel på syntaktisk sukker for DSKL. Forklar både syntaks og semantikk. 1.e Give an example of a lguistic abstraction for DSKL. Expla both the syntax and semantics. Gi et eksempel på en lgvistisk abstraksjon for DSKL. Forklar både syntaks og semantikk. 1.f Expla how to add support exceptions, both syntactically and semantically. Forklar hvordan støtte for unntak kan legges til, både syntaktisk og semantisk. 1.g With exceptions, is it still the same computation model / kernel language? Med unntak, er det fremdeles den samme beregngsmodellen / kjernespråket? 2 / 7

Task 2 Declarativity (10%) 2.a Name the three characteristics from CTMCP's defition of a (defitionally) declarative program unit. Nevn de tre egenskapene fra CTMCPs defisjon av en (defisjonsmessig) deklarativ programenhet. 2.b What is observational declarativity? Hva er observerbar deklarativitet? 2.c Can a concurrent program be declarative? Write a few words about why / why not. Kan et samtidighetsprogram være deklarativt? Skriv noen få ord om hvorfor / hvorfor ikke. 2.d Give a code example with a function that is observationally declarative, but not (defitionally) declarative. Gi et kodeeksempel med en funksjon som er observerbar deklarativ, men ikke (defisjonsmessig) deklarativ. Task 3 Functional and higher-order programmg (30%) 3.a Which of these code snippets use higher order programmg (zero, one or more)? Hvilke av disse kodesnuttene bruker høyere ordens programmerg (null, en eller flere)? (i) (ii) (iii) Pow = fun {$ X Y} if Y == 1 then X else X * {Pow X Y-1} {Show {Pow 2 10}} Show2 = proc {$ Z X Y} {Show {Z X Y}} {Show2 Pow 2 10} PP = fun {$} fun {$ X Y Z} {Pow X {Pow Y Z}} {Show {{PowPow} 1 2 3}} 3.b What is higher-order programmg? Hva er høyere ordens programmerg? 3.c Expla three of these concepts: Procedural abstraction, genericity, stantiation, embeddg. Forklar tre av disse konseptene: Prosedyral abstraksjon, generiskhet, stansierg, nebyggg. 3.d What is a closure? Hva er en tillukng? 3 / 7

3.e What will the followg program show? Hva vil det følge programmet vise? fun {Zip List1 List2} case List1#List2 of (Head1 Tail1)#(Head2 Tail2) then (Head1#Head2) {Zip Tail1 Tail2} else nil {Show {Zip [1 2 3] [10 20 30]}} 3.f Implement fun {Unzip Splitter List} (which returns a tuple with two lists) and proc {TupleSplit Zipped Elem1 Elem2}. Splitter is a three argument procedure that splits the first argument and bds the result to the last two arguments. TupleSplit is such a procedure, and it should split elements that were created by the Zip implementation above. Unzip must use Splitter to create two elements for each element of List. Implementer fun {Unzip Splitter List} (som returnerer en tuppel med to lister) og proc {TupleSplit Zipped Elem1 Elem2}. Splitter er en tre-arguments-prosedyre som deler opp det første argumentet og bder resultatet til de to siste argumentene. TupleSplit er en slik prosedyre, og den skal dele elementer som ble laget av Zipimplementasjonen ovenfor. Unzip må bruke Splitter for å lage to elementer per element i List. 3.g Write a le of code to show how Unzip and TupleSplit can be used. Assume that List = {Zip [1 2 3] [10 20 30]} has already been run and that List is scope. Skriv en lje kode for å vise hvordan Unzip og TupleSplit kan brukes. Anta at List = {Zip [1 2 3] [10 20 30]} allerede har blitt kjørt og at List er i navneområdet. 3.f What does this function do; ie. what should its name be stead of Foo? Hva gjør denne funksjonen; altså hva burde den hete i stedet for Foo? fun {Foo M} case M of nil _ then nil else {Map M fun {$ H _} H } {Foo {Map M fun {$ _ T} T }} 3.g Give an example of put and output for Foo that shows how it works. Gi et eksempel på nputt og utputt for Foo som viser hvordan den virker. 3.h What does FoldRight do? Hva gjør FoldRight? 3.i Implement FoldRight. Implementer FoldRight. 3.j Implement fun {SumList List}, usg FoldRight. Implementer fun {SumList List} ved å bruke FoldRight. 4 / 7

Task 4 Message based concurrency (15%) declare fun {NewPortObject InitialState Function} Stream thread _={FoldLeft Stream Function InitialState} {NewPort Stream} NPO = NewPortObject To s a value to a port, use {S Port Value}. For å se en verdi til en port, bruk {S Port Value}. 4.a What happens when you s somethg to a port? Hva her når du ser noe til en port? 4.b What extensions of the abstract mache for DSKL are required to expla the computation model for the code above? Hvilke utvidelser må gjøres av den abstrakte masken for DSKL for å forklare beregngsmodellen for koden ovenfor? 4.c Use NPO to implement a server that counts how many messages it has received. {MakeServer MyProc Test} shall return a new stance of the server. For each message received, the server should call Test with the message as an argument. Iff Test returns true, the server should call MyProc with the number of messages received so far. Bruk NPO for å implementere en tjener som teller hvor mange meldger den har mottatt. {MakeServer MyProc Test} skal returnere en ny stans av tjeneren. For hver meldg skal tjeneren kalle Test med meldgen som argument. Bare dersom Test returnerer true, skal tjeneren kalle MyProc med antallet meldger mottatt hittil. Example use / eksempel på bruk: ServerA = {MakeServer Show fun {$ Msg} Msg==show } ServerB = {MakeServer Show fun {$ Msg} Msg==show } {S ServerA foo} {S ServerA bar} {S ServerA show} % server A will now show 3 {S ServerB show} % server B will now show 1 4.d Can MakeServer be used so that the client can do arbitrary work on the server? Kan MakeServer brukes slik at klienten kan gjøre vilkårlig arbeid på tjeneren? 5 / 7

Task 5 Relational programmg (15%) fun {Bar X} Y Y = choice c [] d (Y \= X) = true X#Y fun {Foo} choice {Bar a} [] {Bar b} [] {Bar c} {Show {SolveAll Foo}} 5.a What is shown by the above code if SolveAll uses depth-first search (leftmost choice first)? Hva vises av koden ovenfor dersom SolveAll bruker dybde-først søk (venstre choice først)? 5.b What is shown if SolveAll uses breadth-first search (leftmost choice first)? Hva vises dersom SolveAll bruker bredde-først søk (venstre choice først)? 5.c Make a program that use the relational computation model to fd all possible pairgs of people that want to go to the movies together. Lag et program som bruker den relasjonelle beregngsmodellen for å fne alle mulige sammenkoblger av folk som vil gå på ko sammen. Example put / eksempelnputt: Wishes = wishes( alice:[bob charlie dennis] bob:[alice eva foxy] charlie:[alice foxy] dennis:[alice foxy] eva:[bob charlie dennis] foxy:[charlie dennis]) Output / utputt: [[alice#charlie bob#eva dennis#foxy] [alice#dennis bob#eva charlie#foxy]] Example put / eksempelnputt: Wishes = wishes( alice:[raymond] bob:[raymond] charlie:[raymond] raymond:nil) Output / utputt: nil You may fd the followg functions useful / Du kan kanskje benytte de følge funksjonene: {Member Element List} {Filter List Function} {Arity Record} Returns true iff Element occurs List. Returns a new list with elements filtered by Function. Returns a list of all the features Record. 6 / 7

Task 6 Various (15%) 6.a A data structure can be stateless or stateful. What are the remag four of the six properties discussed this course? En datastruktur kan være tilstandsløs eller tilstandsfull. Hva er de gjenvære fire av de seks egenskapene som har blitt forklart i dette kurset? 6.b Implement a counter data structure that use cells to hold state. Implementer en teller-datastruktur som bruker celler for å holde på tilstand. Ht: {NewCell Init?Cell}, {Exchange Cell?OldValue NewValue}. 6.c Which two of the other properties does your counter implementation have? Hvilke to av de andre egenskapene har d teller-implementasjon? 6.d What is the difference between passg parameters by reference and by value? Expla it terms of memory addresses. Hva er forskjellen på parametersg med referanse eller verdi? Forklar det ved hjelp av mneadresser. 6.e What is lazy evaluation? Hva er lat evaluerg? 6.f What is its counterpart called? Hva kalles dets motstykke? 6.g Give a code example that illustrates the difference between the two. Gi et kodeeksempel som illustrerer forskjellen mellom de to. 7 / 7