• No results found

Stödverktyg för ett effektivare lärande av pathfinding-algoritmer

N/A
N/A
Protected

Academic year: 2021

Share "Stödverktyg för ett effektivare lärande av pathfinding-algoritmer"

Copied!
43
0
0

Loading.... (view fulltext now)

Full text

(1)

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

(2)
(3)

Sammanfattning

Effektiva lärosätt för algoritmer är inte alltid det enklaste att hitta. Algoritmer som används inom området för artificiell intelligens kan ofta vara svåra att förstå och ta lång tid 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 av pathfinding-algoritmer kunna öka effekten av dessa algoritmer. Användaren ges

(4)
(5)

möjlig-Abstract

Effective ways of learning algorithms is not always easy to come by, especially within computer science. Algorithms used in the field of artificial intelligence can often be very difficult 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 method that this thesis uses is a practical approach of learning pathfinding algorithms followed by visualization of said algorithms. The user is given the opportunity to implement four

(6)
(7)

Lovord

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

(8)
(9)

Innehåll

1 Inledning 1 1.1 Bakgrund . . . 1 1.1.1 Dijkstras algoritm . . . 2 1.1.2 A* (A-stjärna) . . . 3 1.1.3 Bredden-först . . . 3 1.1.4 Djupet-först . . . 4 1.2 Problemdiskussion . . . 4 1.3 Syfte . . . 5 1.4 Avgränsningar . . . 5 1.5 Frågeställning . . . 5 1.6 Tidigare forskning . . . 6 2 Metod 8 2.1 Litteraturstudie . . . 8 2.2 Design research . . . 10

2.3 Användartest och muntlig dialog . . . 10

2.4 Enkätundersökning . . . 11 2.5 Metoddiskussion . . . 13 3 Implementation 14 3.1 Applikation . . . 14 3.1.1 .NET Framework . . . 14 3.1.2 Programmeringsspråk . . . 14 3.2 Design . . . 14 4 Resultat 17 4.1 Resultaten från enkätsvaren av första och tredjeårs studenter . . . 18

4.1.1 Algoritmkunskap . . . 18

4.1.2 Visualisering av algoritmer . . . 18

4.1.3 Tankar om användargränssnittet . . . 19

4.1.4 Källkoden i Applikationen . . . 19

(10)

5.2 Utvärdering 2, Testresultat av förstaårsstudenter . . . 23 5.2.1 Algoritmkunskap . . . 23 5.2.2 Visualisering av algoritmer . . . 23 5.2.3 Tankar om användargränssnittet . . . 23 5.2.4 Källkoden i Applikationen . . . 23 5.2.5 Implementation av kod . . . 24

5.2.6 Visuellt kontra traditionellt . . . 24

5.3 Jämförelse av utvärderingarna . . . 24

5.4 Muntlig dialog . . . 25

6 Diskussion 26

7 Slutsats och vidare forskning 27

Referenser 28

A Ordlista 31

(11)

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 en algoritm i boken Introduction to Algorithms på följande sätt:

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

Ett av de stora användningsområdena som algoritmer används inom är AI (Artificiell Intelligens). Russel och Norvig beskriver att begreppet AI är programvaror som simulerar ett 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 agent. Begreppet AI-agent är något som används inom spelindustrin för att kunna beskriva en simulation av något med människolikt beteende som styrs av datorn. För att AI-agenten skall kunna orientera sig omkring i spelvärlden så används en navigationsteknik som generellt kallas pathfindingö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 Computer Games:

“Pathfinding strategies are usually employed as the core of any AI movement system. Pathfinding strategies have the responsibility of finding a path from any coordinate in the game world to another. Systems such as this take in a starting point and a destination; they then find a series of points that together comprise 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ända sig av en pathfinding-algoritm för att kunna navigera sig fram igenom spelvärlden utan att fastna i eventuella objekt som finns ivägen.

