Försättsblad till skriftlig tentamen vid Linköpings Universitet



Relevanta dokument
Facit Tentamen TDDC (7)

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Försättsblad till skriftlig tentamen vid Linköpings Universitet

TDDC30 Programmering i Java, datastrukturer och algoritmer

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Teoretisk del. Facit Tentamen TDDC kl (6) 1. (6p) "Snabba frågor" Alla svar motiveras väl.

Teoretisk del. Facit Tentamen TDDC (6)

Teoretisk del. Facit Tentamen TDDC kl (6) 1. (6p) "Snabba frågor" Alla svar motiveras väl.

Facit Tentamen TDDC kl (6)

TDDC30 Programmering i Java, datastrukturer och algoritmer

Teoretisk del. Facit Tentamen TDDC (6)

TDDC30 Programmering i Java, datastrukturer och algoritmer

TDDC30/725G63. Objektorienterad programmering i Java, datastrukturer och algoritmer

TDDC30/725G63. Objektorienterad programmering i Java, datastrukturer och algoritmer

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 9 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Föreläsning 14 Innehåll

Tentamen TEN1 HI

Hitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

Datastrukturer och algoritmer. Föreläsning 15 Inför tentamen

Tentamen Datastrukturer för D2 DAT 035

Försättsblad till skriftlig tentamen vid Linköpings Universitet

TDIU01 / 725G

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 12 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

Programmering för språkteknologer II, HT2011. Rum

Tentamen i Algoritmer & Datastrukturer i Java

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Föreläsning 10 Innehåll. Prioritetsköer och heapar. ADT Prioritetskö. Interface för Prioritetskö. Exempel på vad du ska kunna

Tentamen, Algoritmer och datastrukturer

Lägg uppgifterna i ordning. Skriv uppgiftsnummer och din anmälningskod överst i högra hörnet på alla papper.

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 12 Jonas Lindgren, Institutionen för Datavetenskap, LiU

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 6 Jonas Lindgren, Institutionen för Datavetenskap, LiU

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Laboration 2 Datastrukturer En liten uppgift Frågor

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Tentamen i Algoritmer & Datastrukturer i Java

Tentamen Datastrukturer D DAT 035/INN960

Seminarium 13 Innehåll

ADT Prioritetskö. Föreläsning 12 Innehåll. Prioritetskö. Interface för Prioritetskö. Prioritetsköer och heapar

Prov i DAT 312: Algoritmer och datastrukturer för systemvetare

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

Tillämpad Programmering (ID1218) :00-13:00

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 10 Erik Nilsson, Institutionen för Datavetenskap, LiU

Tentamen TEN1 HI

TDDC91 & TDDE22 & 725G97 Datastrukturer och algoritmer Datortentamen (DAT1) , 08 12

Tentamen i Grundläggande programmering STS, åk 1 fredag

TDDC74 Programmering: Abstraktion och modellering Datortenta , kl 14-18

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket

TDDC Terminologi Uppdaterad Fö #1

Det är principer och idéer som är viktiga. Skriv så att du övertygar rättaren om att du har förstått dessa även om detaljer kan vara felaktiga.

ADT Prioritetskö. Föreläsning 13 Innehåll. Prioritetskö vs FIFO-kö. Prioritetskö Exempel på användning. Prioritetsköer och heapar

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 8 Erik Nilsson, Institutionen för Datavetenskap, LiU

Tentamen Datastrukturer D DAT 035/INN960 (med mycket kortfattade lösningsförslag)

Tentamen Datastrukturer D DAT 035/INN960

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

Sökning och sortering

Tentamen med lösningsförslag Datastrukturer för D2 DAT 035

Tentamen Datastrukturer (DAT036)

Introduktionsmöte Innehåll

TENTAMEN: Algoritmer och datastrukturer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

Laboration 3, uppgift En klass för en räknare

Lösningsförslag till tentamen i Digitalteknik, TSEA22

Föreläsning 13 Innehåll

TDDC74 Programmering: Abstraktion och modellering Tentamen, onsdag 9 juni 2016, kl 14 18

Tentamen Datastrukturer (DAT037)

