Projekter i forbindelse med Grundlæggende Programmering,
forår 2001
Denne side omhandler forslag til og organisering af "klassiske" GP-projekter,
som er egnede som programmeringsprojekter i forlængelse af kurset
Grundlæggende Programmering. Det er muligt at vælge andre
projekter. Der plejer at være andre projektforslag af varierende
sværhedsgrad på projektbørsens
hjemmeside. Af særlig interesse for Grundlæggende Programmering
er desuden projektklyngerne/projektkurser i Søgemaskiner (kontakt
Stephen Alstrup, email: stephen@it.edu) og Apparatsoftware (kontakt Thomas
Hildebrandt, email: hilde@it.edu).
Hvorfor et programmeringsprojekt i forlængelse af Grundlæggende
Programmering?
Kurset Grundlæggende Programmering (GP) fokusserer på individuelle
begreber og aspekter af programmering og programmeringssproget Java. Det
er ikke et formål med kurset at du skal skrive egentlige applikationer
under forløbet. Det er til gengæld meningen, at du gør
det, udstyret med de programmeringsteknikker og -færdigheder du har
tilegnet dig på GP, i et umiddelbart efterfølgende 4-ugers
programmeringsprojekt i projektperioden (for fuldtidsstuderende), eller
i et semesterprogrammeringsprojekt på et senere tidspunkt (for deltidsstuderende).
Det anbefales derfor fuldtidsstuderende (kandidatstuderende) stærkt
at lave et programmeringsprojekt i fireugersperioden efter Grundlæggende
Programmering. Ligeledes anbefales deltidsstuderende (diplom- og
masterstuderende) at lave et programmeringsprojekt i fireugersperioden
eller i en efterfølgende kursusperiode.
NB: Fagudvalget for softwareudvikling har med virkning fra forår
2002 indført et forudsætningskrav om, at deltagere i kurset
Objekt-Orienteret Programmering skal have gennemført et programmeringsprojekt
svarende til GP projekter ud over kurset Grundlæggende Programmering.
Formål med programmeringsprojektet
Fælles for GP-projekterne, den nedenfor omtalte klynge af projektforeslag,
er at de skal:
-
give dig mulighed for at indøve programmeringsteknikker og programmeringsfærdigheder
du har opnået på kurset GP og kombinere og anvende dem på
et 'rigtigt' problem;
-
gør dig fortrolig med godt programdesign (strukturering af programkode),
som sigter mod, at den resulterende programkode er korrekt, let forståeligt,
nemt at udvide, adaptere, genbruge (primært af andre end en selv)
og afprøves;
-
give dig grundlæggende erfaring i team-orienteret softwareudvikling,
specielt planlægning og styring af hele projektforløbet;
-
introducere dig til application programmer interfaces for state-of-the-art
softwareteknologier og vænne dig til at genbruge eksisterende programkode
ved at forstå og anvende programbiblioteker ud fra beskrivelsen (dokumentationen)
af deres funktionalitet alene;
-
gør dig i stand til at konstruere simple webbaserede client/server-systemer,
som spænder fra datalagring i databaser til implementation af grafiske
brugergrænseflader.
Du kan vælge mellem en række forskellige projektforslag (se
nedenunder), samt foreslå dit eget projekt, sålænge det
tilfredsstiller de ovenfor stående overordnede formål.
Organisering af programmeringsprojekterne
Projekterne bør laves i grupper på 2-4 personer. Enkeltmandsprojekter
har en tendens til at køre skævt, og resultatet skuffer alle,
ikke mindst projektdeltageren.
Projekterne er åbne for alle studerende, fra SWU, Diplom, INT,
MMT, TIT, DKM og EBUSS. Hver projektgruppe kan med fordel involvere studerende
med forskellig baggrund og interesser. Projekterne vil være
tilknyttet hjælpelærere, som vil kunne kontaktes iht. en programmeringsvagtordning
under projektperioden og ved aftalte møder. Vejledning vil
desuden bestå af møder med hovedvejlederen (Fritz) og spørgetimer
"i plenum" (hver onsdag i projektperioden, dog ikke 28. november, kl. 14-16).
Projektforslagene angivet nedenfor er ment som inspiration. Det er meningen
at I selv skal præcisere indhold, mål, ambitionsniveau og tidsplan
for projektet. Dette er indholdet af projektaftalen, der skal udarbejdes
i løbet af den første projektuge.
Hvordan tilmelder jeg og min gruppe sig?
Send email med navnene, email-addresserne og det eller de projekter I er
interesseret i at gennemføre til mig (henglein@it.edu). Deltag
derefter i forelæsningerne tirsdag og onsdag, den 27.-28. november
(se nedenunder). Gør projektbeskrivelsen færdig i løbet
af torsdag, den 29. november, gerne i samråd med en instruktor og/eller
mig, få den godkendt (jeg kan træffes torsdag, den 29. november,
kl. 15-17 på 2.29) og aflever den til studieadministrationen.
Brug det officielle projektformular
for projektbeskrivelsen.
Jeg er interesseret i et eller flere af nedenstående projekter, men
har ikke nogen gruppe endnu. Hvad gør jeg?
Send dit navn, email addresse og det/de projekt(er) du er interesseret
i til mig (henglein@it.edu) -- gør det under alle omstændigheder.
Jeg vil så sætte dit navn under projektet/projekterne på
denne side. Kontakt derefter per email interesserede i samme projekt,
hvis der allerede står nogen under selve projektet. På
denne måde vil andre interesserede kunne kontakte dig for at se,
om I kan danne en gruppe, og omvendt kan du kontakte dem. Hvis der
kommer ikke noget ud af det, kom til forelæsningen tirsdag, den 27.
november, kl. 10-12 i 0.10. I frokostpausen kl. 12-13 laver vi "matchmaking"
for at danne grupper. Hvis der ikke kommer noget ud af det, deltag
i matchmaking onsdag, den 28. november, kl. 12-13 samme sted. Hvis
du derefter stadigvæk ikke har en gruppe, vil jeg foreslå at
sætte dig sammen med nogen anden. Men så er mulighederne
opbrugt!
Brug endelig også nyhedsgruppen news://news.it-c.dk/it-c.courses.GP
for at lede efter gruppepartnere.
Deltag i forelæsningerne tirsdag og onsdag, den 27.-28.
november (se nedenunder). Gør projektbeskrivelsen færdig
med din gruppe i løbet af torsdag, den 29. november, gerne i samråd
med en instruktor og/eller mig, få den godkendt (jeg kan træffes
torsdag, den 29. november, kl. 15-17 på 2.29) og aflever den så
til studieadministrationen. Brug det officielle projektformular
for projektbeskrivelsen.
Projektvejledning og -support
Hver projektgruppe arbejder selvstændigt på sit eget projekt
og har adgang til følgende resourcer:
-
Forelæsninger og øvelser om databaser, databaseadgang fra
Java programmer (JDBC) og Java servletter. (Se nedenunder.)
-
Fælles spørgetimer hver onsdag i projektperioden (dog ikke
første uge) kl. 14-16 i lok. 1.60.
-
Programmeringsvagt i lokale 1.28 de fleste dage i projektperioden (se projektkalender
nedenunder).
-
Ugentlige gruppemøder onsdag formiddag med mig (efter aftale).
-
Gruppemøder med en instruktor, som er tilknyttet Jeres projekt (efter
forudgående aftale med instruktoren).
-
Nyhedsgruppen news://news.it-c.dk/it-c.courses.GP
til spørgsmål og for at se svar på andres spørgsmål.
-
Projekthjemmesiden http://www.it.edu/courses/GP/E2001/projekter.html
med aktuelle programeksempler, projektoplysninger osv.
Projektkalenderen
indeholder vigtige oplysninger om projektforløb, programmeringsvagter
mm.
Projektgrupper
Der er blevet etableret følgende projektgrupper:
| Gruppe |
Medlemmer |
Email |
Projekt |
| GP1 |
Cathrine Kvåle, Ene Rammer Nielsen |
kvaale, ene |
+ |
| GP2 |
Thomas Janum, Marie Gottlieb, Sune Høgild Keller |
janum, mago, sunebio |
+ |
| GP3 |
|
tobiasg |
- |
| GP4 |
|
fsoeberg, shazia, jacobg, lina, clh |
- |
| GP5 |
Birgit Nielsen, Galina A. Ianchina Hansen, Signe Ellegård Borch,
Annilisa Klevang Pedersen |
bmn, galina, elleboych, klevang |
+ |
| GP6 |
Jane Schjøth Dahl Jakobsen, Pia Eder, Jens Bo Bjørholm,
Björn Wahlberg, Michael Koefoed-Hansen |
janjada, piaeder, jensb, bjornw, mkh |
+ |
| GP7 |
Helgi Thorsteinsson |
heto |
|
| GP8 |
Lise Lotte Hansen, Marianne Harck, Kira Høgh, Karen Binderup
Jørgensen |
llh, mharck, kira, karen |
+ |
| GP9 |
Daniel Sutherland, Anders Møller, Kim Bonde, Niels Grau |
daniels, andersm, kimbonde, nielsg |
+ |
| GP10 |
Kinnie Bak Pedersen, Katrine Høegsberg Olin, Pernille Kruse |
kinnie, kho, pernille |
+ |
| GP11 |
|
klyvoe, kane, dck, rsimonsen |
- |
| GP12 |
|
gyldahl, mka, nhj |
- |
Hver projektgruppe (GP1, GP2,...) er blevet oprettet som brugergruppe
på host mysql.it-c.dk og får stillet en projektkatalog til
rådighed, som kan bruges til at lægge alle filer en projektgruppe
arbejder på, inkl. appletter og servletter. Projektgruppe GP4,
for eksempel, har fået tildelt katalog S:\projekter_e2001\gp4
på IT-Cs pc'er, samt en database med navn gp4 på MySQL databaseserveren
på mysql.it-c.dk. (For yderlige oplysninger se plancher fra
forlæsningerne nedenunder.)
Introducerende forelæsninger og øvelser
Da de fleste projektforslag nedenfor involverer brug af Internet, webserver,
databaseserver og lignende vil vi i projektperiodens første dage
holde indledende forelæsninger om disse emner:
-
Tirsdag den 27. november 2001, kl 10:00-12:00 i lokale 0.10 på
IT-C, indgang Glentevej 65
-
Databaseadgang fra Java-programmer og appletter (SQL og JDBC)
-
Onsdag den 28. november 2001 kl 10-12 i lokale 0.10 på
IT-C, indgang Glentevej 65
-
HTML, maskinel generering af websider vha. servletter i Java
-
Udfærdigelse af projektrapport
Eksamen
Format
Projekteksamen har følgende format. Først holder gruppemedlemmerne
korte individuelle foredrag (oplæg) om projektet. Derefter
eksamineres hvert gruppemedlem individuelt. Alle gruppemedlemmer
forventes at være til stede i eksaminationslokalet under hele gruppens
eksamination.
-
Hvert gruppemedlem holder et oplæg på 10 minutter om et eller
flere udvalgte aspekter af projektet. Oplæggene skal tage udgangspunkt
i projektets mål og indhold. De kan valgfrit behandle emner
dokumenteret i projektrapporten eller emner, der går ud over projektrapporten.
Projektdeltagerne aftaler selvstændigt indbyrdes, hvilke emner de
vil foredrage om og i hvilken rækkefølge de foredrager.
Der lægges vægt på kvaliteten af formidling, faglig indhold
og indre sammenhæng i et oplæg (f.eks. hvilke emner der behandles
i et oplæg og hvordan de belyses og formidles).
-
Efter foredraget eksamineres hvert gruppemedlem i ca. 10 minutter individuelt.
Spørgsmålene tager udgangspunkt i gruppens projektrapport
og den generelle målsætning for GP-projekter. Bedømmerne
har mulighed for at rette spørgsmål til hele gruppen.
-
Umiddelbart efter eksaminationen af alle gruppemedlemmer voterer censor
og eksaminator om de individuelle karakterer og meddeler dem derefter til
gruppens medlemmer.
Tidsplan
Eksamensdato: onsdag, den 23. januar 2002
Eksamenslokale: 3.07
-----------------------------------------
Tid Gruppe/gruppemedlemmer
-----------------------------------------
8:30 GP1: Cathrine Kvaale
Ene Rammer Nielsen
9:10 (Votering)
9:20 GP6: Jane Jakobsen
Pia Eder
Jens Bjoerholm
Bjoern Wahlberg
Michael Koefoed-Hansen
11:00 (Votering)
11:20 GP5: Birgit Nielsen
Galina Hansen
Signe Ellegaard Borch
Annilisa Pedersen
12:40 (Votering)
12:55 (Frokostpause)
13:20 GP8: Lise Lotte Hansen
Marianne Harck
Kira Hoegh
Karen Joergensen
14:40 (Votering)
14:55 GP9: Daniel Sutherland
Anders Moeller
Kim Bonde
Niels Grau
16:15 (Votering)
16:30 GP10: Kinnie Bak Pedersen
Katrine Olin
Pernille Kruse
17:30 (Votering)
-----------------------------------------
Bedømmere
Eksaminator: Fritz Henglein, IT-C
Censor: Torben Mogensen, Datalogisk Institut, Københavns Universitet
Projektforslag
Projektforslag 1: Online registrering af studerendes kursusønsker
Beskrivelse:
Formålet er at lave online registrering af kursusønsker
for studerende på IT-højskolen. Der er en database med kurser
der udbydes og hvilke kurser de forudsætter. Derudover er der en
database med studerende og de kurser de allerede har haft.
Opgaven er at lave online registrering af kursusønsker ved hjælp
af Java servlets. Brugeren indtaster sine ønsker, som behandles
af et eller flere Java-servlets der kører på en web server.
Java-programmerne opdaterer databaserne og sender html-sider tilbage med
oplysninger om de registrerede ønsker.
Opgaven gør brug af databaseteori, brugergrænseflader,
design og programmering. Projektet kan evt. indeholde en lille foranalyse
og/eller kravspecifikation, hvor studieadministrationen på IT-C samt
studerende kan interviewes i forbindelse med funktionalitet og brugergrænseflade.
Evaluering: Skriftlig rapport med design, konstruktion og beskrivelse
af program og database, samt mundtlig eksamen.
Hjælpemidler: Databaseserver, evt. Apache web server.
Projektforslag 2: Salg af biografbilletter (flere billetluger)
Beskrivelse:
Formålet er at lave et billetsalgssystem, der kan bruges i en
biograf med flere billetluger. Programmet i hver enkelt billetluge kan
f.eks. køre som en applet, der tilgår en fælles database
(eller lignende fælles server) via Internettet. Som udgangspunkt
skal der laves et biografbilletsystem for en sal og kun en forestilling
hver dag. ("Mallinge Bio"). Dette kan så udvides i ambitionsniveau
trin-for-trin ved at vælge nogle af følgende udvidelsesmuligheder:
flere film per dag, flere forestillinger af samme film per dag, flere biografsale,
ikke-rektangulaere biografsale, visning af 'buede' biografsale, flere biografer,
online-bestilling og billettering f ("Egmont Biografkæden").
Evaluering: Skriftlig rapport med design, konstruktion og beskrivelse
af program og database, samt mundtlig eksamen.
Hjælpemidler: Databaseserver, og Apache/Tomcat web server og servlet
container.
Projektforslag 3: Fælles beskedsystem for en arbejdsplads
Beskrivelse:
Formålet er at lave et webbaseret system med hvilket medarbejderne
på en arbejdsplads kan orientere hinanden om hvornår de er
til møde, på forretningsrejse, er syge, arbejder hjemme, er
på ferie, osv. Man skal kunne indtaste og læse beskeder ved
hjælp af en almindelig webbrowser. Systemet skal kunne vise alle
dagens beskeder (uanset hvem de vedrører) og skal kunne vise alle
beskeder om en given medarbejder (uanset hvilke dage de vedrører).
Systemet kan enten baseres på HTML og Java-servletter, eller på
Java-appletter.
Evaluering: Skriftlig rapport med design, konstruktion og beskrivelse
af program og database, samt mundtlig eksamen.
Hjælpemidler: Databaseserver og Apache/Tomcat web server og servlet
container..
Projektforslag 4: Udklipsbureau
Beskrivelse:
Formålet er at lave et webbaseret udklipsbureau, hvor man kan
registrere artikler under diverse emnekategorier. Det skal være muligt
at søge efter artikler givet diverse søgekriterier. Et udklipsbureau
gennemlæser daglig mange aviser og blade for at finde omtaler af
virksomheder, institutioner, lande, personer, og forskellige emnekategorier
(uddannelsesforhold, udlandshandel, sociale forhold, finans, økonomi,
miljø, ...). For hver artikel i hver avis registreres avis, sidetal,
overskrift, forfatter (hvis angivet) og omtrentlig artikellængde
for hvert relevant emne. Udklipsbureauets kunder (virksomheder, organisationer,
ambassader, ...) bruger udklipsbureauets database til at finde bestemte
slags artikler, f.eks. om virksomheden selv, om konkurrenter eller om branchen.
Det ville være smart med en webgrænseflade så kunderne
løbende kan se hvad der er blevet lagt ind. Overvej organisering
af dataene (central database), brugergrænsefladen for de ansatte
`avislæsere' og brugergrænsefladen for kunderne.
Udvidelsesmuligheder: (1) Hver artikel skannes og arkiveres som billede
så den kan læse direkte fra nettet. I så fald skal kundens
tilgang til artiklen registreres så der kan betales til avisen. (2)
Hvordan skal udklipsbureauet organiseres hvis det henviser til websteder
i stedet for papiraviser? Hvad med websteder der opdateres hele tiden,
så det samme link i morgen henviser til en helt anden artikel?
Evaluering: Skriftlig rapport med design, konstruktion og beskrivelse
af program og database, samt mundtlig ekamen.
Hjælpemidler: Databaseserver og evt. Apache web server.
Projektforslag 5: Spil og rangliste
Beskrivelse:
Formålet er at implementere et simpelt spil som en applet. Det
er vigtigt, at man kan blive målt på, hvor god man er til at
spille spillet, idet der også skal implementeres en central rangliste.
Der skal implementeres et eller flere simple spil, hvor spillernes duelighed
kan måles, f.eks. (yatzi, memory, minestryger, ...). Spillet skal
implementeres som en applet.
Appletten skal vedligeholde en rangliste på en central database,
hvor en deltagers resultat registreres. Det skal overvejes om alle resultater
skal registreres eller kun de resultater som spillerne ønsker registreret.
Databasen kan udvides til også at håndtere små turneringer,
hvor en gruppe spillere kæmper indbyrdes om at være den bedste.
Evaluering: Skriftlig rapport med design, konstruktion og beskrivelse
af program og database, samt mundtlig eksamen.
Hjælpemidler: Databaseserver.
Projektforslag 6: Webbaseret diskussionsforum
Beskrivelse:
Formålet er at lave et webbaseret diskusionsforum, hvor man kan
oprette et nyt emne, samt kommentere på de emner / indlæg der
allerede findes. Man kan opfatte systemet som en lang liste af emner der
bliver diskuteret. Under hvert emne findes en række indlæg
der vedrører emnet. Alle indlæg registreres i en central database.
Det skal overvejes hvorledes man skal kunne starte en tråd af indlæg
og give direkte svar på tidligere indlæg. Det er tænkeligt,
at hvert emne kan indeholde mange tråde.
Systemet er tænkt implementeret ved med Java (servlets). Bemærk,
at dette projektforslag ligner projektforslag nummer 4, men her er indlæggene
ordnet som tråde. I projektforslag 4 er indlæggene mere ordnet
efter medarbejer og dato.
Evaluering: Skriftlig rapport med design, konstruktion og beskrivelse
af program og database, samt mundtlig eksamen.
Hjælpemidler: Databaseserver og Apache/Tomcat web server og servlet
container.
Projektforslag 7: Analyse af webserverlog
Beskrivelse:
Formålet er at analysere en webserverlog, og beregne statistik
for hvorledes ens webserver anvendes. En webserver registrerer alle henvendelser
i en log, som er en tekstfil i et nærmere specificeret layout. Projektet
går ud på at læse loggen og finde interessant information
i den: besøgendes fordeling på døgnet, på ugen,
på websider, på domæner, osv. Overvej hvordan man finder
antal besøgende (ikke bare sideforespørgsler), træk
søgemaskiner fra, osv. Lav grafiske fremstillinger.
Programmet kan evt. vedlige holde en central database over den statistik
som beregnes regelmæssigt.
Evaluering: Skriftlig rapport med design, konstruktion og beskrivelse
af program og database, samt mundtlig eksamen.
Hjælpemidler: Apache web server og evt. databaseserver.
Projektforslag 8: Lokalebooking system
Beskrivelse:
Formålet er at lave et webbaseret system, som lader brugere reservere
lokaler i et eller flere fælleslokaler, f.eks. selskabslokaler og
lignende. Der skal laves en web interfaces (vha. af Java servlets
som genererer HTML-sider eller ved hjælp af Java applets) som tillader
almindelige brugere at se hurtigt, hvornår hvilke lokaler allerede
reserveret og hvornår de stadigvæk er ledige, og derefter at
reservere et lokale ved at angive oplysninger om sig selv. Desuden
skal der laves en web interface, som kun er tilgængelig for administratoren
af systemet, som viser, hvem der har reserveret hvilket lokale hvornår.
Mulige udvidelser er, at brugerne skal kunne registrere sig som brugere
og derefter logge sig på systemet, og at administratoren skal bekræfte
en reservering inden den er endegyldig, og administratoren skal kunne slette
reserveringer.
Hjælpemidler: Databaseserver og evtl. Apache/Tomcat webserver
og servlet container.
Fritz Henglein, 2001-11-22