(12)

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 algoritmer använder sig av grafer för att hitta den kortaste vägen. En graf kan beskrivas som ett antal 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 nod till B. Bågar kan också ha närliggande bågar, till exempel då båge J och K utgår från samma 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 att hitta den kortaste vägen med den billigaste nodkostnaden från en given startnod till alla andra noder i grafen. Algoritmen fungerar bäst då den används på en viktad graf, där kostnaden att gå från en nod till en annan är olika beroende på vilken nod som sökningen befinner sig i.

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

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

(13)

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 är väldigt flexibel och kan användas till flera olika saker, till exempel att vägleda AI-agenter i spel.

A* är lik de flesta sökalgoritmerna då den kan söka stora områden snabbt. A* är väldigt lik Dijkstras algoritm för att hitta den kortaste vägen. A* använder sig, till skillnad från Dijkstras algoritm, även av en heuristisk formel som hjälper algoritmen att uppfatta avståndet från en punkt A till en punkt B genom att varje nod får ett värde baserat 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 den kortaste vägen från en nod till en annan. G är kostnaden för att förflytta sig till en specifik nod från en annan och H är vår heuristiska formel som uppfattar avståndet mellan A och B.

När algoritmen har sökt färdigt och stannat vid slutnoden så har den hittat den kortaste möjliga vägen. Då går algoritmen baklänges från stopp- till startnoden för att visa den kortaste vägen beroende på värdena på F för varje nod som beräknades under sö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öka antalet noder som befinner sig i ett binärt sökträd. Anledningen till att algoritmen är minimalistisk 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 ger information om grannarna har varit besökta förut eller inte. Om grannarna inte varit besö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 grannar har varit besökta eller inte. Denna metod repeteras tills sökalgoritmen har besökt alla noder i grafen minst en gång [20].

(14)

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 bara har en lösning, såsom labyrinter, men kan även användas för att generera labyrinter automatiskt. Djupet-först-sökning är lik bredden-först i att den är minimalistisk men istället för att kolla noderna efterhand som de kommer går algoritmen istället ner till den sista grenen i det binära sökträdet och går sedan tillbaka ett steg och kollar den föregående grenen. Efter detta repeteras detta till sökningen är klar, denna metod brukar kallas backtracking. Beroende på implementation så kommer sökningen att gå till höger bå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 hantera alla grafiska beräkningar och att CPUn (Central Processing Unit) inte längre behöver användas till detta [22]. Det medför att CPUn kan användas till annat, såsom att sköta berä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 hur AI 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 delen och den praktiska delen (där teorin implementeras). Den teoretiska delen går till på olika sä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 igenom algoritmer 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ärandet kan 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 att lä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 praktisk form, så som att rita upp på papper för att stegvis kunna förstå, eller att skapa ett testprogram 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 har en 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ör att algoritmerna skall fungera. Användaren får då implementera koden för algoritmerna själv, vilket bör leda till en djupare förståelse och till ett effektivare lärande.

(15)

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 algoritmen arbetar. Till detta skapades en applikation främst riktat mot studenter med inriktning spelutveckling. 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å algoritmen teoretiskt 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 inte använda alla algoritmer som finns inom AI så var det vissa begränsningar som var tvungna att göras. Uppsatsen har inte för avseende att granska alla de olika typerna av AI som finns, utan endast algoritmer som är relevanta för pathfinding. Det finns inte heller någon jämförelse mellan algoritmerna, exempelvis vilken som lämpar sig bäst för att kunna söka kortaste 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 visuallisera pathfinding-algoritmer skulle öka förståelsen för hur dessa algoritmer fungerar och skulle genom självimplementation bidra till ett mer effektivt lärande.

(16)

1.6 Tidigare forskning

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

“Visual education rests upon the assumption that people learn from what they see, that visual experience influences behavior, and that instruction can be improved by enabling people to look at objects and pictures under appropriate circumstances, 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 crucial to the future of learning.”

