lu.se

Datavetenskap

Lunds Tekniska Högskola

Denna sida på svenska This page in English

Projektförslag

Nedan presenteras kortfattat några olika förslag till projektuppgift. Fler förslag kan tillkomma efter hand...

Tidigare genomförda projekt

Under vårterminen 2009 utfördes en hel del variationer på projektet. Som en del av redovisningen ingick att skapa en enkel webbsida som beskriver det genomförda projektet. För att ge inspiration till årets kursomgång, presenteras ett antal av rapporterna här.

Se även under "Tidigare år" i menyn till vänster för senare genomförda projekt.

Internettelefoni

Telefoni över Internet (IP-telefoni) börjar bli allt vanligare och har på senare tid börjat framstå som en betydande konkurrent till den traditionella telefonin via analog koppartråd. När kursen gick våren 2004, utrustade vi en av grupperna med hörlurar och mikrofoner och gav dem i uppdrag att ta fram ett system för IP-telefoni på EFDs arbetsstationer. Våren 2005 var det flera grupper som gjorde liknande system.

Exempel på funktionalitet som kan ingå:

  • Lista över anslutna användare.
  • Punkt-till-punkt-samtal.
  • Gruppsamtal.
  • Röstbrevlåda för meddelande till ej uppkopplade användare.

Eftersom vi gissar att flera grupper vill göra något liknande system har vi köpt in ett större antal headsets (kombinerade hörlurar och mikrofon) som kan lånas under kurstiden.

Chatsystem

I den numera nedlagda kursvarianten för C (EDA090) har ämnet för projektet varje år varit att utveckla ett enkelt chatsystem som studenterna gjorde en specifikation för i kursen Ingenjörsprocessen som föregick Nätverksprogrammering.

Systemet består av två delar: Dels en server som håller reda på de senaste inläggen i diskussionerna och förmedlar meddelanden mellan deltagarna i chaten och dels en klientprogramvara med grafiskt användargränssnitt med vars hjälp man kan koppla upp sig mot servern och deltaga i diskussionerna.

Numera utvecklar ni en enkel chatserver i laborationsform, så projektet kan i detta fall ses som en utveckling av denna med tillägg av mer proffsig funktionalitet.

Exempel på möjlig funktionalitet:

  • Multideltagarchat - flera personer chattar med varandra samtidigt.
  • Peer-to-peer-kommunikation - två personer chattar privat med varandra.
  • Buddy-lists och visning av aktuell anslutningsstatus för sina buddies.
  • Filöverföring
  • Flera olika "chatrum"/diskussionsrum och möjlighet att dynamiskt skapa nya sådana.
  • ...

Fördelen med denna uppgift är att den är väl beprövad och är lätt att anpassa till en varierande ambitionsgrad.

När uppgiften gavs på kursen EDA090 erbjöds tillgång till några färdigskrivna grafikklasser med vars hjälp man ganska enkelt kunde åstadkomma ett snyggt och relativt komplext grafiskt användargränssnitt utan att ha speciell erfarenhet av grafikprogrammering i Java. Dessa finns tillgängliga här.

Spel

Olika typer av multispelarspel visade sig vara populära att implementera tidigare år.

Nätverkspoker

En variant på temat spel är ett system för nätverkspoker, vilket har blivit en populär sysselsättning för många den senaste tiden. Här skulle man kunna skriva en central pokerserver mot vilken ett antal klienter kopplar upp sig mot. En sak att ta hänsyn till är att servern måste vara robust och kunna hantera spelare som inte sköter sig eller dröjer för länge med budgivningen.

Robot Wars

På världsfinalen i ACM:s årliga programmeringstävling för studenter har man de senaste åren ordnat något som kallas för "The Java Challenge" dagen före den stora finalen. Det går ut på att lagen i Java skriver en klass som innehåller spelstrategi och styrprogram för en autonom "robot" som sedan får tävla mot de andra lagens robotar. Slutsegraren vinner evig ära och turneringarna är väldigt underhållande då man visar spelets gång animerat på storskärm. År 2002 gick spelet ut på att styra en trollkarl som skulle strida mot andra trollkarlar och år 2003 gällde det att styra en bil på en bana och undvika att köra in i varandra eller få slut på bränsle. I Shanghai 2005 var uppgiften att styra ett fotbollslag.

Tävlingsformen kopierades till nordvästeuropafinalen, NWERC, i Stockholm hösten 2005. Denna gång var temat NHL - NWERC Hockey League. Lunds Universitet sopade mattan med övriga lag och vann både NHL och programmeringsfinalen som sådan. Vårt lag gick vidare till världsfinalen i San Antonio, Texas.

Uppgiften går ut på att skriva ett system som kan genomföra ett spel/tävling mellan olika spelarkonstruerade javaprogram liknande det i "The Java Challenge" över ett nätverk. Man behöver då dels en server som håller reda på vilka anslutna deltagare som finns och även genomföra själva spelet och dels ett klientprogram i vilket det spelarskrivna javaprogrammet exekveras samt erbjuder en animering av vad som händer när spelet körs så man kan se vad ens robot gör och vad andras robotar gör med den (och med andra). Själva spelidén kan varieras: Trollkarlsvarianten från "The Java Challenge" kan vara en trevlig utgånspunkt. En annan idé kan vara att göra ett "Masken"-spel där det gäller att stänga in varandra. Oavsett vilket så vill vi naturligtvis även se det demonstreras med ett antal olika robotar som använder olika strategier.

Styrprogrammet som spelaren skriver bör snabbt och lätt kunna bytas ut i klienten utan att klientprogrammet behöver kompileras om. Därför bör s.k. dynamisk klassladdning användas, vilket de grupper som gör ett sådant här spel får läsa in sig på.

Fördelen med denna uppgift är att den kan säkert vara väldigt skojig om man lyckas få ihop något som fungerar bra. Nackdelen är att den är helt otestad och därför är det svårt att uppskatta tidsåtgång/svårighet. Därför är uppgiften nog lämpligast för de mera entusiastiska kursdeltagarna. Här blir det särskilt viktigt med ett inkrementellt utvecklingsförfarande enligt våra krav i början på denna sida och en plan för dess genomförande.

Webbserver med "servlets"

Några veckor in i kursen kommer vi att gå igenom tekniker för att skapa dynamiska webbsidor. En sådan teknik är servlets, vilka är aktiva javakomponenter som körs på en webbserver och som genererar specialanpassade HTML-sidor på begäran. De fungerar som s.k. plug-ins till webbservern, vilket innebär att webbservern som sådan inte behöver känna till dem i förväg och kompileras om med dem, utan man behöver bara ändra i en av webbserverns konfigurationsfiler så laddas javakomponenterna in vid behov. Detta görs lämpligen m.h.a. s.k. dynamisk klassladdning och är något som gruppen får läsa in sig på.

Uppgiften skulle gå ut på att skriva en webbserver som har stöd för något som så mycket som möjligt fungerar som Javas servlets. Därefter skulle ett demonstrationssystem som använder sig av dessa "servlets" skrivas. Till exempel skulle man kunna sätta upp en webbserver som använder era "servlets" för att implementera ett s.k. "blog"-system. Blog är en förkortning för "weblog", vilket i princip är en dagbok på nätet där man kan skriva vad man önskar. Till att börja med skulle man kunna skriva ett system som bara implementerar en enda blog, men sedan skulle man kunna utvidga det till att hantera att man kan registrera sig i systemet och få ett lösenord och därefter kunna skriva sin alldeles egna blog.