Göm menyn

TDDC68 Imperativ programmering i Ada

Projektmaterial


Allmänt om projektet (vad det skall innehålla m.m.)

I projektet är det meningen att ni skall arbeta i grupper om 2-3 personer (i undantagsfall kan vi gå med på 4 personer per grupp). Ni kan bilda grupper fritt inom eller utom klassen.

Då projektet bygger på eget arbete och att laborationsdelen i kursen är avklarad är det lämpligt att grupperna bildas så att de som ingår i gruppen ligger på samma nivå. Projektet ger också en chans att öva lite mer inför tentan och bör därför genomföras så att alla får en vettig programmeringsuppgift att utföra.

I det projekt ni skall genomföra skall följande delar finnas med:

* Processhantering (tasks). Inte obligatorisk del, men detta ger enorma möjligheter till effektivisering inför redovisningen (tävlingen).

* Nätverkskommunikation mellan en klient och en server

* Implementering av ett givet protokoll mellan klient och server

För att projektet skall godkännas skall följande moment redovisas för er assistent:

* Innan projektet startas: En specifikationsfil som visar att man förstått vilka moment som behöver hanteras vad det gäller den datastruktur som skall användas för att representera olika delar och figurer. Eventuellt blir detta flera paket. OBS! Skapa INTE "adb"-filen utan tänk igenom vad som behövs och hur ni skall lagra data.
Specifikationsfilen/-filerna skall skickas via e-post till Linus Olsson (se kontaktinformationen för att få mailadress) senast fredag den 10:e februari (självklart 2012) klockan 15:00.

* Redovisningstillfälle = Deadline: I ert schema finns ett par pass i slutet av perioden där det står RE. Dessa pass är till för att redovisa projekten. Under detta tillfälle kommer alla assistenter att finnas närvarande. Endast provkörning av ert projekt kommer att göras. Programkod skickas till Linus efter det att ni fått godkänt på testkörningen.

Dessutom kommer projekten att demonstreras för assistenterna. Mer om detta senare. Det hela kommer att vara uppbyggt som en liten tävling mellan grupperna. Inget allvarligt, men de som vinner får givetvis någon form av pris. När denna tävling går av stpeln är inte riktigt bestämt ännu.

* Slutdokumentation: Denna ska skickas till assistenten.

Erfarenhetsdokumentet skall innehålla era egna synpunkter om vad som fungerat bra och mindre bra i ert projekt samt en sammanställning av hur mycket tid som lagts ner på de olika delarna (per person). Riktigt hård deadline för slutdokumentationen är samma dag som omtentan i maj/juni.


TJa-biblioteket (fungerar endast på IDA)

Observera att detta paket inte är något som finns tillgängligt utanför IDA. Det är heller inte så att det skall användas till något kommersiellt då det i vissa fall är rent olämpliga konstruktioner som ligger i "botten". Det fungerar dock i våra nybörjarkurser.


Projektet är att implementera en lösare av en såkallad träknut. Den knut vi kommer att ha som exempel i denna kurs kallar för "Soma-kuben" och är egentligen inte en träknut, men det spelar mindre roll. Vid demonstrationen kommer även en annan variant att användas som har en lite annan uppsättning bitar. Se därför till att ni inte skapar ett program som endast klarar de 7 bitar som finns i Soma-kuben.

Uppgiften är att skriva ett program som hämtar information från en server om hur de bitar man har tillgängliga ser ut (i er uppgift kommer ni dock att veta vilka bitarna är redan i början av kursen, men detta skall ni inte ta hänsyn till i ert program) och sen ta reda på hur bitarna skall sättas ihop för att bilda en given figur.

Den givna figuren skall också hämtas från servern så det är inte givet från början vilken figur som skall genereras.

Ni skall INTE skapa servern i detta projekt. Den tillhandahåller vi.

Hur kommunikationen mellan server och klient skall se ut beskrivs i ett kommunikationsprotokoll. För att alla skall ha samma protokoll har detta givet nedan. En testserver finns att hämta här (går endast att köra på våra datorer dock).

Servern kommer att hämta in vilka delar och vilken figur som skall bildas från en datafil. Hur denna ser ut finns givet nedan.

När klienten kommit fram till en lösning på hur man skall placera de olika bitarna för att få fram den givna figuren skall den skicka in placeringen av bitarna till servern (servern kontrollerar att alla bitar finns med och att det är rätt figur förstås).


De filer som är givna under kursens gång är
soma_parts.txt
soma_figures.txt
Filerna som innehåller delar (eller figurer) är uppbyggd på följande sätt:
Varje del beskrivs med en eller flera grupper av 0:or/1:0r (bitar). Inom en grupp har den nedersta vänstra biten positionen x=1 och y=1. Åt höger ökar x-värdet och y-värdet ökar uppåt. Första gruppen med bitar ligger i koordinatsystemet med z=1. Andra gruppen har z=2, etc.
Ritar man en bild av ovanstående (på papper t.ex.) har man x-axeln åt höger, y-axeln uppåt och z-axeln framåt (in i pappret).
protokollet

De filer som kommer att användas under projektredovisningen är
soma_mini_parts.txt soma_mini_figures.txt
only_one_parts.txt only_one_figures.txt
soma++_parts.txt soma++_figures.txt
very_small_pieces_parts.txt very_small_pieces_figures.txt


Sidansvarig: Torbjörn Jonsson
Senast uppdaterad: 2012-03-02