Drakborgen. - Tips och rekommendationer. III. Tillvägagångssätt. Abstract. I. Inledning. II. Beskrivning av spelet



Relevanta dokument
Objektinteraktion. Objektorienterad programmering Laboration 2. Syfte Att konstruera ett litet objektorienterat program med flera samverkande objekt.

Objekt-orienterad Programmering och Design. TDA551 Alex Gerdes, HT-2016

7,5 högskolepoäng. Objektorienterad systemutveckling I Provmoment: Ladokkod: 21OS1B Tentamen ges för: Lycka till! /Peter & Petter

Objekt-orienterad Programmering och Design. TDA552 Alex Gerdes, HT-2018

Post Mortem för Get The Treasure!

Dagbok Mikael Lyck

[SLUTRAPPORT: DRAWPIXLZ (ANDROID-APP)] Slutrapport. Författare: Zlatko Ladan. Program: Utvecklare av Digitala Tjänster 180P

MYCKET BRA (7/44) BRA (34/44) GANSKA BRA (4/44) INTE BRA (1/44)

Objektinteraktion. Objektorienterad programmering Laboration 2. Syfte Att konstruera ett litet objektorienterat program med flera samverkande objekt.

Allmänna frågor om kursen: Kursutvärderare: IT-kansliet/Christina Waller. 1. Vad är ditt allmänna omdöme om kursen? Antal svar: 30 Medelvärde: 3.

SLUTRAPPORT: TEXAS HOLDEM 4 FRIENDS

Projekt Rapport. RaidPlanner. Jeanette Karlsson UD10

Versionshantering. Problem som uppstår i större (samt även mindre) projekt:

Objekt-orienterad utveckling. Objektorienterad analys och design. Objekt-orienterad programutveckling. Objekt-orienterad analys och design: Litteratur

Filhanterare med AngularJS

Enkätresultat. Kursenkät, Flervariabelanalys. Datum: :47:04. Aktiverade deltagare (MMGF20, V10, Flervariabelanalys) Grupp:

Objektorienterad Programmering (TDDC77)

Objektorienterad programmering och Java

UTVECKLINGSVERKTYG. Praktiska tips för PUM-projekten

Föreläsning 3. Programmering, C och programmeringsmiljö

Kurs-PM fo r HI1028, Projektkurs inom programvaruutveckling, VT16

DD

Torun Berlind Elin Önstorp Sandra Gustavsson Klas Nordberg. Föreläsningar Lektioner Laborationer Projekt

UML: Exempel. Ett modelleringsspråk. UML: Ansvar. UML: tre huvudanvändningar. Exempel: En klass position storlek. UML Unified Modelling Language

Föreläsning 3. Programmering, C och programmeringsmiljö

Fyra i rad Javaprojekt inom TDDC32

GRUNDKURS I C-PROGRAMMERING

Praktikum i programmering

TDDC74 - Projektspecifikation

Sammanställning av kursutvärdering Samlad bedömning

Subversion. Laboration. Höstterminen 2008 r81. Ronny Kuylenstierna

Föreläsning 1: Introduktion till kursen

Kortfattad sammanfattning av studenternas synpunkter och förslag

Objektorientering. Grunderna i OO

Editering, Kompilering och Exekvering av Javaprogram

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

Thomas Padron-Mccarthy Mobila applikationer med Android, 7.5 hp (Distans) (DT107G ) Antal svarande = 13. Svarsfrekvens i procent = 27.

725G61 - Laboration 7 Implementation av ett API. Johan Falkenjack

Utvärdering av laboration i genteknik. för kemiingenjörer, VT 2002

OOP Objekt-orienterad programmering

Kursutvärdering/1MD222 Konstruktion av användargränssnitt II Datum för sammanställning:

1DV433 HT13. I vilken utsträckning har kursens innehåll och uppläggning gett förutsättningar för att du ska ha uppnått respektive lärandemål?

Kursutvärdering NEK A1 Moment 3: Makroekonomi, vt-11

Kristoffer Eriksson Christer Oscarsson Andreas Dahlberg Martin Bengtsson

Skolverkets föreskrifter om ämnesplan för ämnet mjukvarudesign inom vidareutbildning i form av ett fjärde tekniskt år;

Objektorienterad Programmering (TDDC77)

Outline. Objektorienterad Programmering (TDDC77) Kursinfo. Outline. Hemsida. Organization. Ahmed Rezine Examination. Webreg.

Verktyg och Utvecklingsmiljö. Föreläsning 2 Eclipse

