Broadening Educational Game Design using the World

advertisement
Broadening Educational Game Design
using the World Wide Web
Doctoral Dissertation submitted to the
Faculty of Informatics of the Università della Svizzera Italiana
in partial fulfillment of the requirements for the degree of
Doctor of Philosophy
presented by
Navid Ahmadi
under the supervision of
Prof. Mehdi Jazayeri
December 2012
Dissertation Committee
Prof. Fabio Crestani
Prof. Marc Langheinrich
Università della Svizzera Italiana, Switzerland
Università della Svizzera Italiana, Switzerland
Prof. Alexander Repenning
Prof. Mary Beth Rosson
University of Colorado at Boulder, USA
Pennsylvania State University, USA
Dissertation accepted on 20 December 2012
Prof. Mehdi Jazayeri
Research Advisor
Università della Svizzera Italiana, Switzerland
Prof. Antonio Carzaniga
PhD Program Director
i
I certify that except where due acknowledgement has been given, the work presented in this thesis is that of the author alone; the work has not been submitted
previously, in whole or in part, to qualify for any other academic award; and the content of the thesis is the result of work which has been carried out since the official
commencement date of the approved research program.
Navid Ahmadi
Lugano, 20 December 2012
ii
To my parents...
iii
iv
Abstract
Educational game design has been increasingly used for teaching computational thinking skills from kindergarten to college. Learners deal with concepts such as objects,
instances, behavior, and interaction and and gain programming skills while they are
engaged in creating a video game. We identify two limitations in current educational
game design environments. First, the learning activities are tied to the presence of
a teacher who helps the learner to solve problems that require computational thinking. These activities often take place in an educational setting such as a classroom or
after-school computer club. The learning opportunities are constrained to face-to-face
communication in a physical location. Therefore, those with no access to an educational setting miss the learning opportunities. Second, Computer Science courses have
been perceived as being ‘hard’, ‘boring’, and ‘asocial’ among learners. Educational
game design environments have employed end-user development techniques to cope
with the ‘hardness’ and put these techniques into the context of creating a game to
cope with ‘boredom’. However, the ‘asocial’ face of computing has been addressed far
less.
The World Wide Web has become a dominant platform for computer-supported
cooperative work and social media. Cyberlearning platforms such as Massive Open
Online Courses are increasingly employing the Web to deliver education to hundreds
of thousands of learners across the world. These platforms rely on the participative culture of the Web, user-created content, social networking applications, and other social
media to achieve their educational goals. However, game design environments have
not leveraged such rich media to go beyond the classroom environment. The Web can
be employed as a cyberlearning platform for educational game design. Such a platform
broadens the scope of game design practices, allowing participation to those without
access to a physical educational setting. Learners rely on peers and communities to
gain computational thinking skills. Ultimately, such a platform can change the asocial
face of computing.
In this thesis, I explore the feasibility of employing the Web as a cyberlearning
platform for educational game design, in two steps: 1) by taking the game design activities to the Web. I have created an open-Web educational game design environment
and demonstrated that the Web is a suitable hosting platform for game design activities
including creating game objects, programming them, and designing the game scene,
v
vi
all with a visual interface. 2) by transferring the educational practices from the classroom to the Web. I have developed a cooperative Website around the game design
environment, which allows users to share and explore games and create a community
around their game design activities.
My experiments with a group of novices validates their success in using the cyberlearning platform to gain computational thinking skills during the game design activities, while relying on the cooperative features of the Website to gain knowledge and
learn computational concepts.
Acknowledgements
This research has been a long journey for me. It is hard to acknowledge everybody
who inspired, affected, or helped me in this work. I attempt my best and apologize for
those whom I omit.
Foremost, I would like to express my highest gratitude to my advisor, Mehdi Jazayeri, for encouraging and supporting me throughout this work. He constantly taught
me the more objective way of thinking, and patiently let me find my own way. It has
been a privilege for me to be your student.
I extend my sincere gratitude to Alexander Repenning, who introduced me to the
end-user programming and its educational values. His great care about computer science education in schools has highly affected my research. I am thankful to Nadia
Repenning, who made me feel home during my stay in Boulder, CO. I am grateful to
the members of Scalable Game Design project, in particular, Kyu Han Koh, Vicki Bennett, Burke Taft, and Sandra Wilder for providing me with opportunities to evaluate
my system with novices.
I am sincerely grateful to Gerhard Fischer for hosting me in the Center for Life-Long
Learning and Design (L3 D) during my visit to the University of Colorado at Boulder.
I learned so much about human aspects of computing throughout many stimulating
discussions and inspiring meeting in L3 D. I would like to thank the members of L3 D, in
particular, Hal Eden and Holger Dick, for their friendly support.
I am thankful to Monica Landoni, who helped me evaluate AgentWeb with the
school teachers and students in Ticino, Switzerland. Without her great care and support, this would not have been possible.
I would like to thank my office-mates, formerly Francesco Lelli and Sasa Nesic,
and lately Domenico Bianculli, who inspired me by their commitment to research and
brought fun to our office in Lugano. I would like to thank Julia Eberle, Zhu Li, and Ivan
Vaghi for several stimulating discussions that we had on software design, information
technology, and education during my stay in Boulder.
I would like to thank my parents, Manouchehr and Ozra, for their never-ending
love, encouragement, and support. I wish the words were not so limited to tell you
how proud I am to be your son.
Finally, I wish to thank my beloved girlfriend, Sadaf, for her love, care, and patience, from thousands of miles away. Life is more colorful when I think about you.
vii
viii
Contents
Contents
ix
List of Figures
xiii
List of Tables
xv
1 Introduction
1.1 Challenges in Educational Game Design . . .
1.2 Cyberlearning as a Solution Framework . . .
1.3 World-Wide Web as a Cyberlearning Platform
1.4 Thesis Statement . . . . . . . . . . . . . . . . .
1.5 Research Method . . . . . . . . . . . . . . . . .
1.6 Thesis Structure . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2 Related Work
2.1 End-user Development . . . . . . . . . . . . . . . . . . . . . . .
2.1.1 End-User Programming . . . . . . . . . . . . . . . . . .
2.1.2 Collaboration practices among end users . . . . . . .
2.1.3 Collaborative and Social Software Engineering . . .
2.2 Educational Game Design . . . . . . . . . . . . . . . . . . . . .
2.2.1 Game-Based Learning . . . . . . . . . . . . . . . . . . .
2.2.2 Educational Game Design Environments . . . . . . .
2.2.3 State-of-the-art of support for collaboration in GDEs
2.3 Computational Thinking . . . . . . . . . . . . . . . . . . . . . .
2.3.1 Computational Thinking Patterns . . . . . . . . . . . .
2.4 World-Wide Web . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.4.1 Participative Web . . . . . . . . . . . . . . . . . . . . . .
2.4.2 Web 2.0 for Education . . . . . . . . . . . . . . . . . .
2.5 Web as a runtime platform . . . . . . . . . . . . . . . . . . . .
2.5.1 Programmable Web and Mashups . . . . . . . . . . .
2.5.2 RIA Platforms vs. Open Web for Games . . . . . . . .
2.6 Conclusions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ix
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
1
3
4
5
6
6
7
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
9
9
10
13
14
15
15
16
24
25
26
27
27
28
29
29
30
31
x
Contents
3 Building an Open-Web Game Design Environment
3.1 System Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1.1 Choice of game design model and support for end users .
3.1.2 Choice of collaboration platform . . . . . . . . . . . . . . .
3.1.3 Choice of Web technology . . . . . . . . . . . . . . . . . . .
3.2 Challenges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3 Feasibility Studies . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3.1 Ristretto Mobile: an AgentSheets to JavaScript Compiler
3.3.2 Web-based Visual Programming of Physical Devices . . .
3.4 User Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.5 Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.6 Visual Programming Language . . . . . . . . . . . . . . . . . . . . .
3.6.1 Language Specification . . . . . . . . . . . . . . . . . . . . .
3.7 Client-side Execution . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.8 Performance Issues . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.8.1 Code Compilation . . . . . . . . . . . . . . . . . . . . . . . .
3.8.2 Differential Scene Rendering . . . . . . . . . . . . . . . . .
3.9 Performance Evaluation . . . . . . . . . . . . . . . . . . . . . . . . .
3.10 Usability Testing of the Game Design Environment . . . . . . . . .
3.11 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4 Transition to the Web as a Cyberlearning Platform
4.1 A process to support design and computational thinking . . . . .
4.1.1 Identified Computational and Design Thinking Activities
4.1.2 Evaluation . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.1.3 Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2 Comments from Teachers: Towards Smarter GDEs . . . . . . . . .
4.2.1 Examples, Tutorials . . . . . . . . . . . . . . . . . . . . . . .
4.2.2 Computational Thinking Issues . . . . . . . . . . . . . . . .
4.2.3 Design Thinking Issues . . . . . . . . . . . . . . . . . . . . .
4.2.4 Software Engineering Process . . . . . . . . . . . . . . . . .
4.3 Conclusions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5 Building a Cooperative Game Design WebSite
5.1 Issues with existing models of cooperation .
5.2 A Vision for Unobtrusive Cooperation . . . .
5.3 Implementation . . . . . . . . . . . . . . . . .
5.4 Content Development . . . . . . . . . . . . .
5.4.1 Video Tutorials . . . . . . . . . . . . .
5.4.2 Forum . . . . . . . . . . . . . . . . . .
5.4.3 Showcase . . . . . . . . . . . . . . . .
5.5 Usability Evaluation of the Website . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
33
34
34
34
36
36
37
37
40
42
43
46
46
47
49
50
51
51
56
57
.
.
.
.
.
.
.
.
.
.
59
60
61
62
64
65
66
67
68
69
70
.
.
.
.
.
.
.
.
71
72
73
74
76
76
77
77
77
xi
Contents
5.6 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6 Experimenting with Cooperation
6.1 Research Questions . . . . . . . . . . . . . . . .
6.2 Research Method Overview . . . . . . . . . . .
6.3 Data Collection Methods . . . . . . . . . . . . .
6.3.1 Computer Logs . . . . . . . . . . . . . .
6.4 Procedure . . . . . . . . . . . . . . . . . . . . . .
6.4.1 Sample . . . . . . . . . . . . . . . . . . .
6.4.2 Pre Test . . . . . . . . . . . . . . . . . . .
6.4.3 Game Design Session . . . . . . . . . .
6.4.4 Post test . . . . . . . . . . . . . . . . . .
6.5 Results . . . . . . . . . . . . . . . . . . . . . . . .
6.5.1 Task completion and quiz assessment
6.5.2 Cooperation . . . . . . . . . . . . . . . .
6.5.3 Details of game design activities . . .
6.6 Conclusions . . . . . . . . . . . . . . . . . . . . .
79
.
.
.
.
.
.
.
.
.
.
.
.
.
.
81
82
82
82
83
84
84
84
85
89
89
90
90
92
93
7 Conclusions
7.1 Research Contributions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.2 Open Issues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.3 Future Directions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
95
95
96
97
A AgentWeb’s Visual Programming Language Specification
99
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
B Usability Evaluation Form
B.1 Intellectual task . . . . . . . . . . . . . . . . . . .
B.2 User Interface Task . . . . . . . . . . . . . . . . .
B.3 Computational Thinking Task . . . . . . . . . . .
B.3.1 Matching with the sheet . . . . . . . . .
B.3.2 Programming . . . . . . . . . . . . . . . .
B.4 Computation Thinking Pattern Matching Sheet
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
103
103
104
105
105
105
106
C Programming Tutorial Manuscript
C.1 List of video tutorials . . . . . . . . . . . .
C.2 Introducing AgentWeb . . . . . . . . . . .
C.3 Creating a simple game with AgentWeb
C.4 Using the Depiction Editor . . . . . . . .
C.5 Drawing the game scene . . . . . . . . . .
C.6 Programming . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
109
109
109
111
111
112
112
D Evaluation Forms
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
117
xii
Contents
Figures
2.1 Research Space . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
2.2 Cost of learning versus Scope of EUD tools, adapted from [39] . . . . . .
11
2.3 AgentSheets Game Design Environment . . . . . . . . . . . . . . . . . . . .
17
2.4 Stagecast Creator Game Design Environment . . . . . . . . . . . . . . . . .
18
2.5 Squeak Etoys Game Design Environment . . . . . . . . . . . . . . . . . . . .
19
2.6 Alice 3D Game Design Environment . . . . . . . . . . . . . . . . . . . . . . .
20
2.7 Game Maker Game Design Environment . . . . . . . . . . . . . . . . . . . .
21
2.8 Scratch Game Design Environment . . . . . . . . . . . . . . . . . . . . . . .
22
2.9 Greenfoot Game Design Environment . . . . . . . . . . . . . . . . . . . . . .
23
2.10 Kodu Game Design Environment . . . . . . . . . . . . . . . . . . . . . . . . .
24
2.11 AgentCubes Game Design Environment . . . . . . . . . . . . . . . . . . . .
25
3.1 Ristretto Mobile compiles AgentSheets applications to HTML5 to be executed inside the Web browser. . . . . . . . . . . . . . . . . . . . . . . . . . .
40
3.2 A first-generation iPhone running a Sokoban game inside Mobile Safari. The game was created by AgentSheets and compiled to HTML5 by
Ristretto Mobile. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
41
3.3 JavaScript-based visual rule-based programming language was created
to rapidly compose the behavior of Lego MindStorms NXT. . . . . . . . .
42
3.4 The AgentWeb IDE, used by novice programmers to develop open-Web
games inside the browser. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
44
3.5 The overview of AgentWeb architecture: life-cycle of agents, user interaction with the system, and flow of operations during the execution
process are shown. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
45
3.6 The control flow of a method in an agent program. . . . . . . . . . . . . .
47
3.7 Main conditions and actions of AgentWeb . . . . . . . . . . . . . . . . . . .
48
3.8 Runtime system components and their relationship. . . . . . . . . . . . . .
49
xiii
xiv
Figures
3.9 On the left side (a,b,c,d), the display rate is measured from execution of
games in a number of browsers. Each browser has been benchmarked
with four different configurations. Configurations are ordered from the
slowest with no optimization (N) on the left to the fastest with code
compilation and differential scene rendering on the right (CD). Evaluations with the result of less than 3 frames per second are not visible; On the right side (e,f), the performance of the same browsers are
measured using two browser benchmarking suites: e) In SunSpider, the
faster browser has the lower benchmarking time. f) In V8, the faster
browser has the higher score. . . . . . . . . . . . . . . . . . . . . . . . . . .
3.10 A sample usage pattern automatically recorded from end user’s interaction with Web-based AgentSheets . X axis is the passage of time in
minutes. Y axis is the section in which user has spent the time. The time
periods of less than 10 seconds are considered as noise and removed. . .
4.1 Evaluated game design process combines the computational thinking
tasks with tool usage tasks. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2 Mean of teachers’ rating of research questions based on cognitive jogthrough’s scaling. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
55
57
63
65
5.1 Mode of participants’ rating based on the likert scale. . . . . . . . . . . . .
78
6.1 The participant receives the description of tasks from inside the game
design environment. The logging system records the flow of completing
the tasks and the time spent on each task. . . . . . . . . . . . . . . . . . . .
86
B.1 Computational Thinking Patterns, Page 1 . . . . . . . . . . . . . . . . . . . 107
B.2 Computational Thinking Patterns, Page 2 . . . . . . . . . . . . . . . . . . . 108
Tables
3.1 Challenges of creating an educational game design environment using
open-Web technologies and corresponding proposed solutions. . . . . . .
3.2 Evaluated Games and Their Properties . . . . . . . . . . . . . . . . . . . . .
38
53
5.1 Comparison of Game Design 1.0 and Game Design 2.0 styles . . . . . . .
75
6.1 Results of the experiment, divided by the tasks. . . . . . . . . . . . . . . .
90
A.1 Visual Data Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
A.2 List of Conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
A.3 List of Actions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
C.1 List of video tutorials available on AgentWeb Website . . . . . . . . . . . . 109
C.2 List of video tutorials of conditions and actions that are embedded into
AgentWeb’s programming environment . . . . . . . . . . . . . . . . . . . . . 110
xv
xvi
Tables
Chapter 1
Introduction
Computer science is a growing field in both academia and industry. With the ubiquity
of digitized information around us, computational thinking is a must-have skill in the
21st century [147]. The growth of number of end-users who are engaged in programming activities proves the increasing need to computational solutions [119]. However,
gaining computational thinking skills is a challenge to novices.
To learn computer science concepts, often students are engaged in programming
activities which let them gradually gain the expected skills. Papert and others created
Logo, the first educational programming language to support teaching programming
and CS concepts in 1967 [94]. Since then, many programming languages and environments have been created and used in schools and universities. These environments
follow constructivism [14] and constructionism [58] learning theories and practices
and they have been influential on how programming languages are taught.
Since early 90s, educational programming environments started to form the programming practices around game design activities, i.e., becoming an ‘Educational
Game Design Environment’. In this thesis I use the acronym ‘GDE’ to refer to these
environments. In such an environment, the learner plays the role of a game designer/programmer which involves designing and programming graphical objects that interact with each other and with the player in a game-like scene. Educational Game
Design may point to two different yet related definitions:
1. Teachers use educational games during teaching different courses. One field of
research and practice focuses on how to design these educational games to best
convey the teaching material while keeping the learner engaged [85].
2. In the course of teaching, in particular in Science, Technology, Engineering, and
Math (STEM) classes, the teacher engages her students in creating a video game
or scientific simulation during which they learn the expected teaching material1 .
1
In several cases, students are engaged in creating interactive artifacts such as animations and stories,
rather than a full game. For the sake of simplicity for the reader, I consider all of the interactive artifacts
as games.
1
2
The first definition is a relevant but secondary topic to this dissertation. The focus
of this dissertation is the second definition. I shall use the term ’Educational Game
Design’ hereafter and throughout this dissertation to point to the second definition.
The usual audience of educational game design environments are users with no or
little programming skills who are known as novice programmers [61], or in short
novices, who also are known as end users if they are not interested in programming
per se [87]. In this thesis, I will use these terms interchangeably.
Educational games and simulations are being increasingly adopted in public schools
[54]. Students explore computer science and software engineering [25][121] concepts
such as objects, agents, instances, behavior, abstraction, decomposition, and interaction through creating game characters, programming them, enacting and observing
their behavior in the game scene. AgentSheets [101], Alice [27], Squeak Etoys [59],
GameMaker [93], and Scratch [112] are examples of such educational game design environments. Kelleher and Pausch provide a comprehensive survey on these languages,
their educational purposes, and their programming paradigm [61].
In an emerging view on the general benefits of computing knowledge, whether the
students eventually pursue computer science or any other discipline, the term ‘computational thinking’ has gained much attention [147]. Recently, game design courses
with their focus on computational thinking have been designed, taught and reported.
Accordingly, educational game design environments are used to help students gain
computational thinking skills. The wider impact of gaining computational thinking
skills, in addition to just learning how to program, have only recently been recognized.
Educational game design environments have been around for more than two decades.
As games have become more and more popular in education, they have been often used
in STEM education [54],[128] [103],[93]. They have matured enough to let us know
their characteristics:
• GDEs use a set of end-user programming tools and techniques to support novices.
These techniques include visual languages, domain specific languages, and programming by example.
• Existing GDEs are solitary desktop-based applications. They have no or limited
support for sharing and collaboration. The extent of collaboration has not gone
beyond a supplementary Website which is used as a forum for communication
and for sharing the games.
• Game design activities mostly take place in classrooms and after-school clubs,
i.e., a physical location in the presence of a teacher.
• Most of the existing GDEs are available free, or at least have a free trial version,
on Windows and Mac OS operating systems.
3
1.1 Challenges in Educational Game Design
1.1 Challenges in Educational Game Design
There are a number of challenges regarding the scope and extent of use of existing
game design environments in education. Here I review some of the well-known challenges that are relevant to this theis.
With respect to the use of game design environments in education, we can divide
the users into two groups: those with access to a teacher, and those with no access to
a teacher. For those who have a teacher, the majority of teaching takes place in the
context of a school course or after-school computer club. Even when GDEs are used
in the schools, the outcomes are not clear. A comprehensive study on the computer
science education across the United States [146] reveals:
This study finds that current federal, state, and local government policies underpinning the K–12 education system are deeply confused, conflicted, or inadequate to teach engaging computer science as an academic
subject. Quality instruction always depends on knowledgeable and wellprepared teachers, on instructional materials that are engaging and carefully developed to enable student learning, and adequate resources and
infrastructure to support teachers and student learning. These goals must
be supported by a policy framework that sustains teacher development;
certification and continuing education; appropriate curriculum development; and student access and interest. When it comes to computer science
education, this framework is failing.
Lack of an assessment framework contributes to the failure of building a standard
and promising curriculum [146] [141]: “Assessments for computer science education
are virtually non-existent." Furthermore, game design practices are tightly bound to
the presence of a teacher, which mainly takes place in school and after-school settings
in which a teacher is present. Despite free availability of educational game design software for download, those with no access to an educational context are hardly interested in or capable of challenging with computational abstractions and programming
concepts on their own.
Another challenge is the lack of leveraging social interactions among the learners.
Lack of support for collaboration among learners in most of the educational contexts
has undermined computer science education, whether it has been due to the structure
of the course or the lack of tools for collaboration. For instance, computing fields are
streotyped as being asocial, causing low participation of women in the field [1] [113].
In contrast to the misperception of computer science as an asocial area, it has been
shown in several cases that enabling collaboration among students of an introductory
computer science course has led to better educational outcomes. For instance, pair
programming has improved learning outcomes in teaching computer science [144].
In another example, employing peer learning has led to better results among students
4
1.2 Cyberlearning as a Solution Framework
[145]. Cooperative work among novices is a well-studied phenomenon. End users
often seek help from more skilled peers in the workplace [87]. When it comes to using
GDEs, support for communication and collaboration among the learners is missing.
Existing game design environments are solitary desktop-based applications. They have
no or very limited support for sharing and collaboration. Kelleher laments the lack
of social support and considers it as the sociological barrier to programming among
novices [61]. Even worse, with the growth of social media in the past decade, game
design activities have not employed socio-technical systems for integrating into the
learner’s lifestyle, being left as an activity to be done, if ever, in the school.
These challenges raise the following questions:
• Can we broaden computer-science education beyond the classroom, for instance
through a Massive Open Online Course (MOOCs) [71] [65], to provide equal
educational opportunity to those with no access to a formal educational setting
or an appointed teacher?
• Can we leverage socio-technical systems in computer science education to change
the asocial face of computing and integrate the game design practices into the
social lifestyle of students?
This thesis reflects my efforts to answer these questions.
1.2 Cyberlearning as a Solution Framework
Cyberlearning is a term which refers to educational practices that leverage networked
platforms. The opportunities provided by networked platforms are studied and suggested for learning [19]. I have explored the cyberlearning opportunities to address
the aforementioned challenges. Relying on networked technologies opens a whole new
dimension of possibilities for learning:
• Using a virtual learning environment, we can transcend some of the limitations
associated with time and space. Learning can take place anywhere/anytime.
• In a networked environment, the lack of a formal teacher can be compensated
by building a community of practitioners which help each other to gain expertise. Moreover, teachers can use the environment as a supporting tool in their
classroom, or extend their classroom beyond a physical location in their school.
• In a networked environment, there will be opportunities to integrate educational
game design into students’ and young people’s daily use of social technology, enabling them to seamlessly work on their projects at home and school. Cooperative and social game design scenarios can change the asocial face of computer
science, leading to an increase in participation of women in computer science
[130].
5
1.3 World-Wide Web as a Cyberlearning Platform
To narrow down my research, I raise two fundamental questions, to be answered
in this thesis:
• How can a networked platform realize these goals?
• Would it be possible to replicate computer science education in a networked
learning environment with no formal teacher?
1.3 World-Wide Web as a Cyberlearning Platform
The Web has brought us an information universe which has changed how people live
and work [16]. During the last decade, the Web has evolved from an information
platform to a social platform for sharing, collaboration, participation, and education
[136]. Above all the impact that the Web has made in many aspects of our lives, it has
remained open and non-proprietary.
The Web has evolved how software is developed and delivered to end users [92].
Moreover, the Web has become the main gateway to access the software as a service
[133]. I believe that these benefits have the potential to address all the challenges that
were discussed earlier regarding computer science education
• The Web is accessible from all devices and platforms for end users.
• A Web-based platform can reach its audience globally. At the moment, there
are examples of Web-based educational platforms that have succeeded to reach
hundreds of thousands of students per course.
• In the software-as-a-service paradigm, users enjoy software updates as soon as
they are available.
• When game design takes place “in the cloud", monitoring and collecting game
design patterns is greatly facilitated. Mining such data can lead to developing
comprehensive assessment frameworks. To the best of my knowledge, to date
no information on user interaction with an education game design environment
has been collected.
• Assuming that an assessment tool is developed, it can quickly reach the learners,
track learners’ progress and provide immediate feedback on their progress.
With the success of Websites that allow virtually any user to create content and
share it globally with everyone on the Internet, the concept of Web 2.0 [91] and its
participative culture [136] was formed. Soon, the potential of the participative Web
applications to bring education to the masses was recognized [17]. The advent of
participative Web has engendered social learning environments [8] and E-learning 2.0
[19]. By taking educational game design to the Web, we can leverage the participative
and social culture of the Web to:
6
1.4 Thesis Statement
• Shift the game design towards a community-based practice which relies on cooperation, collaboration, and peer learning.
• Integrate the game design activities into the users’ social life style through online
social media and social networking applications
The intention of this thesis is to leverage the opportunities provided by the Web,
its participative culture, and its service-oriented software development and delivery
to the benefits of educational game design. However, no great benefit comes without challenges. The original Web was not intended to be used for building game and
media-rich applications. Therefore, third-party proprietary technologies such as Flash
[9] was used to deliver rich and interactive media to the Web. For educational purposes, it has been my intention to avoid any proprietary software. I rely on open-Web
technologies that are standardized by W3C consortium to deliver a rich-media game
design platform to the Web. As software, an educational game design environment
consists of components that make it challenging to build using open-Web technologies,
going beyond today’s practices and patterns for building open-Web applications. Such
components include a visual domain-specific programming language and its compiler,
a graphical scene authoring tool, a game engine and its graphic rendering engine, and
putting them all together as an integrated development environment (IDE) suitable
for novice programmers. A major part of this research has involved exploring how
to leverage open-Web technologies to build a media-rich environment beyond existing
Web application practices.
1.4 Thesis Statement
In this thesis, I verify and validate the following statements:
• The open Web is a suitable hosting platform for creating and executing educational
games in a visual interface with the standard end-user development techniques that
are used to lower the engagement barriers for novices. We can replicate game design
practices right on the Web.
• We can replicate the classroom educational practices for delivering computational
thinking skills in a Web-based game design platform.
These two assertions establish the foundations needed to scale up computer science
education beyond the classroom environment.
1.5 Research Method
To verify the assertions, I have developed a fully Web-based educational game design
environment, called AgentWeb, that provides instant access to the design and implementation of the games, enabling students to share and cooperate on exploring the
7
1.6 Thesis Structure
internals of the games, including their design and program. During the development
process, I have overcome several engineering challenges including software architecture, performance, deployment, and usability.
To enable educational practices between peers and compensate for the lack of a
teacher, I have designed and developed a cooperative Website which hosts the game
design environment.
I have conducted a number of studies on AgentWeb with novices, to:
• Improve the usability of the game design environment.
• Understand the requirements of a cooperative game design Website.
• Perform educational practices and understand the function of cooperation tools
in the learning process.
1.6 Thesis Structure
The remainder of this dissertation is organized as follows.
• In Chapter 2, I describe the related work in those fields that together have created a foundation for this dissertation, including end-user development, computational thinking, educational game design, Web technologies, participative Web
and learning 2.0.
• In Chapter 3, I describe the development of AgentWeb. The chapter includes my
rationale of using open-Web standards as the development technology, AgentWeb’s architecture, it’s user interface, employed end-user programming techniques including visual programming and interactive programming, its underlying compiler and runtime system, its performance issues and employed optimization techniques, and initial usability testing of the environment.
• In Chapter 4, I discuss the fundamental differences between educational game
design in a class-room activity led by a teacher and a cyberlearning game design
platform based on peer learning mechanics. This chapter includes an evaluation
with four high-school Informatics teachers who contributed to understanding
the requirements of the new platform and my reflection on their comments to
improve the software to support learning activities in the absence of a teacher.
• In Chapter 5, I discuss the development of a cooperative Website around AgentWeb game design environment. The Website incorporates the computer-supported
cooperative tools to enable sharing and collaboration among game designers.
The cooperation tools are designed based on the Web 2.0 and social networking
practices and follow the comments of teachers described in Chapter 4.
8
1.6 Thesis Structure
• In Chapter 6, I report on an experiment that I conducted in order to measure the
performance of novices while solving computational thinking problems and the
function of cooperation features during the experiment.
• In Chapter 7, I reflect on the results of the research I have conducted, and plan
a future roadmap for this work.
• In Appendices, I attach the details of the programming language of AgentWeb
and evaluation forms that were used in the evaluation parts of this thesis.
Chapter 2
Related Work
The work presented in this thesis focuses on supporting novices through tools and
techniques that have been developed and studied in the area of end-user development
(Section 2.1). Such techniques have been used to develop educational game design
environments (Sections 2.2) and for teaching computer science concepts and computational thinking (Section 2.3). I have relied on the World-Wide Web and its participative culture to build a cyberlearning environment for educational game design
(Section 2.4). Accordingly, I have employed the Web as an application development
and runtime platform for novices to build and execute interactive applications, beyond
its initial purpose as an information sharing platform (Section 2.5). Figure 2.1 shows
the general scope of this thesis.
2.1 End-user Development
As end users continue to use a software, new requirements and use-cases appear. To
address the needs of end users, one approach is to enable them to customize a software
according to their needs, which is known as end-user development (EUD). Lieberman
et al. [69] define end-user development as "a set of methods, techniques, and tools
that allow users of software systems, who are acting as non-professional software developers, at some point to create, modify or extend a software artefact." Several types
of development activities that are carried out by end users have been identified [83]:
• Customization allows users to modify the appearance of presentation objects, or
edit their attribute values by selecting among a set of predefined configuration
options.
• Integration goes beyond customization by allowing users to add new functionality to the software without accessing the underlying implementation.
• Extension allows users to improve the functionality of the software which may
involve modifying or restructuring the underlying implementation.
9
10
2.1 End-user Development
Computer-Science Education
World-Wide Web
Software
Engineering
Figure 2.1. Research Space
Often, user requirements grow as they continue to use a software. Soon, customization will not be enough to respond to user expectations. End users are presumably
non-programmers. Therefore, designers consider a ‘gentle slope’ of increasing complexity to enable end users to move from customizing the software towards extending
it.
2.1.1 End-User Programming
When end users reach to the point that they require to modify a software or add new
functionality, they will need programming skills which they most-probably do not have.
End-user programming (EUP) tools and techniques have been developed to empower
end users who are not interested in programming per se but need to perform computational tasks [87].
EUP tools can be categorized on two dimensions: generality and learning cost. Figure 2.2 shows how some of existing EUP tools are categorized along these dimensions
[39]. The ideal EUP tool is the one that is more general and has lower learning cost.
These tools are also known as high-ceiling, low-threshold tools [86]: “The threshold is
how difficult it is to learn how to use the system, and the ceiling is how much can be
done using the system."
Considering the growing number of end-user programmers [119], there is no doubt
entering parameters in a form-filling dialogue. Closer to the higher scope boundary are Macro
languages that extend the office style applications, e.g. formulae for Excel spreadsheets, and
database query languages. Finally the high scope, low cost cell is the EUD ideal; although as yet
it is largely unattained. The current state-of-the-art EUD environments provide graphical worlds
to create
of instructing
agents with
11 programmable agents. These still impose a learning burden
2.1 End-user
Development
condition-action rules, and designing agent models.
Cost of learning
High
Low
EUD
ideal
JAVA
C++
Current EUD envs
Agentsheets
Alice
High
JAVA Script
VB Script
Excel macros
Scope
Low
Domain engineering
languages
SDL
Hardware design
Office Applications
Report writers
Query screen
builders
Domain-specific
languages
Customisation
Adaptation
Figure 1. Cost-scope trade-offs in EUD tools
Figure 2.2. Cost of learning versus Scope of EUD tools, adapted from [39]
Active EUD environments attempt to infer programs as instructions from user manipulations of
agent worlds. The graphical agent worlds still have to be designed but, once present,
that some of the programs written by end users affects our daily lives. For instance,
programming by example [Lieberman, 2001] can infer instructions from the users’ actions, e.g. in
in spreadsheets
arebumping
used extensively
statistical
and accounting
a robotformulas
game thewritten
user demonstrates
an agent
into a wallfor
followed
by reversing
two steps
purposes.
Therefore,
on end-user
programrule
becomes
important. End-user
and changing
direction.
The dependability
system infers the
condition-action
of detect-a-collision
followed
Software
Engineering
is
a
field
that
studies
tools
and
techniques
for
end-users
beyond
by the appropriate reverse-and-change-direction response. This approach reduces learning by
programming,
including testing
debugging
semi-automatic
rule acquisition
but the and
downside
is that[22]
the [63].
learning system can make mistakes.
Learning styles
from
complete
inference
instruction,
where
theare
system
In therange
rest of
thismore
section
I describe
sometoofdirect
the EUP
techniques
that
usedlearns
in
only when
given
a
command.
Directed
instruction
requires
the
user
to
anticipate
all
the
possible
this thesis.
rules and learning situations, while the complete inference approach is limited by the system’s
domain knowledge. Developing the model is the hard part and therein lies the real challenge for
end-user
design:
abstract conceptual thinking. Complex domains require sophisticated analysis
Direct
Manipulation
and modelling skills, so programming is only part of an end-user developer’s needs.
Direct manipulation interfaces represent the application domain objects continuously
so that
users tools
can interact
with the
as they
would dopowerful
in the real
world to
The goal
for EUD
is to reduce
the objects
learningnaturally
burden while
providing
facilities
address[122].
a wideDirect
rangemanipulation
of problems. is
Given
that some
learningthe
burden
willprogrammatically.
always be present,For
tools
opposed
to modifying
objects
need toinstance,
motivatea their
users.
We
propose
a
meta-design
approach
[Fischer
&
Giaccardi,
2004],
graphical image editor such as PhotoShop allows users to choose a shape
and draw it using a mouse, while in AutoCAD graphical objects can be created using a
command line.
Graphical User Interfaces (GUIs) are2 closely associated with direct manipulation
Fischer/Giaccardi/Ye/Sutcliffe/Mehandjiev
CACM-EUD
12
2.1 End-user Development
interfaces because they provide interactive objects such as windows and menus which
respond directly to mouse and keyboard interactions. However, direct manipulation
interfaces are not limited to GUIs. In the context of this thesis, AgentWeb provides
a direct manipulation interface for creating and managing game objects and drawing
them on the game scene.
Visual Programming Languages
Programming languages can be expressed by visual symbols and graphical notations
[23], [124]. Visual programming languages (VPLs) assist end users by presenting
a graphical representation of the programming constructs, which helps the user to
concentrate on domain-specific abstractions rather than syntactic ones, leading to an
increase in user productivity. Visual Programming Environments (VPEs) are closely
related to VPLs [20]: "When visual expressions are used in a programming environment as an editing shortcut to generate code that may or may not have a different
syntax from that used to edit in the code, the environment is called a visual programming environment (VPE)." Burnett and Baker have provided a classification of visual
programming languages [21].
Domain-Specific Languages
Domain-specific languages (DSLs) are known as small languages targeted for solving
certain problems in a specific application domain. Van Deursen and Visser [134] define
a domain-specific language (DSL) as "a programming language or executable specification language that offers, through appropriate notations and abstractions, expressive
power focused on, and usually restricted to, a particular problem domain." Fischer et
al. [41] provide guidelines on supporting domain experts in developing software artifacts, particularly with respect to the existing growth of the end user developers on
the Web.
Mernik et al. [79] observe that the development of a DSL rarely goes further than
developing an application library, since DSL development requires both domain knowledge and language development expertise. In many cases, a domain-specific embedded language (DSEL) approach is preferred, where the application domain libraries are
used together with a general-purpose programming language [55]. Developing a DSEL
reduces the the programming language development process of DSL to developing the
programming structures of the domain in a host general programming language.
The intersection of visual languages and domain-specific languages is domainspecific visual languages (DSVLs) [132]. DSVLs offer the benefits of visual languages,
e.g., freedom from syntax, and visual interactions, to define the behavior of a software
(object) using high level commands, constructs and abstractions.
Fischer et al. [40] discuss the evolutionary nature of domain modeling and construction that is done by a community of practice over time, and suggest supporting
13
2.1 End-user Development
collaboration in domain construction. Domain-Oriented Design Environments have
been suggested by Fischer et al. [36] to support human problem-domain interaction
rather than human computer interaction. End user programming environments such
as AgentSheets have been developed to enable domain experts to build their own DSLs
[110].
Interactive Programming
Interactive programming is the procedure of modifying a program while it is running,
and see the effect of changes as they are applied immediately. Interactive programming has been used in Smalltalk [50]. Interactive programming is a crucial feature for
a class of operating software whose execution can not be stopped. Often, interactive
programming languages are built on top of dynamic programming languages which allow the extension and modification of parts of the the running software. Such features
first appeared in the Lisp programming language.
Novices benefit from Interactive Programming Environments by watching the behavior of running software as they program it. They do not have to go through phases
of programming, then compilation/interpretation, then watching the behavior of the
software, then modifying it. Instead, they receive immediate feedback from the software as they modify it.
2.1.2 Collaboration practices among end users
Nardi [87] argues that end users tend to gain needed computer knowledge and solve
their computing problems by seeking help in their social environment, rather than
laboring in isolation. Such a pattern has been seen as a persistent activity and not the
exception in several computing areas including sharing UNIX customization files [70],
spreadsheets [88], and tailorable office systems [74], and CAD settings [46]. Such
modifications to a software is also known as “tailoring”. The collaborative tailoring
pattern has been demonstrated in other works as well [126] [75] [26].
Nardi [87] encounters a continuum of users with different skills ranging from end
users to local developers to programmers in a community of end users and highlights
the emergence of local developers in any settings where a computer program is widely
used. Local developers are defined as [87]: “domain experts who happen to have
an intrinsic interest in computers and have more advanced knowledge of a particular
program." Fischer et al. [38] extend this continuum to the consumer/designer spectrum ranging from passive consumer to well-informed consumer, end user, power user,
domain designer, and meta designer. Oberquelle proposes a classification of groupware tailoring based on collaborating actors and those who are affected by a tailoring
activity [95].
Maclean et al. [74] argue that tailoring has to become a community driven activity
based on the expertise of involved users. Mørch et al. [84] argue that the context in
14
2.1 End-user Development
which a software is being developed is different from the context in which that software is being used, and to reach a shared context, tailoring has to be done as the
indirect long-term collaboration between developers and users. They suggest “Multiple Representations” to capture and preserve a rich development context to be shared
among developers and users, and “Application Units” which make multiple representations accessible to end users at use time. Fischer et al. [38] introduce meta-design, a
conceptual framework aimed at providing social and technical infrastructures to support collaborative design, based on the assumption that future uses and problems can
not be anticipated at design time. They introduce the Seeding, Evolutionary Growth,
Reseeding (SER) process model for large evolving design artifacts. The SER model
proposes creating small pieces of artifacts as seeds by developers, which will be tailored by a number of end users during evolutionary growth step, where modifications
will be collected and adjusted to the system’s evolution during the reseeding phase.
Pipek et al. [95] categorize the existing collaborative tailoring works by time, distinguishing between three levels of intensity of user involvement with tool usage, namely:
“shared use”, “shared context”, and “shared tool” and introduce a fourth scenario called
“shared infrastructure”, and for each they discuss approaches to support collaborative
scenarios.
2.1.3 Collaborative and Social Software Engineering
Nowadays, software development is a collaborative process among the developers and
domain experts. Development activities involve a strong interaction between a set
of people that collaborate in order to achieve a common goal: produce an effective,
efficient software following the mantra “Maximum Results with Minimum Effort”. This
raises on the one hand the need for an effective way of sharing ideas and requirements
among the group members and on the other hand the need to create tools that can
support such collaboration. Together with my colleauges, we surveyed the literature
in the social aspects of software engineering [4].
Studies by Sawyer [117], DeMarco and Lister [31], and Jones [57] report a substantial amount of development process being spent in collaborative activities. Strubing [127] states three other activities that developers consistently carry out beyond
coding: (i) organizing their working space and process, (ii) representing and communicating design decisions and ideas, and (iii) communicating and negotiating with
various stakeholders. Booch has conducted an experiment to obtain a snapshot of the
daily life of a developer that conforms to Strubing’s findings [18].
The social aspects of the software process demand collaborative tools to support the
collaboration among team members. Particularly, software development is a highly distributed task, involving programmers, designers and architects who work in different
time/space, due to the growth of offshoring, outsourcing and open-source communities. The majority of large software projects are undertaken by teams of software staff
working across a number of organizations [90]. The computer-supported cooperative
15
2.2 Educational Game Design
work (CSCW) community has investigated computer-assisted collaboration for more
than two decades [51]. The CSCW application domains are numerous, but only those
collaborative tools built in order to assist in software development is of my rsearch
interest. Whitehead [143] distinguishes software engineering collaboration from the
collaboration in other domains as “artifact-based, or model-based collaboration, where
the focus is on the production of new models, the creation of shared meaning around
the models, and the elimination of errors and ambiguities within the models.” Sarma
[116] provides a classification framework for collaborative tools based on the user’s
effort required to collaborate effectively. At the highest layer of the framework, collaborative development environments (CDEs) provide a seamless environment where the
collaboration tools have become integrated into the development environment, thus
lowering the context switch barrier to the developers. Booch [18] defines a CDE as “a
virtual space where the stakeholders of a project, even if separated by time or space,
can meet, share, brainstorm, discuss, reason about, negotiate, record, and generally
labor together to carry out some task, most often to create some useful artifact and its
supporting objects.”
A number of CDEs have been proposed in the context of software engineering.
Boldyreff et al. [17] present two development environments to support collaborative
software engineering: GENESIS (GEneralised eNvironment for procEsS management
in cooperative Software Engineering) and OPHELIA (Open Platform and metHodologies for devELopment tools IntegrAtion in a distributed environment). Dossick et al.
[33] propose CHIME, a semi-automatically generated 3D virtual world representing
the software system. Users interact with project artifacts by “walking around” the virtual world, where they potentially encounter and collaborate with other users’ avatars.
CHIME aims to support large software development projects, in which team members
are often geographically and temporally dispersed, through novel use of virtual environment technology.
2.2 Educational Game Design
2.2.1 Game-Based Learning
Pong was the first video game, introduced in 1974. Since then, computer games have
come a long way, in terms of improving graphics and representing the real world.
Games are immersive and players spend enormous amount of time playing video
games. The effect of of digital games as a learning tool has been recognized [97]
[48] [68] [76]. Prensky states [96]: "... important message that all parents and educators need to hear: Video games are not the enemy, but the best opportunity we have
to engage our kids in real learning." Wu and Richards state [148]:“Well-designed digital games can facilitate learning because they are designed to contextualize learning
based on a set of learning principles. Principles such as immediate feedback, sandbox,
16
2.2 Educational Game Design
customization, and adjustable difficulty motivate players to work within their regime
of competence with the problem space presented by the game [47]."
Serious Games and Gamification
In the 21st century, using games beyond entertainment has gained a lot of attention,
which has led to the rise of two concerns: Serious Games and Gamification. The Serious
Games Initiative was started in 2002 by Ben Sawyer and David Rejecsk which brought
together academia, industry, and military to build games for training and simulation
purposes [81]. Gamification is the use of game elements and game design techniques
in non-game contexts such as economics and business [32] [140]. Serious Games are
different from Gamification. Serious Games are digital games and simulations that
have been built for teaching and training purposes, whereas Gamification takes advantages of game design techniques and elements to address the problems in other
fields. These ideas have been pushed further to design games that address global problems such as climate change and health [77]. Fun and immersion are characteristics of
games that are used to address threats such as boredom, anxiety and distraction, cognitive states of mind that are also associated with the theory of flow[28], in the activities
that require concentration and engagement. Educational games and simulations are
being increasingly adopted in public schools [54].
Generation Y
The improvements in several computing fields such as AI and computer graphics, coupled with the rise and ubiquity of computing power manifested by the growth of smart
and mobile computing devices are triggering but are not the only reasons for video
games to take off. Such growth is partly due to the new generation of learners known
as Generation Y, Millenials, Net Generation, or Gamer Generation, those who were
born roughly between 1982 and 1997 [129].
A 2005 national survey of 8-18 year olds in the United States revealed that each
week young people spend as much as a full-time job on media [114]. One of the profound characteristics of the Net generation is multitasking, i.e., they often use several
forms of media such as listening to music, doing homework, and following a TV show
conversation on the side, all at the same time. They are constantly communication
with friends through mobile phones, SMS, chat, email and social media. These characteristics suggest the use of games in education to accommodate the Net Generation
[13].
2.2.2 Educational Game Design Environments
In the first chapter I defined the term ‘educational game design’ in the context of this
thesis. In this section, I discuss some of these environments as example and discuss
17
2.2 Educational Game Design
how they support novices in programming activities.
Educational programming languages and environments have been created since
Logo in 1967. Kelleher and Pausch [61] provide a comprehensive survey on these languages, their educational purposes, their programming paradigm, and so on. Since the
early 90s, educational programming environments started to form education around
game design activities. Accordingly, the learner is involved in designing and programming graphical objects that interact with each other in a game scene.
AgentSheets
Figure 2.3. AgentSheets Game Design Environment
AgentSheets1 , created by Alexander Repenning, appeared as early as 1991, introducing agent-based graphical rewrite rules [101]. AgentSheets was further enhanced
by introducing a drag-and-drop Tactile Programming language called Visual AgenTalk
in 1996 [104], [106] (Figure 2.3).
AgentSheets provides users with a visual IDE for designing and programming games
and scientific simulations. The game design model employs the spreadsheet structure
to define the location of game objects. Accordingly, the game scene is a 3D grid of
game objects which interact with their adjacent objects. Game objects, called Agents,
are programmed by the novice programmer. Each agent consists of one or more depictions as its visual representation in the game scene and a program. One drawback in
AgentSheets is that the motion of agents between the cells are not animated.
1
http://www.agentsheets.com
18
2.2 Educational Game Design
The programming of agents is assisted by a visual programming environment which
allows the user to compose programming instructions using drag-and-drop. The programming paradigm used in AgentShees is rule-based. Each rule contains a set of conditions and actions. Conditions and actions form a domain-specific language to define
the possible behavior of agents during the game. In the recent version of AgentSheets,
conversational programming has been added to help learners receive immediate feedback about the behavior of the program at run time [102].
AgentSheets has been widely used in public schools [111]. In particular, the Scalable Game Design project [103] researches and implements a game design curriculum
at public schools with a focus on theory of flow [28], computational thinking, and
transfer [11]. Field experience with the use of AgentSheets in schools and universities
show increasing engagement and interest in the field of computer science [12].
KidSim / Cocoa / Stagecast Creator
Figure 2.4. Stagecast Creator Game Design Environment
KidSim2 [30, 125], originally created by Allen Cypher and David Canfield Smith,
was shaped around 1994 , which was then renamed to Cocoa and later on to StageCast
Creator (Figure 2.4).
Similar to AgentSheets, Creator offers a grid-like game scene for positioning the
2
http://www.stagecast.com
19
2.2 Educational Game Design
objects. However, the movement of objects between the grid cells is animated. Creator employs rules to define the behavior of objects in a visual programming environment. Creator uses programming by demonstration to lower the programming barrier
to novices. Accordingly, the user demonstrates the expected behavior of an object to
the system rather than programming it [29].
Squeak Etoys
Figure 2.5. Squeak Etoys Game Design Environment
Squeak Etoys [59] was designed by Alan Kay and appeared in 1997. Etoys is
a media-rich environment for creating objects and programming them. The programming is supported by graphical tiles similar to those in AgentSheets, which the user can
drag-and-drop to compose the behavior of the objects (Figure 2.5). Etoys is shipped
on more than one million OLPC laptops [43].
Alice
Alice is a programmable authoring tool to create interactive 3D worlds [27]. Similar
to earlier environments, Alice comes with a visual programming environment to create
computer animations using 3D models, and supports an object-oriented, event driven
20
2.2 Educational Game Design
Figure 2.6. Alice 3D Game Design Environment
model of programming (Figure 2.6). A storytelling version of alice was created by
Kelleher and shown to increase motivation among young girls [62].
Game Maker
Game Maker was initially developed by Mark Overmars [93]. The original version was
used to create 2D games. Most recently it has added support for creating 3D games.
The Game Maker UI makes heavy use of parameterizing the game objects through
forms and dialogs. It consists of a scripting language that is affected by C and Java to
define the behavior of objects. Moreover, it adds a drag-and-drop visual interface on
top of the scripting language (Figure 2.7).
Scratch
Scratch is designed by Mitchel Resnick [112]. It is a 2D media-rich environment targeting children and computer clubhouses. It provides a visual programming environment
containing programming blocks that can be composed using drag-and-drop. Composing the blocks is further supported with a novel representation that allows snapping
21
2.2 Educational Game Design
Figure 2.7. Game Maker Game Design Environment
the blocks together if they are syntactically meaningful (Figure 2.8). Scratch has a very
active community of users who have shared more than two million creations through
its Website.
Greenfoot
Greenfoot is an interactive Java development environment designed primarily for educational purposes at the high school and undergraduate level [53]. It allows easy
development of two-dimensional graphical applications, such as simulations and interactive games. Greenfoot provides novices with an interactive visual world, and an
integrated programming environment for writing Java code with syntax highlighting,
code completion, and project management (Figure 2.9).
22
2.2 Educational Game Design
Figure 2.8. Scratch Game Design Environment
Kodu
Kodu is a proprietary game design environment created by Microsoft’s FUSE Lab [72].
The user programs the behavior of objects in a 3D world using a rule-based programming language resembles those used in AgentSheets, Etoys, and Alice [73] (Figure
2.10).
AgentCubes
AgentCubes is the 3D successor of AgentSheets [108]. It has been designed by Alexander Repenning. It inherits most of the programming blocks from AgentSheets, while
extending their capabilities to be used in the 3D world. The 3D world design is also
supported with direct-manipulation visual tools (Figure 2.11).
Non-educational Game Design Tools and Languages
There are several other game design languages and environments that are used for
empowering developers to develop games rapidly. These environments are often proprietary software and are not used for educational purposes. Here is a partial list of
these languages and environments:
• Lua is a scripting language that is widely used in game developer communities3 .
3
http://www.lua.org/
23
2.2 Educational Game Design
Figure 2.9. Greenfoot Game Design Environment
With its easy-to-use C API, Lua is intended to be embedded into other applications.
• Microsoft XNA is a set of tools and a runtime environment to facilitate the development of video games4 .
• GameSalad Creator is a visual authoring tool with drag-and-drop programming
5
.
• Corona6 is a software development kit (SDK) for programming video games. It
integrates with Lua and is used often for creating games for mobile platforms.
• Stencyl7 is a game development platform creating 2D games for mobile devices
and the Web.
4
http://msdn.microsoft.com/xna
http://gamesalad.com/
6
http://www.coronalabs.com/
7
http://www.stencyl.com/
5
24
2.2 Educational Game Design
Figure 2.10. Kodu Game Design Environment
2.2.3 State-of-the-art of support for collaboration in GDEs
Only a few of the end-user programming languages provide support for collaboration.
Kelleher and Pausch [61] identify three types of collaboration that are supported in
different programming languages. (i) side-by-side-based collaboration in which two or
more users were manipulating the same program on computers that were located in
the same room, (ii) networked-shared manipulation in which users were in different
locations but connected to a common network and could collaborate while building a
program, and (iii) networked-shared results in which users were in different location
but connected to a common network and could share completed programs or program fragments. Based on their survey of fifty eight end-user programming languages,
there are only ten models supporting one of these three types, among six of which
support side-by-side collaboration, only one supports networked-shared manipulation,
and three support networked-shared results. In none of the developed EUP models can
end users collaborate from inside the programming environment at the time of writing
the program.
There have been some efforts to enable sharing and collaboration among game
designers. Early on, Behavior Exchange let users share AgentSheets games through
the Web [107]. The Game Maker community shares its games through a Web site8 ,
although online playing or exploring of the games is not possible. The Scratch Web
site has collected millions of user-created games9 .
Users upload their creations to a supplementary Website in order to share them
8
9
www.yoyogames.com
scratch.mit.edu
25
2.3 Computational Thinking
Figure 2.11. AgentCubes Game Design Environment
with others. The others can play the game from inside the browser, but they need to
download the games to their machine in order to browse or modify the inside of the
game, including its graphic design and program. In case the user modifies the game
and would like to share it again with others, she needs to upload the game back on the
Website. On the Website, learning is limited to discussion forums and comments on
the game, rather than sharing and collaboration on the game design process. I discuss
the limitations of existing models for sharing games through Websites in Section 5.1.
2.3 Computational Thinking
In an emerging view on the general benefits of computing literacy, whether the students eventually pursue computer science or any other discipline, the term ‘computational thinking’ has gained much attention [147]. Computational thinking is the
use of problem solving techniques that rely on the fundamental concepts of computer
science.The wider impact of gaining computational thinking skills, in addition to just
learning how to program, have only recently been recognized.
Although game design environments have focused on teaching computer programming to novices, recently they have served as a platform to learn and practice computational thinking skills only implicitly. Game Design is considered to support gaining
computational thinking skills [148]. Recently, game design courses with a focus on
computational thinking have been designed, taught and reported [60] [120]. In these
26
2.3 Computational Thinking
courses, educational game design environments are used to help students gain computational thinking skills [111].
A closely related topic to computational thinking is ‘software design thinking’ which
brings up the kind of thinking that is required in software design, such as abstraction,
composition, and relationship between objects, rather than algorithmic design [52].
2.3.1 Computational Thinking Patterns
Computational thinking patterns (CTPs) are algorithms that occur repeatedly in a computational domain, e.g., video game design [56]. As an analogy, CTPs are abstractions
similar to design patterns [45], that model a solution for a recurring software design
problem. In game design environments, such patterns occur across different games
such as: moving the game character with keyboard, or detecting the collision between
the game objects.
In AgentSheets, computational thinking patterns are recognized and used as a core
concept for preparing educational materials. The game design model presented in this
thesis follows the same game design model of AgentSheets and therefore has similar
computational thinking patterns. Here I cite the description of those patterns which
are referred to in this thesis from Scalable Game Design Wiki10 :
• Cursor Control: This is the most basic pattern in game design. The users can
control/move their agents with arrow keys or any other keys.
• Collision: Collisions deal with the event wherein two agents run into each other.
An example of the collision pattern occurs in the gamelet Frogger, where it can
happen that a moving truck hits a frog. The truck wants to continue driving to
the right but the frog is in the way. The live frog needs to be replaced by a dead
frog when this happens.
• Generation: In many gamelet situations one agent needs to generate a stream
of other agents that move away, for example vehicles coming out of a tunnel,
or electrons coming from an electron gun. The generator agent should create
a generated agent next to itself (say to the right), with some probability. The
generated agents, once created, move away to the right.
• Absorption: This is the opposite of the generate pattern. Here something needs
to absorb a stream of agents, for example a tunnel mouth absorbing vehicles,
or a target absorbing electrons. The recommended approach is that the to-beabsorbed agents look for the absorber just ahead as they move. If the detect it,
they erase themselves.
10
A list of all computational thinking patterns of AgentSheets and their description can be found in
here: http://scalablegamedesign.cs.colorado.edu/wiki
27
2.4 World-Wide Web
• Push: Another common behavior is pushing. In the game of Sokoban a person is
supposed to push boxes around a maze onto targets. The box should only move
if it could move onto a target spot or a regular ground tile. If the box is blocked
because it is facing a wall in the direction of the push then neither it nor the
person pushing it should move.
More advanced computational thinking patterns include Pull, Transport, Diffusion, Collaborative Diffusion, Hill Climbing, Multiple Needs, Perceive-Act Synchronization, Poll,
Script, and Seek. These patterns are not discussed in this thesis.
2.4 World-Wide Web
Tim Berners-Lee put together the Internet and hypertext to build a global information
medium [16]. Berners-Lee and others originally developed HyperText Transfer Protocol (HTTP), HTML, Web server, and a Web browser with which users read and write
documents over the Internet. Each document is globally identified through a uniform
resource identifier (URI) and is accessible via a Web browser. The Web has brought us
an information universe which has changed how people live and work [15].
The Web has had a great impact on software engineering. Oreizy et al. [92]
consider the Web as an enabling technology with the potential to change software development by providing a cheap medium for large-scale software distribution, update,
and reuse. Open hypermedia systems [80] had been well investigated even before
the invention of the World Wide Web, and had been used in the context of software
engineering [10].
HTTP and its support for Representational State Transfer (REST) [35] architectural
style for engineering of Web-based software has brought scalability and simplicity for
creating Web-based applications. Being available world-wide and highly scalable, the
Web is one of dominant platforms for collaboration. Booch and Brown [18] provide a
survey of Collaborative Development Environments. According to them, such collaborative sites, mainly built on top of the Web, can be classified into six groups based
on their application domain: non-software domains, asset management, information
services, infrastructure, community, and software development. They suggest a list of
features for CDEs to be added to the feature list of virtual meeting spaces provided by
Fournier [42]. They organize the CDE features into three categories, namely: coordination, collaboration, and community building. Furthermore, they propose a conceptual model for a software development-specific CDE, consisting of three layers: project
workspaces, team tools and development resources.
2.4.1 Participative Web
Although Berners-Lee’s original vision of the Web was a read-write medium, the Web
continued to grow as a read-only medium. The first efforts towards building a read-
28
2.4 World-Wide Web
write Web by Whitehead and others resulted in developing WebDAV which extends
HTTP [142] as an infrastructure for asynchronous collaborative authoring on the Web.
With the improvement of Web technologies and specifically Asynchronous JavaScript
and XML (AJAX), Web-based user interfaces greatly improved and opened the way
for the Web to go beyond its initial use for sharing the documents. Having such infrastructures in place, the Web has evolved from an information platform to a social
platform for sharing, collaboration, participation, and education during the last decade
[136]. Web-based communities such as Wikipedia, YouTube, Flickr and the growth of
Web-based social networking applications such as Twitter and Facebook popularized
the term ‘Web 2.0’ as a platform on which the focus has shifted from reading and
writing static Web documents to sharing and participation in a Web-based community.
As a result of such participative culture [37], a Web-based platform, e.g., Wikipedia,
becomes a global entity which could not have been built by any one person or organization. Such phenomena are known as ‘Collective Intelligence’ [91]. The Web
has been repeatedly used to build such communities in several domains. Wikipedia,
YouTube, Flickr, Stack Overflow, Twitter, Cragislist, IMDB, eHow, and Quora are just a
few instances to name.
Participative Web applications have been used in the software engineering process.
Wiki systems are used for knowledge management during different software engineering phases. Using wiki as a collaborative development environment is one step beyond
using it only as a documentation repository [67]. Xiao et al. [149] present Galaxy
Wiki, a wiki based environment in which programmers can collaboratively write source
code, build projects, execute programs and debug defects. Cheyer and Levy [24] introduce WubHub, a wiki-based collaborative programming environment with the notion
of executable pages that act as functions, i.e., are executable and able to call each
other and pass defined data types. Users can collaboratively write and compose services, and build upon each others’ work, assembling new services that provide new or
more customized features. Open-source communities such as Github11 , Google Code12 ,
CodePlex13 , BitBucket14 and SourceForge15 have leveraged the Web as a community
building platform around open-source projects [99].
2.4.2 Web 2.0 for Education
Web 2.0 has been recognized as a medium that supports social learning. Reed et al.
[100] argue that:“ to be considered social learning, a process must: (1) demonstrate
that a change in understanding has taken place in the individuals involved; (2) demonstrate that this change goes beyond the individual and becomes situated within wider
11
https://github.com/
http://code.google.com/
13
http://www.codeplex.com/
14
https://bitbucket.org/
15
http://sourceforge.net/
12
29
2.5 Web as a runtime platform
social units or communities of practice; and (3) occur through social interactions and
processes between actors within a social network."
According to Wenger [66] [139], a community of practice is characterized by “a
shared domain of interest" where “members interact and learn together" and “develop
a shared repertoire of resources." Downes [34] mentions: “In the world of e-learning,
the closest thing to a social network is a community of practice," and explains the shift
from traditional learning management systems (LMS) in which teachers publish the
learning content and students read them, to a platform in which students develop and
share their knowledge throughout their learning process.
McLoughlin explains the opportunities and constraints of Web 2.0 and social software for pedagogy, and defines social software as “an open architecture that facilitates user-controlled, collaboratively generated knowledge and community-focused
enquiry”, which provides a suite of tools to support greater learner choice and selfdirection [78]. Ravenscroft [98] discusses the use and implications of social software
for learning, including the need to tailor the technology for learning purposes. Alexander [8] brings together examples of social software and how they can be used in education. Vassileva [135] explains how social learning technologies can be designed using
existing technologies: ontologies versus social tagging, exploratory search, collaborative versus self-managed social recommendations, trust and reputation mechanisms,
mechanism design, and social visualization, in order to support the learners to find the
right learning material and the right people on demand.
2.5 Web as a runtime platform
2.5.1 Programmable Web and Mashups
With the advent of AJAX, professional programmers mixed the online data and services
as Web Mashups16 . Several mashup tools such as Yahoo! Pipes 17 have been developed
to simplify the mashup development tasks by combining visual and data-flow programming techniques. End user programming approaches such as data-flow programming,
scripting, and spreadsheets have been employed to lower the mashup development
barrier for novice programmers. For instance, Mashroom supports end-user mashup
programming using nested tables and spreadsheet-like programming [138].
Although mashups are similar to games in extending the static boundaries of Web
applications by enabling professionals and end-users to develop executable programs
and run them in the browser, they are fundamentally different because the response
time is often not a strict constraint, at least in end-user mashup development environments. Mashup environments often take advantage of AJAX to run the business logic
on the server and the browser just provides a user input interface. AgentWeb has high
16
17
http://www.programmableweb.com/
http://pipes.yahoo.com
30
2.5 Web as a runtime platform
interactivity demands that distinguish it from mashups and enforces a full client-side
architecture to avoid network latencies that can be imposed by AJAX.
2.5.2 RIA Platforms vs. Open Web for Games
To date, applications in many domains have been ported to the Web. In the domain
of games and interactive applications, though, the lack of native support for developing interactive games with advanced graphics led to the development of Web-based
games using Java applets or proprietary ‘Rich Internet Application’ (RIA) platforms
such as Adobe Flash [131]. Such games are developed by (professional) programmers and delivered to users by embedding them into Web pages. There have been
efforts to leverage RIAs to enable end users to create their own interactive applications. Websites such as mamamedia.com, kerpoof.com, gamestarmechanic.com, and
mygamebuilder.com represent a range of such tools. While these tools are more focused on creating artwork and storytelling, the extent of programming in them is limited to modifying a static set of parameters to define the behavior of game characters
rather than composing their behavior as in AgentWeb. Programming by composition
will allow a higher variety of games to be built in AgentWeb. Some of the existing
game design environments such as AgentSheets and Scratch are capable of exporting
their games as Java applets so that the game can be played online. However, the game
design remains a solitary desktop-based experience to their users.
Although most games are still delivered to the Web using RIAs, several casual
games have been developed using open-Web technologies, even before the HTML5 era.
Examples of these games include Lemmings18 and Google Pac-Man19 . The emergence
of HTML5 and the increasing speed of JavaScript engines have led to the development
of open-Web games20 and game engines21 . Environments such as Play My Code 22
enable the HTML5 game programming right inside the browser. However, all these
interactive games are developed by (professional) programmers. Play My Code, for instance, lets programmers develop their games using an object-oriented programming
language called Quby and the game design involves low level implementations of game
objects and graphics rendering. Prior to AgentWeb, developing open-Web games had
remained out of reach of novice programmers.
18
http://www.elizium.nu/scripts/lemmings/
http://www.google.com/pacman/
20
Such as those contested in Mozilla’s Game On event:
https://gaming.mozillalabs.com/
21
An extensive list of HTML5 game engines is provided in:
https://github.com/bebraw/jswiki/wiki/Game-Engines
22
http://www.playmycode.com/
19
31
2.6 Conclusions
2.6 Conclusions
In this chapter, I described the related works that define the scope and foundation for
this research. End-user development and educational game design have a long history,
while computational thinking and participative Web are relatively new. From the historical viewpoint, this thesis applies the newly developed concepts and technologies of
participative Web and computational thinking to the long-practiced educational game
design. In the next chapter, I describe how the new technologies, in particular, openWeb technologies, are employed to enable the game design practices in a cyberlearning
platform.
32
2.6 Conclusions
Chapter 3
Building an Open-Web Game Design
Environment
I employed open-Web technologies, i.e., HTML5, JavaScript, and CSS, to build an educational game design environment. The environment, called AgentWeb, lets users
practice the game design and programming activities right inside their browser, i.e.,
no need for desktop-based clients or third-party proprietary software such as Flash
to run the application. Such an environment has obvious attractions as discussed in
Chapter 1: availability across platforms, instant access by all Web users, enabling cooperative game design following the Web 2.0 community-building patterns, and potential
for integration with smartphone platforms and the users’ social network to seamlessly
integrate into the users’ platform of choice. The Website around the game design environment enables game designers to cooperation around designing the game artifacts.
The support for cooperation is discussed in the next two chapters. This chapter focuses
on the design and implementation of the open-Web game design environment as the
core component of a collaborative game design platform. Parts of this chapter were
published in [5].
In the rest of this chapter, in Section 3.1 I describe the requirements for creating
AgentWeb. In Section 3.2 I explain the challenges of creating an educational game
design environment using open-Web technologies. Section 3.3 discusses early feasibility experiments through which I developed two main components of AgentWeb:
an HTML5-based a game engine and visual programming environment. Section 3.4
presents the initial design of AgentWeb’s user interface. In Section 3.5 I present the
details of designing and implementing AgentWeb to meet its requirements. Section 3.6
describes the details of the visual programming language. 3.7 describes the runtime
system of AgentWeb. Section 3.8 reports on the performance issues that I faced during
the development of AgentWeb and how I overcame them. Section 3.9 provides the
performance evaluation results across a set of platforms. Section 3.10 provides the
results of an initial usability study of AgentWeb. Section 3.11 concludes the chapter.
33
34
3.1 System Requirements
3.1 System Requirements
In this section I discuss the requirements for AgentWeb including choosing a game
design model suitable for novice programmers and choosing the platform to encourage
sharing and collaboration. Afterwards, we discuss the extent of using the Web as
a programming platform and reasons I chose to develop AgentWeb using open-Web
technologies.
3.1.1 Choice of game design model and support for end users
Rather than designing a game design model from scratch, I chose to reuse an existing game design model that has been successful in addressing the needs of novice
programmers and has been widely used in educational environments. In particular, I
chose the game design model of AgentWeb to resemble that of AgentSheets, which has
been successful in teaching computational thinking through game design worldwide,
and specifically in game design courses in schools [103]. AgentSheets combines the
benefits of visual programming and spreadsheets to simplify creating 2D games. It
consists of a visual rule-based domain-oriented programming language called ‘Visual
AgenTalk’ [105]. I described AgentSheets in more details in Section 2.2.2.
Following the AgentSheets game design model, I required that the game design
environment supports novices using a visual IDE including support for creating game
objects, programming them and drawing the game scene, all through a visual interface.
The environment should be capable of running the games created in the high-level
language in a reasonable speed required by interactive games. Moreover, I added two
requirements for the environment to further support novices:
• Direct manipulation lets users modify game objects through a visual interface and
the results are immediately applied across the environment [122]. For instance,
if the user updates the depiction of a game object, the update should be instantly
available in the game scene. This requires a response time of 100ms or less [89].
• Interactive programming lets users modify the program of a game and the changes
in the program are instantly applied in the game, even while the game is running. A typical game design use-case of interactive programming is in tuning the
speed of moving objects, e.g. cars, in the game. In the absence of interactive
support, a game designer would have to recompile the program manually after a
modification and re-run the game to explore if the object behavior is satisfactory.
3.1.2 Choice of collaboration platform
Existing game design environments lack support for collaboration among novices.
AgentWeb was designed to address this issue by creating a collaborative environment
35
3.1 System Requirements
around the game design activities. I envisioned the following requirements to enable
users to achieve the most out of AgentWeb with the least effort:
• Platform independence is the fundamental requirement for enabling users to integrate an application into their lifestyle. Users should be able to access AgentWeb
regardless of the device and operating system they use.
• Instant exploration of the inside (design) of the game is needed to ease sharing
and learning the design of the game, and not only the play of the game. Existing game design environments enable sharing the games through a supplementary Website but exploring the design of a game, as a way of learning, requires
downloading the game to the desktop and to open it inside the environment.
AgentWeb should transcend this barrier by allowing for exploring the design and
programming of a game created by others with no extra effort. This matter is
discussed in details in Section 5.1.
• Community building features should be provided to users to let them gather and
collaborate around a game. Accordingly, a game becomes a software artifact
that lets users collaborate in a many-to-many fashion, e.g., similar to Wikipedia,
while building it. This is in contrast to existing game sharing models in which a
single user creates the game and shares it with others in a one-to-many fashion.
Furthermore, AgentWeb should integrate into the user’s online social networking
presence, such as Facebook, to ease the community building process with people
whom the user already knows.
To realize these requirements, I considered three platforms as options to build
AgentWeb:
• A desktop application enhanced with networking and cloud capabilities to enable
sharing and collaboration among users;
• A mobile application for smart devices that employs intrinsic networking capabilities of such devices to connect to a cloud platform that enables sharing and
collaboration among users;
• A Web application directly accessed from the Web browser. The Web-based application follows Web 2.0 community-building best practices to enable sharing
and collaboration among users.
I chose the third option, the Web, as the platform because: (i) The Web is a crossplatform environment that can be accessed from both desktop and mobile platforms
regardless of their operating system and hardware. On mobile devices, though, applications will require tailored interaction design to make them usable. (ii) As previously
discussed, participative Web has been highly successful in building communities and
enabling social learning in numerous applications from general social networking to
highly-specific communities (See Section 2.4.1).
36
3.2 Challenges
3.1.3 Choice of Web technology
Games are interactive applications consisting of multimedia such as graphics, sound,
and user input. As mentioned earlier, the lack of support for delivering multimedia
content in the browsers initially led to developing games using Java and Flash and
embedding them in Web pages.
Recently, HTML 5 has included advanced support for multimedia content including
video, audio and graphics. Simultaneously, with the growth of the Web as an application development platform, the JavaScript engines have improved drastically. This has
enabled the opportunities of developing open-Web games using only HTML5, CSS, and
JavaScript. I chose open-Web technologies to build AgentWeb because:
• Open-Web technologies are non-proprietary standards supported by the majority
of modern Web browsers;
• The browser does not require any third-party plugin to run the game design
environment or the games built using the environment;
• They are highly cross-platform, in particular on mobile devices, compared to
Flash.
3.2 Challenges
As software, an educational game design environment consists of components that go
beyond the static HTML pages and make it challenging to build using open-Web technologies. Such components include a visual domain-specific programming language
and its compiler, a graphical scene authoring tool, a game engine and its graphic rendering engine, all combined in an integrated development environment (IDE) suitable
for novice programmers. Developing such a software poses design and implementation
challenges such as performance and usability.
First, HTML is originally designed to represent static documents, i.e., a Web page
is an HTML document located on the server, it is loaded and rendered by the client’s
browser. The interaction with the Web page was limited to navigation through links
and sending data and files to a server through a form. Only the drastic success of the
Web and need for full-fledged Web applications led to the creation and standardization
of the Document Object Model (DOM) and Cascaded StyleSheets (CSS) which allow
dynamic modification of a Web page after the page is loaded in the browser. With the
advent of XMLHTTPRequest API1 , AJAX-based applications could dynamically load any
piece of HTML or data into the same page, without navigating to another URL, which
allowed creating Web applications rather than static Web pages. However, support for
1
http://www.w3.org/TR/XMLHttpRequest/
37
3.3 Feasibility Studies
representing multimedia such as audio, video and advanced graphics, which are the
essential components of a game, were missing until the advent of HTML52 .
Second, JavaScript was initially developed as a light-weight interpreter-based scripting language to handle simple user interactions with the Web-page. By no means could
Web technologies at their early stages be used, even by professional developers, to develop and execute interactive applications such as games which demand high graphics
and execution performance. During the last few years the performance of JavaScript
engines has greatly improved using just-in-time (JIT) compilation techniques, such as
those used in SpiderMonkey [44], and full-compilation as used in Google V83 , which
has led to creating several open-Web games and game engines4 .
Third, even though the Web technologies have been improved in the last few years,
game development on the Web has been restricted to the professional programmers.
Enabling game design for novices, in particular for educational purposes, requires providing EUD tools, such as a visual drag-and-drop programming language, as discussed
earlier. Building such rich user interfaces using low-level DOM elements and events
is more challenging compared to other programming platforms, because even simple
interactions such as drag-and-drop are not provided by the platform and therefore
need to be simulated. Furthermore, such high levels of abstractions impose further
performance overhead on the execution of the game.
Table 3.1 summarizes the challenges of building such an environment using openWeb technologies, together with my suggested solution, corresponding evaluation measure and success metric for each challenge. The suggested solutions in this chapter
are applicable to similar open-Web software that involve building highly responsive
IDEs beyond current AJAX-based applications, designing and executing high-level visual programming languages, or executing highly interactive graphical applications.
3.3 Feasibility Studies
3.3.1 Ristretto Mobile: an AgentSheets to JavaScript Compiler
The first step towards building AgentWeb was to explore the feasibility of running
interactive games inside the browsers. This would let me decide whether the Web is a
hospitable platform for running interactive games, i.e., I explore how to overcome the
first challenge mentioned in Table 3.1.
To push the limits of using Web technologies to the extreme, I set my aims high,
to render the games inside the browser of mobile devices. This would add further
challenges, mainly due to (i) the low resources of mobile devices including computing
2
http://dev.w3.org/html5/spec/Overview.html
http://code.google.com/p/v8/
4
A
large
list
of
existing
JavaScript-based
https://github.com/bebraw/jswiki/wiki/Game-Engines
3
game
engines
can
be
found
in
38
3.3 Feasibility Studies
Challenge
Solution
Evaluation
Measure
Success Metric
The dynamic and
interactive nature of
games is pushing the
capabilities of HTML
which traditionally
focused on static
representations.
Employ JavaScript
to build highly
interactive
Web-native
applications such
as games.
Usability and
playability of
games
Should be able to
run 2D interactive
games in the Web
browser.
End-User
programming: enable
Web users with no
programming
background to create a
game from scratch.
Build a high-level
programming tool
in JavaScript
based on
established
principles of visual
end-user
programming.
Empirical
user study
End users such as
high school
students with no
programming
background can
use tool to make a
complete game.
The performance
required to run games
including simulations
and visualizations may
be beyond the
computational
capabilities of
JavaScript.
Build performance
optimized
implementation of
runtime and
visualization
mechanisms based
on profiling.
Performance
evaluation for
characterizing the
performance
of interactive
applications
JavaScript
generated by tool
should yield
performance
required by
interactive
applications.
Table 3.1. Challenges of creating an educational game design environment using
open-Web technologies and corresponding proposed solutions.
39
3.3 Feasibility Studies
power and memory; (ii) high variety of used hardware among mobile devices. Accordingly, if I could reach a point to run a game in different mobile devices, it would
guarantee the universality of the technology I was relying on to the maximum possible,
i.e., platform independence, as mentioned as a requirement of choice of collaboration
platform in Section 3.1.2.
One major decision was the choice of graphics rendering technology. When I
started AgentWeb, HTML5 did not exist yet. The possibilities to render the graphics in the browser natively, i.e., without any plugin, are Canvas, SVG, or raw HTML.
The development was done in pre- iPad and Android era. First-generation iPhone was
just launched in January 2007 which provided one of the very first mobile surfing experiences with full JavaScript support using mobile Safari. Nokia produced small tablets
called Nokia N800 which had a working Web browser based on FireFox. At the time,
SVG was not supported for mobile devices. Canvas API was originally developed by
Apple Inc., and was offered in WebKit which is the rendering engine behind the Safari
browser. Mozilla FireFox also supported Canvas API. I decided to use Canvas as it provides features over using raw HTML such as pixel-level access to the game scene, and
possible hardware acceleration by graphics cards (which was introduced later). Back
in 2007 I developed the first graphics engine of AgentWeb using Canvas. To maintain the open-ness of AgentWeb, just in case Canvas would not have been supported by
other browsers, I also developed and maintained a HTML-based graphics engine which
was rendering the game objects using HTML table and CSS absolute positioning. Later
on, Canvas found its way into HTML5 specification to become a W3C standard to be
supported in all the browsers. I had a good choice of technology!
In late 2007, I developed a compiler which turned an AgentSheets game into a pure
JavaScript executable running in the browser, called Ristretto Mobile, or in short RM 5 .
Figure 3.1 shows the architecture of Ristretto Mobile. RM has three main components:
(i) an application retriever which downloads an AgentSheets application, including
agent depiction files (in GIF format) and agent behavior (program) files (in XML format) from the server to the client’s browser; (ii) A compiler, written in JavaScript,
which right inside the client translates the program of each agent to an equivalent
JavaScript program; (iii) a runtime system, mainly composed of a game engine and a
graphics engine, initializes the game scene with the instances of agent objects, executes
their program, and renders the graphics on a Canvas.
I succeeded in compiling and running 14 AgentSheets examples, on both firstgeneration iPhone and Nokia N800 devices. Figure 3.2 depicts an iPhone running a
sokoban game in Mobile Safari compiled by Ristretto Mobile. The execution speed was
fairly low, often below 10 frames per second (fps), due to the low speed of mobile
browsers and low computing power of mobile devices. Nevertheless, the games were
fully functional. We could reach more than 30fps, the threshold for running a fastpace game, on a typical personal computer of the time, e.g., a 2.16 GHz Intel dual-core
5
Ristretto Mobile is available at http://www.inf.usi.ch/phd/ahmadi/rm/index.html
40
3.3 Feasibility Studies
Web Server / File System
AgentSheets Application Files
AJAX-based retriever downloads
project files to the client's browser
Behavior (Program) Files
HTML5 Compiler translates the
program files to JavaScript objects
Program Files translated to JavaScript
HTML5 Runtime (including a Game
Engine and a Graphics Engine)
executes compiled behavior objects
HTML5 executable
Client' Web Browser
Client
Figure 3.1. Ristretto Mobile compiles AgentSheets applications to HTML5 to be
executed inside the Web browser.
processor. With this, I validated the potential of using desktop-based browsers as a
hospitable platform for running end-user developed games. The full work is reported
in [7].
3.3.2 Web-based Visual Programming of Physical Devices
After succeeding in executing interactive games inside the browser, I started exploring
how to build a high-level visual programming language inside the browser. Not only
did I want the visual interface of the language to be built using open-Web technologies, but I also required to execute the language at the client side, by either interpretation or compilation of the visual program to JavaScript. To put the development
challenges into the research-oriented perspective, and in a team effort, together with
my colleauges we explored the idea of controlling physical devices through the Web
by means of defining the behavior of the device using a visual programming environ-
41
3.3 Feasibility Studies
Figure 3.2. A first-generation iPhone running a Sokoban game inside Mobile Safari.
The game was created by AgentSheets and compiled to HTML5 by Ristretto Mobile.
ment. For instance, the user could use a Web page to compose the functionality of a
Lego Mindstorms NXT6 , a programmable robot, using a visual rule-based language.
I was responsible for designing and developing the Web-based visual programming
environment. As the programming paradigm, I chose a visual rule-based programming
language similar to ‘Visual AgenTalk’, the programming language of AgentSheets. The
language consists of conditions and actions which are uses to compose rules. Rules are
tested continuously during execution and when the conditions of a rule are satisfied,
its actions are executed. Figure 3.3 shows the user interface of the visual programming environment7 . I used an interpreter to execute the rules that were composed by
the user. Therefore, no code translation was done, which increased the development
speed.
An important aspect of the work was that as each device has its own set of commands and behavior, conditions and actions should not be hard-coded into the programming environment. Rather, each device should be able to plug its own set of
commands into the language. Therefore, during designing the architecture of the language, I considered the conditions and actions as plugins that are loaded into the programming environment dynamically. Each plugin is a file that contains the information
about the condition/action including its visual representation that is defined in HTML
and its execution behavior that is defined as a JavaScript method, that is invoked by
6
http://mindstorms.lego.com/
Here is a short video of the visual programming environment in its early stages:
http://www.youtube.com/watch?v=TyvblzUptwI
7
42
3.4 User Interface
Figure 3.3. JavaScript-based visual rule-based programming language was created
to rapidly compose the behavior of Lego MindStorms NXT.
the interpreter during execution.
We succeeded in controlling a Lego Mindstorms NXT from a Web page. The details of this research including the architecture and development of the programming
language are reported in [6].
3.4 User Interface
Following the feasibility phase, I developed AgentWeb, an educational game design
environment, using open-Web technologies8 . Being built using open-Web technologies, i.e., HTML5, JavaScript, and CSS, AgentWeb transcends the need to install any
software on the desktop. Users design, store and play the games in the cloud which
eliminates the barrier of uploading/downloading games from/to the desktop.9
AgentWeb’s game design and programming model is inspired by AgentSheets, an
end-user authoring tool for creating agent-based computer games and scientific simulations [101]. Therefore, similar to AgentSheets, users are capable of creating 2D
games and scientific simulations such as Sokoban, Pac Man, Space Invaders, Frogger,
and Game of Life with AgentWeb.
AgentWeb provides users with a visual Integrated Development Environment (IDE)
8
A proof-of-concept is online at: https://agentweb.inf.usi.ch
The current version of AgentWeb runs in Google Chrome, Mozilla FireFox and Apple Safari browsers,
which together count for more than 60% of worldwide browser usage share according to the statistics
provided by StatCounter as of April 2012.
9
43
3.5 Architecture
to create the game characters as agents, draw their graphical depictions, program
them, and place them together in the game scene, all from inside the Web browser.
Figure 3.4 shows the AgentWeb IDE used for developing a Frogger game. The IDE
consists of four main panes:
• Agent Gallery maintains the game objects as a list of agents and their assigned depictions. Each agent may have several depictions, possibly representing different
states of the agent. Agents typically represent game characters.
• Depiction Editor lets users draw depictions for the agents10 . Depictions are graphical representations of agents.
• Programming Environment lets users program the agents using a visual programming language.
• Scene Editor, known as worksheet in the IDE, lets users create the game scene
by drawing the game objects on a HTML5 Canvas. The user can create several
scenes for a game.
The IDE presents two different working environments between which the user can
switch at anytime. The first environment, as shown in Figure 3.4, hosts all four panes
at the same time and gives users an interactive programming environment. The second
environment provides a full screen view of each pane and lets the game designer focus
on one activity at a time (i.e., depiction editing, programming, or scene editing) while
accommodating more development area in the environment.
3.5 Architecture
AgentWeb has a model-view-controller (MVC) architecture [49]. The view, i.e., user
interface, is implemented as HTML and CSS widgets which are loaded dynamically into
the Document Object Model (DOM) tree. The controller is a set of JavaScript objects
that manipulate the model according to user interaction with the interface. The view
is updated corresponding to the changes of the model.
Nowadays, interactive Web applications are commonly built using a JavaScript
framework used for developing an interactive user interface that connects to a data
model on the server through AJAX. AJAX provides a protocol that allows the clientside to continue interacting with the user while the server updates the model and the
view simultaneously. In AgentWeb, however, we dismissed the choice of AJAX because
the latency imposed by the network causes the user interface to not meet the needs of
direct manipulation and interactive programming features. Therefore, to minimize the
communication with the server, we built AgentWeb completely as a client-side game
10
AgentWeb
employs
an
open
(http://code.google.com/p/paintweb/)
source
open-Web
image
editor
called
PaintWeb
44
3.5 Architecture
Agent
Gallery
Scene
Editor
Depiction
Editor
Conditions
Programming Environment
Actions
Figure 3.4. The AgentWeb IDE, used by novice programmers to develop open-Web
games inside the browser.
design environment. Accordingly, the data model resides on the client side, skipping
the network communication.
Benefiting from client-side MVC architecture, AgentWeb exposes a direct manipulation environment to the game designer. For instance, as soon as an agent depiction
is modified in the editor, the modification is instantly applied in the other panes including in the programming environment and the scene editor, even while the game is
running. To enable interactive programming, the game’s program written in the visual
language is interpreted, or compiled as described later, at the client side. Therefore,
as soon as the user modifies the agent program, the code is recompiled and the user
receives immediate feedback in the game.
Figure 3.5 shows the activity diagram of creating an agent, programming it, instantiating it, and executing it in AgentWeb. The execution process follows an MVC
architecture also. The agents are created in the agent gallery. Each agent carries its
own visual program which is written by the game designer and compiled to JavaScript.
Instances of agents are created in the runtime system by the scene editor. The runtime
system executes the program of agent instances repeatedly and visualizes the agent
45
3.5 Architecture
user creates
an agent
[erase instance]
user selects
the agent
[scene editor]
user
edits the
scene
program
the agent
or edit the
scene?
[programming
environment]
[add instance]
user programs
the agent
user draws an
agent in the
game scene
visual
program
User Interface
(View)
Business Logic
(Controller)
game character
functionality
compositions
compiler
translates to
JavaScript
instantiate the
agent
JavaScript
executable
Runtime System
(Model)
runtime agent
game engine
executes the
agents
graphics engine
renders the output
in the browser
Figure 3.5. The overview of AgentWeb architecture: life-cycle of agents, user interaction with the system, and flow of operations during the execution process are
shown.
instances according to their current position and depiction in the browser.
Agent instances are created either at design time through the scene editor or at runtime by other agents. Scene editor includes a toolbox that lets users create instances
of the selected agent in the agent gallery or erase agent instances from the scene. Further tools are provided for multiple creation/erasing of agent instances. Each agent
instance inherits its program and depictions from one of the agents created by the
game designer. The inheritance is implemented through JavaScript prototypes. During
the instantiation, an object consisting of the game character functionality is instantiated and associated with the agent instance. The game character object maintains the
run-time state of the agent, such as current position and depiction in the scene, and
provides methods to define the behavior of the agent, e.g., moving the agent, changing
46
3.6 Visual Programming Language
the depiction of the agent, or sending messages to other agents.
3.6 Visual Programming Language
AgentWeb supports Web users with a visual rule-based programming language environment. The language is an instantiation of the language used by AgentSheets [105].
Each agent contains its own program that consists of a set of methods. Each method
is either handling an event defined in the system, i.e., mouse click, or a user-defined
method which is called by other methods. The desired functionality of each method is
composed of ‘rules’ as the basic construct of the language that enables decision making.
For the sake of simplicity for the end users there is no loop construct. However, each
agent consists of a Forever method that is executed repeatedly at runtime. Each rule is
a composition of conditions and actions. The user composes methods, rules, conditions
and actions visually, by means of drag-and-drop, to achieve the desired functionality.
Figure 3.6 shows the control flow of a method at run time. When a method is triggered
at runtime, the rules are tested sequentially and the first rule with all of its conditions
being satisfied will be executed. Figure 3.4, for instance, shows the program of the frog
agent in a Frogger game. The user defines that if the down arrow key is pressed and
the cell below the frog is a floor cell and the frog is alive, then move the frog down.
According to the classification of Burnett and Baker [21], the design and development of the visual programming language of AgentWeb falls into the following categories:
• VPL-I. Environments and Tools for VPLs
• VPL-II.A.11: Language Classifications 7→ Paradigms 7→ Rule-based Languages
• VPL-II.B.2: Language Classifications 7→ Visual Representations 7→ Iconic Languages
• VPL-III.A.2: Language Features 7→ Abstraction 7→ Procedural Abstraction
• VPL-III.B,E: Language Features 7→ Control Flow, Event Handling
• VPL-IV.B,C,D: Language Implementation Issues 7→ Efficiency, Parsing, Translators
(interpreters and compilers)
3.6.1 Language Specification
At the finest grain, the visual language grammar has a type system consisting of “visual
data types" such as direction, depiction, or a number. Direction, for instance, can let
users visually choose one of nine possible cells around an agent (including the agent’s
47
3.7 Client-side Execution
next rule
exists?
[No]
[Yes]
[No]
is the
condition
satisfied?
execute the
condition
conditions
and
actions
[Yes]
[Yes]
next
condition
exists?
[No]
execute
all the actions
Figure 3.6. The control flow of a method in an agent program.
own cell). As another example, depiction lets the user choose one of the defined depictions of an agent. The language consists of 10 visual data types as specified in
Appendix A.
The set of language instructions (conditions and actions) form a domain-specific
language for creating computer games. Each instruction provides a piece of functionality that has zero or more input arguments. Each input argument has a type from the
set of visual data types. For example, as shown in Figure 3.4, the see condition has
two input arguments. The first argument is a direction and the second argument is a
depiction. Figure 3.7 shows the main conditions and actions of AgentWeb. The full language consists of 28 instructions, including 12 conditions and 16 actions as specified
in Appendix A.
3.7 Client-side Execution
The execution process follows the MVC architecture of AgentWeb:
• View: The agents are created in the agent gallery. Each agent carries its own
visual program which is composed by the game designer.
48
3.7 Client-side Execution
Conditions
Actions
Figure 3.7. Main conditions and actions of AgentWeb
• Controller: Instances of agents are created in the runtime system by the scene
editor.
• Model: Once the agents have been programmed and instantiated in the game
scene, the game must be executed. The runtime system executes the program of
agent instances repeatedly and notifies the view to visualize the agent instances
according to their current position and depiction in the browser.
In order to execute the agents inside the browser, a client side interpreter or compiler translates the visual program into JavaScript which is then executed by the AgentWeb runtime system. Initially, we implemented an interpreter to translate the visual
program to JavaScript. However, due to not achieving the required performance in
the games, we designed and implemented a compiler to replace the interpreter, as
explained in Section 3.8.1. The game design environment is capable of switching between interpretation and compilation at any time.
AgentWeb includes a runtime system that executes the agent instances and renders them in the game scene. Figure 3.8 shows the runtime system components and
their relationship. The runtime system is composed of agent instances, game engine, user input handler, and graphics engine. The game engine maintains the list
of agent instances and executes them, receives the user input, e.g., mouse clicks and
keystrokes, and applies them during the execution. The graphics engine renders the
updated agents in the browser. As the figure shows, each agent instance inherits its
49
3.8 Performance Issues
agent
depictions
visualProgram
compiledMethods
executeCompiledMethod
gameCharacter
currentDepiction
position
change
key
move
see
....
1
1
agentInstance
gameCharacter
execute
0..n
1
gameEngine
agentInstances
graphicsEngine
userInput
runningLoop
1
1
graphicsEngine
canvasElement
renderScene
1
1
inputHandler
keyboardBuffer
mouseBuffer
recordInput
Figure 3.8. Runtime system components and their relationship.
program and depictions from one of the agents created by the game designer. The
inheritance is implemented through JavaScript prototypes. During the instantiation,
an object consisting of the game character functionality is instantiated and associated
with the agent instance. The game character object maintains the run-time state of the
agent, as described before.
Algorithm 1 shows the pseudo-code of the execution cycle. The game engine contains an iterative execution cycle called ‘runningLoop’, which executes all the agents
repeatedly as long as the scene is running. The user can stop or continue the execution
at any time. After each execution cycle, the graphics engine renders the game scene
according to the updated position and depiction of agents. The agents are rendered
in a HTML5 <canvas> element which provides native graphics drawing in the Web
browser.
3.8 Performance Issues
The initial implementation of the runtime system had a major defect: more sophisticated games were slow, not reaching the interactivity level they required to be playable!
Therefore, I profiled the game execution process in order to uncover any bottlenecks.
Two major sections in which time was spent were the interpretation of user’s visual
program and Canvas drawing calls. To address the first bottleneck, I implemented a
50
3.8 Performance Issues
Algorithm 1 Game engine execution cycle
1:
2:
3:
4:
5:
6:
7:
loop
for all agent instances a in the scene do
execute a
end for
apply the user input (e.g., mouse and keyboard)
render the scene
end loop
compiler to avoid the overhead of repeatedly interpreting the visual program; to address the second, I developed a differential rendering algorithm to reduce the number
of calls to the Canvas API. The details of code compilation and the differential rendering algorithm are described in the rest of the section. The achieved performance
improvements are reported in Section 3.9.
3.8.1 Code Compilation
Every time a user-created program is executed by the runtime system, the interpreter
traverses the visual program, which is represented as a tree, to translate it to JavaScript.
The tree traversal and converting the visual representations to their equivalent executable JavaScript is a costly process. The compiler, instead, traverses the visual
program tree only once and serializes it into a string containing a JavaScript function
that is equivalent to what the interpreter would execute if it were to traverse the tree.
The JavaScript function is then injected to the browser engine using the eval function.
From now on, the compiled JavaScript function will be called by the game engine during the execution. Furthermore, by generating a JavaScript function and pushing it to
the browser engine, rather than interpreting the methods, instruction by instruction,
the generated code will have a chance to get optimized by the browser engine. This
is in particular effective in JavaScript compilers such as Chrome V8, which compiles
the entire code to machine code, and JIT compilers such as Firefox JaegerMonkey and
Safari Nitro in which hot spots are detected and compiled to machine code at runtime.
It is important to note that any performance optimization must keep account of the entire Web execution stack. In particular, browsers are performing an increasing number
of optimizations. Any optimizations performed by the developer should not duplicate
or, worse, hinder, such optimizations.
To preserve the interactive programming feature in AgentWeb, the compilation process is performed completely transparently to the game designer, i.e., in the user interface there is no button to save/apply the changes made in the program. To preserve
the transparency, the code translation is performed dynamically and incrementally, i.e.,
every single change in the visual program triggers the compilation process. To reduce
the compilation time, compilation is only performed for the changed method of the
51
3.9 Performance Evaluation
agent, rather than the whole program of the agent. As soon as the method is recompiled the agent hot-swaps the newly compiled code. Hot-swapping involves deleting
the old compiled method and injecting the new code into the browser engine. By
leveraging dynamic client-side incremental compilation, with no server communication involved, I achieve low compilation and response times that are imperceptible to
the game designer.
3.8.2 Differential Scene Rendering
The initial graphics engine was rendering all the agents on the scene at the end of
each execution cycle. By profiling the graphics engine I found out that most of the
time is spent in calls to the Canvas drawImage function. On the other hand, I found
out that the number of actual graphics changes of the game at each execution cycle is
quite low. Therefore, I designed a differential rendering algorithm which updates only
those parts of the scene that have been updated during the last execution cycle. The
differential rendering algorithm only re-draws the game characters that either have
moved or changed their depiction, thus reducing Canvas drawing costs. Algorithm 2
describes the pseudo-code of differential rendering. Section 3.9 shows the performance
gain of using the differential rendering algorithm compared to rendering the whole
scene.
Algorithm 2 Graphics engine differential scene rendering
1:
2:
3:
4:
5:
6:
7:
for all cells c in the scene do
if c was modified in the last execution cycle then
for all agent a positioned in c do
redraw a in <canvas>
end for
end if
end for
3.9 Performance Evaluation
The performance of games developed in AgentWeb is lower than the individually designed games developed by professional programmers due to the high abstraction level
of our game design model necessary to support novice programmers:
• AgentWeb’s domain-specific language constructs, i.e., conditions and actions,
such as see and move are translated to several JavaScript instructions that involve
calls to game and graphics engines. Hand-coded routines for one-off games can
be shorter than the automatically generated code.
52
3.9 Performance Evaluation
• Professional developers rely on performance profiling to detect the costly routines and optimize them individually. In the case of AgentWeb, I do not expect
novice programmers to perform such activities. Rather, I have to ensure that the
runtime system—consisting of the game engine and graphics engine—is highly
optimized to execute different types of games responsively.
Accordingly, I have been continuously profiling the interpreter, compiler, translated
code and runtime system during the development of AgentWeb to improve the performance of games. In fact, early profiling of the runtime system led to the development
of compiler and differential rendering algorithm as described in Section 3.8. To measure the execution performance of complex processes in the runtime system, I had to
develop our own profiler, rather than relying on the browser’s built-in profiler, to ensure that the collected performance data is comparable across different platforms and
browsers. The profiler instruments the main components of the runtime system including both the game and graphics engines to measure the time spent in different phases
of the execution process.
I implemented the instrumentation with the goal of minimizing the overhead on
execution and graphics performance:
• During running the evaluations I avoided any function calls to the profiler for
collecting and analyzing the data, as the overhead of function calls in a repetitive
execution process can increase the execution times. Instead, I defined some
profiling variables with global scope to profile the execution such as the number
of calls to the game and graphics engines.
• I hard-coded the profiling variables into the game and graphics engines instead
of turning them on or off using an if switch
• I deferred all the processing of collected data to after completing the execution
of the test cases as explained in the rest of this section.
In this section, I compare the performance of three computer games and one mathematical simulation, game of life. The games are instances of typical arcade games created using existing end-user programming environments. I included the game of life
as an instance of compute- and graphics-intensive simulation compared to games. The
games and their properties are sorted in ascending order of computation and graphics intensiveness in Table 3.2, i.e., Sokoban is the least compute- or graphics-intensive
game.
I conducted the evaluation across the latest versions of major desktop Web browsers
that are capable of running AgentWeb, i.e., Chrome 15 with V8 engine, FireFox 7.0 with
JaegerMonkey, and Safari 5.1 with Nitro11 . All the browsers were freshly started and
11
Currently, AgentWeb is not compatible with Internet Explorer and Opera.
53
3.9 Performance Evaluation
Game
Runtime
Scene Size
Depiction Size
Screen Size
Agents
(cells)
(pixels)
(pixels)
Sokoban
86
13x9
32x32
416x288
Frogger
∼290
20x13
32x32
640x416
Space Invaders
∼325
15x17
32x32
480x544
Game of Life
1024
32x32
32x32
1024x1024
Table 3.2. Evaluated Games and Their Properties
only one tab was opened during the performance evaluation. Desktop-based evaluations were performed using a MacBook Pro with 2.66 GHz Core 2 Duo processor and
4GB of RAM on two operating systems: Mac OS X 10.7 and Windows 7 running on
VMware Fusion 3.1. I also evaluated the performance of games on two smart devices:
Atomic browser on iPad 2 running iOS5 and FireFox on Samsung Galaxy S II running
Android 2.3. 12 AgentWeb is not usable on smart devices due to the lack of support
for touch interactions. However, being built using open-Web technologies, games are
executable in their browser as long as they support JavaScript and HTML5 canvas.
To find out whether games created in AgentWeb meet the interactivity required by
computer games, I measured the display rate, which is the common metric to measure
the responsiveness of interactive applications including computer games [123]. By
today’s standards, 30 FPS is the acceptability threshold for playing almost any game.
However, the required display rate depends on the genre of the game. 30 FPS is
required by action games in which the player tracks animated objects. Such strict
requirements do not apply to less interactive games such as board and card games. In
AgentWeb, the display rate is equivalent to the number of cycles executed by the game
engine per second, i.e., Algorithm 1, as at every cycle a complete interaction process
with the user takes place, including applying the user input and rendering the scene in
the browser.
For each game, I ran the evaluation in four different configurations in each browser
to compare the performance of code interpretation versus code compilation and complete scene rendering versus differential scene rendering.
• N: Code interpretation with complete scene rendering (no optimization)
• D: Code interpretation with differential scene rendering
12
Though AgentWeb runs in older versions of mobile Safari, in iOS5, mobile Safari crashes while loading AgentWeb due to an unknown bug. Therefore, I employed a popular substitute, Atomic browser,
which uses native iOS UIWebView to render Web pages. Atomic browser has lower performance than
mobile Safari as Nitro engine is only available to Safari.
54
3.9 Performance Evaluation
• C: Code compilation with complete scene rendering
• CD: Code compilation with differential scene rendering (most optimized configuration)
With each configuration, the test executes a snapshot of the game with a fixed
starting point in the game scene for at least 30 seconds and 50 execution cycles. Each
execution was repeated 30 times to achieve statistically valid results. The mean and
95% confidence interval values were computed for all the measured parameters. The
computed confidence intervals are very small and therefore neglected.
Figure 3.9 (a,b,c, and d) shows the display rate for the games across all the browsers.
For each game in each browser, the four columns correspond to the four described configurations in order from left to right. The performance gained by the compiler and
differential rendering (C, D, and CD) is obvious. With the most optimized configuration (CD), user-created games are playable across all the tested platforms. Specifically,
the games execute fast enough to be playable on smart devices. Even in the case of
Game of life, as a more extreme application compared to typical games, the achieved
frame rates on desktop browsers are reasonably high.
As shown in Figure 3.9, the performance gain of the compiler over the interpreter
reveals that the more compute-intensive the game is, i.e., more translated code is executed by the runtime system, the higher the performance gains will be. On the other
hand, the more graphics-intensive the game is, the more the differential rendering
behavior will be closer to the complete rendering and therefore the lower the performance gain. The performance gains of differential rendering are more pronounced
when used with the compiler (CD vs. D) than when used with the interpreter (D vs.
N). This is due to the higher frame rate when executing compiled code, which causes
a higher number of calls to the graphics engine.
Despite the differences of the achieved performance across different browsers, the
observed results demonstrate that the state-of-the-art browsers render the Web as a
hospitable platform for running not only one-off highly optimized games but also enduser created games built on higher levels of abstractions. Moreover, using the combination of compilation and differential drawing techniques (CD) makes it unlikely for end
users to reach the performance limit of AgentWeb on desktop browsers. User-created
games execute reasonably fast also on existing smart devices. Benefiting from relying
on the open Web, the games run on these devices independently of their hardware and
operating system specifications.
To explore possible relationships between the achieved results and existing browser
benchmarking suites such as SunSpider13 and V814 , I measured the performance of
employed browsers using these suites. The results are shown in Figure 3.9 (e, f).
The general performance of games may be predicted based on these benchmarks, e.g.,
13
14
http://www.webkit.org/perf/sunspider/sunspider.html
http://v8.googlecode.com/svn/data/benchmarks
55
3.9 Performance Evaluation
b) Frogger
a) Sokoban
Display Rate (FPS)
240
Display Rate (FPS)
240
210
210
180
180
150
150
120
120
90
90
60
60
30
30
0
0
Chrome Chrome FireFox FireFox
OS X
Win 7
OS X
Win 7
Safari
OS X
Safari
Win 7
Chrome Chrome FireFox FireFox
OS X
Win 7
OS X
Win 7
Atomic FireFox
iPad 2 Galaxy
c) Space Invaders
Display Rate (FPS)
240
Display Rate (FPS)
240
210
210
180
180
150
150
120
120
90
90
60
60
30
30
0
Safari
OS X
Safari
Win 7
Atomic FireFox
iPad 2 Galaxy
Safari
Win 7
Atomic FireFox
iPad 2 Galaxy
Safari
Win 7
Atomic FireFox
iPad 2 Galaxy
d) Game of Life
0
Chrome Chrome FireFox FireFox Safari
OS X
Win 7
OS X
Win 7
OS X
Safari
Win 7
Atomic FireFox
iPad 2 Galaxy
Chrome Chrome FireFox FireFox
OS X
Win 7
OS X
Win 7
Safari
OS X
f) V8 Benchmarking Suite
e) SunSpider Benchmarking Suite
Score
Time (ms)
8000
9000
7000
8000
6000
7000
6000
5000
5000
4000
4000
3000
3000
2000
2000
1000
1000
0
0
Chrome Chrome FireFox FireFox
OS X
Win 7
OS X
Win 7
Safari
OS X
Safari
Win 7
Atomic FireFox
iPad 2 Galaxy
Chrome Chrome FireFox FireFox
OS X
Win 7
OS X
Win 7
Safari
OS X
Figure 3.9. On the left side (a,b,c,d), the display rate is measured from execution
of games in a number of browsers. Each browser has been benchmarked with four
different configurations. Configurations are ordered from the slowest with no optimization (N) on the left to the fastest with code compilation and differential scene
rendering on the right (CD). Evaluations with the result of less than 3 frames per
second are not visible; On the right side (e,f), the performance of the same browsers
are measured using two browser benchmarking suites: e) In SunSpider, the faster
browser has the lower benchmarking time. f) In V8, the faster browser has the
higher score.
56
3.10 Usability Testing of the Game Design Environment
browsers with better benchmarking results are, in general, also capable of running
the games faster. However, finding a straight correlation between the performance
of games and those of algorithms benchmarked by these suites is hard to prove and
out of the scope of my work. This suggests that low-level benchmarking of browsers
is not suitable for estimating the performance of interactive games. A more sophisticated benchmarking suite with game and graphics rendering components may be more
suitable to estimate the performance of games precisely.
3.10 Usability Testing of the Game Design Environment
AgentWeb’s game design model has been inspired by AgentSheets, which has also
influenced other game design models [61]. AgentSheets has been widely used in
schools and computer clubs to teach computational thinking and programming to middle school and college students [12]. By employing AgentSheets’ game design model,
I am using a model that has enabled novice programmers to learn and build computer
games. However, AgentWeb has been designed using Web technologies, and therefore
its user interface has a somewhat different layout which has been built according to
state-of-the-art Web application development practices. Therefore, the usability of the
Web-based environment must be verified.
During the development phase, I continuously tested the usability of AgentWeb
through several game design sessions in an after-school computer class in a middle
school in Boulder, CO, with different participants. In each session, one or two middle
school students familiar with AgentSheets were asked to use AgentWeb with no prior
training. Familiarity with AgentSheets let me skip the training process and instantly
find out whether (i) participants are comfortable with the Web application layout; and
(ii) participants are actually able to create a game with AgentWeb.
In the school settings, participants were asked to create a basic version of a game
of their own interest such as Frogger, Pac-Man, or Space Invaders in a 30-60 minutes
session. I observed that in all cases, the participants were capable of learning the new
layout and creating a basic game. However, as the AgentWeb layout is different from
AgentSheets, initially participants required some time to adapt themselves to the new
interface. Participants were asked to think aloud during the session but they were
not provided with any support. While participants were comfortable with the general
layout of AgentWeb, our observations led to improving the user interface, including
re-arranging several buttons, adding shortcuts in the programming environment, e.g.,
for creating rules and methods, overriding the backspace button to avoid accidental
navigation to the back page, and adding snippets of visual programs to assist the game
designer.
After improving the user interface, I tested the environment with five end users who
had never programmed before. They were guided through the IDE for 10-15 minutes,
with the goal of familiarizing them with the IDE layout, image editor, programming
57
3.11 Conclusion
Agent Gallery&"
Image Editor%"
Scene Editor$"
Programming
Environment#"
!"
!"
#!"
$!"
%!"
&!"
'!"
(!"
!"#$%&#"'()$*+%
Figure 3.10. A sample usage pattern automatically recorded from end user’s interaction with Web-based AgentSheets . X axis is the passage of time in minutes. Y
axis is the section in which user has spent the time. The time periods of less than
10 seconds are considered as noise and removed.
environment, and the scene drawing and execution features. After the training period,
they followed a tutorial on how to make a simple Frogger game consisting of creating
5 agents, editing their depiction, programming, and drawing them in the game scene.
They all managed to finish the tutorial with a mean time of 58 minutes, excluding
training time, which in practice is about the same time dedicated in the game design
course in the middle schools to finish the Frogger tutorial using AgentSheets.
Benefiting from running in the cloud, I collected the participants’ use of the game
design. The AgentWeb’s layout manager was instrumented to record the user interaction with the user interface including focus on different IDE panes, e.g., the scene
editor, based on the mouse movements. The recorded data was transparently sent to
the server using AJAX and saved in a database. Analyzing the collected information
from the users led to discovering new flows which were extrapolated from the user
interaction with AgentWeb. For instance, Figure 3.10 reveals that the user tends to
edit the depiction of an agent right after creating the agent, while spending time in
the scene editor right after programming. I used this information to improve the IDE
layout: to keep the position of image editor and agent gallery closer together, and the
programming environment and the scene editor next to each other.
3.11 Conclusion
In this chapter, I posed the challenges of bringing educational game design to the Web
in order to make game design a cooperative learning activity. I presented the AgentWeb
game design environment and its engineering to address the challenges imposed by
the open-Web platform. AgentWeb adopts a well-known (rule-based, agent-oriented)
game design model to overcome usability issues, uses open-Web technologies to ensure
58
3.11 Conclusion
portability across platforms, and executes entirely on the client side to avoid potential
network latencies. AgentWeb employs client-side code compilation to JavaScript and
optimized rendering algorithms to achieve playability of the games across desktop and
mobile browsers. While existing game design environments may support creating more
interesting 3D games and games that require a physics engine, my focus is to teach
computational thinking in a cyberlearning platform, not necessarily the building of
visually appealing games.
In the next chapters, I will describe how I created a cooperative platform around
the game design environment that I presented in this chapter. The ultimate goal of
this cyberlearning platform is to extend the learning of computational thinking outside
of the classroom and scale it up to the much larger community of Web users. The
ecosystem will support collaboration and mentoring among the learners.
Chapter 4
Transition to the Web as a
Cyberlearning Platform
With AgentWeb, novices benefit from a cyberlearning platform for educational game
design, as discussed in Chapter 1.Technologically, we scale up the access to educational
game design world-wide through the Web platform. All users need to get started and
gain computational skills is a Web browser.
However, ‘teaching’ computing concepts through game design does not scale up
just by using a cyberlearning platform. In going to the Web, the main challenge is to
shift the educational practices from a traditional classroom environment to a cyberlearning platform. In traditional classroom environments, problem-based learning is
employed in which the teacher guides the students to solve the design and computational problems during the game design session. In the absence of a teacher, lack of
support for learning design and computational thinking makes these tools less motivating and less useful specially for newcomers. Therefore, even though some of the
existing game design environments are freely available to use, these environments are
mostly used in classrooms and are rarely used by a novice user with no access to a
teacher. I have identified two major problems with existing approaches:
• Although existing game design environments are rich for practicing computing
concepts, teaching problem solving skills, such as computational thinking [147]
and design thinking [52], is not explicitly supported by these tools and therefore
it is left to the teacher.
• Educational materials in the form of video tutorials, wikis and sharing Websites
mostly focus on teaching the features of the game design environment rather
than teaching the design and computational thinking skills. Step-by-step tutorials guide novices to create existing games, which may not be meaningful to them
[82].
As a result, novices who are not explicitly taught design and computational thinking
59
60
4.1 A process to support design and computational thinking
fail to use the game design environments properly and to achieve the expected skills.
During this research, I have explored ways to compensate for the lack of a teacher
when scaling up the computer science education using cyberlearning, to take full advantage of the Web as a world-wide teaching platform rather than just as a mean to
deliver software. I envisioned two solutions to compensate for the lack of a classroom
environment:
• Identify the most common computational and design thinking problems and provide tools and techniques to support novices with immediate feedback.
• Enable computer-supported cooperation among users and support peer learning
mechanisms
In this chapter, I describe my efforts to design and implement the first solution.
Chapter 5 will deal with the second solution. In Section 4.1, I describe the design and
evaluation of a game design process for learners which takes into account the absence
of the teacher. In Section 4.2 I analyze the results of evaluating the process, and suggest
solutions to integrate this game design process into the game design environment as
a software. Section 4.3 concludes. Some parts of this chapter have been published in
[3].
4.1 A process to support design and computational thinking
Based on my experience with novices during game design sessions with AgentSheets
and AgentWeb, I identified three common thinking tasks that novices repeatedly have
to accomplish to build a game. In this section, I present the design of a game design process, and its supporting tools, to compensate for the lack of a teacher. By
structuring the thinking problems, the process can assist the students in solving design
and computational problems during using AgentWeb. The benefits of this approach
include:
• Users gain computational and design thinking skills directly from the game design environment.
• In the cyberlearning settings, users receive support from the environment in the
absence of a teacher.
• The game design process will be personally meaningful to the students as they
build these skills implicitly while being actively involved in building a game
based on their own story.
The proposed solution provides support to novices in informal learning contexts
while remaining complementary to formal learning contexts to assist the teachers dur-
61
4.1 A process to support design and computational thinking
ing the game design course1 .
4.1.1 Identified Computational and Design Thinking Activities
Similar to other game design environments, design and computational thinking activities are not explicitly supported in AgentWeb. I identified three problems most
common to all the game design scenarios of AgentWeb that require design and computational thinking:
• Determining the game objects;
• Determining the behavior of a game object;
• Figuring out how to program a behavior.
To support the students with solving these problems during the game design, I
developed a solution for each of these problems. Our only assumption is that the
student is capable of expressing the game story in a written form. I use the Frogger
game as the example throughout this section. Here is a Frogger story [109]:
You are a frog. Your task is simple: hop across a busy highway, dodging
cars and trucks, until you get the to the edge of a river, where you must
keep yourself from drowning by crossing safely to your grotto at the top of
the screen by leaping across the backs of turtles and logs. You will die if
you get hit by trucks and cars!
The mentioned problems can be solved by analyzing the game story as follows:
Determining the game object
In order to determine the game objects, the user will be asked to mark all the words
appearing as a noun in the game story. Each noun is most likely one of the game
objects. For each noun, the user should determine if it plays a role or appears in the
game scene. If so, it will be a game object. In the above story, the nouns are: frog,
task, highway, car, truck, edge, river, etc. As an instance, task does not appear in the
game scene and therefore it is not a game object.
Determining the behavior of game object
The user is asked to mark all the verbs in the game story that are related to a game
object. Each verb defines a behavior, i.e., a piece of functionality, that requires programming. For instance, the frog hops, dodges, drowns, crosses, leaps, dies, and gets
hit.
1
In my opinion, at least at this time, cyberlearning is complementary to the traditional classroom
practices, to teach computing concepts.
62
4.1 A process to support design and computational thinking
Programming the behavior
To support the novice programmers to program the behavior, they will be given a list of
possible functionalities, each of which is to be related with one or more verbs. The common behaviors of game objects that are used across several games are identified and
knowns as computational thinking patterns in the context of AgentSheets [56]. Computational thinking patterns provide a higher level of abstraction than programming
that can be used to support novices in identifying how to program a certain behavior.
Similar patterns can be re-used for AgentWeb as it implements a game design model
similar to AgentSheets. Accordingly, the user will be asked to match the determined
behavior with a corresponding computational thinking pattern. For instance, hopping,
dodging, crossing and leaping are instances of cursor control pattern, while getting
hit is an instance of the collision pattern. For each computational thinking pattern,
the user will be shown the corresponding visual program that should be written in the
programming environment.
By providing support for solving these problems, users will be able to explore the
game design environment based on their own game stories in the absence of a teacher.
As a complementary solution to formal learning settings, students can be given a list
of stories to choose from according to their interest. The teacher can lead the students
to solve the mentioned problems according to their chosen story.
4.1.2 Evaluation
I conducted an evaluation to assess the feasibility of incorporating the designed solutions for computational thinking problems into the game design process. Considering
that introducing problem solving steps increases the complexity of the game design
process, I evaluated the following hypothesis:
Combining the support for computational thinking with the tool usage results in a game design process that is easy enough for the students to learn,
specifically in the absence of a teacher.
Evaluation goals
In order to evaluate our hypothesis, I developed a basic game design process which
combines design and computational thinking problems with steps to use the game
design environment. The process is tailored for AgentWeb, as shown in Figure 4.1.
Each step belongs to one of two types: computational thinking or tool usage. To
operationalize the term “easy to learn” in the hypothesis, the following aspects were
defined to be evaluated:
• Usability: each step of the process should be straightforward and easy enough to
be accomplished by a novice programmer.
63
4.1 A process to support design and computational thinking
Game Story
1: Determine the game agents
2: Create agents
3: Draw the agent on the scene
4: Determine the behavior of agent
5: Match the behavior to the corresponding
computational thinking pattern
6: Use the selected computational thinking
pattern to program the behavior
7: Test the program
Computational Thinking Step
Tool Usage Step
Figure 4.1. Evaluated game design process combines the computational thinking
tasks with tool usage tasks.
• Learnability: assuming that the user has accomplished the process before, whether
or not with the support of a teacher, it should become easier to repeat the process.
• Self-directedness: users are able to accomplish the steps in the absence of a
teacher.
Design of the evaluation
The process was developed as a proof of concept in order to validate our hypothesis.
I opted for an expert evaluation in order to collect comments and suggestions from
teachers to be used for revising the process and game design environment prior to a
64
4.1 A process to support design and computational thinking
user evaluation.
I adopted the cognitive jogthrough [115] process, a lightweight usability testing
method, for the evaluation session, in order to involve teachers to provide feedback
on the process as much as possible. By using cognitive jogthrough I focused on the
usability of the process while designing a game. Because the process is divided into
several steps, cognitive jogthrough as a task-oriented evaluation process lets us evaluate each step independently. I extended the jogthrough questionnaire to evaluate the
learnability and self-directedness of the process along with the usability (See Appendix
B).
Conducting the evaluation
I invited four high-school teachers to evaluate the game design process. Three teachers
were teaching students in the last two years of high school and one teacher in the first
year of high school. The evaluation was conducted in a single two-hour session. First,
teachers were shown a 6 minute video of how to create a game using AgentWeb. The
goals of evaluating the developed process were explained to the teachers.
Nine tasks were evaluated in the context of Frogger, in order to show the order and
relevance of the tasks in the process. Each task corresponded to one step of the game
design process. The programming tasks (corresponding to steps 5 and 6 of the process)
were repeated twice to implement (i) moving the frog using arrow keys (cursor control
pattern) (ii) the frog getting hit by the truck (collision pattern). Each task was classified
as either computational thinking or tool usage, according to its corresponding game
design step. For each task six questions were asked, out of which four were directly
assessing the usability, one for learnability and one for self-directedness. I used the
cognitive jogthrough questionnaire both for computational thinking and tool usage
steps with a slight tailoring of evaluation questions for each step.
The tasks were performed by the moderator and teachers filled out the questionnaire for each task. As the computational thinking tasks are not implemented in the
game design environment, I used examples to demonstrate how to solve the problem.
To match a behavior with the corresponding computational thinking pattern in step 5
I printed a list of computational thinking patterns on the paper to be used by teachers
as the reference (See Appendix B).
4.1.3 Results
Teachers rated each research question based on cognitive jogthrough scaling: 0 = no
user; 1 = some users; 2 = half of the users; and 3 = most users. Figure 4.2 compares
the average rate of computational thinking tasks to tool usage tasks on each evaluation
aspect. All the average values fall between 2 (half of the users) and 3 (most users),
which, together with the teacher comments, shows that the teachers are persuaded that
all the steps are easy to be learned and to be accomplished by high-school students.
65
4.2 Comments from Teachers: Towards Smarter GDEs
Computa<onal"Thinking"Tasks"
Tool"Usage"Tasks"
Average'Rate'by'teachers'
3"
2"
1"
0"
Usability"
Learnability"
Self4directedness"
Figure 4.2. Mean of teachers’ rating of research questions based on cognitive jogthrough’s scaling.
Teachers commented that the game design environment is intuitive to accomplish the
designed tasks. The solutions to design and the computational thinking tasks are clear
and well-related to the the tool usage.
Tool usage tasks gained higher average rate than the computational thinking tasks
in all the aspects. Teachers explicitly pointed out that the computational thinking solutions should be integrated into the game design environment to be useful to students.
For instance, to support step 5, one of the teachers explicitly suggested to develop a
wizard tool to assist the students in matching the behavior to the corresponding pattern. Teachers considered the game design process to be complementary to be used
both inside the classroom and to give assignments to students to use at home. To support the students at home they suggested to use video tutorials on how to accomplish
computational thinking steps. The comments from the teachers are elaborated further
in Section 4.2.
4.2 Comments from Teachers: Towards Smarter GDEs
The teachers were positive about how intuitive the user interface is and that students
are comfortable with Web applications and virtual environments; hence, there will
be no initial barrier to engage students in the game design activities. The modified
jogthrough questionnaire that we used to collect the comments focused on the phenomena of using a GDE in the absence of a teacher, which became the main theme of
66
4.2 Comments from Teachers: Towards Smarter GDEs
the comments.
The evaluation shows that accomplishing the computational thinking steps is more
complex than tool usage. Teachers suggested that the support for computational thinking steps should be integrated into the game design environment, rather than only provided through exercises and tutorials as complementary teaching material to students.
In this section, I reflect upon the comments and offer ideas about how a GDE can provide better support to novices, by means of smart software tools and user interfaces, in
the absence of a teacher. The suggested solutions are based on my observations with
how novices use AgentWeb.
In response to the comments about seeding the environment with tutorials and premade materials, I later added these to the environment. For computational and design
thinking challenges I have drawn a solution to add a software tool inside the game
design environment to support novices. However, further exploration of developing
and evaluating such software was left as future work. Last but not least, I focus on one
of the issues which is related to this thesis and explore it in further details, which is to
enable cooperation among game designers.
4.2.1 Examples, Tutorials
The teachers state several times in the comments that practice is essential for learning. They mentioned that once students have accomplished each step once, repeating
them will become easy. One teacher commented on Step 6: "Who has managed to
accomplish this task more or less, will also succeed in a similar one." Another teacher
commented on Step 3 says: "Once an example have been created it will become much
easier to use these tools." Their comments suggest that each step of the process is
well-defined and repeating the steps becomes easier by practice.
The teachers stated that having tutorials and examples is necessary to engage students in learning activities from their home. On Step 1, a teacher stated:“If the teacher
knows the environment and is able to explain it, there will not be any problem. If
the students approach the platform independently (from home) a video like the one
you showed us will be useful. Interface seems quite intuitive." This led me to create a
‘Tutorials’ section on the AgentWeb Website and seed it with several new tutorials, as I
will explain in the next chapter.
On-Demand Educational Materials
A teacher commented on Step 6: "Tutorials should present examples for each pattern,
otherwise some students will not be able to accomplish the Step." This is In-line-with
my argument at the beginning of this chapter regarding the video tutorials of existing
GDEs to be too generic and focusing on how the GDE is used rather than how to solve
the computational and design problems that novices face.
67
4.2 Comments from Teachers: Towards Smarter GDEs
In particular, the teachers commented about having on-demand tutorials about
each computational pattern, and conditions and actions that are used in them. This
is mainly because initially users are not familiar with the behavior of the provided
condition and actions, and how they can be composed together to implement a computational thinking pattern. In other game design environments such as AgentSheets
and Scratch, a help document with some examples is provided inside the GDE to describe the behavior of each programming construct. In AgentWeb, I opted for creating on-demand video tutorials for each condition/action. On-demand video tutorials
demonstrate the implementation of one or more computational thinking patterns that
use the corresponding condition or action. All the videos have the same theme of interaction between two agents of circular shape, one in blue and one in pink, called
Mario and Maria respectively. I developed these videos only for those programming
conditions and actions that are used in Chapter 6.
Templates and Galleries
One teacher commented on Step 2: "It could be interesting to prepare some icons
with images ready made and in first instance start from those for creating an agent."
Accordingly, I added templates from which users can start a game. Currently, the
templates contain two pre-made games, an implementation of a Frogger, and a Ball
game that is used in the experiment reported in Chapter 6. More games can be easily
added to the list of templates.
Another teacher commented on Step 3:"Maybe adding a library where some simple
characters are already available that can be used immediately." I marked this as a future
work.
4.2.2 Computational Thinking Issues
The teachers commented that Steps 4 and 5 are most difficult as “they need thinking
and abstraction, rather than taking actions." The dependency of Step 5 on Step 4 —
they should be able to determine the behavior properly so that they can match it to
a program — requires knowing a list of possibilities and examples. Therefore, more
examples are required. One teacher stated on Step 5: "Without video/tutorials to
explain the models [,i.e., patterns,] to be used for the comparison [,i.e., matching,]
while providing examples it would be difficult for students to learn by themselves.
Once the reasons beyond running a comparison [,i.e., matching,] are clarified, this
step will be almost trivial."
The teachers mentioned that students will gain expertise gradually, as long as the
process is clear enough and well-supported in the user interface: "The more they use
the program the more the actions necessary for the implementation become obvious."
One teacher noted that by introducing Steps 4 and 5 into the game design process,
which separates the complexity of abstract thinking from using the programming tools
68
4.2 Comments from Teachers: Towards Smarter GDEs
in Step 6, learning step 6 becomes easier: "If the previous task [Step 5] is obvious,
then the work to complete this task [Step 6] will be easy. In order to run it at home, it
is necessary to have performed Step 5." However, another teacher commented on the
importance of teaching the control flow of the language (in Step 6): "Also in this case
there will be some more student experiencing difficulty. It is all about linking properly
cause/effect that are not always self explanatory and evident."
Tool Support for Computational Thinking
One teacher commented on Step 1: "Non-appropriate logic/linguist knowledge/background could create difficulties in some students." In order to support novices in Steps
1, 4 and 5, building proper tools with an easy-to-learn UI becomes crucial, so that we
minimize confusion and provide examples and support right at the time they require
it. It is important that such UI do not become restrictive and do not get in the way of
using the game design environment. Moreover, by introducing additional user interfaces, we have to make sure that features of the programming environment, such as
Turing-completion, are not compromised. Two of the possible enhancements are:
• Identifying Nouns and Verbs: Natural language processing techniques such as
part-of-speech tagging can be used to process the game story and identify the
nouns and verbs to support the user [137]. The immediate feedback returned
by such computer assistance will also help the user learn how to solve these
problems.
• Matching Computational Thinking Pattern with Expected Behavior: A basic user
interface can be developed inside the game design environment to guide the
user through added game design steps. For instance, user interface elements,
e.g., dialogs, can be added to let the user enter the game story, identify the
nouns to create the game objects, identify the actions from the verbs used in
the story, and match the identified behavior with corresponding computational
thinking patterns. As suggested by teachers, a wizard tool can assist the user in
choosing the right computational thinking pattern.
4.2.3 Design Thinking Issues
The teachers pointed out issues that are related to design thinking, rather than computational thinking.
Behavior Specification
One teacher stated about how students can realize that Step 6 is completed: “For somebody it will still be possible to neglect some details. For example the fact that the frog
could walk back.” This comment points to the issue of software specification. Verbs
69
4.2 Comments from Teachers: Towards Smarter GDEs
give us clues about the general behavior of the object, but to specify a behavior programmatically requires further effort. However, novices are not professional software
engineers. Therefore, following the spirit of educational game design, we do not want
to introduce a specification language to specify the behavior of game objects (unless
the language is created for novices!). Therefore, it sounds more reasonable to explore
other solutions.
I suggest to introduce a shared repository that is made of the ways that users currently have specified such behaviors. Information retrieval techniques can be used
to mine the behaviors out of existing games and use them as examples to help students figure out what the possibilities are and choose the behavior that is closer to
what they think. As a consequence, other novices can reuse these pieces of programs
in their games. Automatic detection of such patterns is currently being explored for
AgentSheets [64].
Decomposition, Cardinality
A teacher commented on Step 3: "Some clear instructions have to be provided, for
example it has to be spelled out that there is only one object frog, the road can be
repeated and it is necessary to point out the differences between tools that enable users
to achieve these goals." The comment points to the importance of design thinking. In
this case cardinality is an issue. At first sight, we need one big road in the game. But,
partially being forced by the grid-based game design model of AgentWeb, this would
not be possible. Therefore, the road should be decomposed to ‘road tiles’. The road tiles
are then repeated on the scene. How could we teach concepts such as decomposition
and cardinality, specially if there is no teacher involved?
4.2.4 Software Engineering Process
The teachers stated several times that students always forget something and figure it
out along the way, therefore they will need to go back and fix it:
• Step 4: “after reading the text will be able to abstract the behaviour of all various
characters. They will easily forget something and will need to come back to this
task."
• Step 4: “The abstract nature of the task implies that students while completing
it will easily forget some of the character behaviors. The students will spot that
later on while trying to accomplish next tasks and they will then have to complete
the description for the missing behaviors."
• Step 4:“There is a risk that, because of a lack of patience, some element could be
neglected. The problem could emerge in following phases and could create the
right occasion for discussing software engineering.”
70
4.3 Conclusions
• Step 6:“there will be always some students forgetting the details."
This suggests that the game design process, as carried out by novices, will be highly
iterative, even for the simplest tasks. We can not expect the students to follow a formal
step-by-step process.
On the other hand, students are very much reward-oriented, which is to get to see
the game running. One teacher commented on Step 7: "The test action is obvious
and it is the most fun part for the student." Therefore, to keep the students motivated,
it would be better to have small iterations which get the student to see the effect in
the game scene. As I discussed in the previous chapter, I have employed Interactive
Programming to fill the gap between Steps 6 and 7 by giving immediate feedback on
the behavior of game objects while students are programming them; thus shortening
the path from programming to testing. In a sense, interactive programming incorporates the fun of testing the behavior into the programming step. This could be further
extended by employing ‘Conversational Programming’ techniques [102], which during
executing the game it visualizes those programming constructs that are being executed
and shows the result of their execution. For example, users can see the result of the
evaluation of each condition at runtime, by changing the color of condition to green if
it is true or red if it is false.
4.3 Conclusions
In this chapter, I described a game design process that takes into account the absence of
a teacher in a cyberlearning platform and how software tools around it can bring further support to the learner. Affected by the design of the process that separates thinking steps from practical steps, the evaluation of the process by the teachers brought
up several issues related to software engineering, design thinking, and computational
thinking which students would struggle to accomplish if they are left on their own,
while teachers considered the sole programming task to be trivial and gained by little practice. To me, this raises a question: would it not be the time for educational
game design environments to shift the focus from practicing programming to practicing software design? The answer may be found in the end-user software engineering
community.
The software may go a long way to support the user, but at the end having a
teacher or peer to specifically guide the learner throughout the design and computational thinking issues is crucial. The next chapter explains the design and development
of a community-oriented Website which enables peers to cooperate around game design activities.
Chapter 5
Building a Cooperative Game Design
WebSite
By going to the Web, ties to a physical location are broken, which is the first step
towards expanding educational game design. However, because educational game
design involves learning activities, lack of a teacher on the Web should be compensated
for. During the evaluation presented in the previous chapter, a teacher pointed out that
"[by moving outside of the classroom,] it is not possible to intervene on specific issues".
In several steps of the process, at least one teacher commented on the fact that having
help from another person can be useful to accomplish the task:
• On Step 1: "With a minimum possible external support problem solving will
become easy enough for the majority of tools to be used."
• On Step 2: "Some students would need external help (teacher and peers, classmates) in order to complete this task."
• On Step 4: "It is not easy starting from the story script to imagine all possible
actions and modalities necessary in order to perform these actions.", and continues: "I believe it is necessary that an example is provided and shown to student
entirely with the teacher’s help."
• On completion of Step 5: “They will miss the contribution of an expert that could
help at each critical point.”.
Their comment reinforced my initial ideas that by going to the Web we can benefit
from building a world-wide community of learners/teachers following the successful
stories such as Wikipedia. In this chapter I describe the design and implementation
of a cooperative Website around AgentWeb to support the exchange of knowledge and
building communities of practice outside of the classroom environment and in the
absence of a formal teacher. Accordingly, students will be able to collaborate in game
71
72
5.1 Issues with existing models of cooperation
design activities and learn from each other. Ideally, such a community becomes a selfsustaining ecosystem in which the lack of an instructor is compensated by skilled peers
[66].
In the rest of this chapter, in Section 5.1, I argue about the inadequacy of existing supplementary game design Websites to trigger collaboration among learners or
to move the learning practices to cyberspace. In Section 5.2, I present a vision for
enabling cooperation and learning which is centered on the game design activities. In
Section 5.3, I describe the development of such a cooperative Website around AgentWeb. In Section 5.4 I describe the development of educational materials for the Website. In Section 5.5 I present the usability testing of the Website through a workshop
with 13 high-school students. Section 5.6 concludes.
5.1 Issues with existing models of cooperation
Sharing is the foundation of collaboration and the building block of a cyberlearning
platform. It should be intrinsic to the learning process and available to users at no
cost. As discussed In Section 2.2.3, some of the existing educational game design environments provide support for sharing the creations through a supplementary Website.
Users upload their creations on the Website in order to share them with others. The
others can play the game from inside the browser, but they need to download the
games to their machine in order to browse or modify the inside of the game, including
its graphic design and program. In case the user modifies the game and would like to
share it again with others, she should upload the game back on the Website. Issues:
• From the usability point of view, the upload-download process often takes more
than 10 seconds, which distracts the user from her flow of thoughts [89].
• The sharing model provided by existing environments lets users share the result
of their design, which is a game, i.e., ‘what’ they have built, not the design process, i.e., ‘how’ it was built. Such a sharing model draws a line between playing
the game as the entertaining artifact and exploring the game components as the
educational artifact. Rather, I believe that a cyberlearning environment around
game design activities should allow sharing and collaboration of the design of
the games. Downloading the games to the desktop to explore the inside of the
game disconnects the user’s flow of activities on the Website.
• As the game design process takes place on the desktop of individuals, rather
than in the knowledge sharing environment, these Web sites fail in mediating
knowledge exchange among peers to learn how to solve computational and programming problems. As a result, the comments on the game page appear to be
mostly praises about the game and there is very little information about ‘how’ the
73
5.2 A Vision for Unobtrusive Cooperation
game was built. This can be easily observed on the large game sharing communities such as Scratch 1 . Instead, the game design discussions mostly take place
on the forum of the Website.
The upload-download process is the first barrier to motivating cooperation and
peer learning among users. In line with this observation, recent studies on users of
Scratch with the largest game and animation sharing community shows that while the
social skills of Scratch users increase through using the application, there is no clear
results in increasing collaboration among scratchers [118]. I believe that one reason
that causes this ineffectiveness is that sharing is provided as an extrinsic feature to the
game design process which requires upload-download steps.
5.2 A Vision for Unobtrusive Cooperation
AgentWeb has been built as a Web application in order to easily integrate it into a Web
platform that motivates cooperation and social learning (see Section 3.1.2). In the
big picture, a browser-based game design tool is a stepping-stone towards integrating
the benefits of Web-based cooperative tools into the educational game design. Now
that I have the game design tool in the browser, I can build the required features that a
community of learners need around the tool. In Section 2.4.2, I described how the Web
and its participative culture have come into attention as a cyberlearning platform. Such
a cyberlearning platform transforms the traditional educational game design practices
in the following ways:
• From individual to cooperative game design: rather than running the GDE on
the desktop of learners, the game design activities take place at the center of
the networked platform which is designed for education, i.e., a cyberlearning
platform.
• From upload-download to unobtrusive exploration: as the game design takes
place online, sharing the games and their design with others happens with no
effort from the user. The games are being played online as before. But more
importantly, access to the design and program of the game is just one click away.
The platform encourages the learners to explore the inside of the games they play
and look for the solutions for their games in other games with similar behavior.
• From the desktop to the cloud: by going to the Web, the benefits of softwareas-a-service are added to the game design experience. First, learners can access
their game design workspace from any device and any platform, as long as they
are connected to the Internet2 By having their workspace in the cloud, users do
1
scratch.mit.edu
There are technical solutions to run a Web-based application even when the user is offline. Therefore,
being connected to the Internet is not a hard constraint.
2
74
5.3 Implementation
not need to maintain the project files and carry them on a disk back and forth
between the classroom and home.
• Community-oriented learning: Communication tools such as chat and chatroom
are integrated into the platform to add the social dimension to the game design
practices. The communication tools can be further integrated with social networking applications such as Facebook and Twitter. This will allow learners to
quickly reach a community of game design practitioners to find a solution for
their game design problems. In addition to using a forum to search for generic
problems, most of the discussions can be situated in the context of the game a
user is creating right when the user is creating it.
• Opportunity for understanding the learning process of novices: As the game
design takes place in the cloud, all the information on user interaction with the
game design environment can be collected such as the types of problems they
face, the usability issues with the tool, the amount of time they spend on each
part of the environment, etc. Together with the chat logs, this information can
be analyzed to understand the learners’ progression and how to support them
better.
Table 5.1 summarizes how the Web transforms the game design practices of the
learner from a traditional school environment, which I call Game Design 1.0, to a
community of practice using a cyberlearning platform, which I call Game Design 2.0.
5.3 Implementation
According to the discussed vision, I created a Website around the game design environment that facilitates cooperation among game designers in several ways. The Website
brings together Web 2.0 best practices and comments from the teachers during the
evaluation that was presented in the previous chapter. The Website consists of the
following components:
• Personal Workspace: the Website provides each user with a personal online
workspace to manage their own creations. The design and code of games are
stored—in the cloud—and shared by users, enabling collaboration among users
on the design of the game. Users can explore the profile of other users and the
games that they have created.
• Community Building: unlike the existing game sharing portals, in which every
game can be modified by its owner only, the AgentWeb Website allows other
users than the owner of a game to join as a designer of that game, and upon
approval of the game owner they will have access to modify and save the new
75
5.3 Implementation
Game Design 1.0
Game Design 2.0
Solitary game design
⇒
Cooperative game design
Download, Modify, Upload
⇒
Instant sharing
Share the play
⇒
Share the design
Play the game online,
⇒
Explore the design of
edit the game on the desktop
Different instances of the GDE
the game and learn online
⇒
on each computer
Seamless access to one cyberlearning
platform from different devices
Learner maintains project files
⇒
Platform maintains project files
External communication tools
⇒
Integrated communication tools
Support through forums
⇒
Situated game design rooms
Learning in the classroom
⇒
Social learning in an online community
from the teacher
No data on patterns of
tool usage or collaboration
from peers and existing games
⇒
Easily recording tool usage and chat logs
on the server
Table 5.1. Comparison of Game Design 1.0 and Game Design 2.0 styles
version of the game. As a result, each game can have a community of game
designers who will work on the same game but at different times.
• Unobtrusive sharing and exploration of the design: the Website exposes all the
games created by all users and provides search and categorization functionalities. Users can browse and play all the games created on the Website, explore the
design and program of each game while still playing, and even modify the game
and re-run it to see how it works. As a result, the Website becomes an opensource community for game designers, as opposed to existing desktop-based
game design environments which only let users share games as a closed-source
software, unless they explicitly download the game.
• Integration with social networking applications: the Website provides basic integration with Facebook, the dominant social networking application, which eases
the user’s access to the Website—they do not need to create yet another new
account. Users can register and login to the AgentWeb Website using their Facebook account. I plan on expanding the social networking scenarios of the Website
further, to allow users to share and collaborate within their own social network.
76
5.4 Content Development
As a result, AgentWeb will be better integrated to the social media lifestyle of
students.
• Asynchronous communication: popular asynchronous participation channels including comments, rates, and like buttons were added to each game to allow users
to express their feedback to the designers of a game.
• Instant messaging and chatrooms: the teachers suggested to add synchronous
communication tools to support students in seeking help and information from
other members quickly. Accordingly, we added both instant messaging and chatroom features to the Website. While instant messaging allows students to collaborate with each other in a one-to-one manner, chatroom supports the communication at the community level. The chat facility is available on all the pages
of the Website—as an overlay—which lets users cooperate at any moment, in
particular when designing a game.
• Forum: the forum can be used by users to ask questions which can be seen and
responded to by all the members of the Website. Furthermore, the forum serves
as the knowledge base of the Website in which users can search previously posted
problems and answers.
5.4 Content Development
To help novices to get up and running with AgentWeb, the Website required help content. I added several video tutorials, two forums, and four showcase games to the
Website.
5.4.1 Video Tutorials
I created two sets of video tutorials:
• How to use AgentWeb: includes ‘Introduction to AgentWeb’, ’Creating a Game’,
and 5 programming tutorials which, all together, are 76 minutes long. Because
there were several programming concepts to teach, I first wrote a manuscript for
the programming tutorials, to make sure that the tutorials cover all the concepts
that novices need to learn. Appendix C contains a list of all programming tutorials and the programming concepts that are taught in them, together with their
manuscript.
• Programming instructions (conditions and actions): I created one short tutorial
for each of five conditions and five actions, all together 23:20 long, which are
loaded from inside the game environment. These tutorials were made following
the discussion in Section 4.2.1 for those conditions and actions which are used
in the evaluation that is described in Chapter 6.
77
5.5 Usability Evaluation of the Website
5.4.2 Forum
I created two forums and added several questions to each forum:
• FAQ: contains several questions about what agentweb is and whether users need
to install any software to use it.
• Programming Questions: contains several programming questions, all of which
start by “How do I ... ." Each question contains a response pointing to one of the
video tutorials of the programming instructions.
5.4.3 Showcase
I re-created four of the games that were originally created with AgentSheets, each one
containing a number of computational thinking patterns:
• Frogger: Absorb, Collision, Generate, Transport
• Sokoban: Pull, Push
• Space Invaders: Absorb, Collision, Generate, Script
• Game of Life: Perceive/act synchronization
The purpose of these games is two-fold:
• Showing what kind of games can be created with AgentWeb.
• Using them in the future evaluations,as used in the next chapter, as a way to find
out how a certain computational thinking pattern is implemented.
5.5 Usability Evaluation of the Website
To study the usability of the Website, I conducted a one-day workshop with 13 highschool students in the age range of 15 and 20. Participants were given 90 minutes of
hands-on tutorial on how to create a frogger game. Next, they were given 60 minutes
to improve their games. The workshop setting was a round-table in a classroom. A
total of 40 students had originally applied to take part in the workshop and among
them only 13 were selected. The selection was done by the teachers at the school
without my involvement. I have little information about the selection criteria. I was
told that the teacher thought these students would benefit from the workshop. After
a brief introduction, each student was asked to fill a brief questionnaire about age,
education and preferred subjects, from which it emerged that the majority was inclined
towards science, mathematics and Informatics. The students showed their interest and
dedication by engaging deeply equally during the tutorial part and even more so while
78
5.5 Usability Evaluation of the Website
Strongly Agree5"
Agree4"
Not Sure3"
Computer
Use
Game Design
Environment
Cool
Annoying
Easy to learn
Entertaining
Confusing
Entertaining
Confusing
Cool
Annoying
Easy to learn
Strongly Disagree1"
Fun
Interesting
Frustrating
Boring
Disagree2"
Cooperative
Website
Figure 5.1. Mode of participants’ rating based on the likert scale.
working on their games; they kept working even during breaks. At the end of the
workshop participants were asked to fill out a questionnaire regarding their overall
game design experience. Figure 5.1 shows the mean user experience measured using
likert scale in three aspects: use of the computer during the workshop, the game design
environment, and the cooperative Website.
Comments on the game environment were mixed: there was enthusiasm on how
much they could build in such an easy way, one comment described the environment as
phenomenal, a tribute to how simple and effective it proved to be. However, those students who already had experience with regular programming languages commented
on how the environment was too simple and not challenging enough for them. This
is in line with the fact that the environment has been designed and targeted to novice
users.
All students commented on how easy and fun the system was and a third of them
mentioned how much they enjoyed the possibility to share their work with their peers.
This is in line with their behavior during the game design session. Even if students
did not ask many questions directly from tutors and limited their active participation
during the workshop—taking an active role in a class and showing genuine interest
in a topic is seen as showing off and not ‘cool’—still, more than half of them enjoyed
publishing their earlier work during development, showing how much they liked to
share their new achievements with their peers and valuing this option.
As the students were collocated and the number of participants was low I can not
state any statistically valid conclusions. However, I observed that most of the partic-
79
5.6 Conclusion
ipants naturally cooperated with their adjacent participants to solve their own problems. Even though all the participants were physically in the same location, a few used
chat to seek help from other participants. Students could see the advantages of sharing their work as a direct way to start a collaboration and get help while establishing
themselves and let their game represent them.
5.6 Conclusion
In this section, I presented the design, implementation, and evaluation of a Website
around the AgentWeb game design environment. The Website is a proof-of-concept cyberlearning platform based on software-as-a-service and Web 2.0 practices. I discussed
how such a platform addresses the inefficiencies of existing game sharing models for
educational game design environments. Some parts of this chapter have been published in [2].
In the next chapter, I conduct a more comprehensive study with novices using
AgentWeb in a “real” cyberlearning setting, i.e., accessing the Website from their home
and with no access to a formal teacher. This will help me understand how novices
employ the provided tools of the Website to find solutions to their computational problems and whether educational game design practices are replicable in a cyberlearning
platform.
80
5.6 Conclusion
Chapter 6
Experimenting with Cooperation
In previous chapters we described the design, development, and evaluation of AgentWeb, a cooperative educational game design environment built using open-Web technologies and instrumented with collaborative features according to Web 2.0 practices.
AgentWeb was built to evaluate my thesis on whether we can broaden participation in
educational game design by moving it to the cyberlearning space. As I showed in the
previous chapters, building a working prototype was done successfully. However, the
question still remains:
can educational practices be replicated in a cyberlearning platform, in which
the physical classroom and formal learning is replaced by a cyberlearning
platform and online communication tools?
In this chapter, I report on an experiment which I conducted in order to understand
the function of computer-supported cooperation in the computational thinking activities
taken place in a cyberlearning educational game design environment. Understanding
the function of cooperation is the central phenomenon in this experiment. Computational thinking defines the dependent variables, i.e., the variables of interest are those
related to how a computational problem is solved. Therefore, in this experiment I
rule out other tests including those related to usability, e.g., how users draw the game
scene, or navigate through the Website. As for computational thinking, the focus of
this experiment is how users solve computational problems, rather than how they learn
programming.
The Web is the cyberlearning platform on which I rely for running AgentWeb and
the Website around it. Computational thinking activities take place through a Web
browser and educational activities are supported through the Website’s features including the forum, instant messaging, and chatroom.
In the rest of this section, in Section 6.1, I define the set of questions that are the
subject of this experiment. In Section 6.2, I briefly explain the experiment’s process.
In Section 6.3, I describe how the data is collected during this experiment. In Section
81
82
6.1 Research Questions
6.4, I explain the procedure of conducting the experiment. In Section 6.5, I present
and discuss the results. Section 6.6 concludes by answering the research questions.
6.1 Research Questions
The core theme of the research questions of this experiment is to find out whether
with the provided ways for cooperation, novices can practice and gain computational
thinking skills.
1. a) Do novices rely on cooperation channels to solve their problems or they prefer
to find the solution individually? b) Which cooperation channels do users employ
most in order to solve the problems?
2. How do cooperative tools affect novices’ performance? Can they solve more
computational problems if they cooperate?
3. Do novices learn computational thinking concepts by engaging in game design
activities in a cyberlearning platform?
6.2 Research Method Overview
I used a mixed methods design, i.e., employing both quantitative and qualitative methods, for this experiment. The main part of the experiment is developed as a quantitative
evaluation. Qualitative evaluation is developed as complementary in order to support
the findings of the quantitative research.
Each participant is involved in a game design session in which they are asked to
solve a number of computational thinking tasks. The performance of participants, such
as the number of problems they solve and whether they use cooperation tools to solve
the problems, is collected during the game design session.
After the game design session, participants are asked to reflect on their experience
with the use of cooperation tools during the game design session. The collected data
will be used to explore the function of cooperation tools and explain the measured
quantitative data.
A computational thinking quiz measures whether participants can identify those
computational thinking patterns that they implemented during the game design session. Furthermore, a basic pre-post test is developed to measure the change of the
users’ opinions about using a Web-based software, and computational thinking skills.
6.3 Data Collection Methods
A number of questionnaires were developed to measure different aspects of the user’s
participation during this experiment, as will be discussed throughout this chapter.
83
6.3 Data Collection Methods
• Registration form (Appendix D.1) collects demographic information and the participant’s prior computer science and programming knowledge.
• Pre-test questionnaire (Appendix D.2) collects the participants’ computer and
Web usage habits including Web applications and communication applications
(D.2.1), gaming experience (D.2.2), social networking (D.2.3), preferences regarding desktop versus Web applications (D.2.4), and their interest in computer
science (D.2.5). The last two parts are measured again after the experiment.
• Task completion questionnaire (Appendix D.3) collects the users’ use of cooperation tools after each task.
• Computational thinking quiz (Appendix D.4) measures the users’ capability to
identify computational thinking patterns.
• Qualitative questionnaire (Appendix D.5) collects the users’ opinion about the
use of cooperation tools, tutorials, and the game design session in general.
6.3.1 Computer Logs
A logging system was added to the Website and the game design environment to log
the following data in a database on the server.
• The page the user is visiting
• Every minute that the user spends in the game design environment
• Each time the user explores the inside of a game, including the information of
the game.
• Whether the user is playing, designing, or exploring a game
• The game design part (scene editor, programming environment, image editor) in
which the user is spending time, the switches between parts and the time spent
in each part. I disabled the interactive programming layout so that at each point
in time I know with which part of the game design environment (scene editor,
programming environment, image editor) the user is interacting.
• Programming actions including drag-and-drop, delete, new rule, new method,
duplicate, and modification to the values of the programming conditions and
actions.
• Video tutorials watched by the user.
• The idle time was recorded if the user did not interact with the environment (using mouse or keyboard) for more than 20 seconds, unless the user was watching
a video tutorial.
84
6.4 Procedure
• Each time the user leaves or returns to the browser page by going to another
browser tab or application.
• The chat and chatroom conversations were also recorded with a time stamp in
the database.
6.4 Procedure
6.4.1 Sample
Recruiment was done mainly through Craigslist and Amazon Mechanical Turk. All the
interested individuals were asked to fill out the registration form which served as pool
from which I selected a sample of participants who met the following constraints:
• Participant must be a novice programmer with no programming background.
• Since I focused on the Gen-Y population, the participants’ age must be between
16 and 30.
I invited 97 participants who met these constraints. Out of those who responded, 9
(4 male, 5 female) participated till the end of the experiment. The participants were:
min=18, max=29, mean=23.6 years old. 7 participants were from 4 different states
of the US, and 2 others were from Russia.
The registration form also served as the demographic questionnaire by collecting
the participants’ age, gender, location including the state, the country they went to
school, proficiency in the English language, profession, education, and computer skills
level including whether they have ever taken a computer course, written a program or
created a website, and the programming languages they have used to do so.
6.4.2 Pre Test
All the participants were asked to take the following steps prior to attending the game
design session:
• Create an account on the AgentWeb Website and watch AgentWeb’s two introductory video tutorials. This would let the participants decide whether they are
interested in participating in this experiment.
• Fill out a questionnaire (Appendix D.2.1-D.2.3) including i) computer and Web
usage habits. I collected this data to understand the participants’ background to
be able to better support them during the game design session, and be able to
explain the users’ performance and detect possible outliers in future correlational
85
6.4 Procedure
studies; ii) Pre-test questions (Appendix D.2.4-D.2.5) collect the participants’ beliefs and preferences regarding the difference between desktop and Web applications and their opinions about computer science and computational thinking,
as described below.
• Install the Google Chrome browser to make sure that the experience will be the
same among all participants.
A pre-post questionnaire was used (Appendix D.2.4-D.2.5) to measure the change
of the participants’ opinion in the following:
• A 16-items questionnaire based on likert scale was developed to measure the
user preferences in using a Web application versus a desktop application.
• 8 questions were created to measure the interest of the participants in taking
an introductory CS course, their opinion about the effect of computer science
knowledge in their daily life, their opinion about whether learning computer
science/programming is a solitary or collaborative activity, the context in which
they would prefer to learn computer science, and whether they think they can
learn a professional programming language.
6.4.3 Game Design Session
A 2:30 hours long game design session was scheduled for each participant. Prior to
the session, they were asked to watch 3 out of 5 programming tutorials which all together take about 34 minutes.During the session, participants were asked to work on 5
computational thinking tasks (see Section 6.4.3). To focus on these tasks, I left out the
solving of design problems such as identifying the agents and their actions. Therefore,
I created a ‘ball’ game template containing the agents. I specified each task in detail to
lower misunderstanding of the tasks. Moreover, I removed the conditions and actions
that are not necessary to accomplish the tasks from the programming environment.
I integrated the tasks into the UI of AgentWeb so that participants could easily
read them without navigating to another page or opening a browser tab on the side.
Moreover, to measure how participants spend time on each task, I added buttons in the
tasks to record starting, pausing, and completing the tasks on the server (see Figure
6.1).
After completing each task, whether they completed the task successfully or not,
the participants were taken to a short questionnaire which collects the information
about the communication tools they used during the task (Appendix D.3).
Moderation and Help
I moderated the session to make sure that participants go through the tasks one by
one and report the start and completion of the tasks properly, and filled out the task
86
6.4 Procedure
Figure 6.1. The participant receives the description of tasks from inside the game
design environment. The logging system records the flow of completing the tasks
and the time spent on each task.
completion questionnaire after each task. During solving the tasks, I was remotely
tracking the activities of the participants by:
• Exploring the inside of their game, simply by going to their game page and pressing the explore button, i.e., a feature of the Website that I described in Chapter
5. Accordingly, I could follow their progress in implementing the solution.
• Monitoring the logs that are recorded in the database to see how they interact
with the environment, whether they watch tutorials, or explore other games to
find a solution.
• Taking notes on each task about the kind of problem that the participant is facing
and their solution to the problem. I used these notes during analyzing the results.
As a moderator, I provided help in finding the solution to the tasks in an organized
way, with a set of principles:
• Prior and during the session, I asked the participants to ask for help in case they
do not understand the tasks or can not figure out the solution to the task.
• I did not offer any help with the tasks unless they asked for help.
• I did not have any way to modify their game nor its program. Therefore, if they
could not find a solution, they would give up and continue to the next task.
In case they asked for help, I made sure that I understood the problem that they
were facing, by asking them, and in most cases by tracking their activities. It was not
possible, at least for me, to arrange a structured protocol for how much should I help
them as the demands of participants were varied. However, my golden rule was to
offer the minimal help to guide them towards the right solution, without mentioning the
right solution, and I let them find their own way toward it. The following may be a
rough order of how I guided them:
87
6.4 Procedure
• If there was a tutorial with an answer to their problem, I would point them to
the tutorial.
• If participants were not sure which condition or action they should use. I suggested them to explore the video tutorials of conditions and actions that were
embedded into the game design environment.
• I asked them questions about what they wanted to do and how they think it
should be done. This helped them to clarify their ideas and correct themselves.
• I explained to them the meaning of the program that they had written. This
helped them to understand what the problem was.
• If they still did not understand what the problem was, I explained the problem
to them.
• If they were still struggling with no success, I suggested them to explore some of
the similar games to find a solution.
• In a few cases, I pointed them to a certain game to explore.
Tasks
The tasks should satisfy the following predicates:
• The tasks should be representative of users’ interaction with AgentWeb. However, I leave out the usability testing tasks as they have been done to some extent
in previous chapters.
• If an active community of users exists around educational game design with
AgentWeb, the tasks should show us what kind of cooperation is triggered between users.
• For educational reasons, the tasks should help us measure the learning outcomes.
Therefore, tasks with no or little learning outcomes, such as drawing graphics or
the game scene are left out.
I considered two options for designing the tasks:
• Programming: Participants are given some programming tasks to learn the programming language of AgentWeb. This will include tasks such as creating rules
and methods, understanding the order of execution of the rules, etc. The programming tutorials that I created would serve as the basis for creating a set of
tasks.
88
6.4 Procedure
• Computational thinking patterns: Participants are given a set of behaviors for a
number of agents in the context of a game, and they would have to figure out a
solution to implement those behaviors.
To compare these two approaches, teaching programming is a bottom-up approach
in which the learner would learn the programming constructs without having a representative list of problems in the domain, while teaching computational thinking patterns is a top-down approach which starts by exploring the problem first and gain the
programming skills in the course of solving the problem. I opted for computational
thinking patterns, as discussed in Section 2.3.1, as the basis for designing the tasks:
• Computational thinking patterns are the building blocks of creating games. These
patterns occur across different games repeatedly. They are a good representative
of problems in the game design domain.
• There is a correlation between learning a pattern in one game and being able
to repeat them in other games. Based on this, I have created a computational
thinking quiz to measure the participants’ learning after the game design session.
• If the participants are engaged in only learning the programming constructs, it
would be hard to conclude about their ability to use their programming skills to
solve the actual problems in the game design domain. Moreover, assessing their
understanding of programming will become either long or incomplete.
As the Website already provides a number of games in the showcase, which users
have had the chance to explore even before the game session starts, I wanted to make
sure that the tasks are represented in the context of a novel game which is different
from those games. Therefore, I designed a new game, a ‘Ball’ game with 5 tasks
corresponding to 5 major computational thinking patterns. The ball game consists of
the following agents: Player, Ball, Goal Net, Goalie, Field Center. The computational
thinking patterns, their corresponding task, and the programming conditions/actions
that are used to implement those tasks are:
1. Keyboard/Cursor Control: User moves the player using arrow keys [Key, Move]
2. Push: Player moves the ball [Key, See, Make, Move]
3. Absorption: If goalie sees the ball on its right, it removes the ball [See, Erase]
4. Generation: When user presses the X button, the Field Center generates a ball
on its top [Key, New]
5. Collision: When the ball reaches the Net, the status bar shows a GOAL! message
[Stacked, Show Message]
89
6.5 Results
6.4.4 Post test
Computational Thinking Quiz
After completing all the tasks, the participant was asked to answer a quiz which measures their learning of computational thinking tasks that they implemented during the
game design session (Appendix D.4). The computational thinking quiz consists of 10
items, 2 items per each computational thinking pattern, each pattern corresponding
to one of the 5 tasks. One of the two items for each pattern shows the behavior of
one or two agents, including the visual program of the agents. The item then asks the
participant to choose the one out of four choices that best describes the behavior of
the agents. To avoid random selection and increase the precision of the measurement,
I introduced a second question for each pattern in which the participant has to select
the best term that describes the behavior shown in the first question. The terms are
the names of computational thinking patterns.
Post-test questionnaire
The post-test questionnaire repeats the same questions of pre-test questionnaire (Appendix D.2.4-D.2.5) to measure possible changes in the participants’ opinions about
using a Web-based application, and their interest in computer science.
Collaboration Questionnaire
The final questionnaire that participants filled out is a qualitative questionnaire including open questions about the effect of cooperation tools, the effect of tutorials, and
their opinion about the game design session (Appendix D.5).
6.5 Results
The experiment was conducted with 9 participants. I merged the chat logs with the
logs of participant activities and went through them to precisely mark the beginning
and the end of working on each task, to remove the communications and activities of
the participant before and after each task. While marking the beginning of each task
was straightforward, marking the end of the task was not straightforward from the
logs. I used signs from the chat and computer logs to mark the first logged event that
shows that the participant has realized that she has accomplished the task as the end of
the task.
In total, participantes attempted to solve 41 tasks. Table 6.1 shows the performance
of the participants in detail, according to the tasks.
90
6.5 Results
Task
Sample
Size
Full
Solution
Partial
Solution
Minor
Help
Major
Help
Q1
Q2
Time
Spent
(mean)
Tab
Switches
(mean)
Program
Actions
(mean)
Chat
Messages
(mean)
1
9
9
0
0
3
9
9
24:00
16
41
39
2
8
5
2
2
6
5
6
1:13:58
56
151
69
3
8
8
0
3
2
8
7
27:55
29
29
26
4
8
7
1
1
2
8
8
15:27
7
13
16
5
8
8
0
2
2
7
8
16:19
20
24
18
Total
41
37
3
8
15
37
38
μ: 31:32
μ: 25
μ: 52
μ: 34
90%
7%
20%
37%
Percentage
90% 93%
Table 6.1. Results of the experiment, divided by the tasks.
6.5.1 Task completion and quiz assessment
Out of 41 tasks, there was only one task which was left incomplete. 37 tasks (90%) of
the tasks were completed with a full working implementation. 3 other tasks (7%) were
completed with a partial solution which did not completely meet the specification of
the task.
Task 2 (push pattern) turned out to be the most difficult task which took longest
to complete and involved most help from the moderator. At the end, one participant
left the task incomplete and two others could only achieve a partial solution. After the
first three sessions with participants, I asked them to skip from task one to task 3 and
return to task 2 after completing task 5, in order to avoid the participants being stuck
in a difficult task for a long time.
Similar results were achieved in the computational thinking quiz. At least 90% of
the answers were correct on each of two types of questions. This shows that the participants were able to recognize the computational patterns in the context of another
game to a high degree. This suggests that they may perform better in recognizing and
repeating the same patterns in a different game. However, as the focus of this experiment was on cooperation, I did not explore the transfer of computational thinking
patterns in further detail.
6.5.2 Cooperation
In practice, the game design session turned out to be quite similar to the situation of
a community in which a newcomer requires help from a superuser. On each task, the
participants continued on their own until they reached a point where they started to
seek help. I observed that they often seek help from the tutorials before asking for help
from the moderator. Table 6.1 shows that 57% of the participants sought help from
91
6.5 Results
the moderator to solve the tasks. In particular, in task 2, which was more difficult than
other tasks, all the participants sought help.
By going through the chat logs, I categorized the level of help they received to two
levels: minor help and major help. Though it was hard to draw a line between major
and minor help in some cases, I used the following questions to help me categorize the
level of help they received:
• Was the extent of communication between the participant and I limited to a quick
question with a quick answer, such as searching for the right condition or action
to use, or the participant asked further details towards the solution?
• Would the participant be able to complete the task on their own in a reasonable
amount of time without my help? If yes, the level of help is minor. Otherwise, it
is major.
I observed that the tutorials which were embedded into the programming environment were successful in helping novices figure out how a condition or action works.
Therefore, understanding the behavior of conditions and actions caused a little communication between the participants and the moderator. The sources of difficulties
were residing elsewhere. The following created most of the difficulties for participants
that caused them to seek help from the moderator:
• Language symbols: some of the participants misinterpreted the ‘See Myself’
condition and used it instead of ‘Stacked above’ condition in Task 3. However,
this was a simple issue which was fixed with a minor tip from the moderator.
• Order of execution: participants had difficulties understanding how the rules
were executed. Even though this is explained completely in the third part of
the programming tutorials which they watched prior to the game design session,
several participants needed at least a minor tip from the moderator to fix their
implementation.
• Interaction between agents: to implement the push pattern in Task 2, the
player has to interact with the ball to move the ball to the direction that it is
moving. The correct implementation uses the ‘make’ action in the player to call
a method in the ball. Participants faced two problems: 1) whether they have to
implement the solution in the player’s program, in the ball’s program, or in both.
2) how to use the make action properly. Using the make action is described in
detail in the second programming tutorial which they watched prior to the game
design session. However, they had difficulties understanding the concept of a
‘method call’. This caused Task 2 to become the most challenging task.
Each of the above sources of problems created several unique situations in which
participants sought help. The chat provided the most efficient channel to seek for a
92
6.5 Results
tailored help according to the situation. The synchronous aspect of the chat turned the
forum to be useless during the session.
Three participants (33%) reported that they have explored the games in showcase
at least once. Four participants (44%) reported that they have explored the games
created by others at least once. All 9 participants chose ‘definitely yes’ when they were
asked whether the video tutorials were helpful to solve the tasks. All of the 9 participants chose chat with the moderator as the most effective way to find a solution to
their tasks, when they were asked “Which way of collaboration was the most useful for
you in order to find the solution to the tasks? why do you think it was the most useful
one comparing to the others? " Here are some of the comments from participants,
comparing the chat with tutorials and exploring the other games:
• “Talking to the admin really helped. I got some questions that I had to answer in
order to get clues on how to do the programming. This really helped me in this
process rather than just watching the tutorials and trying to memorize them all."
• “one-to-one Chat. It was the most useful tool to find the solution because I received instant answers and from them I was able to realize where and how I can
find information or what I was doing right or wrong. In exploring the program of
games in showcase it was kind of difficult to understand where exactly I should
find the similar actions or conditions. "
6.5.3 Details of game design activities
The system successfully collected the details of the participants’ game design activities,
including tab switches between the worksheet and programming environment, and all
the programming activities as described in Section 6.3.1. The last four columns in
Table 6.1 provide information on the average performance of participants during each
task.
As I described before, I turned off the interactive programming mode of the environment in order to be able to precisely measure the participants’ game design flow,
i.e, whether they are programming or testing. The number of switches between the
worksheet and programming tabs shows that novices iterate quite a lot between the
programming and testing steps, even for simple tasks with one rule (Tasks 4 and 5).
This also shows the value of the interactive programming mode which facilitates the
iteration by removing any tab switches or even pressing a button to see the behavior
of agents at runtime.
The participants were very task-oriented, trying to get the tasks done. They limited
their communication with the moderator to finding a solution to their tasks. Therefore,
the number of chat messages which is shown in the last column of the table is fairly
close to messages that were used for finding a solution, although they include a few
messages that were communicated for the moderation of the session.
93
6.6 Conclusions
Interpreting the number of programming actions and chat messages require further
investigations. However, one interesting phenomenon is the close values of programming actions and chat messages for all the tasks excluding task 2, even though out
of these 33 task, only 15 asked for help (6 minor and 9 major). If we interpret each
programming action as an external ‘activity’ towards achieving a solution, and a chat
message as an internal ‘activity’ towards finding a solution, the measured numbers
suggest that novices employ the communication channel in parallel to and as much as
they carry out programming activities!
6.6 Conclusions
I conclude by a set of questions and answers that reflect on the research questions of
this chapter:
• Did novices rely on cooperation channels to solve their problems? This experiment confirms that novices comfortably used the provided cooperative features
of AgentWeb Website to seek help during solving computational thinking tasks.
In 57% percent of the tasks, participants sought help from the moderator. 3
out of 9 participants reported exploring showcase games and 4 out of 9 participants reported exploring the games created by other participants. The forum
was useless during the experiment due to the superiority of chat as a synchronous
channel to seek help.
• Did cooperation affect the success of novices in solving computational problems?
In 37% of tasks participants required major help from the moderator to accomplish the task. Based on my observations, in the case of a major help, the participant could not complete the task in a reasonable amount of time if she did not
receive a tailored guidance from the moderator. Therefore, cooperation would
lead them to a solution in a shorter amount of time.
• Did novices learn computational thinking concepts by using AgentWeb, i.e., a
cyberlearning platform rather than formal classroom education? Out of 82 computational thinking multiple-choice questions in the context of a different game,
75 questions (91%) were answered correctly.
This experiment paves the way to further experiments with more samples on each
individual tasks to better understand the effect on cooperation on the performance of
novices. During this experiment, I have been collecting information about the participants’ habits and opinions, in order to correlate them with their performance and use of
cooperation tools. For instance, I would like to compare the performance and outcome
of those who cooperated during solving computational problems with those who relied on their own capabilities to solve the problems. However, with the low number of
participants, conducting correlational studies between participants’ performance and
94
6.6 Conclusions
their game design behavior would not be statistically valid. I plan to continue this experiment with more participants to a point at which I can draw statistical conclusions
on participants’ game design behavior.
Chapter 7
Conclusions
In this thesis, I studied the feasibility of leveraging the World Wide Web as a cyberlearning platform for educational game design. This would allow for practicing and
gaining computational thinking skills in an open online platform benefiting from the
obvious advantages of Web applications. Such a platform has the potential to scale up
computer science education beyond the existing classroom settings by incorporating
computational thinking practices into a community of practitioners.
7.1 Research Contributions
This thesis verifies and validates the feasibility of using the open Web as a hospitable
platform for educational game design practices. The contributions of this thesis are:
1. Engineering an open-Web educational game design environment. I created
an educational game design environment, called AgentWeb, using only openWeb technologies, i.e., JavaScript, CSS, and HTML5, which enables users to
design, program and execute their games right from inside the Web browser.
AgentWeb is an Integrated Development Environment that consists of a visual
game scene editor, a visual programming language and its underlying compiler,
a game engine, a graphics engine, and an image editor. The engineering process included the requirements analysis, architectural design, implementation,
performance improvement and evaluation, and usability testing of AgentWeb.
AgentWeb’s game design model follows that of AgentSheets, a desktop-based educational game design environment which has been successfully used for teaching computational thinking in schools.
2. Building a cooperative game design Website. I designed and developed a
Website around AgentWeb which allows sharing and cooperation around the
game design activities. The Website encompasses the game design environment
and created games, and supports its users to explore each other’s games in an
95
96
7.2 Open Issues
open-source fashion. I created a set of sample games and a number of video
tutorials to facilitate the initial engagement for novices. Communication tools
such as chat, chatroom, and forum enable cooperation between the users.
3. Replicating educational practices in a cyberlearning platform. I conducted
an experiment in which a number of participants belonging to the Gen-Y population used AgentWeb to practice computational thinking activities. The results
show the successful use of the platform by novices for engaging in game design
activities and gaining computational thinking skills, and proves the critical role
of a cooperative Website, in particular, chat and instant access to explore the
inside of other games, in compensating for the lack of a formal teacher.
7.2 Open Issues
I developed AgentWeb as a proof-of-concept to verify the statements of this thesis.
However, numerous hours of using AgentWeb by novices has proven to me that as
a software, it goes beyond a simple proof-of-concept or prototype. I believe that by
addressing a number of issues, AgentWeb can be reliably employed by the public in
educational game design and computational thinking courses and activities. Regarding
the first statement of this thesis, the following is the list of open issues:
• In observing the use of the AgentWeb game design environment and the Website by novices, I have noticed a number of relatively easy-to-fix usability issues.
By addressing these issues, the user experience with the environment and the
Website will be improved.
• At the moment, AgentWeb is not compatible with Internet Explorer and Opera,
two major browsers that are used across the world.
• Delivering many JavaScript files to the client’s browser can be cumbersome. I
have developed a build system that merges and minifies AgentWeb’s code to just
a few files. However, several html widgets and snippets are loaded dynamically,
after the environment is loaded, including plugins of the visual language. This
can be further improved to increase the user’s experience in using the environment.
• Further educational materials such as showcase games and tutorials are needed
to cover the kinds of games that can be created with AgentWeb.
As for the second statement of this thesis, there is still a lot more to explore:
• In Chapter 4, I described a list of challenges that novices face in a cyberlearning
environment and suggested software tools and methods to compensate for the
lack of a teacher. The details of designing and integrating these tools into the
game design environment remained unexplored.
97
7.3 Future Directions
• In Chapter 5, I described the rationale behind the design of the Website to support cooperation between the members. The Website is fairly simple at this point,
with minimal possible scenarios for users to create a community around their
games. With today’s variety of possibilities for employing social media to the
benefit of cooperation and learning, by no means the developed Website is a
final solution.
• In Chapter 6, I conducted an experiment to verify the possibility of replicating
educational practices in a networked environment. Although the total number
of accomplished tasks by the participants is large enough to draw statistical conclusions to validate the second statement of this thesis, increasing the number
of participants is needed to allow me to analyze the outcomes per each computational thinking task and conduct correlational studies on participants’ performance and their use of the cooperation tools.
7.3 Future Directions
As an educational software, AgentWeb can be further enhanced in a number of ways
to increase the interest of learners and reach more novices:
• Enhancing the game design environment to support more rich content such as
sound and vector graphics will lead to more encouraging games for novices.
• Being built using open-Web technologies, AgentWeb runs on the major Web
browsers that support HTML5. This includes mobile platforms such as iOS
and Android, which are becoming popular for educational purposes. However,
AgentWeb’s IDE and its layout are not made for small screens and it does not support touch interactions. By designing a layout for mobile devices and supporting
touch interactions, AgentWeb can be used on mobile platforms.
To expand the use of the learning platform around AgentWeb, I consider a number
of options:
• Schools: AgentWeb can be employed in any classroom that is connected to the
Internet. AgentWeb users can access their personal workspace from any computer. This means that students can work on their games seamlessly, at home
and at school. The Website can be further extended to provide an interface
for teachers to set up an online classroom which is visible only to their students.
Each online classroom can have its own language, discussion board, assignments
and so on, similar to existing MOOC platforms such as Coursera1 .
1
https://www.coursera.org/
98
7.3 Future Directions
• Social Media: The Website can further employ social media to: 1) reach those
who are interested in gaining computational thinking skills but never had an
opportunity in the school. 2) allow a personalized experience for novices to share
and cooperate within their own online social network. This can be achieved by
integrating social networking platforms such as Facebook and Twitter into the
Website’s flow.
• Gamification: To lower the engagement barrier, and make it more fun to engage
in computational thinking activities, I would explore gamifying the game design
activities. For instance, users will collect points and badges for engaging in game
design activities. An advantage of AgentWeb over solitary game design environments is that group activities can be set up in which multiple users collaborate
or compete in game design activities, and a real-time scoreboard can provide
instant feedback on their collaboration/competition.
I hope that this thesis can pave the way to the building of a sustainable online
community in which computational thinking skills can be practiced from anywhere, at
anytime, and with minimum barrier for the learners.
Appendix A
AgentWeb’s Visual Programming
Language Specification
99
100
Data Type
Description
Text
Lets user input a text in a text box.
Key
Asks user to enter a key. Special keys such as arrow keys and space bar
are represented by their name.
Number
Lets user input a number in a text box. It checks the format automatically
and supports range checking and auto-correction of the entered value.
Relational Operator
A drop-down list allows the user to choose from (=,>=,<=,>,<,<>)
Stack Position
A drop-down list allows the user to choose from (above, immediately
above, below, immediately below, above or below)
Mathematical
Expression
A text box allows the user to enter a mathematical expression. The
expression must follow Visual AgentTalk Formula Syntax which is
described in: http://www.agentsheets.com/Documentation/windows/
Reference/tm_ti_formulasyntax.html
A mathematical expression parser translates the expression to its
equivalent JavaScript expression.
Direction
As shown in the picture, a visual interface allows the user to select one of
nine directions, i.e., one of the adjacent cells in the worksheet’s grid.
Agent List
A visual interface lets user pick up one of the agents. For each agent, it
shows only the first depiction, which is the main depiction of the agent.
Depiction List
Similar to the agent list, but it shows all the depictions of all the agents.
Worksheet List
A drop-down list allows the user to pick one of the worksheets which are
listed by their names.
Table A.1. Visual Data Types
101
Condition
Description
Arguments
Chance
[value]: Number
The rule will be executed with the chance
specified by its value. The value must be
between 0 and 100.
Current
worksheet
[worksheet name]: Worksheet List
If the running worksheet is the one chosen in
the worksheet list...
Empty
[direction]: Direction
If the cell at the given direction is empty...
Has
attribute
[direction]: Direction
[attribute]: Text
If a neighbor agent given in the direction has
a value for the specified attribute...
Is
[exp1]: Mathematical Expression
[op]: Relational Operator
[exp2]: Mathematical Expression
If (exp1 <op> exp2)
Key
[key]: Key
If the given key is pressed...
Next to
[op]: Relational Operator
[value]: Number
[depiction]: Depiction List
If the number of adjacent agents with the
given depiction satisfies the relation given by
op with the given value,...
Example: If there are 3 or more ‘X’ depictions
next to me .
Once
every
[time]: Number
Every once in a given time, this condition
holds. The time value is in seconds. The
smallest value is one millisecond.
See
[direction]: Direction
[depiction]: Depiction List
If the agent sees an agent with the given
depiction at the given direction...
See a
[direction]: Direction
[agent]:
Agent List
If the agent sees the given agent (regardless
of its depiction) at the given direction...
Stacked
[location]: Stack Position
[depiction]: Depiction List
If the agent is located at the given location of
an agent with the given depiction...
Stacked a
[location]: Stack Position
[agent]: Agent List
If the agent is located at the given location of
a given agent (regardless of its depiction)...
Table A.2. List of Conditions
102
Action
Description
Arguments
Broadcast
[agent]: Agent List
[method]: Text
Calls the given method of all the
instances of the given agent.
Change
[direction]: Direction
[depiction]: Image List
Changes the adjacent agent at the given
direction to the agent of given depiction
and sets its depiction accordingly.
Erase
[direction]: Direction
Erases the adjacent agent at the given
direction.
Invite Friends
(experimental)
none
If the player is logged in with her
Facebook account, the Facebook’s friend
invitation dialog opens up.
Make
[direction]: Direction
[method]: Text
Calls the given method of all an adjacent
agent located at the given direction.
Move
[direction]: Direction
Moves the agent one cell to the given
directions.
Move Random
[agent]:
Of all the adjacent agents with the given
direction, chooses one randomly and
moves on top of it.
New
[direction]: Direction
[depiction]: Depiction List
Creates a new agent instance of the given
depiction at the given direction and sets
its depiction accordingly.
Reset
Simulation
none
Resets the worksheet.
Set
[exp1]: Mathematical Expression
[exp2]: Mathematical Expression
Sets exp1 to exp2. exp1 is often an
attribute of the agent or a global variable.
Share on
Facebook
(experimental)
[caption]: Text
[description]: Text
If the player is logged in with her
Facebook account, the Facebook’s ‘Post
to the page...’ dialog opens up.
Show
Message
[message]: Text
Shows the given text in the status bar of
the worksheet.
Stop
Simulation
none
Stops the worksheet.
Switch
Worksheet
[worksheet name]: Worksheet List
Switches the running worksheet to the
given worksheet.
Transport
[direction]: Direction
Moves the agent and all the agents on top
of it one cell to the given directions.
Wait
[time]:Number
Pauses the execution for the given time.
Depiction List
Table A.3. List of Actions
Appendix B
Usability Evaluation Form
Actions/choices should be ranked according to following conventions: 0= nobody, 1=
somebody, 2 = more than half, 3= most.
B.1 Intellectual task
1. Description of user’s immediate goal:
2. How many users do you think will find it obvious that the action is appropriate to
the goal? 0 1 2 3
Why/Why not?
3. Executing the desired action: How many users do you think will find problems in
performing the action? 0 1 2 3
Why/Why not?
4. During the problem solving: How many users will find that obvious progress has
been made towards the desired goal? 0 1 2 3
Why/Why not?
5. Reaction to the satisfied goal: How many users do you think will recognise that
a task is completed? (to move to the game design environment to implement their
solution.) 0 1 2 3
Why/Why not?
6. Planning the achievement of a new goal: How many users do you think will find it
easy to satisfy a similar goal? 0 1 2 3
Why/Why not?
103
104
B.2 User Interface Task
7. How do you think this task could be supported better? i.e., By Improving the user
interface? Or by Providing Tutorials (text, video)? Please explain your ideas.
8. Assuming that the Website explains this task clearly using tutorials and videos, how
many users do you think will be able to learn by themselves how to accomplish this
task, e.g., at home, without being taught by an instructor? 0 1 2 3
Why/Why not?
B.2 User Interface Task
1. Description of user’s immediate goal:
2a. How many users do you think will find it obvious that the desired action is available? 0 1 2 3
Why/Why not?
2b. How many users do you think will find it obvious that the action is appropriate to
the goal? 0 1 2 3
Why/Why not?
3. Executing the desired action: How many users do you think will find problems in
performing the action? 0 1 2 3
Why/Why not?
4. Reaction to the satisfied goal: How many users do you think will recognise that a
task is completed? 0 1 2 3
Why/Why not?
5. Planning the achievement of a new goal: How many users do you think will find it
easy to satisfy a similar goal? 0 1 2 3
Why/Why not?
6. Assuming that the Website explains this task clearly using tutorials and videos, how
many users do you think will be able to learn by themselves how to accomplish this
task, e.g., at home, without being taught by an instructor? 0 1 2 3
Why/Why not?
7. How do you think this task could be supported better? i.e., By Improving the user
interface? Or by Providing Tutorials (text, video)? Please explain your ideas.
105
B.3 Computational Thinking Task
B.3 Computational Thinking Task
B.3.1 Matching with the sheet
1. Description of user’s immediate goal:
2. How many users do you think will find it obvious that the action is appropriate to
the goal? 0 1 2 3
Why/Why not?
3. Executing the desired action: How many users do you think will find problems in
performing the action? 0 1 2 3
Why/Why not?
4. During the problem solving: How many users will find that obvious progress has
been made towards the desired goal? 0 1 2 3
Why/Why not?
5. Reaction to the satisfied goal: How many users do you think will recognise that
a task is completed? (to move to the game design environment to implement their
solution.) 0 1 2 3
Why/Why not?
6. Planning the achievement of a new goal: How many users do you think will find it
easy to satisfy a similar goal? 0 1 2 3
Why/Why not?
7. How do you think this task could be supported better? i.e., By Improving the user
interface? Or by Providing Tutorials (text, video)? Please explain your ideas.
8. Assuming that the Website explains this task clearly using tutorials and videos, how
many users do you think will be able to learn by themselves how to accomplish this
task, e.g., at home, without being taught by an instructor? 0 1 2 3
Why/Why not?
B.3.2 Programming
1. Description of user’s immediate goal:
2a. How many users do you think will find it obvious that the desired action is available? 0 1 2 3
106
B.4 Computation Thinking Pattern Matching Sheet
Why/Why not?
2b. How many users do you think will find it obvious that the action is appropriate to
the goal? 0 1 2 3
Why/Why not?
3. Executing the desired action: How many users do you think will find problems in
performing the action? 0 1 2 3
Why/Why not?
4. Reaction to the satisfied goal: How many users do you think will recognize that a
task is completed? 0 1 2 3
Why/Why not?
5. Planning the achievement of a new goal: How many users do you think will find it
easy to satisfy a similar goal? 0 1 2 3
Why/Why not?
6. Assuming that the Website explains this task clearly using tutorials and videos, how
many users do you think will be able to learn by themselves how to accomplish this
task, e.g., at home, without being taught by an instructor? 0 1 2 3
Why/Why not?
7. How do you think this task could be supported better? i.e., By Improving the user
interface? Or by Providing Tutorials (text, video)? Please explain your ideas.
8. How many users do you think will find problems during writing the program with
or without performing Task 5, i.e., matching with the corresponding pattern ?
with matching to corresponding pattern: 0 1 2 3
without matching to corresponding pattern: 0 1 2 3
why/why not?
B.4 Computation Thinking Pattern Matching Sheet
107
B.4 Computation Thinking Pattern Matching Sheet
Action''
Keywords''
Behavior'Description'
Sample'Program'
Share'
'
Tell'friends'
'
When'something'
'
accomplished/happened'in'
the'game,'user'can'share'it'
on'Facebook.'
'
Example,'when'the'Golf'ball'
hit'the'hole,'share'with'
friends.'
Hit'
'
Collide'
'
Face'
'
Run'into'
Two'agents'collide'with'
'
each'other'
Ball’s'program'
'
Example:'when'Ball'hits'the'
ground,'bounce'back.'
Change'level'
'
Change'scene'
Go'to'another'scene'
'
Example:'in'the'Golf'game,'
when'the'ball'hits'the'hole,'
the'user'goes'to'the'next'
level.'
Create'
'
Generate'
'
Produce'
One'agent'creates'another'
agent.''
'
Example:''
shoot'action:'the'gun'
generates'the'bullet'when'x'
is'pressed.''
Change'
'
Look'like'
'
Become'
'
Alter'the'
figure'
'
Remove'
'
Absorb'
'
Erase'
'
Delete'
'
The'depiction'of'an'agent'
Ball’s'program'
changes'to'another'
depiction.'
'
Example:'When'the'ball'hits'
the'box'it'turns'red''
'
'
Gun’s'Program'
'
'
'
One'agent'erases'another'
agent'
'
Example:'snow'disappears'
when'hit'to'the'ground''
'
Snow’s'Program
'
Figure B.1. Computational Thinking Patterns, Page 1
108
B.4 Computation Thinking Pattern Matching Sheet
'
'
'
'
'
'
Push'
'
Press'
'
Poke'
One'agent'pushes'another'
Sokoban’s'program:'
agent'to'one'of'the'neighbor'
cells.'
'
Example:'
In'Sokoban'game:'the'
sokoban'pushes'the'box'(in'
the'picture'to'the'right).'The'
'
box'moves'if'the'neighbor'
cell'is'the'ground.'If'the'box' Box’s'Move_Right'method:'
moved,'it'will'tell'Sokoban'
to'move'right'as'well.'If'the'
box'can'not'move,'it'stays'
where'it'is'and'nothing'
happens.'
'
Sokoban’s'Move_Right'method:'
'
'
'
'
Keyboard'
control'
'
Key'press'
'
User'input'
'
'
'
The'agent'does'something'
when'a'key'is'pressed.'For'
instance,'in'the'provided'
example,'the'agents'moves'
left,'right,'up'and'down'
using'arrow'keys'
'
'
Figure B.2. Computational Thinking Patterns, Page 2
Appendix C
Programming Tutorial Manuscript
C.1 List of video tutorials
Name
Length
Description
Introduction to AgentWeb
3:58
Introduces the game design environment.
Creating a game
13:44
Create a game with AgentWeb, use agent
gallery, depiction editor, scene editor
Programming, Part 1
11:55
Programming environment, conditions and
actions, drag and drop, testing in worksheet,
Programming, Part 2
11:41
‘Forever’ method, other methods, calling
a method, ‘make’ action, managing the rule
Programming, Part 3
11:24
Order of execution
Programming, Part 4
10:54
Combining multiple conditions
Programming, Part 5
8:22
Combining multiple actions, tutorials inside the
environment, multiple depictions
Table C.1. List of video tutorials available on AgentWeb Website
C.2 Introducing AgentWeb
What is AgentWeb? (plot: showcases page) AgentWeb is a Web-based application
for creating 2D video games. You can create games such as PacMan, Frogger, Space
Invaders, Tetris, Sokoban and similar games with AgentWeb. Here is some examples
109
110
Name
How to check for two agents
C.2 Introducing AgentWeb
Length
Description
1.23
Stacked condition
How to ‘See’ adjacent agents
6:28
See condition, used with several actions
How to do ‘Time-based’ actions
3:58
Once-every condition
How to ‘Show a Message’
1:03
Show message action
1:04
New action
How to make an agent ’Move’
1:11
Move action
How to ‘Erase’ an agent
0:55
Erase action
2:42
Key condition, used with
residing in one cell
in the Status bar
how to create a new agent
in the scene
from the scene
How to use Keyboard to
control and move the agents
How to ‘Change’ the depiction
move action
2:26
Change action
1:44
Chance condition
of an agent
how to use a ‘Chance’ condition
Table C.2. List of video tutorials of conditions and actions that are embedded into
AgentWeb’s programming environment
of games created using AgentWeb. You can see Frogger, Sokoban and Space Invaders.
You can click on each game and play it, and explore the inside of the game to see how
the game has been created. [Play space invaders then move to frogger and show inside
of the frogger game].
How does it work? (plot: inside a frogger game) Of course you want to create
your own game. Maybe you have seen a game somewhere and you want to re-create
it or you have a story in your mind for a game. The way you use AgentWeb is that you
think about the story of the game you want to create and identify the game objects and
characters. For instance, if you want to create a frogger game, you have a frog, some
cars or trucks, some road, a river and so on. You create these objects, or as we call
them, agents, draw their depictions using an image editor, define their behavior using
a simple visual programming language, draw the agents on the game scene, and voila!
you made a game.
111
C.3 Creating a simple game with AgentWeb
Do I need to install any software? You can create a game and share it with others
right from the Website. So, there is no need to download and install any program.
As long as you have a Web browser such as Google Chrome or FireFox, you should be
set to use it right away. The current version does not work with Internet Explorer so
if you use Internet Explorer, you need to install Chrome or FireFox to use AgentWeb.
We recommend Chrome because it is really fast and is most suitable when it comes to
creating or playing games.
Do I need to know programming? Now you may think, "how can I do so, without
computer science or programming knowledge?". No worries! You can build games
quickly without having these skills. In fact, you will be doing some programming. But
we have made it fairly easy to do and provided several easy-to-learn tutorials to help
you learn how create your own game with AgentWeb. In the rest of this tutorial, we
are going to show you in details how to create a simple game and teach you what you
need to know from AgentWeb to quickly get your hands dirty with creating your game.
C.3 Creating a simple game with AgentWeb
Creating a new game: Now let’s see in details how to create a game with AgentWeb.
Let’s start a new game, called ‘the ball’. We can’t run it yet as we have not created
anything. So, we go to the design page. Here we see the game design environment
that lets us create the game and save it. First it asks for the size of the game objects,
or as I mentioned before, we call them ‘agents’. Here you see the default is 32 by 32
pixels, which is a good size to start with. Let it be as it is and press the create button.
Let’s start by creating a ball. I go to the ‘Agent Gallery’ and press this ‘add’ button. I
call our agent ‘ball’. Here we go. It created a ball agent and added a default depiction
to it. You can edit the depiction by double-clicking on it, which switches to the editor
tab in here, and loads the depiction so you can edit it. Also, when you click on the
agent or depiction, it selects the agent.
C.4 Using the Depiction Editor
Items to demonstrate:
• clean the canvas
• choose the drawing tool
• erase
• change the fill/stroke color
• fill in a closed area
112
C.5 Drawing the game scene
• save the depiction
• undo
• zoom and resize
C.5 Drawing the game scene
Items to demonstrate:
• Drawing tools
• Move an agent
• Play, stop, and step actions
• Save, reset and clear worksheet
• Change the size of worksheet
• Add new worksheet
C.6 Programming
Each agent has its own program: Now let’s move the programming part. By programming, you define the behavior of the agent, such as how it moves or reacts to
other agents during the game. The first thing you need to know, which is important,
is that each agent has its own program. When you choose an agent from the agent
gallery, you can see its program in the program tab. So, if you choose the ball, you see
the ball’s program, and if you choose the ground, you see the ground’s program. Now
let’s go back to the ball’s program.
Three panes, composing program from conditions and actions: Here you see
that the program tab has three parts: Conditions pane on the left, Program pane in
the middle, and Actions pane on the right side. The conditions and actions panes are
exactly the same for all the agents. What changes is the program pane. What you do
is to "compose" the program by dragging and dropping the conditions and actions you
need, to define the behavior of the agent.
Compose using drag-n-drop, using actions: Let’s write a simple program first
and then I explain it in details. I want that the ball moves continuously to the right
of the scene. So, I go to the program of the ball, not the ground, and in this method
called ‘Forever’, that I explain more about it later, we take this action, called move,
and drag in into this rule, on the action part, you see the drag sign changes to green
which means that the item can be dropped, otherwise it does not allow dropping, so if
113
C.6 Programming
I take an action and move it to the condition part of a rule or anywhere else and drop
it, nothing happens. Then I set the direction of the move to right.
Run the worksheet to see the behavior: Now let’s go to the game scene, and
run the game to see the behavior of the agent. First we go to the worksheet pane. at
the bottom there are the buttons on the left to run or stop the game scene. I press
this green play-like button to run the scene. As soon as I run the scene, the ball agent
moves to the right quickly. This is because the Forever method is executed repeatedly,
as fast as my computer can, and each time runs this move action to move to the right.
Agent program and instances (inheritance): One thing you should note is that
the program that we wrote defines the behavior of all the instances of that agent. In
our case, the move-to-right program is for the ball agent. Therefore, all the balls on
the worksheet have the same behavior of moving up quickly. We can see this by simply
adding other balls on the game scene. As soon as we add them, we see this behavior
of moving to right for the newly added ball.
Using conditions: Now to add more control on how the agent behaves you can
add some conditions. for instance we can use a once-every condition to tell the agent
to move one step every once in a while, and you can determine the interval of the
move in here. For example, we set it to move to the right every 1 second and let’s try
what happens. Now we have a moving ball and we control its moving speed. So far,
so good.
Now let’s get a little more into the details of the programming environment. One
thing you have noted is that we are adding conditions and actions inside a rule of a
method called forever. So, there are two things you should know about: (i) what a
method is; (ii) what a rule is.
Methods: Methods are pieces of programs that define the behavior of agents.When
an agent has a behavior that needs to happen in different situations, instead of programming that behavior several times, we create a method for that behavior and execute it. For example, if the ball bounces both when it hits the wall and when the
player presses the ‘Space’ button, instead of programming the bounce behavior twice,
you compose it once in a separate method and execute that method whether when the
user presses the ‘Space’ button or the ball hits the wall. Each method consists of one
or more rules. Each rule consists of conditions and actions. You can create an empty
method by pressing this ‘Add Method’ button and choosing a name for it, or choose a
method and press the ‘duplicate’ button which creates a copy of the method with the
same rules, conditions and actions. Note that methods should have different names,
i.e., no two methods can have the same name in one agent program.
Forever method: There are two types of methods. One special method is called
‘Forever’, which is executed all the time when the game is running. It means that
whatever program you write in the forever, it keeps repeating. For example, we saw
that if we use a move action, it keeps repeated. You can have only one ‘Forever’ method
for each agent. As a matter of fact, the system does not allow you to have two methods
114
C.6 Programming
called ‘Forever’.
Other methods: As I said, you can create other methods either using add method
button or duplicate button. Now here I create a method called move-left, which is
essentially similar to the move-right program we have written, except that the agent
moves right this time. So, we can either create a new method and add the once-every
condition and move action, or we can duplicate the forever method, and make the
changes we want in it, change its name to move-left and change the direction of the
move to the left. The system does not care how you compose the program. It only
executes the program you have written.
Executing a method: Methods are not automatically executed during the game.
Rather, you should explicitly execute them, or as we say in programming ‘call the
method’. You can call a method whether from inside the same agent or from an adjacent agent. For both, you will have to use the the ‘make’ action. Enter the name of
the method that you want to execute inside the make action. If the method you are
calling belongs to the same agent, leave the direction as it is and do not change it.
If you are calling the method of an adjacent agent, choose the direction here in the
make action. The way it works is that you put the make action in a rule which when
it is executed, it causes the method to be executed as well. For instance, here I call
the move-left method from inside the Forever method. Because the Forever method
is executed repeatedly, whenever the rule with the make action is executed, the make
action calls the move-left method, which causes the move-left method to be executed.
Managing the rules: Now that you know how to deal with methods, let’s look at
how to use the rules. Each method can have several rules. When you create a method,
it already has an empty rule for you. A rule is a placeholder for condition and action.
You can add several conditions and actions to each rule. There are a couple of way to
create a new rule. First, you can use the ‘New Rule’ button to create a new rule, but
you should choose a method first, so that the system knows to which method it should
add the rule. You can reorder the rules by dragging them around. You can even move
the rules between the methods. You can select a rule, and press the duplicate button
to copy it. Or you can drag a rule and press the control button or command button on
the Mac to copy a rule.
The order of execution: An important thing to know how the rules inside a
method are executed. The first thing to remember is that when a rule does not have
any conditions, it means that the rule holds and will be always executed. Here we
add a rule for the ball to move right with no condition and as we saw the ball keeps
moving to the right all the time because the forever method is executed repeatedly and
because the rule does not have any condition.
Now you may wonder what happens if we have two or more rules? Which one is
executed? Here you need to have a very basic knowledge of logic. When a method is
executed, the rules get what we call tested, one by one, in order from top to bottom. Testing
means that all the conditions of a rule are evaluated. Evaluation means whether that
115
C.6 Programming
condition holds or not. If all the conditions of a rule hold, all of its actions will be
executed and the method will be terminated, which means that the other rules will
not be tested or executed. To see this in practice, if I add a rule to move left, with no
condition, and put it after the first rule, which moves the ball to the right, we see that
the second rule does not happen. If I move this rule on the top of other one, then the
ball moves left, rather than right. It shows that the order of testing the rules is from
top to bottom and whenever one rule is executed, other ones are skipped.
To elaborate this with a more comprehensive example, here I create three rules
with three types of conditions: the first rule is to move left with no condition. The
second is to move up when the ‘W’ key is pressed. Now if the move up rule is after the
move left rule, it never works as we saw before, no matter how many times you press
the ‘W’ key, because the move left rule is always running. But if you move the move
up rule to before the move left rule, it starts working because now it is tested before
the move left rule. Notice that the move left rule is still working because there are a
lot of times when you do not press the ‘W’ button and therefore the move top rule is
not satisfied which causes the system to test the second rule, which is move left with
no condition, and it is always executed. The move left is not executed whenever you
press the ‘W’ key because in that case only move up is executed and move left rule is
disregarded. Now what happens if we add a rule after the second rule? say a move
down rule. You guessed right! It is not executed.
Combining multiple conditions: Now what happens if we use more than one
condition in a single rule? In fact, there are cases in which combining the conditions
are useful. I explain some of them here:
• once-every AND see: e.g., in a frogger game the car needs to move only on the
road once in a while.
• once-every AND chance: e.g., in a frogger game the tunnel generates a car on
the right once in a while and with some percent of chance, to avoid the ordered
generation of the cars.
• once-every AND see AND chance: e.g., the car moves randomly once in a while
only on the road.
• key AND see: e.g., the ball moves around with arrow keys only on the ground,
i.e., it won’t move outside of the field.
One thing you should notice is that the rule is satisfied only if all of its conditions
are satisfied. If only one of the conditions does not hold, the rule is not satisfied and
therefore none of the actions of that rule will be executed and the system continues to
the next rule of the method. This way, you can prioritize which rule should be executed
first, as if that rule is executed, other rules will be disregarded.
Combining multiple actions: Similar to using multiple conditions in the same
rule, you can use multiple actions in the same rule. When the conditions of a rule
116
C.6 Programming
hold, all of its actions are executed from the top to the bottom. A simple example for
this is to move left and show a message. You can combine the actions the way you
want and in the order you want.
Other programming conditions and actions, video tutorials: To find out more
about each condition and action, you can move your mouse on the name of the condition or action and press this green play button to watch a tutorial that shows exactly
how that condition or action works.
Agents can have multiple depictions: One last thing to mention is that each
agent can have several depictions. You can add a depiction to an existing agent from
the agent gallery. Under the main depiction of each agent there is plus button which
you press and enter the name of the new depiction. The system adds the new depiction
under the agent and you edit it as we seen before.
Agent depictions have the same program: Note that all different depictions of
one agent have the same program, which means that they behave the same in the
game scene. For example, in a car game you can have a car agent with two different
depictions. Both of them do the same thing in the scene, they move from one side of
the road to another side of the road. Their different depictions are only for adding
more variety to the game.
Appendix D
Evaluation Forms
117
118
D. Evaluation Forms
D.1 Registration Form
D.1.1 Computer Knowledge
1) What is your skill level at using computers?
( ) Non-existent
( ) Poor
( ) Fair good
( ) Very good
( ) Excellent
2) In average, how often do you use a Web browser for ANY Web applications (including Google,
Facebook, Youtube, Yahoo, News Websites, Wikipedia, Amazon, Online Games, etc.)?
( ) Not at all (zero hours a day)
( ) Very little (30 minutes a day)
( ) Regularly (1 hour a day)
( ) Quite often (2 hours a day)
( ) Very often (3 to 4 hours a day)
( ) More than 4 hours a day
3) Have you ever taken a computer science/Informatics/Programming course?
( ) Yes
( ) No
4) What have you learned from the class?
5) Have you ever written a computer program?
( ) Yes
( ) No
( ) I don't know
6) Name some of the programming languages that you have used:
7) Have you ever made your own web page?
( ) Yes
( ) No
( ) I don't know
8) What programs/languages have you used to create your webpage?
D.1.2 Participant's information
119
D. Evaluation Forms
9) Gender
( ) Male
( ) Female
10) Age
____________________________________________
11) Country
____________________________________________
12) State
____________________________________________
13) Profession
____________________________________________
14) Education
( ) Elementary School
( ) Middle School
( ) High School
( ) Graduated high school or equivalent
( ) Some college, no degree
( ) Associate degree
( ) Bachelor's degree
( ) Post-graduate degree
15) In which country did you go to school?
____________________________________________
16) What is your knowledge of English language?
( ) Poor or non-existent
( ) Basic
( ) Good
( ) Very Good
( ) Native Speaker
120
D. Evaluation Forms
D.2 Pre-test questionnaire
D.2.1 Computer Usage
1) Name:
____________________________________________
2) If you are a student, what is your major?
____________________________________________
3) If you work, what is your field(s) of experience?
____________________________________________
4) During a week, how many hours do you use a computer for any purpose?
0 1-5 6-10 11-15 16-20 21-25 26-30
More than
30
Hours spent using a desktop or laptop
computer (Mac,PC,Linux,etc)
() ()
()
()
()
()
()
()
Hours spent using a smart phone (iPhone,
Android, etc) except talking on the phone
() ()
()
()
()
()
()
()
Hours spent using a Tablet (iPad, Galaxy Tab, ( ) ( )
etc)
()
()
()
()
()
()
Hours spent using an ebook reader (Kindle,
Nook, etc)
()
()
()
()
()
()
() ()
5) How often do you use programs such as Google, Facebook, Wikipedia, Online Games (internet
programs in general)?
( ) Not at all
( ) Very little (less than two hours a week)
( ) Regularly (2-5 hours a week)
( ) Quite often (5-10 hours a week)
( ) Very often (10-20 hours a week)
( ) More than 20 hours a week
6) Name some of the internet/Web programs that you use regularly.
____________________________________________
121
D. Evaluation Forms
7) Check any of the applications that you use or have you used for communication:
[ ] Skype
[ ] Google Talk
[ ] Google Hangout
[ ] iChat
[ ] Windows Live Messenger
[ ] Yahoo Messenger
[ ] Facebook chat
[ ] AIM
[ ] Any other Instant Messaging applications that you use:
D.2.2 Gaming Experience
8) How often do you play computer games?
( ) Not at all
( ) Very little (less than two hours a week)
( ) Regularly (2-5 hours a week)
( ) Quite often (5-10 hours a week)
( ) Very often (10-20 hours a week)
( ) More than 20 hours a week
9) Please rate how much and where do you use computer games.
On a Game Console (XBOX, Wii,
PlayStation, Nintendo DS,...)
On a Smartphone (iPhone, Android,
Windows Mobile, ...)
On a computer but not online
()
()
()
Half of a
time
()
()
Most of
the time
()
()
()
()
()
()
()
()
()
()
()
()
()
On internet, online
()
()
()
()
()
()
Not at all Very little Sometimes
10) Name some of your favorite games:
11) Please rate what kind of computer games you play.
Often
122
D. Evaluation Forms
Massive Multi-player games or Virtual
Worlds such as Second Life, World of
Warcraft, or similar ones.
I Dont
Not at Very Somet Half of
Most of
know this
Often
A lot
all
little imes a time
the time
kind of
game
()
()
()
()
()
()
()
()
Casual games such as Angry Birds,
Solitaire, or similar ones
()
()
()
()
()
()
()
()
Arcade games: Frogger, Pac Man, Space
Invaders
()
()
()
()
()
()
()
()
First Person Shooter Games such as
Counter Strike or similar ones
()
()
()
()
()
()
()
()
Platformers such as Little Big Planet or
similar ones
()
()
()
()
()
()
()
()
12) If you play other genres of computer games that are not listed above, please mention them in here:
____________________________________________
13) Have you ever created/designed a computer game?
( ) Yes
( ) No
14) If so, please name them and explain how did you create/design them:
____________________________________________
D.2.3 Social Networking experience
15) Do you use social networking programs? (please select those that apply)
[ ] Facebook
[ ] Twitter
[ ] Google+
[ ] LinkedIn
[ ] Youtube
[ ] Other social networks (e.g., Orkut, Badoo, Bebo, Tagged, NetLog, Friendster, ...):
16) How much do you use social networking programs?
( ) Not at all
( ) Very little (less than two hours a week)
123
D. Evaluation Forms
( ) Regularly (2-5 hours a week)
( ) Quite often (5-10 hours a week)
( ) Very often (10-20 hours a week)
( ) More than 20 hours a week
17) Task-oriented personalities tend to:
- Focus on their to-do list and the things they hope to accomplish.
- Be concerned with productivity and efficiency.
- Have concrete goals and detailed lists.
People-oriented personalities tend to:
- Focus on the needs of the people around them.
- Be concerned with building relationships and keeping people happy.
- Place more importance on the feelings and happiness of people than on their to-do list.
Do you consider yourself as Task-oriented or People-oriented?
( ) Task-oriented
( ) People-oriented
( ) I don't konw
18) Do you consider yourself as introvert (reserved, introspective) or extrovert (outgoing, sociable)?
( ) Introvert
( ) Extrovert
( ) I don't know
19) Please rate yourself according to following questions:
How would you rate your personality as being
"sociable" in your day-to-day life?
How would you rate your online "social
presence"? (such as sharing, blogging, tweeting,
commenting on blog posts, chatting, updating
your profile picture, changing your status,...)
Very low
()
Low
()
Average
()
High
()
Very high
()
()
()
()
()
()
20) How often do you share something (photos, videos, links, news, etc) with your friends on your
online social network (Facebook, Twitter, Google+, etc)? Please choose the closest answer.
( ) Never
( ) 1 or 2 times a month
( ) 1 or 2 times a week
( ) 1 or 2 times a day
( ) 3-5 times a day
( ) more than 5 times a day
124
D. Evaluation Forms
D.2.4 Computer Knowledge
21) When something goes wrong with your computer, how frequently do you ask friends or family
members for help fixing it?
( ) Very infrequently
( ) Somewhat infrequently
( ) Neither frequently nor infrequently
( ) Somewhat Frequently
( ) Very frequently
22) When you want to install a new computer program, how frequently do you ask friends or family
members to help you install it?
( ) Very infrequently
( ) Somewhat infrequently
( ) Neither frequently nor infrequently
( ) Somewhat Frequently
( ) Very frequently
23) Please rate the following sentences.
Installing a new program is easy.
Strongly
Disagree
()
()
Neither agree
nor disagree
()
Disagree
()
Strongly
Agree
()
Agree
Installing a new program is a waste of time.
()
()
()
()
()
I love the installation part of programs.
()
()
()
()
()
Installing a new program is a burden for me
to use or try it.
Installing a new program is boring.
()
()
()
()
()
()
()
()
()
()
I prefer to use Web-based programs
because they do not need installation.
I prefer to use Web-based programs
because they keep and manage their data
(photos, text, videos, project files, etc.)
I prefer to use Web-based programs
because I can access my data/files from any
computer.
I do not like Web-based programs because
they often require registration (i.e., ask for
a user name and email address) on the
Website.
I prefer to use Web-based programs
because I can access my account and data
from any computer.
I prefer Web-based applications to desktopbased applications.
()
()
()
()
()
()
()
()
()
()
()
()
()
()
()
()
()
()
()
()
()
()
()
()
()
()
()
()
()
()
125
(leave this empty if you do not have a
facebook account) I feel comfortable to use
my Facebook account to register/login on
other Websites (using a blue 'Facebook
Login' button)
I prefer to download files (texts, images,
videos, etc) first and then read/watch them
outside of the Web browser rather than
reading/watching them right away inside
the Web browser.
Desktop-based applications have better
graphics comparing to Web-based
applications
Desktop-based applications are faster than
their Web-based counterparts.
I prefer desktop-based applications to Webbased applications.
D. Evaluation Forms
()
()
()
()
()
()
()
()
()
()
()
()
()
()
()
()
()
()
()
()
()
()
()
()
()
D.2.5 Computer Science Knowledge
24) Would you be interested in taking an introductory computer science course?
( ) Definitely not
( ) Probably not
( ) Maybe yes, Maybe no
( ) Probably yes
( ) Definitely yes
25) Do you think if you learn the basics of computer science, it will help you decide better when solving
day-to-day life problems or improve your career opportunities?
( ) Definitely not
( ) Probably not
( ) Maybe yes, Maybe no
( ) Probably yes
( ) Definitely yes
26) Do you think learning computer science/programming concepts is a solitary activity or a
collaborative activity?
( ) Completely solitary
( ) Mostly solitary
( ) Partly solitary, partly collaborative
( ) Mostly collaborative
( ) Completely collaborative
126
D. Evaluation Forms
27) Please rate the following sentences.
I am interested in an introductory computer science
course in which I learn how to program a textual
programming language such as C/C++/Java/
JavaScript/Python/etc.
I am interested in an introductory computer science
course in which I learn how to create applications for
smart phones such as iPhone/Android/Windows
Mobile.
I am interested in a video game design course in
which I learn the basic concepts of computer science
and programming while creating computer games.
I am interested in a Web design course in which I
learn how to create Web pages/sites using HTML/
CSS/JavaScript.
Definitely Probably
Probably Definitely
Neutral
No
No
Yes
Yes
()
()
()
()
()
()
()
()
()
()
()
()
()
()
()
()
()
()
()
()
28) Do you think you could learn an advanced computer language like Java or C++?
( ) Definitely not
( ) Probably not
( ) Maybe yes, Maybe no
( ) Probably yes
( ) Definitely yes
127
D. Evaluation Forms
D.3 Task Completion
1) Task Number
( ) 1 (move the PLAYER around with arrow keys)
( ) 2 (program the PLAYER to move the ball )
( ) 3 (When the BALL reaches on the top of the GOAL, the status bar shows a 'GOAL' message)
( ) 4 (When the key 'X' is pressed, the CENTER creates a new BALL on its right)
( ) 5 (When the GOALIE sees a BALL on its left, the GOALIE removes the BALL)
2) Did you attempt to complete this task?
( ) Yes
( ) No
3) Did you manage to complete this task?
( ) Yes
( ) No
4) Rate the following about this task
Very low
()
Low
()
Neutral
()
High
()
Very high
()
Technicality
()
()
()
()
()
It was fun to complete this task
()
()
()
()
()
It was boring to complete this task
()
()
()
()
()
It was nerve-racking to complete this task
()
()
()
()
()
It was joyful to complete this task
()
()
()
()
()
Difficulty
5) What sources did you use as help to find a solution for this task? check all that apply.
[ ] Tutorials
[ ] Users (including admin) on the Website through one-to-one Chat
[ ] Users (including admin) on the Website through Chatroom
[ ] Users (including admin) on the Website through Forum
[ ] Program of the showcase games
[ ] Program of the games created by other users
[ ] Other ways (please explain in details)
6) Do you think you could have completed this task without the help of other participants (including
admin)?
( ) Yes
( ) No
( ) Maybe yes, maybe no
128
D. Evaluation Forms
D.4 Computational Thinking Quiz
1) Name
____________________________________________
This is a Torch:
!
You are making a computer game for olympic games. The following shows part of the program of an agent
for an olympic runner, doing SOMETHING with the torch.
2) What is he doing?
( ) when the olympic runner moves to the right, it creates a torch.
( ) every 5 seconds, the runner creates a torch.
( ) When the key X is pressed, the olympic runner creates a torch on his right.
( ) the olympic runner moves to the right and creates a torch.
3) Choose one of the following behaviors that best describes the program in the previous.
( ) Absorption/Deletion
( ) Generation/Creation
( ) Collision
( ) Push
( ) Pull
( ) Diffusion
129
This is a Ground agent:
D. Evaluation Forms
!
The following is the program of a Ball agent.
!
4) What does the above program do?
( ) when the ball hits the ground, it bounces back up.
( ) The ball bounces back up, with 50 percent of chance.
( ) The ball moves down until it reaches the ground and then stops.
( ) When the ball hits the ground, it is removed from the game scene.
5) Choose one of the following behaviors that best describes the program in the previous.
( ) Absorption / Deletion
( ) Generation / Creation
( ) Collision
( ) Keyboard control / Cursor control
( ) Push
( ) Pull
( ) Diffusion
130
This is a Ground agent:
D. Evaluation Forms
!
You are writing the program for a falling snow agent. Following is the program of the falling snow. !
6) What does the above program do?
( ) when the snow reaches the ground, it stops on top of the other snow that is already on the ground.
( ) as soon as the snow reaches the ground, it removes itself from the scene.
( ) when the ground moves down, it sees the snow and removes the snow.
( ) when the ground sees the snow, it collects the snow on top of itself.
7) Choose one of the following behaviors that best describes the program in the previous.
( ) Absorption / Deletion
( ) Generation / Creation
( ) Collision
( ) Keyboard control / Cursor control
( ) Push
( ) Pull
( ) Diffusion
131
D. Evaluation Forms
You are writing the program for a car agent.
Note: on the keyboard, arrow keys are: UP arrow, DOWN arrow, LEFT arrow, and RIGHT arrow.
!
8) What does the above program do?
( ) It lets the player to move the car to up, down, left and right, by pressing W, D, S, and A on the keyboard.
( ) It lets the player to turn the car by pressing all the arrow keys together at the same time.
( ) It shoots an arrow out of the car in all directions, when the player presses arrow keys.
( ) It lets the player to move the car to up, down, left and right, by pressing the arrow keys (up, down, left
and right) respectively.
9) Choose one of the following behaviors that best describes the program in the previous.
( ) Absorption / Deletion
( ) Generation / Creation
( ) Collision
( ) Keyboard control / Cursor control
( ) Push
( ) Pull
( ) Diffusion
132
This is a BOX agent.
D. Evaluation Forms
!
The BOX has a Move-Right method as shown here: !
There is a MAN agent with the following program:
!
10) What does the program of the MAN agent do?
( ) When the right arrow key is pressed, the MAN moves to the right and also moves the BOX to the right.
( ) When the MAN sees a BOX to the right, the MAN moves to the right and also moves the BOX to the
right.
( ) When the right arrow key is pressed, only if there is a BOX at the right side of the MAN, then the MAN
moves to right and also moves the BOX to the right
( ) When the right arrow key is pressed, only if there is a BOX at the right side of the MAN, then the MAN
moves to the right on top of the BOX.
11) Choose one of the following behaviors that best describes the program in the previous.
( ) Absorption / Deletion
( ) Generation / Creation
( ) Collision
( ) Push
( ) Pull
( ) Diffusion
133
D. Evaluation Forms
D.5 Qualitative Questionnaire
1) In order to find the solution to the given tasks, did you use any of the collaboration tools (chat,
chatroom, forum, exploring the program of games in showcase, exploring the program of games
shared by the other participants) ?
[ ] Yes
[ ] No
2) How did you collaborate with the others to solve the tasks? provide some examples of your
collaboration if you can.
3) Which collaboration tools did you use at least once? check all that apply.
[ ] one-to-one Chat
[ ] Chatroom
[ ] Forum
[ ] Exploring the program of games in showcase
[ ] Exploring the program of the games shared by other participants
[ ] Other ways you collaborated with others (please explain)
4) Which way of collaboration was the most useful for you in order to find the solution to the tasks?
why do you think it was the most useful one comparing to the others? please explain.
5) Could you find the solution to the tasks without provided collaboration tools (one-to-one chat,
chatroom, forum) ? for instance, if you were to use a solitary desktop-based game design environment
with no support for collaboration.
( ) Yes
( ) No
( ) Maybe yes, Maybe no
( ) I would able to solve the problems by myself if ...: _________________
6) You were given 5 tasks to complete. Was there any task left that you could not solve ?
( ) Yes
( ) No
7) Which tasks could not you solve? what was the reason?
8) For those tasks which you did not solve, did you try to find the solution by asking from others
(including admin)? did you receive any support from the other participants (including admin)? please
explain why others (including admin) could not or did not help you to find the solution.
134
D. Evaluation Forms
9) Do you have any further comments or suggestions for us regarding the game design environment,
the Website, or the collaboration tools?
10) Was the collaboration with others (including admin) helpful to solve the tasks?
( ) Definitely No
( ) Maybe No
( ) Maybe Yes, maybe No
( ) Maybe Yes
( ) Definitely Yes
D.5.1 Tutorials
11) There were 5 Programming Tutorials (AgentWeb Tutorials - Programming, Part 1-5). Which ones
have you wateched?
[ ] Part 1
[ ] Part 2
[ ] Part 3
[ ] Part 4
[ ] Part 5
12) Were the programming tutorials helpful to solve the tasks?
( ) Definitely No
( ) Maybe No
( ) Maybe Yes, maybe No
( ) Maybe Yes
( ) Definitely Yes
13) There were some video tutorials inside the Program tab, for each condition and action, that you
could watch by clicking on the green play button. Did you watch any of them? Which ones did you
watch?
14) Were they helpful to solve the tasks? (the tutorials inside the Program Tab)
( ) Definitely No
( ) Maybe No
( ) Maybe Yes, maybe No
( ) Maybe Yes
( ) Definitely Yes
135
D. Evaluation Forms
15) The video tutorials were:
Neither
Strongly
agree
Strongly
Disagree
Agree
Disagree
nor
Agree
disagree
()
()
()
()
()
Fun
Boring
()
()
()
()
()
Confusing
()
()
()
()
()
Difficult
()
()
()
()
()
Annoying
()
()
()
()
()
Frustrating
()
()
()
()
()
Easy to
learn
()
()
()
()
()
16) Did you face any problems with video tutorials that made them less interesting to follow or difficult
to understand? such as the voice of the speaker, the quality of the video, or it was too long, or too
short, or any other problem.
17) Do you have any suggestions/comments to improve the tutorials?
D.5.2 Game Design Session
18) Today's game design session was:
Neither
Strongly
agree
Strongly
Disagree
Agree
Disagree
nor
Agree
disagree
()
()
()
()
()
Fun
Boring
()
()
()
()
()
Confusing
()
()
()
()
()
Difficult
()
()
()
()
()
Annoying
()
()
()
()
()
Frustrating
()
()
()
()
()
Easy to
learn
()
()
()
()
()
19) Will you consider participating in a similar game design session?
[ ] Yes
[ ] No
[ ] I don't know
20) May we keep your email and contact you for future tests/evaluations?
[ ] Yes
[ ] No
136
Bibliography
[1] AAUW Educational Foundation Commission on Technology, Gender, and
Teacher Education. Tech-Savvy: Educating Girls in the New Computer Age.
Technical report, 2000.
[2] N. Ahmadi, M. Jazayeri, and M. Landoni. Enabling Cooperative Educational
Game Design on the Web. Cooperative Design, Visualization, and Engineering,
pages 57–64, 2012.
[3] N. Ahmadi, M. Jazayeri, and M. Landoni. Helping Novice Programmers to Bootstrap in the Cloud: Incorporating Support for Computational Thinking into the
Game Design Process. Advanced Learning Technologies (ICALT), 2012 IEEE 12th
International Conference on, pages 349–353, 2012.
[4] N. Ahmadi, M. Jazayeri, F. Lelli, and S. Nesic. A Survey of Social Software
Engineering. 1st International Workshop on Social Software Engineering and
Applications, pages 1–12, Aug. 2008.
[5] N. Ahmadi, M. Jazayeri, and A. Repenning. Engineering an Open-Web Educational Game Design Environment. The 19th Asia-Pacific Software Engineering
Conference, page 10, Oct. 2012.
[6] N. Ahmadi, F. Lelli, and M. Jazayeri. Supporting Domain-Specific Programming
in Web 2.0: A Case Study of Smart Devices. 21st Australian Software Engineering
Conference (ASWEC), pages 215–223, 2010.
[7] N. Ahmadi, A. Repenning, and A. Ioannidou. Collaborative end-user development on handheld devices. IEEE Symposium on Visual Languages and HumanCentric Computing(VL/HCC), pages 237–241, 2008.
[8] B. Alexander. Web 2.0: A new wave of innovation for teaching and learning?
EDUCAUSE review, 41(2):32–44, 2006.
[9] J. Allaire. Macromedia Flash MX—A next-generation rich client. White paper,
Macromedia, page 10, 2002.
137
138
BIBLIOGRAPHY
[10] K. M. Anderson. Supporting software engineering with open hypermedia. ACM
Computing Surveys, 31(4es), Dec. 1999.
[11] S. M. Barnett and S. J. Ceci. When and where do we apply what we learn?: A
taxonomy for far transfer. Psychological bulletin, 128(4):612–637, 2002.
[12] A. R. Basawapatna, K. H. Koh, and A. Repenning. Using scalable game design to
teach computer science from middle school to graduate school. In Proceedings of
the fifteenth annual conference on Innovation and technology in computer science
education, pages 224–228, New York, NY, USA, 2010. ACM.
[13] G. Bekebrede, H. J. G. Warmelink, and I. S. Mayer. Reviewing the need for gaming in education to accommodate the net generation. Computers & Education,
57(2):1521–1529, Sept. 2011.
[14] M. Ben-Ari. Constructivism in computer science education. In SIGCSE ’98:
Proceedings of the twenty-ninth SIGCSE technical symposium on Computer science
education, 1998.
[15] T. Berners-Lee. Weaving the Web: The Original Design and Ultimate Destiny of
the World Wide Web. HarperBusiness, 1 edition, Nov. 2000.
[16] T. Berners-Lee, R. Cailliau, and B. Pollermann. World-Wide Web: The Information Universe. Communications of the ACM, 37:76–82, Feb. 1992.
[17] C. Boldyreff, D. Nutter, S. Rank, M. Smith, P. Wilcox, R. Dewar, and D. Weiss.
Environments to Support Collaborative Software Engineering. In 2nd Workshop
on Cooperative Supports for Distributed Software Engineering Processes, pages
25–28, Oct. 2004.
[18] G. Booch and A. Brown. Collaborative Development Environments. ADVANCES
IN COMPUTERS, 59:1–27, Dec. 2002.
[19] C. L. Borgman, H. Abelson, L. Dirks, R. Johnson, K. R. Koedinger, M. C. Linn,
C. A. Lynch, D. G. Oblinger, R. D. Pea, K. Salen, M. S. Smith, and A. Szalay.
Fostering Learning in the Networked World: The Cyberlearning Opportunity
and Challenge. Report of the NSF Task Force on Cyberlearning, page 64, Sept.
2008.
[20] M. Burnett. Visual programming. Wiley Encyclopedia of Electrical and Electronics
Engineering, 1999.
[21] M. Burnett and M. Baker. A Classification System For Visual Programming Languages. Technical Report 93-60-14, 1994.
[22] M. Burnett, C. Cook, and G. Rothermel. End-user software engineering. Communications of the ACM, 47(9):53–58, Sept. 2004.
139
BIBLIOGRAPHY
[23] S.-K. Chang. Visual Languages: A Tutorial and Survey. Software, IEEE, 4(1):29–
39, Jan. 1987.
[24] A. Cheyer and J. Levy. A Collaborative Programming Environment for Web
Interoperability. 1st Workshop on Semantic Wikis (SemWiki ’06), pages 1–15,
May 2006.
[25] K. Claypool and M. Claypool. Teaching software engineering through game
design. Proceedings of the 10th annual SIGCSE conference on Innovation and
technology in computer science education (ITiCSE ’05), pages 123–127, 2005.
[26] A. Clement. Cooperative support for computer work: a social perspective on the
empowering of end users. Proceedings of the 1990 ACM conference on Computersupported cooperative work, pages 223–236, 1990.
[27] S. Cooper, W. Dann, and R. Pausch. Alice: a 3-D tool for introductory programming concepts. Journal of Computing Sciences in Colleges, 15(5):107–116,
2000.
[28] M. Csikszentmihalyi. Finding Flow: The Psychology Of Engagement With Everyday
Life. Basic Books, Apr. 1998.
[29] A. Cypher. Watch What I Do. Programming by Demonstration. The MIT Press,
May 1993.
[30] A. Cypher and D. C. Smith. KidSim: end user programming of simulations. In
CHI ’95: Proceedings of the SIGCHI conference on Human factors in computing
systems. ACM Press/Addison-Wesley Publishing Co., May 1995.
[31] T. DeMarco and T. R. Lister. Peopleware: productive projects and teams. Dorset
House Pub., page 245, Jan. 1999.
[32] S. Deterding, M. Sicart, L. Nacke, K. O’Hara, and D. Dixon. Gamification: Using
Game Design Elements in Non-Gaming Contexts. CHI ’11 Extended Abstracts on
Human Factors in Computing Systems, pages 2425–2428, 2011.
[33] S. Dossick and G. Kaiser. CHIME: a metadata-based distributed software development environment. ESEC/FSE-7: Proceedings of the 7th European software
engineering conference held jointly with the 7th ACM SIGSOFT international symposium on Foundations of software engineering, Nov. 1999.
[34] S. Downes. E-learning 2.0. eLearn, Oct. 2005.
[35] R. T. Fielding. Architectural styles and the design of network-based software architectures. PhD thesis, University of California, Irvine, 2000.
140
BIBLIOGRAPHY
[36] G. Fischer. Domain-oriented design environments: supporting individual and
social creativity. Computational Models of Creative Design IV, pages 83–111,
1999.
[37] G. Fischer. End-user development and meta-design: Foundations for cultures of
participation. End User Development, pages 3–14, 2009.
[38] G. Fischer and E. Giaccardi. Meta-Design: A Framework for the Future of End
User Development. End User Development. Springer, Dec. 2005.
[39] G. Fischer, E. Giaccardi, Y. Ye, and A. Sutcliffe. Meta-design: a manifesto for
end-user development. Communications of the ACM, 47(9):33–37, Sept. 2004.
[40] G. Fischer, S. Lindstaedt, J. Ostwald, M. Stolze, T. Sumner, and B. Zimmermann.
From domain modeling to collaborative domain construction. DIS ’95: Proceedings of the 1st conference on Designing interactive systems: processes, practices,
methods, & techniques, Aug. 1995.
[41] G. Fischer, K. Nakakoji, and Y. Ye. Metadesign: Guidelines for Supporting Domain Experts in Software Development. Software, IEEE, 26(5):37–44, Sept.
2009.
[42] R. Fournier. Teamwork is the key to remote development. Infoworld, 2001.
[43] B. Freudenberg, Y. Ohshima, and S. Wallace. Etoys for One Laptop Per Child.
In Creating, Connecting and Collaborating through Computing, 2009. C5 ’09.
Seventh International Conference on, pages 57–64, 2009.
[44] A. Gal, B. Eich, M. Shaver, D. Anderson, D. Mandelin, M. R. Haghighat, B. Kaplan, G. Hoare, B. Zbarsky, J. Orendorff, J. Ruderman, E. W. Smith, R. Reitmaier,
M. Bebenita, M. Chang, and M. Franz. Trace-based just-in-time type specialization for dynamic languages. In Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation, pages 465–478, New
York, NY, USA, 2009. ACM.
[45] E. Gamma, R. Helm, R. Johnson, and J. Vlissides. Design Patterns: Elements of
Reusable Object-Oriented Software. Addison-Wesley, 1 edition, 1995.
[46] M. Gantt and B. Nardi. Gardeners and gurus: patterns of cooperation among
CAD users. CHI ’92: Proceedings of the SIGCHI conference on Human factors in
computing systems, June 1992.
[47] J. P. Gee. What Video Games Have to Teach Us About Learning and Literacy.
Palgrave Macmillan, 2003.
[48] J. P. Gee. Good video games + good learning. collected essays on video games,
learning, and literacy. Peter Lang Pub Inc, 2007.
141
BIBLIOGRAPHY
[49] C. Ghezzi, M. Jazayeri, and D. Mandrioli. Fundamentals of Software Engineering.
Prentice Hall, 2 edition, Sept. 2002.
[50] A. Goldberg. Smalltalk-80: The Interactive Programming Environment. 1984.
[51] J. Grudin. Computer-Supported Cooperative Work: History and Focus. Computer, 27(5):19–26, 1994.
[52] E. R. Hayes and I. A. Games. Making Computer Games and Design Thinking:
A Review of Current Software and Strategies. Games and Culture, 3(3-4):309–
332, 2008.
[53] P. Henriksen and M. Kölling. greenfoot: combining object visualisation with interaction. In OOPSLA ’04: Companion to the 19th annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications, 2004.
[54] M. A. Honey and M. Hilton. Learning Science Through Computer Games and
Simulations. The National Academies Press, page 180, Jan. 2011.
[55] P. Hudak. Building domain-specific embedded languages. ACM Computing Surveys, 28(4es), Dec. 1996.
[56] A. Ioannidou, V. Bennett, A. Repenning, K. H. Koh, and A. Basawapatna. Computational Thinking Patterns. Annual Meeting of the American Educational Research
Association, page 15, Apr. 2011.
[57] C. Jones. Programming productivity. page 280, Jan. 1986.
[58] Y. B. Kafai and M. Resnick. Constructionism in practice. designing, thinking, and
learning in a digital world. Lawrence Erlbaum, Apr. 1996.
[59] A. Kay. Squeak Etoys, Children & Learning. VPRI Research Note, 2005.
[60] C. Kazimoglu, M. Kiernan, L. Bacon, and L. MacKinnon. Learning Programming
at the Computational Thinking Level via Digital Game-Play. Procedia Computer
Science, 9:522–531, Jan. 2012.
[61] C. Kelleher and R. Pausch. Lowering the barriers to programming: A taxonomy
of programming environments and languages for novice programmers. ACM
Computing Surveys, 37(2):83–137, June 2005.
[62] C. Kelleher and R. Pausch. Using storytelling to motivate programming. Communications of the ACM, 50(7), July 2007.
[63] A. J. KO, R. Abraham, L. Beckwith, A. Blackwell, M. Burnett, M. Erwig, C. Scaffidi, J. Lawrance, H. Lieberman, B. Myers, M. B. Rosson, G. Rothermel, M. Shaw,
and S. Wiedenbeck. The state of the art in end-user software engineering. ACM
Computing Surveys, 43(3):1–44, Apr. 2011.
142
BIBLIOGRAPHY
[64] K. H. Koh, A. Basawapatna, V. Bennett, and A. Repenning. Towards the Automatic Recognition of Computational Thinking for Adaptive Visual Language
Learning. IEEE Symposium on Visual Languages and Human-Centric Computing(VL/HCC), pages 59–66, 2010.
[65] R. Kop and H. Fournier. New Dimensions to Self-Directed Learning in an Open
Networked Learning Environment. International journal of Self-Directed Learning, 7(2), 2011.
[66] J. Lave and E. Wenger. Situated learning: legitimate peripheral participation.
Cambridge University Press, 1991.
[67] B. Leuf and W. Cunningham. The Wiki way: quick collaboration on the Web.
Addison-Wesley, 2001.
[68] C. Lewis and A. Repenning. Creating Educational Gamelets. Educating Learning
Technology Designers: Guiding and Inspiring Creators of Innovative Educational
Tools, C. DiGiano, S. Goldman, and M. Chorost, Eds. New York: Routledge, pages
203–229, 2008.
[69] H. Lieberman, F. Paternó, M. Klann, and V. Wulf. End-User Development: An
Emerging Paradigm. In H. Lieberman, F. Paterno, and V. Wulf, editors, End User
Development. Springer, 2006.
[70] W. Mackay. Patterns of sharing customizable software. CSCW ’90: Proceedings of
the 1990 ACM conference on Computer-supported cooperative work, Sept. 1990.
[71] J. Mackness, S. F. J. Mak, and R. Williams. The ideals and reality of participating in a MOOC . Proceedings of the 7th International Conference on Networked
Learning 2010, pages 266–274, 2010.
[72] M. MacLaurin. Kodu: end-user programming and design for games. In Proceedings of the 4th International Conference on Foundations of Digital Games, page
xviii, New York, New York, USA, 2009. ACM Press.
[73] M. MacLaurin. The Design of Kodu: a Tiny Visual Programming Language for
Children on the Xbox 360. POPL’11, Jan. 2011.
[74] A. MacLean, K. Carter, L. Lövstrand, and T. Moran. User-tailorable systems:
pressing the issues with buttons. Proceedings of the SIGCHI conference on Human
factors in computing systems: Empowering people, Dec. 1989.
[75] T. Malone, K. Grant, K. Lai, R. Rao, and D. Rosenblitt. Semistructured messages
are surprisingly useful for computer-supported coordination. ACM Transactions
on Office Information Systems, Dec. 1986.
143
BIBLIOGRAPHY
[76] Marina Papastergiou. Digital Game-Based Learning in high school Computer
Science education: Impact on educational effectiveness and student motivation.
Computers & Education, 52(1):1–12, Jan. 2009.
[77] J. McGonigal. Reality Is Broken. Why Games Make Us Better and How They Can
Change the World. The Penguin Press, 2011.
[78] C. McLoughlin and M. J. Lee. Social software and participatory learning: Pedagogical choices with technology affordances in the Web 2.0 era. In Proceedings
ASCILITE Singapore 2007, pages 664–675, 2007.
[79] M. Mernik, J. Heering, and A. Sloane. When and how to develop domainspecific languages. ACM Computing Surveys, 37(4):316–344, 2005.
[80] N. Meyrowitz. The missing link: why we’re all doing hypertext wrong. MIT Press,
Nov. 1989.
[81] D. Michael and S. Chen. Serious Games: Games That Educate, Train, and Inform.
Course Technology PTR, 1 edition, Oct. 2005.
[82] J. Michael. In Pursuit of Meaningful Learning. Advances in Physiology Education,
25(3):145–158, 2001.
[83] A. Mørch. Three levels of end-user tailoring: customization, integration, and
extension. In Computers and design in context, pages 51–76. The MIT Press, Oct.
1997.
[84] A. Mørch and N. Mehandjiev. Tailoring as Collaboration: The Mediating Role of
Multiple Representations and Application Units. Computer Supported Cooperative Work (CSCW), Dec. 1999.
[85] P. Moreno-Ger, D. Burgos, I. Martínez-Ortiz, J. L. Sierra, and B. FernándezManjón. Educational game design for online education. Computers in Human
Behavior, 24(6):2530–2540, Sept. 2008.
[86] B. Myers, S. Hudson, and R. Pausch. Past, present, and future of user interface software tools. ACM Transactions on Computer-Human Interaction (TOCHI),
7(1):3–28, 2000.
[87] B. Nardi. A Small Matter of Programming: Perspectives on End User Computing.
MIT Press, Dec. 1992.
[88] B. Nardi and J. Miller. Twinkling lights and nested loops: distributed problem
solving and spreadsheet development. International Journal of Man-Machine
Studies, Dec. 1990.
144
BIBLIOGRAPHY
[89] J. Nielsen. Response Times: the Three Important Limits. In Usability Engineering. Morgan Kaufmann, 1993.
[90] H. L. Oppenheimer. Project Management Issues in Globally Distributed Development. Proceedings of the Global Software Development Workshop, 2002.
[91] T. O’Reilly. What is Web 2.0 - Design patterns and business models for the next
generation of software. 2005.
[92] P. Oreizy and G. Kaiser. The Web as enabling technology for software development and distribution. Internet Computing, IEEE, 1(6):84–87, 1997.
[93] M. Overmars. Teaching computer science through game design. Computer,
37(4):81–83, 2004.
[94] S. Papert. Mindstorms: children, computers, and powerful ideas. Mindstorms:
children, computers, and powerful ideas, Jan. 1980.
[95] V. Pipek and H. Kahler. Supporting Collaborative Tailoring. End User Development. Springer, Dec. 2004.
[96] M. Prensky. Digital game-based learning. Computers in Entertainment (CIE),
1(1):21, 2003.
[97] M. Prensky. Don’t Bother Me Mom–I’m Learning! Paragon House Publishers,
Mar. 2006.
[98] A. Ravenscroft. Social software, Web 2.0 and learning: status and implications
of an evolving paradigm. Journal of Computer Assisted Learning, 25(1):1–5, Jan.
2009.
[99] E. S. Raymond. The Cathedral and the Bazaar-Musings on Linux and Open
Source by an Accidental Revolutionary. O’Reilly, 1999.
[100] M. Reed, A. C. Evely, G. Cundill, I. R. A. Fazey, J. Glass, A. Laing, J. Newig,
B. Parrish, C. Prell, C. Raymond, and L. C. Stringer. What is social learning?
Ecology and Society, 2010.
[101] A. Repenning. Agentsheets: a Tool for Building Domain-Oriented Dynamic, Visual
Environments. PhD thesis, University of Colorado, 1993.
[102] A. Repenning. Making programming more conversational. Visual Languages and
Human-Centric Computing (VL/HCC), 2011 IEEE Symposium on, pages 191–194,
2011.
[103] A. Repenning. Programming goes back to school. Commun. ACM, 55(5):38–40,
2012.
145
BIBLIOGRAPHY
[104] A. Repenning and J. Ambach. Tactile programming: a unified manipulation
paradigm supporting program comprehension, composition and sharing. Proceedings of the 1996 IEEE Symposium on Visual Languages, pages 102–109, Aug.
1996.
[105] A. Repenning and J. Ambach. Tactile programming: A unified manipulation
paradigm supporting program comprehension, composition and sharing. Proceedings of the 1996 IEEE Symposium on Visual Languages, page 102, 1996.
[106] A. Repenning and J. Ambach. Visual Agentalk: Anatomy of a Low Threshold,
High Ceiling End User Programming Environment. Technical Report, page 12,
1996.
[107] A. Repenning and J. Ambach. The agentsheets behavior exchange: supporting social behavior processing. CHI’97 extended abstracts on Human factors in
computing systems: looking to the future, pages 26–27, 1997.
[108] A. Repenning and A. Ioannidou. AgentCubes: Raising the Ceiling of EndUser Development in Education through Incremental 3D. Visual Languages and
Human-Centric Computing (VL/HCC), IEEE Symposium on, pages 27–34, 2006.
[109] A. Repenning and A. Ioannidou. Broadening Participation through Scalable
Game Design. SIGCSE ’08: Proceedings of the 39th SIGCSE technical symposium
on Computer science education, Feb. 2008.
[110] A. Repenning and T. Sumner. Agentsheets: A medium for creating domainoriented visual languages. Computer, 28(3):17–25, 1995.
[111] A. Repenning, D. Webb, and A. Ioannidou. Scalable game design and the development of a checklist for getting computational thinking into public schools.
In SIGCSE ’10: Proceedings of the 41st ACM technical symposium on Computer
science education, 2010.
[112] M. Resnick, B. Silverman, Y. Kafai, J. Maloney, A. Monroy-Hernández, N. Rusk,
E. Eastmond, K. Brennan, A. Millner, E. Rosenbaum, and J. Silver. Scratch:
Programming for All. Communications of the ACM, 52(11):60–67, Nov. 2009.
[113] L. Rich, H. Perry, and M. Guzdial. A CS1 course designed to address interests of
women. In SIGCSE ’04: Proceedings of the 35th SIGCSE technical symposium on
Computer science education, 2004.
[114] V. Rideout, D. Roberts, and U. Foehr. Generation M: Media in the Lives of 8-18
year-olds, Executive Summary. A Kaiser Family Foundation Study, pages 1–41,
Jan. 2005.
146
BIBLIOGRAPHY
[115] D. E. Rowley and D. G. Rhoades. The cognitive jogthrough: a fast-paced user
interface evaluation procedure. In CHI ’92: Proceedings of the SIGCHI conference
on Human factors in computing systems, 1992.
[116] A. Sarma. A Survey of Collaborative Tools in Software Development . University
of California, Irvine, Institute for Software Research, Technical Report, page 68,
Mar. 2005.
[117] S. Sawyer. Software development teams. Communications of the ACM, 47(12),
Dec. 2004.
[118] C. Scaffidi and C. Chambers. Skill progression demonstrated by users in the
Scratch animation environment. International Journal of Human-Computer Interaction, 8(6):383–398, Apr. 2012.
[119] C. Scaffidi, M. Shaw, and B. Myers. Estimating the numbers of end users and end
user programmers. IEEE Symposium on Visual Languages and Human-Centric
Computing, pages 207–214, 2005.
[120] A. Settle. Computational thinking in a game design course. Proceedings of the
2011 conference on Information technology education, pages 61–66, 2011.
[121] M. Shaw. Software engineering education: a roadmap. Proceedings of the conference on The future of Software Engineering (ICSE ’00), pages 371–380, 2000.
[122] B. Shneiderman. Direct Manipulation: A Step Beyond Programming Languages.
Computer, 16(8):57–69, Aug. 1983.
[123] B. Shneiderman. Response time and display rate in human performance with
computers. ACM Computing Surveys, 16(3):265–285, Sept. 1984.
[124] N. C. Shu. Visual programming. Van Nostrand Reinhold, 1988.
[125] D. C. Smith, A. Cypher, and J. Spohrer. KidSim: programming agents without a
programming language. Communications of the ACM, 37(7), July 1994.
[126] R. Stallman. EMACS the extensible, customizable self-documenting display editor. ACM SigPlan Notices, Dec. 1980.
[127] J. Strubing. Designing the Working Process: What Programmers Do Besides Programming. User-Centered Requirements for Software Engineering Environments,
Springer, Berlin, Germany, 1994.
[128] K. Sung. Computer Games and Traditional CS Courses. Communications of the
ACM, 52(12), Dec. 2009.
147
BIBLIOGRAPHY
[129] D. Tapscott. Grown Up Digital: How the Net Generation is Changing Your World.
McGraw-Hill, 1 edition, Oct. 2008.
[130] D. Teague and P. Roe. Collaborative learning: towards a solution for novice
programmers. Proceedings of the tenth conference on Australasian computing
education-Volume 78, pages 147–153, 2008.
[131] G. Toffetti, S. Comai, J. Preciado, and M. Linaje. State-of-the Art and Trends
in the Systematic Development of Rich Internet Applications. Journal of Web
Engineering, 10(1):70–86, 2011.
[132] J.-P. Tolvanen, J. Gray, and M. Rossi. 2 nd workshop on domain-specific visual
languages. ACM, New York, New York, USA, Nov. 2002.
[133] M. Turner, D. Budgen, and P. Brereton. Turning software into a service. Computer, 36(10):38–44, Oct. 2003.
[134] A. van Deursen, P. Klint, and J. Visser. Domain-specific languages: An annotated
bibliography. ACM SigPlan Notices, 35(6), June 2000.
[135] J. Vassileva. Toward Social Learning Environments. IEEE Transactions on Learning Technologies, 1(4):199–214, 2008.
[136] G. Vickery, S. Wunsch-Vincent, and OECD. Participative Web and User-Created
Content: Web 2.0, Wikis and Social Networking. 2007.
[137] A. Voutilainen. Part-of-Speech Tagging. In R. Mitkov, editor, The Oxford Handbook of Computational Linguistics, pages 219–232. Oxford University Press, Jan.
2003.
[138] G. Wang, S. Yang, and Y. Han. Mashroom: End-User Mashup Programming
Using Nested Tables. Proceedings of the 18th International Conference on World
Wide Web, pages 861–870, Dec. 2008.
[139] E. Wenger. Communities of Practice: Learning, Meaning, and Identity. Cambridge
Univ Press, Sept. 1999.
[140] K. Werbach and D. Hunter. For the Win: How Game Thinking Can Revolutionize
Your Business. Wharton Digital Press, Oct. 2012.
[141] L. Werner, J. Denner, S. Campe, and D. C. Kawamoto. The fairy performance
assessment: measuring computational thinking in middle school. In SIGCSE ’12:
Proceedings of the 43rd ACM technical symposium on Computer Science Education,
2012.
[142] E. J. J. Whitehead and M. Wiggins. WebDAV: IEFT standard for collaborative
authoring on the Web. Internet Computing, IEEE, 2(5):34–40, 1998.
148
BIBLIOGRAPHY
[143] J. Whitehead. Collaboration in Software Engineering: A Roadmap. Future of
Software Engineering (FOSE ’07), Dec. 2006.
[144] L. Williams, E. Wiebe, K. Yang, M. Ferzli, and C. Miller. In Support of Pair
Programming in the Introductory Computer Science Course. Computer Science
Education, 12(3):197–212, Jan. 2002.
[145] C. Wills, D. Finkel, M. Gennert, and M. Ward. Peer learning in an introductory
computer science course. ACM SIGCSE Bulletin, 26(1):309–313, Mar. 1994.
[146] C. Wilson, L. A. Sudol, C. Stephenson, and M. Stehlik. Running on empty:
The failure to teach K-12 computer science in the digital age. Association for
Computing Machinery/Computer Science Teachers Association, 2010.
[147] J. M. Wing. Computational thinking. Communications of the ACM, 49(3), Mar.
2006.
[148] M. Wu and K. Richards. Facilitating computational thinking through game
design. Edutainment Technologies. Educational Games and Virtual Reality/Augmented Reality Applications, pages 220–227, 2011.
[149] W. Xiao, C. Chi, and M. Yang. On-line collaborative software development via
wiki. WikiSym ’07: Proceedings of the 2007 international symposium on Wikis,
Oct. 2007.
Download