Göm menyn

TDP015 Grunder i matematik och logik

Inlämningsuppgifter


Programmeringsuppgifterna

Skicka in era uppgifter via epost till tdp015@ida.liu.se. Meddelandets ämnesrad ska ha följande form:

uppgiftsbeteckning ditt LiU-ID din partners LiU-ID marku61

Exempel: P1 marjo123 erika456 marku61

Bifoga 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.

P1: Logiska uttryck

I denna uppgift ska ni skriva olika funktioner för logiska uttryck, såsom en som testar om ett uttryck är satisfierbart, och en som testar om två uttryck är logiskt ekvivalenta. För att kunna skriva dessa funktioner behöver ni först implementera klasser för logiska uttryck. 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.

Inlämningsdatum: 2017-03-27 2017-03-28

P2: Funktioner på mängder

I denna korta uppgift ska ni (åter)implementera ett antal predikat på mängder: är-delmängd-till, är-lika-med, är-äkta-delmängd-till, är-disjunkta. Ni ska dessutom implementera en generator som producerar alla delmängder till en given mängd. Till er hjälp får ni återigen fragmentarisk skelettkod i vilken ni ska lägga till kod på de ställen som är markerade med ett todo. Det finns redan några relevanta testfall implementerade som körs när koden anropas i terminalen.

Inlämningsdatum: 2017-04-03

P3: Rekursion

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.

Inlämningsdatum: 2017-04-10

P4: Talteori

Författaren Lewis Carroll, mest känd för hans bock Alice i Underlandet, var även en begåvad matematiker. Han utvecklade bl.a. en algoritm som beräknar ett datums veckodag. Er uppgift är att implementera denna algoritm i Python. Resultatet ska vara en funktion som tar ett årtal (t.ex. 2016), en månad (t.ex. 4 för april) och en dag i denna månad och returnerar rätt veckodag. I denna uppgift tillämpar ni modulär aritmetik, som är ett centralt moment inom talteori.

Inlämningsdatum: 2017-04-28

P5: Numeriska metoder

Er uppgift är att implementera Newtons metod för att approximera nollställen till en funktion och att sedan tillämpa denna implementation för att lösa två numeriska beräkningsproblem: approximera nollställen till en given funktion och beräkna roten ur ett tal. I den sista deluppgiften ska ni ange en funktion och två olika startvärden sådana att Newtons metod räknar ut två helt olika approximationer. Detta visar på att valet av startvärdena är viktigt.

Inlämningsdatum: 2017-05-05

P6: Grafteori

I projektet 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.

Inlämningsdatum: 2017-05-12

Individuell reflektionsrapport

Mot slutet av kursen ska du lämna in en sammanfattande individuell reflektionsrapport på högst 1000 ord (ca. 2 A4-sidor) i vilken du reflekterar över ditt lärande i samband med programmeringsuppgifterna. Rapporten ska innehålla följande delar:

  • en sammanfattande beskrivning av programmeringsuppgifternas innehåll
  • en reflektion över vilka kunskaper och färdigheter du har utvecklat och/eller tränat på genom programmeringsuppgifterna
  • en reflektion över vilka kopplingar du ser mellan programmeringsuppgifter och din utbildning i övrigt
  • en reflektion över hur samarbetet med din partner har fungerat (om relevant)

Skicka in din rapport via epost till tdp015@ida.liu.se. Meddelandets ämnesrad ska ha följande form:

RR ditt LiU-ID marku61

Exempel: RR marjo123 marku61

Inlämningsdatum: 2017-06-02

Bifoga din rapport som en PDF-fil. Använd inget annat format (inte Word).


Sidansvarig: Marco Kuhlmann
Senast uppdaterad: 2017-05-19