stödverktygföretteffektivarelärandeav pathfinding-algoritmer.1.0 inledning 1 inledning 1.1...

43
Teknik och samhälle Datavetenskap Examensarbete 15 högskolepoäng, grundnivå Stödverktyg för ett effektivare lärande av pathfinding-algoritmer. Educational application for a more effective approach to learn pathfinding algorithms. Sivervik Emil Svensson Staffan Examen: (Kandidatexamen 180 hp) Huvudområde: (Datavetenskap) Program: (Spelutveckling) Handledare: Steve Dahlskog

Upload: others

Post on 29-Jan-2021

3 views

Category:

Documents


0 download

TRANSCRIPT

  • Teknik och samhälleDatavetenskap

    Examensarbete15 högskolepoäng, grundnivå

    Stödverktyg för ett effektivare lärande avpathfinding-algoritmer.

    Educational application for a more effective approach to learn pathfindingalgorithms.

    Sivervik EmilSvensson Staffan

    Examen: (Kandidatexamen 180 hp)Huvudområde: (Datavetenskap)Program: (Spelutveckling)

    Handledare: Steve Dahlskog

  • Sammanfattning

    Effektiva lärosätt för algoritmer är inte alltid det enklaste att hitta. Algoritmer somanvänds inom området för artificiell intelligens kan ofta vara svåra att förstå och ta långtid att lära sig.

    Uppsatsen handlar om hur det kan vara möjligt att effektivisera lärandet av pathfinding-algoritmer genom att använda ett visuellt stödverktyg. Lärometoden som uppsatsen an-vänder sig av är att genom en kombinationen av självimplementation och visualisering avpathfinding-algoritmer kunna öka effekten av dessa algoritmer. Användaren ges möjlig-heten att implementera fyra grundläggande pathfinding-algoritmer men även möjlighetatt konstruera och implementera sina egna algoritmer.

    Studien som utförts i uppsatsen syftar åt att visa att det kan bli lättare att förståpathfinding-algoritmer visuellt jämfört med till exempel med penna och papper, där dessaalgoritmer ritas ut steg för steg. Studiens resultat visar att ett effektivare lärande kanuppnås om det finns en applikation tillgänglig som ger användaren ett visuellt stöd påhur en pathfinding-algoritm arbetar.

  • Abstract

    Effective ways of learning algorithms is not always easy to come by, especially withincomputer science. Algorithms used in the field of artificial intelligence can often be verydifficult to understand and may require a lot of effort to learn.

    This thesis tries to cover the possibility of streamlining the learning process of pathfin-ding algorithms by supporting the learning process with visual aid. The learning methodthat this thesis uses is a practical approach of learning pathfinding algorithms followedby visualization of said algorithms. The user is given the opportunity to implement fourbasic pathfinding algorithms including the possibility to construct and test their own.

    An application has been developed to facilitate the possibility of visualizing thesealgorithms. The study carried out in this thesis shows that it may be easier to understandpathfinding algorithms visually than with pen and paper where the user has to write thealgorithms searchpattern step by step.

    The research performed in this thesis demonstrate that it would provide a moreeffective learning process if the user has access to an application that visually shows howa pathfinding algorithm works.

  • Lovord

    Vi skulle vilja tacka vår handlerare Steve Dahlskog för all hjälp vi fått under den tid somuppsatsen skrevs. Tack vare Steve har vi lärt oss hur strukturen av en uppsats bordevara och vad man ska tänka på när man skriver akademiskt.

  • Innehåll

    1 Inledning 11.1 Bakgrund . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

    1.1.1 Dijkstras algoritm . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.1.2 A* (A-stjärna) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.1.3 Bredden-först . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.1.4 Djupet-först . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

    1.2 Problemdiskussion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.3 Syfte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.4 Avgränsningar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.5 Frågeställning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.6 Tidigare forskning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

    2 Metod 82.1 Litteraturstudie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.2 Design research . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102.3 Användartest och muntlig dialog . . . . . . . . . . . . . . . . . . . . . . . 102.4 Enkätundersökning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112.5 Metoddiskussion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

    3 Implementation 143.1 Applikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

    3.1.1 .NET Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143.1.2 Programmeringsspråk . . . . . . . . . . . . . . . . . . . . . . . . . 14

    3.2 Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

    4 Resultat 174.1 Resultaten från enkätsvaren av första och tredjeårs studenter . . . . . . . 18

    4.1.1 Algoritmkunskap . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184.1.2 Visualisering av algoritmer . . . . . . . . . . . . . . . . . . . . . . 184.1.3 Tankar om användargränssnittet . . . . . . . . . . . . . . . . . . . 194.1.4 Källkoden i Applikationen . . . . . . . . . . . . . . . . . . . . . . . 194.1.5 Implementation av kod . . . . . . . . . . . . . . . . . . . . . . . . . 204.1.6 Visuellt kontra traditionellt . . . . . . . . . . . . . . . . . . . . . . 20

    5 Analys 215.1 Utvärdering 1, Testresultat från tredjeårsstudenter . . . . . . . . . . . . . 21

    5.1.1 Algoritmkunskap . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215.1.2 Visualisering av algoritmer . . . . . . . . . . . . . . . . . . . . . . 215.1.3 Tankar om användargränssnittet . . . . . . . . . . . . . . . . . . . 215.1.4 Källkoden i Applikationen . . . . . . . . . . . . . . . . . . . . . . . 215.1.5 Implementation av kod . . . . . . . . . . . . . . . . . . . . . . . . . 225.1.6 Visuellt kontra traditionellt . . . . . . . . . . . . . . . . . . . . . . 22

  • 5.2 Utvärdering 2, Testresultat av förstaårsstudenter . . . . . . . . . . . . . . 235.2.1 Algoritmkunskap . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235.2.2 Visualisering av algoritmer . . . . . . . . . . . . . . . . . . . . . . 235.2.3 Tankar om användargränssnittet . . . . . . . . . . . . . . . . . . . 235.2.4 Källkoden i Applikationen . . . . . . . . . . . . . . . . . . . . . . . 235.2.5 Implementation av kod . . . . . . . . . . . . . . . . . . . . . . . . . 245.2.6 Visuellt kontra traditionellt . . . . . . . . . . . . . . . . . . . . . . 24

    5.3 Jämförelse av utvärderingarna . . . . . . . . . . . . . . . . . . . . . . . . . 245.4 Muntlig dialog . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

    6 Diskussion 26

    7 Slutsats och vidare forskning 27

    Referenser 28

    A Ordlista 31

    B Enkät 33

  • 1.0 Inledning

    1 Inledning

    1.1 Bakgrund

    Algoritmer är ett välkänt begrepp inom ämnena matematik och datavetenskap. Algo-ritmer används till att lösa problem på effektivast tid. Cormen et al. [7] definierar enalgoritm i boken Introduction to Algorithms på följande sätt:

    “Informally, an algorithm is any well-defined computational procedure thattakes some value, or set of values, as input and produces some value, or setof values, as output. An algorithm is thus a sequence of computational stepsthat transforms the input into the output.”

    Ett av de stora användningsområdena som algoritmer används inom är AI (ArtificiellIntelligens). Russel och Norvig beskriver att begreppet AI är programvaror som simulerarett system som tänker och agerar som en människan samt tänker och agerar rationellt.

    Inom AI finns det ett begrepp som heter agent, detta beskriver Russel och Nor-vig [26] som följande:

    “Acting rationally means acting so as to achieve one’s goals, give one’s beliefs.An agent is just something that perceives and acts.”

    Genom en kombination av algoritmer och AI så blir det en AI-agent. Begreppet AI-agent är något som används inom spelindustrin för att kunna beskriva en simulation avnågot med människolikt beteende som styrs av datorn. För att AI-agenten skall kunnaorientera sig omkring i spelvärlden så används en navigationsteknik som generellt kallaspathfindingöch kan implementeras på olika sätt beroende på själva spelet . För en be-skrivning av pathfinding så citeras Graham [13] från artikeln Pathfinding in ComputerGames:

    “Pathfinding strategies are usually employed as the core of any AI movementsystem. Pathfinding strategies have the responsibility of finding a path fromany coordinate in the game world to another. Systems such as this take in astarting point and a destination; they then find a series of points that togethercomprise a path to the destination.”

    Ett scenario är att en AI-agent skall hitta från punkt A till B, då behöver den användasig av en pathfinding-algoritm för att kunna navigera sig fram igenom spelvärlden utanatt fastna i eventuella objekt som finns ivägen.

    1

  • 1.1 Bakgrund

    De fyra vanligaste pathfinding-algoritmerna som används inom spelindustrin i nulägetär Dijkstras algoritm, A* (A stjärna), Bredden-först och Djupet-först. Dessa algoritmeranvänder sig av grafer för att hitta den kortaste vägen. En graf kan beskrivas som ettantal noder som sitter ihop med bågar.

    Om nod A och nod B sitter ihop med hjälp av båge F så är A en närliggande nodtill B. Bågar kan också ha närliggande bågar, till exempel då båge J och K utgår frånsamma nod C [14].

    Figur 1: Överblick av en graf.

    1.1.1 Dijkstras algoritm

    En av de vanligare pathfinding-algoritmerna är Dijkstars algoritm, som används för atthitta den kortaste vägen med den billigaste nodkostnaden från en given startnod till allaandra noder i grafen. Algoritmen fungerar bäst då den används på en viktad graf, därkostnaden att gå från en nod till en annan är olika beroende på vilken nod som sökningenbefinner sig i.

    Algoritmen börjar sökningen genom att utgå från startnoden för att söka igenom allabågar från denna (höger om, vänster om, upp, ner och de olika diagonala grenarna) föratt sedan förflytta sig till den nod som har lägst kostnad. Därefter utförs samma sökningutifrån den nya noden och den föregående noden markeras som besökt, detta görs föratt lättare kunna följa vilken nod som sökningen använder sig av för att beräkna nästasökning.

    När sökningen till slut når en vald slutnod så är den kortaste vägen de noder som ärmarkerade som besökta. Under sökningen så adderas vikterna på de besökta noderna tillen separat variabel som gör det möjligt att få reda på den totala kostnaden att gå frånstartnod till slutnod [9].

    2

  • 1.1 Bakgrund

    1.1.2 A* (A-stjärna)

    Algoritmen A* är en algoritm som oftast används för pathfinding på grund av att den ärväldigt flexibel och kan användas till flera olika saker, till exempel att vägleda AI-agenteri spel.

    A* är lik de flesta sökalgoritmerna då den kan söka stora områden snabbt. A* ärväldigt lik Dijkstras algoritm för att hitta den kortaste vägen. A* använder sig, tillskillnad från Dijkstras algoritm, även av en heuristisk formel som hjälper algoritmen attuppfatta avståndet från en punkt A till en punkt B genom att varje nod får ett värdebaserat på denna heuristiska formel. För att beräkna detta värde används formeln:

    F = G+H

    F är värdet som beräknas under sökningen och den nod med lägst värde på F är denkortaste vägen från en nod till en annan. G är kostnaden för att förflytta sig till en specifiknod från en annan och H är vår heuristiska formel som uppfattar avståndet mellan Aoch B.

    När algoritmen har sökt färdigt och stannat vid slutnoden så har den hittat denkortaste möjliga vägen. Då går algoritmen baklänges från stopp- till startnoden för attvisa den kortaste vägen beroende på värdena på F för varje nod som beräknades undersökningen [17, 6].

    1.1.3 Bredden-först

    Bedden-först är en algoritm som är minimalistisk och används främst för att undersökaantalet noder som befinner sig i ett binärt sökträd. Anledningen till att algoritmen ärminimalistisk beror på att den enbart utgår från två olika operationer:

    • Få information om en nod i en graf.

    • Få tillgång till nodens grannar (barn).

    Algoritmen utgår ifrån en startnod som kallas roten. Rot-noden inspekteras och gerinformation om grannarna har varit besökta förut eller inte. Om grannarna inte varitbesökta så placeras de i en kö för användning under nästa iteration.

    När nästa iteration körs så blir grannen som är först i kön algoritmens nästa utgångs-punkt och på samma sätt som för rot-noden så kontrolleras det om denna nods grannarhar varit besökta eller inte. Denna metod repeteras tills sökalgoritmen har besökt allanoder i grafen minst en gång [20].

    3

  • 1.2 Problemdiskussion

    1.1.4 Djupet-först

    Djupet-först är en algoritm som vanligtvis används för att lösa lättare problem som barahar en lösning, såsom labyrinter, men kan även användas för att generera labyrinterautomatiskt. Djupet-först-sökning är lik bredden-först i att den är minimalistisk menistället för att kolla noderna efterhand som de kommer går algoritmen istället ner tillden sista grenen i det binära sökträdet och går sedan tillbaka ett steg och kollar denföregående grenen. Efter detta repeteras detta till sökningen är klar, denna metod brukarkallas backtracking. Beroende på implementation så kommer sökningen att gå till högerbåge först eller vänster båge först [28, 23].

    1.2 Problemdiskussion

    På senare tid har utvecklingen av spel-AI eskalerat då hårdvaran till datorer har kom-mit såpass långt fram i utvecklingen att GPUn (Graphics Processing Unit) kan hanteraalla grafiska beräkningar och att CPUn (Central Processing Unit) inte längre behöveranvändas till detta [22]. Det medför att CPUn kan användas till annat, såsom att skötaberäkningarna av AI och då främst AI-agenter. Detta i sin tur har lett till att utveck-lingen och förståelsen inom AI har fått mera fokus. För att effektivare kunna lära ut hurAI fungerar så måste även lärandet av algoritmer effektiviseras.

    Lärometoden för att lära sig algoritmer är uppdelad i två delar. Den teoretiska delenoch den praktiska delen (där teorin implementeras). Den teoretiska delen går till på olikasätt beroende på hur användaren lättast lär sig. Det vanligaste och mest traditionellaär att läsa sig till kunskapen, till detta finns en hel uppsjö med böcker som går igenomalgoritmer och vanligtvis under en AI-kurs brukar det rekommenderas en bok. Sökalgo-ritmerna som beskrivs tidigare i uppsatsen är ett exempel på hur det teoretiska lärandetkan gå till. Lärandet kan även ske visuellt genom att stegvis se på bilder eller se påvideoklipp. En bra kombination är att använda sig utav båda sätten, genom att först attläsa sig till kunskapen sedan se videoklipp för att komplettera kunskapen.

    Den praktiska delen går ut på att använda de teoretiska kunskaperna i någon praktiskform, så som att rita upp på papper för att stegvis kunna förstå, eller att skapa etttestprogram och sedan stegvis gå igenom alla iterationer som görs när programmet körs.

    En applikation med ny infallsvinkel bör utvecklas, en applikation som har för av-sikt att göra användaren delaktig i implementationen av algoritmerna. Det visuella haren viktig roll för att kunna se resultat lättare, men det är inte lika viktigt som att fåstudenten aktiv i utvecklandet. Applikationen bör därmed ha ett färdigt grafiskt använ-dargränssnitt som har de mest grundläggande funktionerna och endast saknar koden föratt algoritmerna skall fungera. Användaren får då implementera koden för algoritmernasjälv, vilket bör leda till en djupare förståelse och till ett effektivare lärande.

    4

  • 1.3 Syfte

    1.3 Syfte

    Syftet med undersökningen var att försöka förbättra och effektivisera inlärningsproces-sen av pathfinding-algoritmer genom att ge användaren en visuell bild på hur algoritmenarbetar. Till detta skapades en applikation främst riktat mot studenter med inriktningspelutveckling. För att få algoritmen att fungera visuellt så måste användaren själv imple-mentera algoritmen, detta medför att användaren även är tvungen att förstå algoritmenteoretiskt vilket medför ett djupare lärande.

    1.4 Avgränsningar

    Studien har för avsikt att effektivisera lärandet av pathfinding-algoritmer. För att inteanvända alla algoritmer som finns inom AI så var det vissa begränsningar som var tvungnaatt göras. Uppsatsen har inte för avseende att granska alla de olika typerna av AI somfinns, utan endast algoritmer som är relevanta för pathfinding. Det finns inte heller någonjämförelse mellan algoritmerna, exempelvis vilken som lämpar sig bäst för att kunna sökakortaste vägen.

    1.5 Frågeställning

    Frågan som skall besvaras i denna uppsats:

    • Går det att effektivisera lärandet av Pathfinding-algoritmer med hjälp av ett stöd-verktyg?

    Hypotesen för att kunna besvara frågan lyder: En applikation för att kunna visualliserapathfinding-algoritmer skulle öka förståelsen för hur dessa algoritmer fungerar och skullegenom självimplementation bidra till ett mer effektivt lärande.

    5

  • 1.6 Tidigare forskning

    Visuellt lärande är ett begrepp som finns inom flera olika forskningsområden, ur en artikelsom Norberg [24] publicerat skriver han:

    “Visual education rests upon the assumption that people learn from what theysee, that visual experience influences behavior, and that instruction can beimproved by enabling people to look at objects and pictures under appropriatecircumstances, and in connection with other varieties of experience.”

    Begreppet visuellt lärande utvecklas ständigt och kommer in mer och mer i flera utbild-ningsområden, i artikeln som McGranth och Brown [21] publicerat så skriver de:

    “Visual thinking, with particular connections to collaborative learning met-hodologies and distance learning or virtual learning environments, is crucialto the future of learning.”

    Utvecklingen av applikationer för att kunna visuallisera algoritmer har funnits sedan deförsta datorerna började projecera bilder, detta är något som fortsatt att utvecklats ochatt det finns än idag inte något generellt verktyg som används till det. Genom åren så hardet utvecklats flera produkter såsom Balsa, Balsa-II, TANGO och Aladin [4, 5, 27, 15]

    Ett verktyg som har kommit på senare tid är AlgoTutor [29]. Verktyget är tänkt atthjälpa nya studenter inom datavetenskap att förstå hur algoritmdesign fungerar och medhjälp av applikationen ges även möjlighet för studenten att skapa sina egna algoritmer.AlgoTutor är ett verktyg som hjälper användaren att skapa algoritmer utan att behövanågra programmeringskunskaper. Användaren bygger algoritmerna genom ett grafisktanvändargränssnitt som ser ut som pseudo-kod. Responsen från studenterna som använ-de AlgoTutor var positiv. Studenterna uppskattade möjligheten att utveckla algoritmerutan att nödvändigtvis kunna programmering själva.

    I en studie som publicerats av Hundhausen et al. [16] så jämförs 24 stycken experi-mentella studier angående visualisering av algoritmer. Syftet med studien är att försökaförmedla fördelarna med att använda sig av AV (Algorithm Visualization) och på så sättuppmuntra till att använda det. I studien togs frågeställningen “Is AV technology effecti-ve?” upp för att se om AV verkligen var värt att använda sig av. Ett av svaren på fråganvar att det visuella inte överför en expertuppfattning på hur algoritmerna går tillväga,utan räknas mera som ett redskap på vägen till förståelse. AV är utmärkt att användasig av vid programmerings-laborationer för att kunna se programmen visuellt och bildasin egen uppfattning, vilket bidrar till ett aktiv lärande. Slutligen så ville skribenternatill studien poängtera att det inte är det visuella som spelar roll, utan det är ett aktivtdeltagande som spelar roll.

    6

  • AIspace (som förut hette CIspace) är en websida där det finns tidigare utvecklade verktygför lärande av AI [1]. Det finns en rad av olika verktyg, varje anpassat för sin speciali-tet. Några av dessa är deduktion, neurala nätverk och graf-sökning. De som utvecklatverktygen gjorde en studie om hur användarna tyckte verktygen fungerade. I studien sompublicerades så gick utvecklarna igenom varför utvecklingen av sådan programvara skulleske, sedan skapades flera mål som produkten skulle uppnå. Genom att sedan användasig av andra frivilliga studenter inom datavetenskap-programmet så framgick det vad iprodukten som var bra och dåligt.

    Ett negativt svar vid testningen var att det ibland fattades grundläggande informationgällande begreppen som finns angående algoritmerna. Detta var inget problem så längeprogramvaran användes med tillhörande litteratur. Resultatet för den pedagogiska bitenvar att penna och papper var lika effektivt som att använda produkten, men studenternatyckte det var roligare att använda produkten och föredrog då helt att använda den [2].

    7

  • 2 Metod

    För att kunna bedöma om ett stödverktyg för visualisering av pathfinding-algoritmerskulle bidra till ett effektivare lärande så granskades följande metoder:

    • Litteraturstudie.

    • Design research.

    • Användartest och muntlig dialog.

    • Enkätundersökning.

    • Interaktionsanalys.

    • Intervju.

    • Experiment.

    Utav dessa metoder så gjordes valet att använda litteraturstudie, design research, an-vändartest, muntlig dialog och en enkätundersökning.

    Litteraturstudie användes som metod för att kunna samla information om tidigareforskning inom det aktuella ämnet samt eventuellt utvecklade likvärdiga applikationer.

    Metoden interaktionsanalys var irrelevant eftersom undersökningen endast hade föravsikt att studera om det är möjligt att effektivisera lärandet av algoritmer, detta dåinteraktionsanalys fokuserar mer på interaktionen mellan människor och föremål [18].

    Utförandet av en intervju valdes bort eftersom de förhållande som eventuellt skulleförekomma under intervjuerna skulle påverka resultatet på ett negativt sätt. Ett exempelär att personen som blir intervjuad inte lyssnar på frågan som ställs och då ger ett vagtsvar [8]. Det valdes istället att ha en muntlig dialog med testpersonen i samband medanvändartestet. Användartest valdes för att kunna se vad olika användare tyckte om ettvisuellt stödverktyg.

    Ett experiment skulle kunna ha utförts genom att göra två användartest, ett test medpersoner som använde stödverktyget och ett test med personer som enbart har en terore-tisk bakgrund, för att sedan jämföra dessa resultat. Beslutet som togs var att inte användaett experiment som metod då det skulle kunna vara svårt att hitta rätt kompetens föratt göra testerna konsekventa. Det valdes istället att använda en enkätundersökning somgjordes efter användartesterna av stödverktyget för att kunna dra en generell slutsats,oberoende av en användares tidigare bakgrund av pathfinding-algoritmer.

    2.1 Litteraturstudie

    En litteraturstudie är en granskning av tidigare publicerat material inom ett ämne. Valetatt använda en litteraturstudie var för att kunna samla in information om ämnet, tillexempel AI, visuellt lärande och design research. Utförandet av en litteraturstudie ökar

    8

  • trovärdigheten då de teorier som beskrivs kommer från tidigare accepterade forsknings-resultat. Detta bidrar till att det blir enklare att besvara frågeställningen då den tidigareforskning som gjorts ger den information som behövs för att dra korrekta slutsatser.

    Litteraturstudien skedde genom att först söka information relaterat till ämnet AI ochsedan utifrån informationen som hittades välja ut det som var relevant till uppsatsenssyfte. Detta gav en bra grund och förståelse för AI som helhet, vilket gav den fördjupningsom behövdes för att kunna utveckla en applikation som skulle kunna göra lärandet avpathfinding-algoritmer effektivare. Litteraturen som användes i uppsatsen hämtades fråndatabaserna; Google Scholar, ACM Digital Library och IEEE Xplore. Dessa databaservaldes för att de innehåller högkvalitativa tekniska rapporter och journaler som var re-levanta för att kunna behandla syftet med uppsatsen. Uppsatsen använde sig även avböckerna Intervjumetodik [19] och Enkäten i praktiken [11] för att få metodkunskap tillden muntliga dialogen och för att kunna skapa en relevant och strukturerad enkät.

    Några av de söktermer som användes i litteraturstudien var: Pathfinding for AI ingames, Articial Intelligence, A* algorithm, Dijkstras algorithm, visual learning, problem-based-learning, better learning methods of pathfinding algoritms, problems with visuallearning.

    Litteraturstudien som använts i uppsatsen skedde genom att läsa olika vetenskapli-ga texters abstract och diskussions- sektioner, för att sedan besluta om artiklarna varrelevanta för frågeställningen. Om en artikeln var relevant gjordes fortsatt sökning omämnet via artikelns egna referenser för att få ytterligare information.

    Böckerna som användes gav en bra struktur vid upplägget av en dialog och en enkät.Varför en litteraturstudie lämpade sig till denna uppsats var för att få kunskap kringtidigare forskning och tidigare utvecklade produkter.

    9

  • 2.2 Design research

    Design research är en metod som används för att beskriva olika tekniker som bidrar till enbättre överblick över en designprocess. Denna process är ofta både iterativ och periodiskför att kunna få en så bra produkt som möjligt. När utseendet av produkten var bestämdså började utvecklingen av en prototyp och när prototypen sedan var färdig så testadesdenna för eventuella brister och problem. Tekniken som uppsatsen använde sig av är enanvändar-baserad designprocess [30] enligt bilden nedan.

    Figur 2: Designprocessen

    För att kunna utveckla en så användarvänlig applikation som möjligt planerades det hurapplikationen skulle se ut för att vara både estetiskt tilltalande och lätt att hantera. Enutvärdering av vilka funktioner som behövdes och vad som skulle uteslutas gjordes föratt applikationens användargränssnitt inte skulle vilseleda användaren. För att kunnaeffektivisera lärandet av algoritmerna valdes det att fokusera på lärosättet problem-based-learning [25], vilket innebär att användaren själv kommer att bedriva lärandetav algoritmerna genom att implementera dem själv.

    Syftet med applikationen är att visuellt visa för användaren hur de olika pathfinding-algoritmernas sökningar går till. Detta görs genom att visualisera sökningarna i ett rutnätoch efter en färdig sökning visa den kortaste vägen. Genom att användaren får tillgångtill applikationens källkod kommer det vara i algoritmklasserna som implementationenav algoritmerna kommer att ske. Anledningen till att användaren själv får implementeraalgoritmerna är för att ge den praktiska tillämpningsmöjligheten som skall öka förståelsenför hur algoritmerna fungerar, vilket på så vis kan bidra till ett djupare lärande.

    Valet att använda metoden design research bidrog till att en lättanvändlig applika-tion kunde utvecklas. Det gav även en bra struktur på upplägget av användartesterna dådet var lättare att inse när applikationen var redo för testning. Forskningfrågan kundebesvaras lättare med användning av design research då det visade sig att en applikationvar nödvändig för att lösa uppsatsens syfte, detta berodde på att det kan vara lättare attvisualisera pathfinding-algoritmer om en applikation används. När applikationsutveck-lingen gått igenom de steg som nämnts ovan inledes testningsfasen.

    2.3 Användartest och muntlig dialog

    Användartestet av applikationen som utvecklats var till för att kunna få en bättre för-ståelse för hur testpersonen upplevde applikationen samt att kunna få eventuell responspå vad som var bra och dåligt med applikationen. En viktig aspekt var att försöka testaprodukten med hjälp av användare som har olika erfarenheter av programmering. Tes-terna var viktiga för att kunna balansera produkten så att alla kan använda den, menfrämst för att se att den inte är för avancerad för studenter som skall lära sig AI.

    10

  • Applikationen var främst riktad till spelutvecklingsstudenter, därav lämpade det sig bästatt ha dessa som urvalsgrupp.

    Vid användartestet fick testpersonen sitta med applikationen för att kunna testa olikasökvägar och för att testa de olika algoritmerna. Tiden som testpersonen satt med appli-kationen varierade från tio till tjugo minuter. Testningen skedde i en datorsal tillägnadendast spelutvecklare, testpersonerna fick sitta vid en och samma dator för att ha sammaförutsättningar.

    En muntlig dialog med testpersonerna utfördes samtidigt som användartestet, dettaför att kunna samla in ytterligare information om hur testpersonen upplevde applikatio-nen och för att hjälpa testpersonen om denne hade några funderingar runt applikationen.En dialog förklarar Bakhtin [3] på följande sätt:

    “Life by its very nature is dialogic. To live means to participate in dialogue:to ask questions, to heed, to respond, to agree, and so forth. In this dialoguea person participates wholly and throughout his whole life: with his eyes, lips,hands, soul, spirit, with his whole body and deeds. He invests his entire selfin discourse, and this discourse enters into the dialogic fabric of human life,into the world symposium.”

    Dialogen påbörjades från och med att testpersonen började använda applikationen ochhöll på fram till att testpersonen gick ifrån datorn. Under testningen så observeradestestpersonen och det var endast denne som tog upp sakerna som diskuterades. Olikanackdelar med att ha en muntlig dialog är att testpersonerna kan bli distraherade vidanvändartestet och på sätt inte kan ge optimal data. Ett annat problem är att denmuntliga dialogen kan vara svår att replikera, anledning till detta är att inga direktfrågor fanns.

    Exempel på olika saker som diskuterades var vad användaren tyckte var bra medapplikationen och vad som kunde förbättras. Flera av testpersonerna tyckte att lärandetbör bli bättre med hjälp av applikationen och att någon med förkunskaper bör kunnaimplementera algoritmer i applikationen.

    Flera förslag på hur applikationen kunde förbättras nämndes även, såsom att kunnavisa hur lång tid en sökning tog, att implementera en funktion för att kunna ta bortväggar (som implementerades till den andra testomgången) och att eventuellt skapafärdiga rutnät som användaren kan välja mellan. Inom den tidsram som uppsatsen hadevaldes flera av de föreslagna förbättringarna bort, då det inte var relevant för att kunnabesvara frågeställningen.

    2.4 Enkätundersökning

    En kvantitativ enkätundersökning genomfördes efter användartestet för att skapa engrund för att kunna besvara frågeställningen och gav även testpersonen en ytterligaremöjligheter att ge förslag till förbättringar på applikationen.

    11

  • Frågorna i enkätundersökningen skapades utifrån två aspekter. Den första aspekten varutifrån ett utvecklingsperspektiv, vad testpersonen tyckte om applikationen, till exempelhur lätt algoritmerna var att implementera. Den andra aspekten var utifrån ett pedago-gisk perspektiv, huruvida testpersonen tyckte att applikationen bidrog till ett effektivarelärande.

    Enkäten bestod av sex frågor (Se Appendix B) där fyra av frågorna hade färdigasvarsalternativ. Genom att använda sig av ett jämnt antal svarsalternativ så undviks detatt testpersonen ger ett neutralt svar, vilket kan leda till att frågeställningen inte kanbesvaras. Resterande två frågor var öppna frågor som testpersonen fick fylla i själv, dettaför att dessa frågor inte gick att besvara med fasta svarsalternativ. Testpersonerna fickenkäten direkt efter de hade använt applikationen för att få en direkt uppfattning omvad testpersonen tyckte om applikationen. Varje enkät gjordes helt individuellt och detfanns ingen anknytning mellan de olika enkäterna.

    Fördelen med en kvantitativ enkätundersökning är att kunna begränsa frågorna tillvad som är relevant för att kunna besvara frågeställningen. Nackdelen med att användaen enkätundersökning med fasta svar är att informationen som samlas in genom under-sökningen är begränsad, anledninging är att testpersonen själv inte kan skriva in egnasvar.

    12

  • 2.5 Metoddiskussion

    Litteraturstudien valde vi som metod för att kunna skapa oss en uppfattning om vilkentidigare forskning som fanns och utifrån det kunna gå vidare med undersökningen. Lit-teraturstudien var väldigt viktig för att kunna se vad för delar som våran applikationskulle innehålla för att kunna få ut så mycket som möjligt av den. Med hjälp av litte-raturstudien så märkte vi att det inte fanns några tidigare studier om ett stödverktyglikt det vi tänkt oss. Det gjorde att vi endast fick information om liknande applikationeroch kunde på så sätt inte göra en fortsatt forskning av tidigare resultat. Vi valde attanvända design research som en metod för att lättare få en överblick över designproces-sen av applikationen, vilket ledde till att vi kunde besvara vår frågeställning med hjälpav att praktiskt kunna visuallisera algoritmsökningen på ett lättförståeligt sätt för etteffektivare lärande.

    Metodvalet tyckte vi var nödvändigt för att inte falla tillbaka på den traditionellainlärningsmetoden att enbart läsa om algoritmerna och dess funktion. Anledningen tillatt vi valde en muntlig dialog med testpersonerna är för att kunna få den sortens responssom det inte går att få på papper, som är testpersonernas spontana reaktioner och tankargällande applikationen. För att kunna besvara vår frågeställning så använde vi oss avanvändartest och enkätundersökning.

    Nu i efterhand inser vi att en testperiod med mer tid eventuellt hade gett oss ettbättre resultat, då det hade varit lättare att kunna jämföra om testpersonerna fått läsapå om algoritmerna innan testningen.

    13

  • 3 Implementation

    3.1 Applikation

    Applikationen är utvecklad i programmet Microsoft Visual Studio 2012. Programmetvaldes för att det är en av de vanligaste utvecklingsmiljöerna som används inom spel-utveckling idag samt att programmet har support för .NET Framework, vilket är opti-malt för applikationen då det kommer använda .NET Framework. Den stora svårighetenmed applikationen var att göra den lättanvänd, därför valdes det att använda program-meringsspråket C#. Anledningen till detta är att om de andra programmeringsspråkenskulle användas så krävs det vanligtvis att användaren installerar tilläggspaket utöverstandardversionen av Visual Studio.

    3.1.1 .NET Framework

    .NET Framework är en komponent som är en del av Windows operativsystem. Ramverkethanterar exekveringen av program som är speciellt utvecklade för det egna ramverket ochdet finns ett stort klassbibliotek för att underlätta utvecklingen. Numera är ramverketinkluderat direkt i Windows när användaren installerar operativsystemet, vilket gör attdet är väldigt smidigt att använda sig av vid utveckling av applikationer som användersig av Windows egna komponenter så som programfönster, knappar och funktioner menäven möjligheten att manipulera XML-dokument och databasinteraktioner.

    3.1.2 Programmeringsspråk

    Programmeringsspråket som applikationen är skriven i är C#. C# valdes för att det ärett lätt språk att implementera på olika datorer då språket är direkt relaterat till .NETFramework [10]. Då applikationen främst är riktad mot studenter inom spelutvecklingvar det bättre att skriva applikationen i C# för att underlätta för studenterna då språketC++ som var planerat från början skapar vissa svårigheter som till exempel länkningar,vilket försvårar för studenten att göra applikationen körbar. En annan fördel med C# äratt språket har en egen garbagecollector vilket gör det lättare för studenter att imple-mentera kod utan att det blir minnesläckor. C# är även ett relativt enkelt språk, vilketgör att användarna får en bättre förståelse hur applikationen fungerar i allmänhet.

    3.2 Design

    Applikationen är byggd med hjälp av .NET Windows Forms vilket är ett API (Appli-cation Programming Interface) som underlättar utvecklingen av ett användargränssnitt.Applikationens källkod är även utformad på ett objektorienterat sätt för att kunna under-lätta för användaren som skall implementera algoritmerna, då detta programeringssättkan göra koden lite lättare att förstå [12].

    Undersökningen och således applikationen har stort fokus på självimplementation,vilket betyder att i de klasser som användaren skall implementera sina egna algoritmermåste vara oberoende av de andra klasserna i applikationen.

    14

  • För att åstadkomma detta används statiska metoder i algoritmklasserna som gör attprogrammet kan köras utan att någon kod är skriven i metoderna. Applikationen äruppbyggd med hjälp av en Windows Forms UserControl som är speciellt utformad förjust denna applikationen, vilket har funktioner som inte ingår i Windows Forms normalt.Det används ävenWindows Forms egna knappar. UserControl-klassen ritar upp ett rutnätvilket är den del som gör det möjligt att visuellt visa de olika sökmetoderna för de olikaalgoritmerna. Anledningen till att Windows Forms egna rutnät med hjälp av PictureBoxinte användes var för att de skapade stora prestandaproblem.

    För att visa rutnätet användes realtidsuppdatering under körning av applikationenbaserat på hur användaren placerar ut start, stop och eventuella väggar. Realtidsuppdate-ring gjordes genom att använda klassen Thread som gav möjligheten att få användarinputunder körning. Denna input används sedan via delegater och events för att uppdaterarutnätet med sökningsförlopp och kortaste vägen från start till stop. Sökningen visas pånoderna (fyrkanterna i rutnätet) i form av en blå rektangel där även kostnaden för attförflytta sig till närliggande noder skrivs ut.

    När sökningen är klar visas den kortaste vägen via orangea noder som markerats imotsatt riktning, det vill säga från stop till start. Applikationen ger även användarenmöjligheten att själv kunna styra uppdateringshastigheten av sökalgoritmen, vilket geren bättre överblick av flödet då det kan saktas ner så att varje nod som sökts igenomlättare går att följa. Användaren får då möjligheten att stegvis följa och se sökningen irealtid.

    Figur 3: Överblick av en färdig sökning med hjälp av Dijkstras algoritm.

    Figur 3 visar en färdig sökväg med hjälp av Dijkstras algoritm, där svarta rutor är väggaroch oranga rutor är den kortaste vägen från start (grön) till stop (röd) rutorna.

    15

  • Det implementerades endast två stycken pathfinding-algoritmer (A* och Dijkstras) i ap-plikationen då dessa ansågs vara mest relevant för att kunna besvara vår frågeställning.Valet att endast använda dessa algoritmer var för att de är svårast att implementera, samtkräver mer förståelse om hur de fungerar teoretiskt kontra bredden-först och djupet-först.Då applikationen stödjer självimplementation av pathfinding-algoritmer kan användarensjälv implementera de andra algoritmerna om det behövs.

    16

  • 4 Resultat

    Vid testningen så deltog totalt 25 personer från spelutvecklingsprogrammet. Testningengjordes i tre iterationer med sex stycken vid första tillfället, sju stycken vid det andra och12 stycken vid det tredje. Vid de två första testiterationerna var det endast testpersonerfrån årskurs tre och vid sista iterationen var det endast testpersoner från årskurs ett. Vidden andra iterationen hade det skett lite förändringar från den föregående iterationenbaserat på förslag av funktioner som skulle göra applikationen bättre. En funktion somändrades var att kunna ta bort väggar. Ändringarna som gjordes i applikationen mellantestiterationerna gav ingen påverkan på testresultaten, då det var funktioner som interelaterade till de frågor som undersöktes. Ett exempel är som nämnts att kunna ta bortväggar vilket gjorde att användaren inte behöver rita om sin labyrint så fort det råkarrita fel.

    Enkäten och den muntliga dialogen bidrog väldigt mycket till att kunna få responspå förbättringar men även funktioner som kan läggas till i efterhand för att få en meranvändarvänlig applikation. Resultaten av enkätundersökningen presenteras i form avstapeldiagram. Valet att visa resultaten i form av stapeldiagram gjordes för att det geren bättre överblick av vilka svarsresultat som har störst andel av testpersonerna.

    17

  • 4.1 Resultaten från enkätsvaren av första och tredjeårs studenter

    Varje resultat presenteras med hjälp av två stapeldiagram, det vänstra diagrammet kom-mer att visa resultat för tredjeårsstudenter och den högra för förstaårsstudenter.

    4.1.1 Algoritmkunskap

    (a) tredjeårsstudenter (b) förstaårsstudenter

    Figur 4: Stapeldiagrammen visar resultaten av den första enkätfrågan. Angett i antalpersoner.

    Figur 4 visar resultaten på hur väl testpersonernas algoritmkunskap var. Frågan är tillför att kunna se vilken grad av kunskap testpersonerna har gällande algoritmerna.

    4.1.2 Visualisering av algoritmer

    (a) tredjeårsstudenter (b) förstaårsstudenter

    Figur 5: Stapeldiagrammen visar resultaten av den andra enkätfrågan. Angett i antalpersoner.

    Figur 5 visar enkätresultaten på hur väl testpersonerna tyckte att applikationen hjälptedem att förstå visualiseringen av algoritmsökningarna. Denna fråga är viktig för attkunna stödja syftet med applikationen, för att sedan kunna analysera om det blir etteffektivare lärande eller inte.

    18

  • 4.1.3 Tankar om användargränssnittet

    För att kunna se vad testpersonerna tyckte om det grafiska gränssnittet så var fannsfrågan “Tyckte Du att användargränssnittet var lätt att använda sig av? Om inte motiveragärna” med i enkäten. Nedan visas några av de kommentarer som testpersonerna gav,anledningen till att inte alla kommentarer presenteras beror på att de var snarlika svareller svar som inte berörde frågan.

    Tredjeårsstudenters kommentarer:

    • Lätt att förstå.

    • Strukturerat och ordnat.

    • Bra visuell feedback.

    Förstaårsstudenters kommentarer:

    • Lätt att förstå.

    • Väldigt bra och pedagogiskt.

    • Bra användargränssnitt.

    • Svårt att förstå i början.

    • Tyckte startknappen var dåligt placerad.

    4.1.4 Källkoden i Applikationen

    (a) tredjeårsstudenter (b) förstaårsstudenter

    Figur 6: Stapeldiagrammen visar resultaten av den tredje enkätfrågan. Angett i antal personer.

    Figur 6 visar enkätresultaten på huruvida testpersonerna tyckte att den kommenteradekoden i applikationen var lättförståelig. För att kunna förstå hur mycket och hur välkommenterad koden skulle vara för att mindre erfarna programmerare skulle kunna förståkoden så behövdes denna fråga. Detta är för att kunna anpassa applikationen så attpersoner med mindre erfarenhet inte skall känna sig allt för vilse i koden, samtidigt såbör det inte vara för mycket kommentering då det förstör syftet med problem-based-learning.

    19

  • 4.1.5 Implementation av kod

    För att se hur lätt respektive svårt testpersonerna tyckte det gick att implementera kodför algoritmerna så fanns frågan “Tyckte Du det var lätt att implementera koden föralgoritmerna? Motivera gärna” med i enkäten. Frågan är viktig att ha med då imple-menteringen av kod för algoritmerna skall få användaren mer aktiv och på så sätt kunnadriva sitt eget lärande, detta skall i sin tur medföra en effektivare och djupare förståelseav algoritmerna. Vid testtillfället så fanns det endast två algoritmer som nämnts tidigarei uppsatsen.

    4.1.6 Visuellt kontra traditionellt

    (a) tredjeårsstudenter (b) förstaårsstudenter

    Figur 7: Stapeldiagrammen visar resultaten av den sjätte enkätfrågan. Angett i antalpersoner.

    Figur 7 visar enkätresultat på i vilken grad testpersonerna tyckte att applikationen vareffektivare än att rita upp algoritmerna på papper. Frågan bidrar till att kunna få responspå vad användaren tycker om att använda sig av applikationen gentemot att sitta medpenna och papper.

    20

  • 5 Analys

    5.1 Utvärdering 1, Testresultat från tredjeårsstudenter

    Testresultaten från tredgeårsstudenterna analyseras per fråga enligt resultatkapitletsrubriker.

    5.1.1 Algoritmkunskap

    En förklaring till att resultatet fick mera positiv respons än negativ kan vara att deflesta studenterna som varit testpersoner redan har läst kurser inom AI och på så sättredan kan algoritmerna. En annan förklaring kan vara att testpersonen kan två till tre avalgoritmerna bra och den sista sämre, detta kan leda till att testpersonen väger resultatenoch då väljer det positivare svarsresultatet.

    5.1.2 Visualisering av algoritmer

    Resultatet visar att tredjeårsstudenterna tyckte att applikationen hjälpte dem att för-stå hur algoritmerna fungerade. Detta tyder på att en applikation som visualiserar huralgoritmerna fungerar kan bidra till ett snabbare och mer effektiv lärande. Det som skul-le kunna påverkat resultatet är som tidigare nämnt att testpersonerna från årskurs treredan har läst kurser inom ämnet AI.

    5.1.3 Tankar om användargränssnittet

    Responsen gällande användargränssnittet var mycket positiv och gav möjligheten attgöra flera förbättringar. En av förbättringarna som nämnts tidigare i resultatkapitlet ärförslaget om att kunna ta bort väggar, detta bidrog till att applikationen blev lättare attanvända och att användaren slipper rensa rutnätet varje gång det blir fel. Anledningen tillatt det blev mycket positiv respons kan bero på att de flesta grundläggande funktionernaredan fanns implementerade för att applikationen skulle gå att använda. Detta behöverinte betyda att applikationen inte kan förbättras, utan att den fungerar som den är föratt kunna besvara frågeställningen.

    5.1.4 Källkoden i Applikationen

    Anledningen till att majoriteten av responsen hamnade på svarsalternativ “Lätt” kan varaför att testpersonerna har bred erfarenhet inom programmering och kan på så sätt sättasig in i koden lättare. Anledningen till att det inte är någon som har svarat “Mycket lätt”tyder på att applikationens kommentering är inom en rimlig nivå.

    21

  • 5.1.5 Implementation av kod

    Anledningen till att testpersonerna tyckte det var svårt att implementera algoritmernakan bero på att det var första gången som applikationen testades och på så sätt behövdeförbättras för att få optimalt resultat. Det kan även vara så som en av testpersonernauppmärksammat att de skulle behöva mera tid för att kunna sätta sig in i applikationen.

    5.1.6 Visuellt kontra traditionellt

    Resultatet på frågan är mycket positivt och gör det möjligt att kunna verifiera att appli-kationen effektiviserar lärandet av pathfinding-algoritmer. Anledningen till att testper-sonerna har svarat positivt kan ha att göra med att de sparar mycket tid genom att sättasig med applikationen, jämfört med att sätta sig och rita upp algoritmerna för hand.Frågan hade två stycken bortfall, vilket berodde på att testpersonerna inte hade suttitmed penna och papper och testat att visualisera algoritmer på detta vis.

    22

  • 5.2 Utvärdering 2, Testresultat av förstaårsstudenter

    Testresultaten från förstaårsstudenterna analyseras per fråga enligt resultatkapitletsrubriker.

    5.2.1 Algoritmkunskap

    Anledningen till att resultatet visar på dålig kunskap beror på att förstaårsstudenternahar ännu inte studerat AI, samt inte använt sig av pathfinding algoritmer tidigare. Test-personer med denna erfarenhet bör vara idealt för att testa vår applikation, vilket bidrartill att frågeställningen får ett mer trovärdigt resultat.

    5.2.2 Visualisering av algoritmer

    Resultatet visar att applikationen hjälpte testpersonerna att få en bättre överblick avhur de olika algoritmerna fungerar. Detta tyder på att personer som inte studerat någonAI-kurs kan använda applikationen.

    5.2.3 Tankar om användargränssnittet

    Responsen var både negativ och positiv, en testperson tyckte att applikationen var svåratt förstå i början vilket kan leda till att det kan implementeras en hjälpfunktion somförklarar hur applikationen fungerar. En av förbättringarna som föreslogs var att om-placera start- och stop knapparna då placeringen var missledande, en omplacering avknapparna kan göra att applikationen blir lite mer användarvänlig. Anledningen till attdet blev mera positiv respons än negativ kan vara för att applikationen är simpel och detbehövs inte mycket kunskap om hur den fungerar för att kunna använda den effektivt.

    5.2.4 Källkoden i Applikationen

    Anledningen till att många testpersoner tyckte att koden var svårt att förstå beror nogpå att de är nya inom ämnet programmering vilket kan leda till att det kan vara svårtatt förstå inom den tidsram som testningen utfördes på. Stapeldiagrammet visar ocksåatt förstaårsstudenterna har väldigt spridd kunskap gällande programmering som helhet.Resutaten är svåra att bedöma då det är så stor spridning, vilket gör det svårt att avgöraom koden är för lätt eller för svårt kommenterad. Det skulle behövas mera testning föratt kunna göra en slutgiltligt bedömning.

    23

  • 5.2.5 Implementation av kod

    Förstaårsstudenterna svarade inget på frågan “Tyckte Du det var lätt att implementerakoden för algoritmerna? Motivera gärna”. Anledningen till detta kan vara att deras be-gränsade kunskap gjorde det svårt för studenterna att själva implementera algoritmernapå den tid som testningen pågick, utan hade behövt betydligt mer tid för att studera hurpathfinding-algoritmer fungerar. Kravet att själv implementera algoritmerna kan inte visom utvecklare ställa på studenterna, utan de fick testa de algoritmer som redan varimplementerade och på så sätt ändå kunna se hur dem fungerade.

    5.2.6 Visuellt kontra traditionellt

    Anledningen till att resultatet var så positivt kan vara att testpersonerna får en bättreöverblick hur det ser ut när en pathfinding-algoritm söker och därgenom lär sig bättre. Detfanns en testperson som svarade svårt och anledningen till detta kan vara att testpersonenhar lättare för att rita själv när det bara är en liten sökväg, men på stora ytor hadeeventuellt en applikationen hjälpt testpersonen bättre.

    5.3 Jämförelse av utvärderingarna

    Undersökningen av 25 testpersoner gav en bredare grund och detta gör resultatet mertrovädigt. Genom att studera informationen från de två utvärderingarna så syns det attkunskapsnivån skiljer sig mellan de två testgrupperna. Det ger möjligheten att kunna draen generell slutsats då resultaten har en bra spridning av användare. Resultaten visaratt oavsett kunskapsnivå så har användarna nytta av en applikation som kan visualiserapathfinding-algoritmer och på så vis leda till en bättre förståelse om hur en sökningfungerar.

    Testpersonerna upplevde applikationen som lättanvänd och tyckte att den gav bravisuell feedback men de gav även förslag till flera förbättringar. Självimplementationenför förstaårsstudenterna visade sig vara för svår att göra inom tidsramen som fanns förtestperioden. Utifrån testpersonernas kommentarer bör det inte vara några problem attimplementera algoritmerna i applikationen själv om det finns tid för att studera teorin,till exempel via en kurs eller självstudier. Resultaten tyder på att ett effektivare lärandeuppnås genom användande av applikationen.

    24

  • 5.4 Muntlig dialog

    De muntliga dialogerna var väldigt bra för att kunna få respons om vad användarentyckte och tänkte om applikationen vid körning. Det var även bra för att kunna hjälpatestpersonen om det uppstod fel eller förvirring, eller för att förklara varför vi gjort somvi gjort med applikationen. Det var även i dialogerna som flera användare påpekade vadför funktioner som skulle kunna finnas i applikationen för att kunna förbättra den. Enav diskussionerna som ofta kom upp var huruvida det hade underlättat om testpersonenhade haft applikationen till sitt förfogande när personen läste en AI eller algoritm-kurs.Det var mycket positiv respons runt detta då fokus kunde ha legat på att implementeraalgoritmerna istället för att hålla på med alla funktioner för det visuella. Testpersonernaställde sig även mycket positivt till att ha applikationen till sitt förfogande under enlaboration vid uppstart av en AI eller algoritmkurs.

    Testpersonerna tyckte att det behövdes vissa förkunskaper för att själva kunna imple-mentera algoritmer i applikationen, såsom tidigare erfarenhet av programmering. Någotsom diskuterades var hur mycket vägledning användaren skulle få genom den dokumen-terade programkoden. Ett alternativ som också diskuterades var om det skulle finnasen fungerande applikation i form av ett exekverbart program i samband med källkodenför applikationen, och då ge en visuell bild hur det ska se ut när algoritmerna fungerarkorrekt. Detta för att användaren ska kunna ha någon slags visuell mall att gå efter,men inte ska ha möjlighet att kunna se koden för att förhindra att användaren skriverav koden för algoritmerna.

    Något som de mera nyfikna testpersonerna gärna skulle se i applikationen var attkunna implementera sina egna algoritmer. Detta är redan möjligt genom att användarensjälv implementerar sina algoritmer i de klasser som är avsedda för de redan implemente-rade algoritmerna i applikationen. För att lösa detta vore ett alternativ att skapa en klassför användaren att implementera sin egen kod i. Ett annat förslag som kom upp var attha en funktion som tar tid på sökningen, detta var för att kunna jämföra flera algoritmerför att se vilken som söker sig fram snabbast för det utsatta problemet. Det skulle dågör det möjligt för användaren att välja den bästa algoritmen till ett specifikt scenario.För att kunna hjälpa användaren att testa olika scenarier så föreslog en testperson attdet kanske skulle finnas färdiga mallar av rutnät, detta hjälper användare som har svårtatt komma på egna rutnät själv och kan på så sätt testa algoritmerna snabbare.

    25

  • 6 Diskussion

    Resultaten tyder på att det är möjligt att effektivisera lärandet av pathfinding-algoritmergenom att kombinera visuellt lärande med implementation av algoritmer. Resultatenvisar att en applikation som är riktat specifikt mot pathfinding-algoritmer bidrar till endjupare förståelse av hur algoritmerna fungerar och skulle fungera bra i utbildningssyfte.Vi har under undersökningen observerat att visuellt lärande kan vara mer effektivt, dettabehöver inte betyda att det är så till alla läroformer men det lämpar sig väldigt bra tillvisualisering av algoritmer. Under litteraturstudien så fick vi en bredare uppfattning omhur svårt det kan vara att lära sig algoritmer och att det är väldigt få verktyg somanvänder sig av problem-based-learning.

    Antalet applikationstestare var 25 stycken vilken gjorde att de resultat vi fick varrimliga för att göra en empirisk studie på, då vi hade en variation av testpersoner frånolika årskurser. Vi tyckte att testningen gav bra resultat då vi samtidigt som användar-testet pågick observerade hur testpersonerna hanterade applikationen, och kunde på såsätt uppfatta vad de tyckte om applikationen.

    En av delarna som vi skulle velat undersöka mera är implementationen av algorit-merna, detta är en stor del av syftet för att kunna effektivisera lärandet av algoritmer,genom att använda denna applikation. En av anledningarna till att testresultaten blevlite vaga gällande denna del är att testpersonerna inte lyckades implementera algoritmer-na inom den tidsram som vi gav dem. För att lösa detta så skulle det behövas göra enny testningen där testpersonen har mera tid till sitt förfogande. Möjligheten att kunnavisualisera algoritmerna gör att användarna kan se hur de fungerar med sina egna ögonistället för att förlita sig på bilder som finns i litteraturen.

    Applikationen skulle kunna användas av andra studenter förutsatt att de har kun-skap om programmering, men då behöver de komplettera med att läsa om pathfinding-algoritmer. Det bidrar till att applikationen skulle kunna användas inom andra utbild-ningar än bara spelutveckling.

    26

  • 7 Slutsats och vidare forskning

    Undersökningen som gjorts under arbetet visar att det finns stor potential att använda sigav ett visuellt lärande för att lära ut algoritmer. Det bör finnas i åtanke att det teoretiskafortfarande spelar en viktig roll i förståelsen hur algoritmer fungerar, därför bör både detpraktiska och teoretiska användas parallellt för att uppnå ett optimalt resultat.

    Undersökningen bekräftar att ett effektivare lärande av pathfinding-algoritmer kanuppnås genom ett visuellt stödverktyg men det krävs en viss förkunskap om de algoritmersom verktyget innefattar. Algoritmerna som används i verktyget kan skräddarsys tillanvändarens egna önskemål, användaren ska även ges möjligheten att själv lägga tillsina egna algoritmer. Verktyget kan då även användas inom andra områden än enbartför att visualisera pathfinding-algoritmer, som till exempel för att visualisera grafer.Undersökningen tyder även på att lärosätten som används idag inte är optimala, utan attutbildningar inom AI och spelutveckling borde använda en mer visuell inlärningsmetod.Vår hypotes bekräftades genom att studera resultatet av testerna, då det visade sigatt som O’Grady [25] tog upp i sin artikel om ett praktisk problem-based-learning, attpersoner som själv fått implementera lösningar och fått titta på resultaten visuellt harhaft lättare att lära sig.

    Vidare forskning bör nog sätta fokus på att göra mer testning gällande implemen-tation av algoritmerna för att kunna få mer data, genom att eventuellt skapa någotobligatoriskt moment där testaren själv måste implementera pathfinding-algoritmerna.Detta bidrar till att en bredare analys kan göras huruvida lärandet är mer effektiv vidvisualisering eller inte. Då visualiserat lärandet av pathfinding-algoritmer inte är specielltdokumenterat bör det utforskas mer för att kunna påvisa att vår undersökning gav rättresultat. Det skulle även vara intressant om det var möjligt att jämföra ett teoretiskt ochvisuellt lärandesätt för att se vilken skillnad det gjort för de olika studenterna.

    27

  • Referenser

    [1] Amershi. S, Arksey. N, Carenini. G, Cline. M, Coelho. W, Conati. C, Gagné. A,Gorniak. P, Hoos. H, Kisyński. J, Knoll. B, Li. J, Mackworth. A, O’Neill. K,Pavlin. M, Poole. D, Porter. K, Santos. J, Sueda. S, Tung. L, Yap. A and Yu-en. R, AIspace: Tools for Learning Artificial Intelligence [Online]. Available At:http://www.aispace.org/, 1999.

    [2] Amershi. S, Arksey. N, Carenini. G, Conati. C, Mackworth. A, Maclaren. H,Poole. D, Designing CIspace: Pedagogy and Usability in a Learning Environmentfor AI, Proceedings of the 10th annual SIGCSE conference on Innovation and te-chnology in computer science education, pp 178-182, 2005.

    [3] Bakhtin. M. M, Speech genres and other late essays, Austin. TX, University ofTexas Press pp 60-106, 1986.

    [4] Brown. M. H and Sedgewick. R, Techniques for Algorithm Animation, Software(Vol:2, Issue:1), IEEE, pp. 28-39, Jan 1985.

    [5] Brown. M. H, Exploring algorithms using Balsa-II, Computer(Vol:21, Issue:5),IEEE, pp. 14-36, May 1988.

    [6] Chabini. I and Lan. S, IV. A* Algorithm”, in Adaptations of the A* Algorithmfor the Computation of Fastest Paths in Deterministic Discrete-Time DynamicNetworks, Intelligent Transportation Systems, pp 63-65, 2002.

    [7] Cormen. T. H, Leiserson. C. E, Rivest. R. L, Stein. C, Introduction to algo-ritms third edition, MIT Press, July 2009.

    [8] DiCicco-Bloom. B and Crabtre. B. F, The qualitative research interview, MedicalEducation Vol.40, pp. 268-271, 28 March, 2006.

    [9] Dijkstra. E. W A Note on Two Problems in Connexion with Graphs, inNumerische Mathematik, Vol. 1, pp 269-271, 1959.

    [10] ECMA, C# Language Specification, Standard-ECMA-334, 6 Juni, pp 20, 2006.

    [11] Ejlertsson. G, Enkäten i praktiken, Sweden: Studentlitteratur AB, 1996.

    [12] Gamma. E, Helm. R, Johnson. R, Vlissides. J, Design Patterns: Elements ofReusable Object-Oriented Software, Addison-Wesley Professional, First Edition,Nov 1994.

    [13] Graham. R, McCabe. H, Sheridan. S, Pathfinding in Computer Games,ITB Journal, Issue Number 8, pp. 57-81, Dec 2003.

    [14] Harary. F, Graphs, in Graph Theory, Reading, MA, Addison-Wesley, pp. 9, 1969.

  • [15] Helttula. E, Hyrskykari. A, Raiha. K. J, Graphical specification of algorithmanimations with ALADDIN, System Sciences, Proceedings of the Twenty-SecondAnnual Hawaii International Conference, pp 892-901, 1989.

    [16] Hundhausen. C. D, Dougles. S. A, Stasko. J. T, A Meta-Study of AlgorithmVisualization Effectiveness, Journal of Visual Languages and Computing, Vol. 13,pp 259-290, 2002.

    [17] Ikeda. T, Min-Yao. H, Imai. H, Nishimura. S, Shimoura. H, Hashimoto. T,Tenmoku. K, Mitoh. K, A Fast Algorithm for Finding Routes by AI SearchTechnique, Proceedings of the 1994 VNIS, pp. 291-196, 1994.

    [18] Jordan B and Henderson A, Interaction Analysis: Foundations and Practice,Taylor and Francis online, Volume 4, Issue 1, pp 39-103, 1995

    [19] Lantz. A, Intervjumetodik, Sweden: Studentlitteratur AB, 2003.

    [20] Luo. L, Wong. M, Hwu. W, “Previous Appraches”, An Effective GPUImplementation of Breadth-First Search, Proceedings of the 47th DesignAutomation Conference, pp 52-55, 2010.

    [21] McGarth. M. B and Brown. J. R, Visual Learning for Science and Engineering,Computer Graphics and Applications, Vol. 25, Issue 5, IEEE, Volume 25, Issue 5,pp. 56-63, 2005.

    [22] Nareyek. A, AI in Computer Games, Queue - Game Development, ACM ,Volume1, Issue 10, pp. 58-65, Feb 2004.

    [23] Nishihara. T and Minamide. Y, “Depth-First Search”, in The Archive of FormalProofs, 2004.

    [24] Nordberg. K, Perception research and audio-visual education, Audiovisualcommunication review, volume 1, issue 1, pp 18-29 1953.

    [25] O’Grady. M. J, “Review of Problem-Based-Learning”, in Practical Problem-BasedLearning in Computing Education, ACM Transactions on Computing Education,pp 10:2 - 10:3, 2012.

    [26] Russel. S. J and Norvig. P, Artificial Intelligence: A Modern Approach, PrenticeHall, second edition, Dec 2002.

    [27] Stasko. J. T, Simplifying algorithm animation with Tango, Visual Languages,Proceeding of the 1990 IEEE Workshop, pp 1-6, 1990.

    [28] Tarjan. R, Depth-First Search and Linear Graph Algorithms, Switching andAutomata Theory 1971. 12;th Annual Symposium on, pp 114-121, 1971.

    [29] Yoo. J. P, Yoo. S. K, Seo. S, Pettey. C, Can AlgoTutor change attitudes towardAlgorithms?, SIGCSE ‘11 Proceedings of the 42nd ACM technical symposium onComputer Science Education, pp 311-316, 2011.

    29

  • [30] Yu. Y, Liu. Z, Research on a user-centered design method for interactive onlineteaching system, Communication Technology, 2006. ICCT ’06. InternationalConference on 27-30 Nov, pp 2-3, 2006.

    30

  • Appendix A Ordlista

    AI - Artificiell intelligens används huvudsakligen inom datavetenskapen för att för-söka rekonstruera en människobeteende eller realistiska tillvägagångssätt.

    Algoritm - En algoritm kan definieras som ett förutsatt händelseförlopp med väldefinierade funktioner för att kalkylera en händelse.

    Användargränssnitt - Detta fungerar som en länk mellan programvaran och an-vändaren.

    API - Application Programming Interface, API specifierar hur olika komponenterinteragerar med varandra.

    CPU - Huvudprocessorn i datorn. Denna processor ansvarar för exekveringen avalla program och utför beräkningar och datahantering.

    Deduktion - Härledning av slutsatser med givna premisser.

    Garbagecollector - Detta är en automatisk dynamisk minneshanterings metodvilket har i uppgift att hitta dataobjekt som aldrig kommer användas igen och ta bortdessa. Detta för att frigöra minnesresurser och motverka att minnesläckor uppstår.

    GPU - Grafikprocessor som sitter på grafikkortet i datorn. Denna processor an-svarar för kommunikationen mellan bildskärm och dator och de bilder som ska visar påskärmen.

    Källkod - Programkoden som används i en applikation som oftast har kommenteraroch är lättarbetad för en människa samtidigt som en dator ska kunna tolka den.

    Länkningar - Länkningar inom C++ är för att få ett körbart program som kräverett speciellt ramverk som inte ingår i C++ standardbibliotet. Detta görs genom attincludera dll-filer och ramverks specifika filer för att kunna använda sig av ramverker idet program som ska utvecklas, detta kallas för länkning.

    Neurala nätverk - Neurala nätverk är beräkningsmodeller inspirerade av djurenscentrala nervsystem. Neurala nätverk används ofta för maskininlärning och mönsterigen-känning.

    NPC - Non player character syftar åt karaktärer i spel som inte är spelar styrdautan med hjälp av AI ger uppfattningen av en spelare.

  • Objektorienterad kod - Kod som är baserat på programmeringsmetoden objekt-orienterad programmering i vilken ett program kan innehålla en varierande uppsättningobjekt som interagerar med varandra. Anledningen att skriva objektorienterat är för attdet bidrar till ett stabilt och kraftfullt program samt gör det lättare för programmerareatt sätta sig in i programmet.

    Pathfinding - I en datorapplikation syftar detta på sättet att hitta den kortastevägen mellan två punkter.

    Prestanda - Begrepp på hur väl en applikation presterar.

  • Appendix B Enkät

    1. Hur väl är Din kunskap gällande de 4 algoritmerna (A*, Dijktra’s,Bredden-först eller Djupet-först)?2 Mycket bra.

    2 Bra.

    2 Dålig.

    2 Mycket dålig.

    2. I vilken grad hjälpte applikationen Dig att förstå visuellt hur algorit-mernas sökningar går till?2 Mycket bra.

    2 Bra.

    2 Dålig.

    2 Mycket dålig.

    3. Tyckte Du att användargränssnittet var lätt att använda sig av? Ominte motivera gärna

    4. Hur lätt tyckte Du det var att förstå den kommenterade koden i appli-kationen?2 Mycket lätt.

    2 Lätt.

    2 Svårt.

    2 Mycket svårt.

    5. Tyckte Du det var lätt att implementera koden för algoritmerna? Mo-tivera gärna per algoritm

    6. I vilken grad gick algoritmerna att förstå genom att visuellt få se hursökningen går till kontra traditionellt med penna och papper?2 Mycket lättare.

    2 Lättare.

    2 Svårare.

    2 Mycket svårare.