Programmering för Språkteknologer II. Innehåll. Associativa datastrukturer. Associativa datastrukturer. Binär sökning.

Obs! Inget ur Javas standardbibliotek får användas i ett svar (om det inte står att man får det).

Tentamen i Grundläggande programmering STS, åk 1 fredag

TDP Regler

Länkade strukturer, parametriserade typer och undantag

Instruktioner - Datortentamen TDDD73 Funktionell och imperativ programmering i Python

Föreläsning 9 Datastrukturer (DAT037)

Tentamen i. TDDC67 Funktionell programmering och Lisp

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

725G61 - Laboration 7 Implementation av ett API. Johan Falkenjack

Programmering II (ID1019) :00-17:00

Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Tentamen Datastrukturer, DAT037 (DAT036)

Datastrukturer, algoritmer och programkonstruktion (DVA104, HT 2014) Föreläsning 5

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

Föreläsning REPETITION & EXTENTA

Föreläsning 9 Innehåll

Tentamen Datastrukturer (DAT036/DAT037/DIT960)

HI1024, Programmering, grundkurs, 8hp KTH STH TENTAMEN. HI1024:TEN2 - Praktisk tentamen Tid: Fredagen den 21 oktober 2011,

TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 14:00-19:00

Tentamen Datastrukturer, DAT037 (DAT036)

Kurskod D0010E Datum Skrivtid 5tim

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

::= HIHI HIHIHI ::= HAHA HAHAHA

Tentamen i Grundläggande programmering STS, åk 1 lördag

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor

Lösningsförslag till tentamen Datastrukturer, DAT037,

Objektorienterad programmering E. Algoritmer. Telefonboken, påminnelse (och litet tillägg), 1. Telefonboken, påminnelse (och litet tillägg), 2

Transkript:

Försättsblad till skriftlig tentamen vid Linköpings Universitet Datum för tentamen 2014-03-18 Sal Tid 08:00 12:00 Kurskod Provkod Kursnamn/benämning Institution Antal uppgifter som ingår i tentamen Antal sidor på tentamen (inkl. försättsbladet) Jour/kursansvarig Samling i korridoren vid SU17/18 TDDC30 DAT1 Programmering i Java, datastrukturer och algoritmer IDA 6 (4 teoretiska och 2 praktiska) 8 Jonas Lindgren Telefon under skrivtid 013-282490 Besöker salen ca kl. - Kursadministratör (namn, telefon, mailadress) Tillåtna hjälpmedel Övrigt Åsa Kärrman, 013-285760, asa.karrman@liu.se Inga Information och frågor hanteras genom Tentaklienten. Preliminära poänggränser: 3: 10 4: 14 5: 18

Tentamen TDDC30 2014-03-18 2 (8) Teoretisk del Anvisningar: Uppgifterna i denna del ska lösas med penna och papper. Vid tentamens slut lämnas svaren till denna del in till tentamensvakterna. Viktigt: Starta en tentaklient genom att högerklicka på skrivbordet, för att kunna ta del av allmän information och kunna ställa frågor. 1. (3p) "Snabba frågor" Alla svar motiveras väl. a) Varför kan man tänkas vilja dölja metoder och variabler med private? (0.5p) b) Vad är syftet med undantag/exceptions? (0.5p) c) Vad är skillnaden mellan en abstrakt datatyp (ADT) och dess implementation? (0.5p) d) Om en algoritm har tidskomplexiteten O(n) och en annan O(n 2 ), vad innebär det här för skillnad mellan algoritmerna? (0.5p) e) I Animal myanimal = new Animal() sker två separata saker. Vad innebär Animal myanimal och vad innebär new Animal()? (0.5p) f) Vad skiljer en statisk variabel (dvs. en klass-variabel) från en icke-statisk? (0.5p) 2. (3p) "Datastrukturer" a) Ett binärt sökträd har skrivits ut med en preorder-traversering, vilket resulterade i [ 4 2 1 3 7 6 5 9 8 ]. Rita upp hur det binära sökträdet såg ut. (1.5p) b) Är trädet nedan en heap av något slag? Ange svar samt motivera varför/varför inte med minst en heap-egenskap. (0.5p) 2 3 1 5 6 8 7 4 c) Ange i vilken ordning värdena i trädet ovan skulle lagras i fältet, om hela trädet representerades som ett fält. Markera odefinierade värden i fältet med ett frågetecken. (1p)