Sammanställning av kursutvärdering

Robotar i NXc. En laboration med Mindstormrobotar. Sammanfattning KUNGLIGA TEKNISKA HÖGSKOLAN

Projektarbete 2: Interaktiv prototyp

Tentamen IE1204 Digital design

Felsökning av mjukvara

LABORATION 4 OBJEKTORIENTERAD PROGRAMMERING I C++ I

Design och konstruktion av grafiska gränssnitt

Collector en Android-app för att samla saker. Kim Grönqvist (kg222dk) Slutrapport

Laboration 5 - Biblioteksapplikation

Distribuerade affärssystem

Tor Sterner-Johansson Thomas Johansson Daniel Henriksson

TATA24 - Linjär algebra

Välkomna till DIT012 IPGO

Piff och Puffs Chatsystem

Sida 1 av 7. Slutrapport. ULVIS Unga Lär Vuxna Internet på eget Språk. Uppsala den 4 december Serbiska Kulturföreningen Sloga

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Konstruktion med mikrodatorer

Sammanfattning av kursutvärdering Design av informationssystem, moment 1, Programmeringens grunder, 7,5 hp, ht 2016

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Introduktionsmöte Innehåll

Webservice & ERP-Integration Rapport

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 5. Laboration 4 Lådplanering Exempel på grafik, ett avancerat program Frågor

Objektorienterad Programkonstruktion. Föreläsning 6 23 nov 2015

Föreläsningar Lektioner Laborationer Projekt Tentamina Inlämningsuppgifter Seminarier Annat. D-sektionen IT

Föreläsning 1: Introduktion till kursen

1. Enkätsvar: Hur värdefullt fann du innehållet i kursen? 1=Värdelöst 2=Av litet värde 3=Värdefullt 4=Mycket värdefullt Besvarad av 11 personer

Objektorienterad programmering

Analys och design. Objekt. Klass. med hjälp av CRC. Klassdiagram

Föreläsning 1: Introduktion till kursen

Frontermanual för Rektorsprogrammet

Introduktion till programmering med hjälp av Lego Mindstorm

Tentamen. 2D4135 vt 2005 Objektorienterad programmering, design och analys med Java Lördagen den 28 maj 2005 kl

Validering av XML, Svensk geoprocess Guide för validering av XML, Svensk Geoprocess

Projektanvisning. Webbsideprojekt. Författare: Johan Leitet Version: 2 Datum:

Slutrapport YUNSIT.se Portfolio/blogg

Thomas Padron-Mccarthy Datateknik B, Mobila applikationer med Android, 7.5 hp (Distans) (DT ) Antal svarande = 14

Roligaste Sommarjobbet 2014

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

Laboration 2 Datorverktyg vid LiU

Objekt-orienterad programmering och design. DIT953 Niklas Broberg, 2018

OOP F1:1. Föreläsning 1. Introduktion till kursen OOP Vad är Java? Ett första Java-program Variabler Tilldelning. Marie Olsson

Hisspresentation av programdesign Projektplan: Kommunikation i teknisk utbildning,

Thomas Padron-Mccarthy Datateknik B, Mobila applikationer med Android, 7.5 hp (Distans) (DT ) Antal svarande = 18

Kurs-PM HI2011, Programutveckling i funktionella och objektorienterande spra k, P3 VT17

Laboration i datateknik

Mina listor. En Android-applikation. Rickard Karlsson Rickard Karlsson - rk222cu Linnéuniversitet rk222cu@student.lnu.

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Objektorienterad analys och design

TDP003 Projekt: Egna datormiljön

DD2385 Programutvecklingsteknik Några bilder till föreläsning 1 24/ Kursöversikt Javarepetition/Javaintroduktion

Kursrapport Datorlingvistisk grammatik (första skiss)

Poäng. Start v. Applikationsprogramm ering i Python 7.5. Antal registrerade (män/kvinnor) 50 (34/16)

Transkript:

Drakborgen - Tips och rekommendationer Av Per Hamrin, IT05 Abstract Utbildningen inom programmering är under förändring på Uppsala Universitet. Ett av kursmomenten består av att designa och implementera brädspelet Drakborgen. Rapportens avsikt är att ge information, rekommendationer och åsikter utifrån min roll som utvecklare, handledare och student på det gamla programmet. I. Inledning Tidigare har studenterna på Uppsala Universitet både fått bekanta sig med java och objektorientering inom samma kurs. I den nya kursen så kommer studenterna redan ha läst en kurs där de använder java och har gått igenom grunderna inom programmering, och betraktas vara tillräckligt vana vid java för att designa och genomföra en implementation av Drakborgen. Under sommaren 2008 jobbade jag med att ta fram en implementation av Drakborgen med grundläggande funktionalitet. Under följande hösttermin var jag handledare i den gamla kursen för objektorienterad design & programmering. Under den tiden var min uppgift att skriva en uppgiftsspecifikation samt att assistera 4 studenter med att designa och implementera Drakborgen istället för den vanliga uppgiften som ges under kursen. II. Beskrivning av spelet Brädspelet Drakborgen släpptes av ALGA 1985 och expanderades senare med extramateriel. Spelet är för 1-4 spelare. Spelbrädet har ett rutnät där brickor läggs ut. Brickorna representerar en labyrint och läggs ut allt eftersom spelare rör sig på spelplanen. I början av varje drag väljer spelaren om han vill flytta sig, söka i det rum han står i efter skatter eller använda en förmåga. Resten av draget kommer vara en reaktion på hur labyrinten ser ut och vad spelaren drar för kort. Spelet går förenklat ut på att samla på sig så mycket skatter som möjligt i labyrinten och ta sig ut innan speltiden tar slut med livet och skatterna i behåll. III. Tillvägagångssätt Under HT08 gjordes en utvecklings- och provomgång där jag agerade handledare åt fyra studenter som var intresserade av att prova att göra spelet istället för den vanliga inlämningsuppgiften. Jag utformade uppgiften löpande under terminen och såg till att studenterna hade ett mål att jobba mot. Arbetet delades upp i två faser och begränsningar sattes för hur stor del av olika fällor, monster och andra spelegenskaper som skulle innefattas av uppgiften. Design: Under designfasen hade vi möten 1-2 ggr i veckan, då vi diskuterade spelet, koncept runt objektorienterad design, så som designpatterns och design by contract och hur det kommer påverka studenternas jobb. Studenterna fick som uppgift att ta fram ett heltäckande klassdiagram över hela programmet och under ett av mötena hade vi som huvuddiskussion att rita upp ett interaktionsdiagram över hur de olika klasserna interagerar med varandra och på så sätt hitta luckor i interfacen. Stor vikt lades vid att hålla rena interface mellan klasserna och se till att inga överflödiga kontaktpunkter fanns. Ungefär halva kurstiden gick åt denna fas och studenterna fick inte skriva någon kod under denna fas. Implementering: Under programmeringsfasen skulle drakborgen implementeras efter studenternas design. Detta gick mycket bra och mycket få möten hölls under denna fas. Under mötena hade studenterna lätt att dela upp arbetet mellan sig. Studenterna skrev sina delar av programmet utan att konflikter uppstod när de sedan sammanförde de olika delarna. En stor anledning till att implementeringsfasen gick bra berodde på att studenterna var mycket väl insatta och engagerade i uppgiften, vilket jag tyder