Utvecklingen av applikationer för att kunna visuallisera algoritmer har funnits sedan de första datorerna började projecera bilder, detta är något som fortsatt att utvecklats och att det finns än idag inte något generellt verktyg som används till det. Genom åren så har det 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 att hjälpa nya studenter inom datavetenskap att förstå hur algoritmdesign fungerar och med hjä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öva några programmeringskunskaper. Användaren bygger algoritmerna genom ett grafiskt användargränssnitt som ser ut som pseudo-kod. Responsen från studenterna som använ-de AlgoTutor var positiv. Stuanvän-denterna uppskattaanvän-de möjligheten att utveckla algoritmer utan 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öka förmedla fördelarna med att använda sig av AV (Algorithm Visualization) och på så sätt uppmuntra 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ågan var 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ända sig av vid programmerings-laborationer för att kunna se programmen visuellt och bilda sin egen uppfattning, vilket bidrar till ett aktiv lärande. Slutligen så ville skribenterna till studien poängtera att det inte är det visuella som spelar roll, utan det är ett aktivt deltagande som spelar roll.

(17)

AIspace (som förut hette CIspace) är en websida där det finns tidigare utvecklade verktyg fö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 utvecklat verktygen gjorde en studie om hur användarna tyckte verktygen fungerade. I studien som publicerades så gick utvecklarna igenom varför utvecklingen av sådan programvara skulle ske, sedan skapades flera mål som produkten skulle uppnå. Genom att sedan använda sig av andra frivilliga studenter inom datavetenskap-programmet så framgick det vad i produkten som var bra och dåligt.

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

(18)

2

Metod

För att kunna bedöma om ett stödverktyg för visualisering av pathfinding-algoritmer skulle 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 tidigare forskning inom det aktuella ämnet samt eventuellt utvecklade likvärdiga applikationer.

Metoden interaktionsanalys var irrelevant eftersom undersökningen endast hade för avsikt 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 skulle fö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 vagt svar [8]. Det valdes istället att ha en muntlig dialog med testpersonen i samband med användartestet. Användartest valdes för att kunna se vad olika användare tyckte om ett visuellt stödverktyg.

Ett experiment skulle kunna ha utförts genom att göra två användartest, ett test med personer 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ända ett experiment som metod då det skulle kunna vara svårt att hitta rätt kompetens för att göra testerna konsekventa. Det valdes istället att använda en enkätundersökning som gjordes 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. Valet att använda en litteraturstudie var för att kunna samla in information om ämnet, till exempel AI, visuellt lärande och design research. Utförandet av en litteraturstudie ökar

(19)

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 tidigare forskning 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 och sedan utifrån informationen som hittades välja ut det som var relevant till uppsatsens syfte. Detta gav en bra grund och förståelse för AI som helhet, vilket gav den fördjupning som behövdes för att kunna utveckla en applikation som skulle kunna göra lärandet av pathfinding-algoritmer effektivare. Litteraturen som användes i uppsatsen hämtades från databaserna; Google Scholar, ACM Digital Library och IEEE Xplore. Dessa databaser valdes 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 av böckerna Intervjumetodik [19] och Enkäten i praktiken [11] för att få metodkunskap till den 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 in games, Articial Intelligence, A* algorithm, Dijkstras algorithm, visual learning, problem-based-learning, better learning methods of pathfinding algoritms, problems with visual learning.

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 var relevanta 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 kring tidigare forskning och tidigare utvecklade produkter.

(20)

2.2 Design research

Design research är en metod som används för att beskriva olika tekniker som bidrar till en bättre överblick över en designprocess. Denna process är ofta både iterativ och periodisk för att kunna få en så bra produkt som möjligt. När utseendet av produkten var bestämd så började utvecklingen av en prototyp och när prototypen sedan var färdig så testades denna för eventuella brister och problem. Tekniken som uppsatsen använde sig av är en anvä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 hur applikationen skulle se ut för att vara både estetiskt tilltalande och lätt att hantera. En utvärdering av vilka funktioner som behövdes och vad som skulle uteslutas gjordes för att applikationens användargränssnitt inte skulle vilseleda användaren. För att kunna effektivisera 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ärandet av 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ät och efter en färdig sökning visa den kortaste vägen. Genom att användaren får tillgång till applikationens källkod kommer det vara i algoritmklasserna som implementationen av algoritmerna kommer att ske. Anledningen till att användaren själv får implementera algoritmerna är för att ge den praktiska tillämpningsmöjligheten som skall öka förståelsen fö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 kunde besvaras lättare med användning av design research då det visade sig att en applikation var nödvändig för att lösa uppsatsens syfte, detta berodde på att det kan vara lättare att visualisera 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 respons på vad som var bra och dåligt med applikationen. En viktig aspekt var att försöka testa produkten 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, men främst för att se att den inte är för avancerad för studenter som skall lära sig AI.