Tentamen TDDC30 2014-03-18 3 (8) 3. (3p) "Tidskomplexitet" a) Förenkla följande tre uttryck för tidskomplexitet: (1p) 1) O(2n) + O(n 2 ) 2) O(n) O(2n + n) 3) O(2) O(3n 3 ) + O(n) b) Ange tidskomplexiteten i värsta fallet, med avseende på n, för följande metoder. (n är alltid ett positivt heltal.) (1p) void foo(int n) { for (int i = 0; i < n; i = i+1) { for (int j = 0; j < 2*n; j = j+1) { System.out.println(i + " x " + j); void branch(int n) { // is n evenly divisible by 2? if (n % 2 == 0) { bar(n * n * n); void bar(int n) { foo(n); for (int i = 0; i < 5; i = i+1) { foo(i); c) Ange tidskomplexiteten i bästa fallet, med avseende på n, för metoderna ovan. (n är alltid ett positivt heltal.) (1p)

Tentamen TDDC30 2014-03-18 4 (8) 4. (3p) "Algoritmer" a) Sortera värdena [ 5 1 2 7 6 2 4 ] med insertionsort. Gör detta genom att byta plats på värden inom fältet, dvs. in-place. Sorteringen ska leda till stigande ordning, dvs 1, 2, 3, osv. Ange tydligt i svaret hur hela fältet ser ut innan varje platsbyte, samt vilka index som är på väg att byta plats, med maximalt ett byte per steg. (1p) b) Sortera värdena [ 4 0 1 6 5 1 3 ] med countsort. Var noga med att ange vad som sker i varje steg, så att det går att följa processen från början till slut. Sorteringen ska leda till stigande ordning, dvs 1, 2, 3, osv. (1p) c) Vad innebär det att en sorteringsalgoritm är stabil? Ge exempel på en sorteringsalgoritm som kan implementeras stabil, och en som inte kan implementeras stabil. (1p)

Tentamen TDDC30 2014-03-18 5 (8) Praktisk del Anvisningar: Uppgifterna i denna del ska lösas på dator. När alla uppgifter är lösta ska alla filer som ska examineras lämnas kvar på kontot. Uppgifterna ska alltså inte skickas in via tentamenssystemet. Viktigt: Starta en tentaklient genom att högerklicka på skrivbordet, för att kunna ta del av allmän information och kunna ställa frågor. Försök att lösa alla uppgifter så långt som möjligt. Om du inte kan lösa en uppgift, förenkla uppgiften. Glöm i så fall inte att beskriva förenklingen med en tydlig kommentar i koden. Poängavdrag ges beroende på förenklingens storlek. Tänk på läsbarhet och namngivning, och även på variablers och metoders synlighet. Ni behöver inte skriva javadoc för er kod. För att importera projekt i Eclipse, File Import, sedan General Existing projects into workspace, sedan Browse, och välj projekt i given_files. Viktigt: Glöm inte att kryssa i Copy projects into workspace! Skapa ett nytt projekt i Eclipse för varje uppgift. Det kan även vara en god idé att göra en säkerhetskopia av projektet när man går från t.ex. deluppgift a till deluppgift b. Som en bilaga finns även en lista över vanliga unixkommandon.

Tentamen TDDC30 2014-03-18 6 (8) 5. (4p) Jobb-högen Snart är sommaren här, och denna sommar har Stefan bestämt sig för att han ska ut i arbetslivet och börja arbeta på kontakterna. Det vore trevligt med lite extra pengar i fickan efter sommarens slut, men att få in en fot på rätt företag vore inte heller en dålig idé. Efter en stunds sökande inser Stefan att det finns väldigt många möjliga arbetsplatser att ta ställning till, och han kan ju inte söka jobb hos alla, det skulle ta för lång tid. Han måste prioritera! För att lösa detta tar Stefan alla potentiella arbetsplatser han kan tänka sig och representerar dem som en klass i Java, med de egenskaper han anser relevanta som attribut. Tanken är att han därefter kan använda sig av en väl vald datastruktur för att sortera dessa jobb, och plocka fram de som han bör prioritera när det väl är dags att söka jobb! Importera Stefans projekt från given_files, och hjälp honom med programmet enligt nedan. a) Stefan har nästan skrivit klart sin JobOpportunity-klass, och nu vill han berätta för en kompis om sina planer och hur han har lagt upp sin kod. Det är dock svårt att förklara upplägget med ord och kompisen är inte intresserad nog att vilja läsa Stefans kod. För att kunna glänsa här behöver Stefan något som underlättar förklarandet, han behöver ett UML-diagram som beskriver upplägget! Rita ett klassdiagram för klasserna i data-paketet som anger attribut, metoder och relationer. (1p) (Denna uppgift besvaras skriftligt tillsammans med övriga skriftliga svar.) b) Obs: Har du har bonus på labb 3 och 4 tillgodoräknas du deluppgift 5b och 5c. Stefan har en implementation av en heap sen tidigare som han vill använda för att prioritera de arbetsplatser han väljer mellan. Dock kräver den existerande koden att Stefans JobOpportunity implementerar ett särskilt interface, MyComparable, så att heapen vet hur den ska sortera de här objekten. Gör de förändringar som krävs i JobOpportunity så att heapen sorterar arbetsplatserna i första hand efter lön (sjunkande) och i andra hand prestige (sjunkande). Detta ska göras utan att ändra något i heap-paketet. (2p) c) Obs: Har du har bonus på labb 3 och 4 tillgodoräknas du deluppgift 5b och 5c. Vid närmare eftertanke inser Stefan att det vore trevligt att lägga till en depth-metod till heapen. Lägg till metoden depth, och låt den returnera ett heltal som är det maximala djupet i trädet. (1p) (Då djupet är avståndet från roten har roten alltså djup 0. Träd med mindre än ett element anses ha det maximala djupet 0.)

