Ommästarprov Paradigm
- Inlämningsdatum 19 maj 2023 av 18:00
- Poäng 1
- Lämnar in en filuppladdning
- Tillgänglig 12 maj 2023 kl 16.40–20 jul 2023 kl 18:00
Mästarprovet ska lösas individuellt och redovisas både skriftligt och muntligt. Inget samarbete är tillåtet, se vidare hederskodexen. Du ska alltså inte diskutera lösningar med någon annan fram till dess att alla muntliga redovisningar är avklarade. Inlämningarna plagiatgranskas. Nytt för 2023 är att det inte är tillåtet att använda verktyg baserade på AI/maskininlärning i arbetet med lösningarna. Exempel på förbjudna verktyg är Github Copilot och ChatGPT.
Skriftliga lösningar ska lämnas in i Canvas.
Det bästa formatet för inlämningar är litterär programmering (literate programming) i en stil som liknar Physically Based Rendering. Bokens tredje utgåva finns gratis på nätet här
Links to an external site.. Skriv i så fall koden och texten som en akademisk uppsats och illustrera elegant och begripligt. Använd till exempel noweb
Links to an external site.. Lämna in resultatet som pdf.
Det näst bästa formatet (och fortfarande kanonbra) är att använda LaTeX för att skapa texten. De flesta som använder LaTeX gör det via ett webbgränssnitt som till exempel Overleaf
Links to an external site.. Om du bygger lokalt, tänk på att använda pdflatex så att resultatet blir en pdf-fil. Assistenterna ska inte behöva bygga LaTeXfiler själva och framför allt inte installera externa bibliotek.
Det tredje bästa är att använda Markdown
Links to an external site. som är enklare än LaTeX och ger nästan lika bra resultat.
Resterande: Om ni använder Microsoft Word eller liknande - tänk på att spara som pdf så att alla kan läsa texten som det är tänkt utan att ha Word installerat.
Skicka inte in nedpackade arkivfiler utan använd Ctrl-klick för att lägga till var och en av filerna i inlämningen.
Krav på koden:
Skriv ditt namn och KTH-mailadress överst på framsidan av varje pdf, markdownfil och/eller kodfil i lösningarna. Läs på dina lösningar inför den individuella muntliga redovisningen som kommer att ske kort efter deadline i Zoom, eller på plats för någon i lärarlaget. Tidsbokningen kommer att komma upp nära uppgiftens deadline och det kommer att anslås på Canvas när de har kommit upp. Den muntliga redovisningen tar 10 minuter för dig, men de som bedömer dig har 5 minuters paus mellan varje par av redovisningar.
Det är viktigt att du förbereder dig inför den muntliga redovisningen. För att en uppgift ska godkännas ska du kunna förklara och motivera dina implementationer och vilka skillnader du gör på olika paradigm.
Läs uppgifterna mycket noga så att du inte råkar basera dina lösningar på en missuppfattning. Fråga en lärare på kursen om någon formulering är oklar.
Generella regler för mästarprov såsom vad som krävs för godkänt finns på mästarprovssidan i Canvas. Tänk på att mästarprovet bedöms efter sin sämst lösta uppgift så överarbeta inte en uppgift förräns alla är OK.
Som exempel på hur kod-delen av en inlämningsuppgift kan se ut, se facit och rättningsmallar från Tentaarkivet i DD1361, till exempel 2017-09-18. Det finns också lösningsförslag på gamla mästarprov. Titta under uppgifter i vänstermarginalen och längst ner finns en länk till ett Gitubrepo. Som exempel på hur en teorifråga kan besvaras, se facit och rättningsmallar från tentaarkivet i DD1362 till exempel juni 2021.
Mästarproven behöver redovisas både skriftligt och muntligt. Om du har lämnat in den skriftliga biten i tid så behöver du för att få godkänt även boka in dig på en muntlig redovisning med hjälp av REMORES. Tiderna postas samma fredag som deadline för inlämning av den skriftliga uppgiften.
På teorifrågorna är det viktigt att svara med kompletta meningar. Endast nyckelord ger inte godkänt.
Uppgift 1:
Nämn 3 centrala programmeringskoncept hos klasser och objekt i det objektorienterade paradigmet som väsentligen skiljer dessa från en struktur (struct) i det procedurella paradigmet (exempelvis i C, eller i Pascal där det kallas post). Förklara på designnivå (dvs kod ej nödvändigt) hur ett objektorienterat program kan använda dessa egenskaper för att implementera ett GUI med (1) textvisningsfält, (2) textinmatningsfält och (3) knappar.
Uppgift 2:
I assembler finns rutinanrop och labels som motsvarigheter till funktionsanrop och variabler i det procedurella paradigmet. Vad är de viktigaste skillnaderna mellan (1) rutinanrop och funktionsanrop och (2) labels och variabler? Förklara hur en assemblerrutin använder parametrar och hur detta skiljer sig från hur ett språk i det procedurella paradigmet (till exempel C, Fortran eller Pascal) tar in parametrar och ger ifrån sig ett returvärde, men också hur delresultat inom en rutin/funktion/procedur skiljer sig markant mellan det rent imperativa paradigmet (dvs assembler) och det procedurella paradigmet.
Uppgift 3:
Beskriv i detalj tre centrala skillnader mellan Turingmaskinen och Lambdakalkylen. Förklara också i detalj likheten och skillnaden mellan minnet i Von Neumannmaskinen och det oändliga bandet i Turingmaskinen.
Uppgift 4:
Förklara centrala skillnader mellan den imperativa familjen (som innefattar det procedurella, objektorienterade och strukturerade paradigmet samt det rent imperativa paradigmet) och den deklarativa familjen (som innefattar det funktionella och logiska paradigmet). Utgå från dessa tre aspekter: (1) kontrollflöde (control flow) (2) tillstånd (state) och (3) abstraktionsnivå (level och abstraction).