(21)

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

Vid användartestet fick testpersonen sitta med applikationen för att kunna testa olika sö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ägnad endast spelutvecklare, testpersonerna fick sitta vid en och samma dator för att ha samma förutsättningar.

En muntlig dialog med testpersonerna utfördes samtidigt som användartestet, detta för att kunna samla in ytterligare information om hur testpersonen upplevde applikatio-nen och för att hjälpa testpersoapplikatio-nen om denne hade några funderingar runt applikatioapplikatio-nen. 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 dialogue a 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 self in 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 och höll på fram till att testpersonen gick ifrån datorn. Under testningen så observerades testpersonen och det var endast denne som tog upp sakerna som diskuterades. Olika nackdelar med att ha en muntlig dialog är att testpersonerna kan bli distraherade vid användartestet och på sätt inte kan ge optimal data. Ett annat problem är att den muntliga dialogen kan vara svår att replikera, anledning till detta är att inga direkt frågor fanns.

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

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

(22)

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

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

Fördelen med en kvantitativ enkätundersökning är att kunna begränsa frågorna till vad som är relevant för att kunna besvara frågeställningen. Nackdelen med att använda en 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 egna svar.

(23)

2.5 Metoddiskussion

Litteraturstudien valde vi som metod för att kunna skapa oss en uppfattning om vilken tidigare 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 applikation skulle 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ödverktyg likt det vi tänkt oss. Det gjorde att vi endast fick information om liknande applikationer och kunde på så sätt inte göra en fortsatt forskning av tidigare resultat. Vi valde att anvä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älp av att praktiskt kunna visuallisera algoritmsökningen på ett lättförståeligt sätt för ett effektivare lärande.

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

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

(24)

3

Implementation

3.1 Applikation

Applikationen är utvecklad i programmet Microsoft Visual Studio 2012. Programmet valdes 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årigheten med 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åken skulle användas så krävs det vanligtvis att användaren installerar tilläggspaket utöver standardversionen av Visual Studio.

3.1.1 .NET Framework

.NET Framework är en komponent som är en del av Windows operativsystem. Ramverket hanterar exekveringen av program som är speciellt utvecklade för det egna ramverket och det finns ett stort klassbibliotek för att underlätta utvecklingen. Numera är ramverket inkluderat direkt i Windows när användaren installerar operativsystemet, vilket gör att det är väldigt smidigt att använda sig av vid utveckling av applikationer som använder sig 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 är ett lätt språk att implementera på olika datorer då språket är direkt relaterat till .NET Framework [10]. Då applikationen främst är riktad mot studenter inom spelutveckling var det bättre att skriva applikationen i C# för att underlätta för studenterna då språket C++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# är att 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, vilket gö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ätt kan 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 algoritmer måste vara oberoende av de andra klasserna i applikationen.

(25)

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

För att visa rutnätet användes realtidsuppdatering under körning av applikationen baserat 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ändarinput under körning. Denna input används sedan via delegater och events för att uppdatera rutnä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 att förflytta sig till närliggande noder skrivs ut.

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

(26)

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, samt krä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ändaren själv implementera de andra algoritmerna om det behövs.

(27)

4

Resultat

Vid testningen så deltog totalt 25 personer från spelutvecklingsprogrammet. Testningen gjordes i tre iterationer med sex stycken vid första tillfället, sju stycken vid det andra och 12 stycken vid det tredje. Vid de två första testiterationerna var det endast testpersoner från årskurs tre och vid sista iterationen var det endast testpersoner från årskurs ett. Vid den andra iterationen hade det skett lite förändringar från den föregående iterationen baserat 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 mellan testiterationerna gav ingen påverkan på testresultaten, då det var funktioner som inte relaterade till de frågor som undersöktes. Ett exempel är som nämnts att kunna ta bort väggar vilket gjorde att användaren inte behöver rita om sin labyrint så fort det råkar rita fel.

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