Tentamen TDDC30 2014-03-18 7 (8) 6. (5p) De ordnade jobben Anna är inne på samma spår som Stefan med att organisera sommarens arbetsmöjligheter, men hon har valt att lägga upp det på ett lite annat sätt. Istället för en heap så har Anna skrivit en cirkulärt dubbellänkad listan för att lagra arbetsplatserna. Hon har kommit en bit på vägen, men är inte riktigt klar än. Importera Annas projekt från given_files, och hjälp henne med programmet enligt nedan. En cirkulärt dubbellänkad lista: a) En annan tanke Anna har är att det vore trevligt om hon kunde använda sin lista till annat än bara JobOpportunity, som nu är fallet. Gör de ändringar som behövs för att göra Annas lista och relaterade delar generisk, så att testprogrammet för del b fungerar. Inga varningar ska finnas kvar. (1p) b) Anna har redan en removefirst-metod för att ta bort det första värdet ur listan, men det vore även bra med en removelast-metod, resonerar Anna. Lägg till den metoden, så att testprogrammet för del c fungerar. (1p) c) Anna har sin add-metod sen tidigare, men den stoppar bara in det nya värdet först i listan för tillfället. Anna vill istället att det JobOpportunity som ska stoppas in läggs till på rätt plats direkt i listan, vid instoppningstillfället. Hon vill sortera arbetsplatserna på möjlig lön, så rätt plats är ordnad på lön (sjunkande). När allt är sagt och gjort ska alltså arbetsplatserna som tas ur listan komma med högst lön först, i testprogrammet för del c. (3p) (Lös denna uppgift som ett separat projekt, då det finns en potentiell konflikt mellan denna deluppgift och deluppgift a.)

Tentamen TDDC30 2014-03-18 8 (8) Vanliga Unix-kommandon mkdir katalognamn rmdir katalognamn cd katalognamn cd cp källfil målfil mv källfil målkatalog mv orgnamn nyttnamn ls cat filnamn Skapa katalog Ta bort katalog Byt aktuell katalog till målkatalog Byt aktuell katalog till din hemkatalog Kopiera fil från källfil till målfil Flytta källfil till målkatalog Byt namn på filen orgnamn till nyttnamn Skriver ut alla filer i aktuell katalog Skriver ut innehållet i filen filnamn