Göm menyn

TDP015 Grunder i matematik och logik


På denna sida hittar du material till kursens föreläsningar. Till varje föreläsning anges även det centrala innehåll som du förväntas kunna efter föreläsningen. Detta innehåll examineras genom den skriftliga tentamen; mer information om detta hittar du på sidan om Examination.

Allmän information

Programmeringsuppgifterna ska göras i par. Om du vill göra programmeringsuppgifterna individuellt ska du kontakta kursledaren. Vi har tyvärr generellt inte de resurser som krävs för att handleda och ge återkoppling på individuella programmeringsuppgifter.

Instruktioner: Lämna in era programmeringsuppgifter i ett mejl till vilket ni bifogar er kod (inklusive alla filer som man behöver för att köra koden) i en enda zip-fil. Använd inget annat komprimeringsformat. Läs kursens Regler för inlämningsuppgifter. Innan ni skickar in er första programmeringsuppgift behöver ni anmäla er i Webreg.

Format på ämnesraden: TDP015-2018 uppgiftskod ditt LiU-ID din partners LiU-ID kursassistentens LiU-ID

Kursassistent är Robin Kurtz och hans LiU-ID är robku08.

Exempel: TDP015-2018 P1 marjo123 erika456 robku08

Återkoppling. Om ni lämnar in er programmeringsuppgift vid första inlämningsdatumet får ni skriftlig återkoppling på uppgiften från kursassistenten. Utöver detta kan ni alltid få återkoppling från examinator (mottagningstid under terminstid).

P1: Logiska satser

I denna uppgift ska ni skriva olika funktioner för logiska satser, såsom en funktion som testar om en sats är satisfierbar, och en som testar om två satser är logiskt ekvivalenta. För att kunna skriva dessa funktioner behöver ni först implementera klasser för logiska satser. Till er hjälp med detta får ni fragmentarisk skelettkod. Börja med att läsa kommentarerna i denna skelettkod för att förstå hur klasserna är tänkta att användas. Lägg sedan till kod på de ställen som är markerade med ett todo. Skriv även några relevanta testfall.

Första inlämningsdatum: 2018-03-28

P2: Dynamisk programmering

I denna uppgift ska ni experimentera med rekursion. I det första problemet ska ni implementera en generator för nästlade par, som svarar mot korrekt balanserade klammeruttryck. I det andra problemet ska ni räkna antalet sådana par utan att generera dem. I det tredje problemet ska ni undersöka en teknik för att snabba upp rekursiva beräkningar genom memoisation, som är grunden till en kraftfull beräkningsteknik kallad dynamisk programmering.

Första inlämningsdatum: 2018-04-16

P3: RSA-algoritm

I denna uppgift ska ni implementera en enkel version av RSA-algoritmen för kryptering och dekryptering. I uppgiftens centrala delar implementerar ni en generaliserad form av Euklides’ algoritm för att hitta den största gemensamma delaren till två tal och en funktion som genererar ett nyckelpar.

Första inlämningsdatum: 2018-04-23

P4: Klassificera handskrivna siffror

I denna uppgift ska ni implementera en probabilistisk klassificerare som läser in en bild av en handskriven siffra och förutsäger vilken siffra det rör sig om. Klassificeraren bygger på Bayes’s regel. Ni tränar den genom att skatta sannolikheter utifrån data i MNIST-databasen, en stor datamängd med handskrivna siffror som manuellt taggats med korrekt siffra.

Första inlämningsdatum: 2018-04-30

P5: Hitta cykler i grafer

I forskningsprojektet Semantic Parsing for Text Analytics utvecklas algoritmer som parsar naturligt språk till semantiska representationer i form av riktade grafer. En önskvärd egenskap för dessa grafer är att de ska vara acykliska. Er uppgift är att implementera en funktion som testar om en riktad graf innehåller en cykel (t.ex. genom att försöka sortera grafen topologiskt), och att använda denna funktion för att hitta cykliska grafer i en av de datamängder som används i forskningsprojektet.

Första inlämningsdatum: 2018-05-14

PN: Numeriska metoder

Er uppgift är att implementera Newtons metod för att approximera nollställen till en funktion för att sedan tillämpa denna metod till problemet att beräkna roten ur ett tal. Ni kommer också undersöka hur valet av startvärdet påverkar beteendet av Newtons metod när man har en funktion med flera olika nollställen.

Inlämningsdatum: 2018-04-09, 2018-05-07

PR: Reflektionsrapport

Efter att du har lämnat in alla laborationer ska du avsluta momentet genom att skriva en individuell reflektionsrapport. I denna rapport ska du ta ett steg tillbaka och reflektera över vad du har lärt dig genom laborationerna. Rapporten ska innehålla tre element:

  • en beskrivning av ditt arbete med laborationerna med fokus på det som du tyckte var viktigast för ditt lärande
  • en analys av dina erfarenheter med hjälp av koncept från kursen
  • slutsatser angående frågan vad du tar med dig från momentet och hur laborationerna har hjälpt dig uppnå lärandemålen

Allmän information om reflektionsrapporter hittar du i guiden Reflection Papers.

Instruktioner: Lämna in en reflektionsrapport på 1 000 ord (ca. 2 sidor) enligt specifikationen ovan. Det enda tillåtna formatet på rapporten är PDF (inte Word). Inlämningsdatum: 2018-06-02

Format på ämnesraden: TDP015-2018 PR your LiU-ID examinators LiU-ID

Kursens examinator är Marco Kuhlmann och hans LiU-ID är marku61.

Exempel: TDP015-2018 PR marjo123 marku61

Återkoppling: Du kommer att få summativ återkoppling på din rapport från examinator.


Sidansvarig: Marco Kuhlmann
Senast uppdaterad: 2018-06-08