(28)

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 antal personer.

Figur 4 visar resultaten på hur väl testpersonernas algoritmkunskap var. Frågan är till fö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 antal personer.

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

(29)

4.1.3 Tankar om användargränssnittet

För att kunna se vad testpersonerna tyckte om det grafiska gränssnittet så var fanns frågan “Tyckte Du att användargränssnittet var lätt att använda sig av? Om inte motivera gä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 svar eller 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 kommenterade koden i applikationen var lättförståelig. För att kunna förstå hur mycket och hur väl kommenterad 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å att personer med mindre erfarenhet inte skall känna sig allt för vilse i koden, samtidigt så

(30)

4.1.5 Implementation av kod

För att se hur lätt respektive svårt testpersonerna tyckte det gick att implementera kod för algoritmerna så fanns frågan “Tyckte Du det var lätt att implementera koden för algoritmerna? 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 kunna driva sitt eget lärande, detta skall i sin tur medföra en effektivare och djupare förståelse av algoritmerna. Vid testtillfället så fanns det endast två algoritmer som nämnts tidigare i 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 antal personer.

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

(31)

5

Analys

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

Testresultaten från tredgeårsstudenterna analyseras per fråga enligt resultatkapitlets rubriker.

5.1.1 Algoritmkunskap

En förklaring till att resultatet fick mera positiv respons än negativ kan vara att de flesta studenterna som varit testpersoner redan har läst kurser inom AI och på så sätt redan kan algoritmerna. En annan förklaring kan vara att testpersonen kan två till tre av algoritmerna bra och den sista sämre, detta kan leda till att testpersonen väger resultaten och 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 hur algoritmerna 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 tre redan 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 att göra flera förbättringar. En av förbättringarna som nämnts tidigare i resultatkapitlet är förslaget om att kunna ta bort väggar, detta bidrog till att applikationen blev lättare att använda och att användaren slipper rensa rutnätet varje gång det blir fel. Anledningen till att det blev mycket positiv respons kan bero på att de flesta grundläggande funktionerna redan fanns implementerade för att applikationen skulle gå att använda. Detta behöver inte betyda att applikationen inte kan förbättras, utan att den fungerar som den är för att kunna besvara frågeställningen.

5.1.4 Källkoden i Applikationen

Anledningen till att majoriteten av responsen hamnade på svarsalternativ “Lätt” kan vara för att testpersonerna har bred erfarenhet inom programmering och kan på så sätt sätta sig 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å.

(32)

5.1.5 Implementation av kod

Anledningen till att testpersonerna tyckte det var svårt att implementera algoritmerna kan bero på att det var första gången som applikationen testades och på så sätt behövde förbättras för att få optimalt resultat. Det kan även vara så som en av testpersonerna uppmä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ätta sig 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 suttit med penna och papper och testat att visualisera algoritmer på detta vis.

(33)

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

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

5.2.1 Algoritmkunskap

Anledningen till att resultatet visar på dålig kunskap beror på att förstaårsstudenterna har ä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 bidrar till 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 av hur de olika algoritmerna fungerar. Detta tyder på att personer som inte studerat någon AI-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år att förstå i början vilket kan leda till att det kan implementeras en hjälpfunktion som fö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 av knapparna kan göra att applikationen blir lite mer användarvänlig. Anledningen till att det blev mera positiv respons än negativ kan vara för att applikationen är simpel och det behö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 nog på att de är nya inom ämnet programmering vilket kan leda till att det kan vara svårt att 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öra om koden är för lätt eller för svårt kommenterad. Det skulle behövas mera testning för att kunna göra en slutgiltligt bedömning.

(34)

5.2.5 Implementation av kod