som en konsekvens av att de själva varit så insatta i designarbetet. Även användandet av versionshantering har spelat roll i att arbetet gått bra. Resultat: Efter deadline finns ett körbart spel som följer studenternas design väl, har väldigt få buggar och koden är i bra skick vad gäller dokumentation och struktur. Innehållet är relativt begränsat till en eller ett fåtal typer av monster, fällor, skatter etc. Detta var enligt planen. tänka när jag ska lägga ut brickorna på planen etc. 3. Uppgiftsbeskrivningen är viktig Ge studenterna en komplett uppgiftsbeskrivning så tidigt som möjligt. Motivering: Eftersom uppgiften framarbetades parallellt med att studenterna utförde uppgifterna så fanns ej en fullständig uppgiftsplan att tillgå. Eftersom drakborgen är spel med många regler och specialfall, se till att verkligen specificera vad som ska och vad som inte ska implementeras. De saker som ej hann bli klara i tid finns med i designen men hann ej bli implementerade. Brister: Den slutliga inlämnade koden blev inte helt färdigställd p.g.a. vaga krav från mig som handledare samt andra faktorer så som tidsbrist och tentaperiod mm. Det som ej blev implementerat var: Genomsökning av rum En fullständigt fungerande skattkammare med skatter och en drake. IV. Slutsatser och Rekommendationer Nedan följen en lista med tips och rekommendationer från min sida: 1. Spela spelet Låt studenter spela spelet så snart som möjligt, helst första dagen och tillsammans med någon/ några som spelat det förut. Motivering: Drakborgens regelbok är stor och förvirrande och allt verkar väldigt skrämmande i början av en sådan uppgift. Att spela tillsammans med någon mer erfaren spelare rekommenderas starkt eftersom de då kan få information löpande tillsammans med tips på hur man kan jobba med de olika elementen. 2. Tillgång till spelet samt regler Låt studenterna ha tillgång till spelet om möjligt. Motivering: Det finns många olika brickor, regler och specialfall som underlättas om man kan se det framför sig, t.ex. Hur blir det om man står X och vill gå Y men det är en vägg där?, Hur ska jag 4. Versionshantering Se till att studenterna får tillgång till SVN/CVS samt att de har kunskap om hur den används i god tid innan kodningsarbetet startar. En inledande laboration där grundläggande versionshantering introduceras. Bra punkter att ta upp är hur man använder sig av diff, för att se vad som ändrats och skillnader mellan checkout och update är värt att ta upp. Motivering: Kunskapen om versionshantering varierar ofta och problem kan enkelt avvärjas om studenter fått bekanta sig med det innan. Bra gratis alternativ för studenter är t.ex. googlecode (http://code.google.com/) eller BeansTalkApp (http://beanstalkapp.com/). Det underlättar att använda versionshantering om studenterna växelvis jobbar hemifrån eller från laptops eftersom de då inte behöver ha manuell koll på vilken fil som innehåller de senaste ändringarna och kan utnyttja verktyget för att få hjälp med integration mellan revisioner. 5. Verktyg Tipsa tidigt om vilka program de kan använda i olika syften: Motivering: Det underlättar ifall studenterna har något program att modullera UML i, istället för att skissa för hand. Detta gäller även program för kodning.

Programtips: UML: Visual Paradigm har en bra programsuit där man ladda hem och använda en community edition där bl.a. en bra UML editor ingår. Denna användes under höstterminens kurs och studenterna var mycket nöjda med funktionaliteten. Kodning: Beroende på vilken plattform studenterna använder så finns olika verktyg att använda. Självklart finns även emacs till alla plattformar. Windows: Personligen skulle jag rekommendera notepad++ (gratis) över eclipse/netbeans ifall studenterna inte har tidigare erfarenheter av IDE'er, vilka ibland kan vara svåranvända om användaren inte är bekant med miljön. OS X: TextMate (ej free-ware) har många bra egenskaper för en editor. Smultron är en bra editor med syntaxhighlighting etc. även här rekommenderar jag editor över IDE'er. *NIX: En trevlig editor till linux är Geany, som utöver editor med syntax hightlighting ger möjlighet till terminal i editorn samt har ett antal bra plugins. Övrigt Jag har läst om ett program vid namn BlueJ i en rad artiklar som behandlar utlärning av objektorienterad programmering som antagligen är ett bra verktyg, då jag vet att det används i andra kurser på institutionen. Jag saknar egen erfarenhet av programmet men klassdiagrammet kommer gratis när man skapar klasser, det går att köra metoder utan att skapa en main metod etc. SVN klienter: OSX+*NIX: Terminalen är det jag föredrar då den är enkel att använda. Win: TortoiseSVN är lättskött och fungerar bra. Rekommenderas. Om eclipse används så finns även en SVNplugin. 6. Gruppstorlek Genomför ej projektet i helklass. Motivering: Ju fler kockar desto sämre soppa, eftersom uppgiften i huvudsak ett designproblem så kommer diskussioner och möten vara nyckelfaktorer i att få projektet att fungera. Detta fungerade mycket bra med en grupp på 4 personer + mig som handledare. Då jag pratat med studenterna från HT08 tror de inte att det skulle fungera att hålla uppgiften som helklass eller ens halvklass uppgift. Rekommenderad gruppstorlek är 4-8 personer. Ett förslag på hur det skulle kunna fungera i helklass är att ha mindre grupper (2-4 personer) under designfasen som sedan slås ihop 2 och 2 till implementationsfasen så att en större grupp kan implementera en gemensam lösning. Med en större grupp under implementationsfasen kan man sätta färre begränsningar på spelet. Problem med små grupper: Att få tag på ett antal spel för alla grupper samt att kunna handleda dem. 7. Kunskap om objektorientering Diskutera OOP principer och hur de tillämpas i detta fall redan under designfasen eftersom det är då studenterna planerar och har lättare att anpassa sin plan innan den skrivs i kod. Motivering: Nu har studenterna äntligen chans att se en poäng med mycket av den teori de har läst. Försök gärna hitta exempel på när olika patterns t.ex. factory och singleton kan användas i designen. 8. Interaktionsschema Använd en deluppgift eller ett möte till att reda ut hur alla deras klasser interagerar med varandra. Motivering: Det är enklare att upptäcka luckor i klasslogiken genom att reda ut vad som egentligen sker när man går runt i labyrinten, slåss och drar kort. Vilka av metoder som specificerats i klassdiagrammen anropas och vilka argument skulle användas. Dessa fel är svåra och jobbiga att rätta till när spelet lämnat designstadiet och om man endast designar alla klasser utan att testa funktionaliteten.

9. Specificera begränsningar Ge studenterna gärna begränsningar i vad som ska utföras. Motivering: Det finns många specialfall i drakborgen. Begränsa gärna mängden sådan som ska implementeras så att t.ex. inte 8 olika sorters fällor som i princip gör samma sak(ofta skadar eller dödar spelaren) implementeras innan en spelare kan gå, slåss och dra kort. Jag bifogar två versioner av manualen. En ren version och en kryssad version där jag tagit bort många delar. 10. Uppmuntra testkod och testning av kod. Motivering: Uppmuntra studenter att skriva dumma testfall för att testa små kod-snippets som de inte är säkra på hur den fungerar. Ex. Hur fungerar det egentligen med listor, jag skriver en klass ListTest.java där jag testar bl.a. om man kan ta bort huvudet på en lista. Även om mycket går att läsa i API och liknande så blir man sällan så säker på något som när man testar själv. innebär att man inte kan generera någon javadoc. En javadoc är till god hjälp när en handledare ska förstå koden samt bra för studenterna själva. 14. Tänk efter hur mycket kod studenterna ska få från början. Eftersom studenternas design kan skilja sig rätt mycket i namngivning och funktion från den kod jag skickar med som bilaga så riskerar en allt för strukturerad ifyllnadsövning att minska studenternas engagemang och göra det svårare för dem. Målet med designfasen bör vara en komplett design med hög detaljnivå som bör vara så tydlig att studenterna inte har svårt att implementera den till körbar kod. Enligt mina erfarenheter så gick implementationen mycket bättre för mina studenter än för mig i någon tidigare kurs som jag läst. Studenterna verkade mycket nöjda med sin insats och har blivit mer motiverade att implementera sina idéer och lära sig mer om OOD principer 11. Använd paket Motivering: Drakborgen innehåller många saker som blir egna klasser. Det blir omöjligt att ha allt detta i defaultpaketet vilket innebär en mapp på som alla filer ligger i. Hänvisa även till god OOD sed. Detta sammanfattar i mångt och mycket de tips jag kan konkretisera utifrån mina erfarenheter både som implementatör utan handledning (sommarjobb -08) och som labbhandledare. 12. Kompilera inte till samma mapp som källfilerna Motivering: Av samma anledning som ovan kan det vara bra att hålla.class skilda från.java filer. görs mha javac -d målmap t.ex:../build målfil t.ex: Drakborgen.java Detta kompilerar Drakborgen.java och allt som den anropar till en systermapp. Kan vara bra om man t.ex. har filhierarki med en mapp build och en mapp source brevid varandra. 13. Javadoc Upplys om hur javadoc kommentarer skrivs samt hur en javadoc genereras utifrån.java filerna. Motivering: Mina studenter har skrivit kommentarer om hur alla funktioner fungerar men de har använt felaktig syntax för javadoc vilket

V. Bilagor 1. Min kod, designad av mig som för grund för test HT08. Tanken var initialt att studenter skulle få bitar av koden, men i slutändan så hade begränsat mer än hjälpt dem. Många klasser kan göras om till fylla i övningar av varierande svårighetsgrad. Just nu är min kod inte körbar p.g.a. pågående förändringar för att integrera min implementation med HT08 studenternas design för att kunna ge dem bitar av koden. Detta projekt avstyrdes efter ett tag med motivationen att det helt enkelt inte hade varit så givande och jag lät dem börja utan någon kod alls. 2. Den kod som producerats av Studenterna. Körbar men med brister som listas i översiktskapitlet. 3. Studenternas UML diagram 4. Inscannade manualer både med och utan överkryssade rekommendationer 5. Spreadsheet med data om monster och deras hp, skada mm. 6. Den enkät jag designade och bad HT08 studentera besvara som en egen utvärdering av uppgiften. 7. Liten guide hur man använder och installerar SVN i windows. 8. Möteslogg med kommentarer. 9. Inluppsförslag.