Förstaårsstudenterna svarade inget på frågan “Tyckte Du det var lätt att implementera koden 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 algoritmerna på den tid som testningen pågick, utan hade behövt betydligt mer tid för att studera hur pathfinding-algoritmer fungerar. Kravet att själv implementera algoritmerna kan inte vi som utvecklare ställa på studenterna, utan de fick testa de algoritmer som redan var implementerade 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. Det fanns en testperson som svarade svårt och anledningen till detta kan vara att testpersonen har lättare för att rita själv när det bara är en liten sökväg, men på stora ytor hade eventuellt 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 mer trovädigt. Genom att studera informationen från de två utvärderingarna så syns det att kunskapsnivån skiljer sig mellan de två testgrupperna. Det ger möjligheten att kunna dra en generell slutsats då resultaten har en bra spridning av användare. Resultaten visar att oavsett kunskapsnivå så har användarna nytta av en applikation som kan visualisera pathfinding-algoritmer och på så vis leda till en bättre förståelse om hur en sökning fungerar.

Testpersonerna upplevde applikationen som lättanvänd och tyckte att den gav bra visuell feedback men de gav även förslag till flera förbättringar. Självimplementationen för förstaårsstudenterna visade sig vara för svår att göra inom tidsramen som fanns för testperioden. Utifrån testpersonernas kommentarer bör det inte vara några problem att implementera 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ärande uppnås genom användande av applikationen.

(35)

5.4 Muntlig dialog

De muntliga dialogerna var väldigt bra för att kunna få respons om vad användaren tyckte och tänkte om applikationen vid körning. Det var även bra för att kunna hjälpa testpersonen om det uppstod fel eller förvirring, eller för att förklara varför vi gjort som vi gjort med applikationen. Det var även i dialogerna som flera användare påpekade vad för funktioner som skulle kunna finnas i applikationen för att kunna förbättra den. En av diskussionerna som ofta kom upp var huruvida det hade underlättat om testpersonen hade 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 implementera algoritmerna istället för att hålla på med alla funktioner för det visuella. Testpersonerna ställde sig även mycket positivt till att ha applikationen till sitt förfogande under en laboration 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ågot som diskuterades var hur mycket vägledning användaren skulle få genom den dokumen-terade programkoden. Ett alternativ som också diskudokumen-terades var om det skulle finnas en fungerande applikation i form av ett exekverbart program i samband med källkoden för applikationen, och då ge en visuell bild hur det ska se ut när algoritmerna fungerar korrekt. 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 skriver av koden för algoritmerna.

Något som de mera nyfikna testpersonerna gärna skulle se i applikationen var att kunna implementera sina egna algoritmer. Detta är redan möjligt genom att användaren sjä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 klass för användaren att implementera sin egen kod i. Ett annat förslag som kom upp var att ha en funktion som tar tid på sökningen, detta var för att kunna jämföra flera algoritmer fö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 att det kanske skulle finnas färdiga mallar av rutnät, detta hjälper användare som har svårt att komma på egna rutnät själv och kan på så sätt testa algoritmerna snabbare.

(36)

6

Diskussion

Resultaten tyder på att det är möjligt att effektivisera lärandet av pathfinding-algoritmer genom att kombinera visuellt lärande med implementation av algoritmer. Resultaten visar att en applikation som är riktat specifikt mot pathfinding-algoritmer bidrar till en djupare 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, detta behöver inte betyda att det är så till alla läroformer men det lämpar sig väldigt bra till visualisering av algoritmer. Under litteraturstudien så fick vi en bredare uppfattning om hur svårt det kan vara att lära sig algoritmer och att det är väldigt få verktyg som använder sig av problem-based-learning.

Antalet applikationstestare var 25 stycken vilken gjorde att de resultat vi fick var rimliga för att göra en empirisk studie på, då vi hade en variation av testpersoner från olika å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 blev lite 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 en ny testningen där testpersonen har mera tid till sitt förfogande. Möjligheten att kunna visualisera algoritmerna gör att användarna kan se hur de fungerar med sina egna ögon istä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.

(37)

7

Slutsats och vidare forskning

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

Undersökningen bekräftar att ett effektivare lärande av pathfinding-algoritmer kan uppnås genom ett visuellt stödverktyg men det krävs en viss förkunskap om de algoritmer som verktyget innefattar. Algoritmerna som används i verktyget kan skräddarsys till användarens egna önskemål, användaren ska även ges möjligheten att själv lägga till sina egna algoritmer. Verktyget kan då även användas inom andra områden än enbart fö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 att utbildningar 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 sig att som O’Grady [25] tog upp i sin artikel om ett praktisk problem-based-learning, att personer som själv fått implementera lösningar och fått titta på resultaten visuellt har haft 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ågot obligatoriskt 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 vid visualisering eller inte. Då visualiserat lärandet av pathfinding-algoritmer inte är speciellt dokumenterat bör det utforskas mer för att kunna påvisa att vår undersökning gav rätt resultat. Det skulle även vara intressant om det var möjligt att jämföra ett teoretiskt och visuellt lärandesätt för att se vilken skillnad det gjort för de olika studenterna.

(38)

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 Environment for 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 of Texas 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* Algorithm for the Computation of Fastest Paths in Deterministic Discrete-Time Dynamic Networks, 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, Medical Education Vol.40, pp. 268-271, 28 March, 2006.

[9] Dijkstra. E. W A Note on Two Problems in Connexion with Graphs, in Numerische 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 of

Reusable 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.

(39)

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

[16] Hundhausen. C. D, Dougles. S. A, Stasko. J. T, A Meta-Study of Algorithm Visualization 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 Search Technique, 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 GPU

Implementation of Breadth-First Search, Proceedings of the 47th Design Automation 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 ,Volume 1, Issue 10, pp. 58-65, Feb 2004.

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

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

[25] O’Grady. M. J, “Review of Problem-Based-Learning”, in Practical Problem-Based Learning 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, Prentice Hall, 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.

(40)

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

(41)

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äl definierade 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 komponenter interagerar med varandra.

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

Deduktion - Härledning av slutsatser med givna premisser.

Garbagecollector - Detta är en automatisk dynamisk minneshanterings metod vilket har i uppgift att hitta dataobjekt som aldrig kommer användas igen och ta bort dessa. 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 kommenterar och ä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äver ett speciellt ramverk som inte ingår i C++ standardbibliotet. Detta görs genom att

(42)

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

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

(43)

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? Om inte 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.

Figure

Figur 1: Överblick av en graf.
Figur 2: Designprocessen
Figur 4: Stapeldiagrammen visar resultaten av den första enkätfrågan. Angett i antal personer.
Figur 6: Stapeldiagrammen visar resultaten av den tredje enkätfrågan. Angett i antal personer
+2

References

Related documents

Subject D, for example, spends most of the time (54%) reading with both index fingers in parallel, 24% reading with the left index finger only, and 11% with the right

De flesta initiativ som tagits under förbättringsarbetet har koppling till hörnstenen sätt kunderna i centrum vilket talar för att de lyckats landa det mest centrala i

I arbetet kommer jag att visa att de intervjuade lärarna anser sig ha god dokumentation inför utvecklingssamtalet och det på ett tydligt sätt klargör elevens utveckling mot

Tillsammans är Timglasmodellen och stödguiden M.E.S ett arbetssätt att använda för att implementera perspektivet hållbar utveckling i sin undervisning med syfte att arbetet

Saab har verksamhet och medarbetare på alla kontinenter och utvecklar, anpassar och förbättrar ständigt ny teknologi för att möta kundernas förändrade

I det ”pris” som ställs mot kostnaden vid beräkning av internaliseringsgraden tar man i regel inte hänsyn till alla avgifter och skatter för en viss transport.. Man beaktar

med ”skrivande av kod” medan det i andra sammanhang avses ett vidare perspektiv på programmering där även problemformulering, val av lösning, att pröva och ompröva samt

Samtliga leverantörer följer landstingets krav på miljö, socialt och etiskt ansvar och verkar för att bidra till en hållbar