35
Programming for the other 99%: Cooperative Educational Game Design on the Web Navid Ahmadi Mehdi Jazayeri 5 September 2012 LASER Summer School

Programming for the other 99%laser.inf.ethz.ch/2012/slides/Jazayeri/LASER2012.pdfSimplify Entering Code. Many general-purpose languages have been in-fluencedbytheneedforsufficientpowerto

Embed Size (px)

Citation preview

Programming for the other 99%: ���Cooperative Educational Game Design ���

on the Web

Navid Ahmadi

Mehdi Jazayeri

5 September 2012 LASER Summer School

End-user Programming

‣  “The motivation for end-user programming is to have the computer be useful for each person’s specific individual needs.”

‣  “The computer is a unique tool in its malleability—it can be programmed to perform almost any computation, but only by those who know how.”

‣  “End-User Programmer as a separate class from novices who are assumed to be studying to be professional programmers”

Brad A. Myers, Andrew J. Ko, Margaret M. Burnett , CHI 2006

1

Prevalent examples of EUP

‣  Spreadsheet programming

‣  Graphical programming, e.g. VB, Flash

‣  Domain-specific languages Everything we in the programming language field consider a beautiful concept, such as types, is considered too difficult for end-user programmers!

2

Number of potential (end-) users

3

90,000,000

12,000,000

3,000,000

50,000,000

0

10,000,000

20,000,000

30,000,000

40,000,000

50,000,000

60,000,000

70,000,000

80,000,000

90,000,000

100,000,000

Users

Spreadsheetsand D

Bs

Self-D

escribedP

rogramm

ers

Professional

Program

mers

Keywords End-User Software Engineering, Natural Programming, Programming by Demonstration, Programming by Ex-ample, Visual Programming, Empirical Studies of Pro-grammers (ESP), Psychology of Programming

ACM Classification Keywords D.3.2 [Programming Languages]: Language Classifica-tions; D.2.6 [Programming Environments]: Integrated environments; D.2.5. [Testing and Debugging]: De-bugging aids; 1.3.6 [Computer Graphics]: Methodolo-gies and Techniques-Languages.

End-User Programming: What and Why One way to define “programming” is as the process of transforming a mental plan of desired actions for a computer into a representation that can be understood by the computer [16]. Expressed this way, it seems obvious that the study of humans and programming should be a topic of HCI. Indeed, this area of study has a long history, and has gone under many names, in-cluding “Software Psychology” [49], “Psychology of Programming” [7, 15] and the “Empirical Studies of Programming” (ESP), which is also the name of a series of eight workshops from 1986 through 1999.

Most of the early work focused on studying professional programmers or novice programmers. A “professional” programmer might be defined as someone whose pri-mary job function is to write or maintain software. A “novice” programmer might be defined as someone who is learning how to program.

In contrast, “end-user programmers” (EUP) are people who write programs, but not as their primary job func-tion. Instead, they must write programs in support of

achieving their main goal, which is something else, such as accounting, designing a web page, doing office work, scientific research, entertainment, etc. End-user programmers generally use special-purpose languages such as spreadsheet languages or web authoring scripts, but some EUPs, such as chemists or other sci-entists, may need to learn to use “regular” program-ming languages such as C or Java to achieve their pro-gramming goals.

Why try to provide programming capabilities for every-one? The computer is a unique tool in its malleability—it can be programmed to perform almost any computa-tion, but only by those who know how. Although pre-packaged software applications come with increasingly complex functions, they still cannot do every task needed by every individual, and, in particular, cannot be customized to each individual’s needs. Sometimes software designed or customized in a particular social context is so well situated in the community that uses it (called “situated software” [48]) that it provides form-fit solutions for very particular needs, even though it might not have generally accepted notions of design quality or generality. Spreadsheets are a case in point: they have proven the enormous power of allowing indi-viduals to create their own customized computations [35], and much EUP research aims to generalize spreadsheet’s success to other domains.

Research in End-User Programming Programming has always been recognized as a difficult task. This led to many research threads that tried to make programming more accessible by pushing on dif-ferent aspects of computing technology.

Estimates for the number of people inthe US in 2006 who use computers at work, who use spreadsheets at work, who describe themselves as pro-grammers, and who say they are professional programmers [47].

CHI 2006 • Invited Research Overview • End-User Programming April 22-27, 2006 • Montréal, Québec, Canada

76

How to make programming easier?

‣  Teaching systems –  Mechanics of Programming

•  Expressing programs

•  Structuring programs

•  Understanding program execution

‣  Empowering systems –  Learning support

–  Mechanics of programming •  Code too difficult

•  Improve programming languages

–  Activities enhanced by programming

4

Lowering the Barriers to Programming: A Taxonomy of Programming Environments and Languages for Novice Programmers Caitlin Kelleher and Randy Pausch, ACM Computing Surveys, Vol. 37, No. 2, June 2005, pp. 83–137.

Lowering the Barriers to Programming 87

the computer can understand. The sys-tems in this category explore two possibleavenues for making this process easierfor beginning programmers: improve thelanguage so that beginners can moreeasily learn it or find alternate waysfor beg inners to communicate theirinstructions to the computer.

Simplify Entering Code. Manygeneral-purpose languages have been in-fluenced by the need for sufficient power totackle arbitrary programming tasks and adesire to make the programming languageeasier to implement, making the result-ing languages unnecessarily difficult forbeginning programmers. The systems inthis category examine three approaches tomaking languages more approachable forbeginning programmers: 1) simplifyingthe language, 2) tailoring the languagefor a specific, small domain of program-ming problems, and 3) preventing syntaxerrors.

(1) Simplify the Language. General-purpose languages typically include alarge variety of syntactic elements thatcan be particularly difficult for beginnersbecause these syntactic elements don’thave an obvious meaning. The languagesin this category use a few simple obser-vations to decrease the number of po-tentially confusing syntactic elements en-countered by beginning users while tryingto maintain as much similarity as possibleto general-purpose languages. General-purpose languages often contain unneces-sary syntax, use commands whose namesare unfamiliar or have different mean-ings in the programming language thanin standard English, have inconsistentuses for syntactic elements, or includefeatures inappropriate for beginning pro-grammers. Using these observations, it ispossible to make a language syntacticallyeasier for beginners to handle withoutfundamentally changing the common con-trol structures found in general-purposelanguages. Consequently, when a studentmoves from one of these languages to ageneral-purpose language, they should beable to transfer their knowledge from theteaching language.

Fig. 2. A for loop to compute the sum of the numbersfrom 1 to 10 written in Fortran and Basic.

BASIC: DARTMOUTH COLLEGE, 1963[Kurtz 1981]. Basic was designed toteach Dartmouth’s non-science studentsabout computing through programming.Fortran and Algol, the commonly usedlanguages at the time, were both largeand complex. Kemeny and Kurtz believedthat the students would “balk at theseemingly pointless detail” [Kurtz 1981].After considering using subsets of Fortranor Algol, Kemeny and Kurtz agreed theywould have to create their own lan-guage. The Basic (Beginners All-purposeSymbolic Instruction Code) languagewas designed to support a small set ofinstructions and remove unnecessarysyntax. The environment was designed tohave rapid turnaround time and sacrificecomputer time for user time (in 1963, thecomputer science community was arguingagainst high-level languages because thecompilation time was seemingly wastedcomputation).

Statements in Basic consist of threeparts: a line number (e.g., 110), an oper-ator (e.g., LET), and an operand (e.g., S =S + 1). All commands begin with an En-glish word to make the language easierfor the novice; the designers believed thatLET S = S + I would be easier for stu-dents to understand than S = S + I.Figure 2 shows a simple summation loopin both Fortran and Basic. While the state-ments have a similar structure, the Ba-sic program uses language more suitablefor a novice, removes elements like labels(e.g., 30) that require a more detailed un-derstanding of the program counter, anddoes not depend on spacing for syntacticmeaning.

SP/K: UNIVERSITY OF TORONTO, 1977 [Holtet al. 1977]. SP/k is a subset of PL/1 chosenfor teaching introductory programming.The features of the SP/k language werechosen to remove redundant constructs,inconsistencies in the language that go

ACM Computing Surveys, Vol. 37, No. 2, June 2005.

Symbols or Words

5

COBOL: ADD A TO B GIVING C

Educational Game Design

6

‣  Creating video games as an engaging activity

‣  Teaching computer programming

‣  Raising interest in computer science

Educational Game Design Environments 1

AgentSheets (Repenning 93)

7

Educational Game Design Environments II

Alice (Cooper et. al 00)

8

Educational Game Design Environments III

Scratch (Resnick et. al 05]

9

Why Cooperation?

‣  Educational game design is limited to the classroom –  Desktop-based game design environments are solitary

–  Learning is dependent on the presence of a teacher

‣  Clear evidence of cooperation among novices –  Reported In literature

–  Easy to observe in practice

‣  Scaling up is possible with peer learning –  communities of practice

10

Need a Cooperative Platform

Choice of Platform

11

Desktop + Networking

Web

Mobile

Web as a Gaming Platform

‣  Potential to run both on Desktop and Mobile platforms –  HTML5

‣  Accessible

‣  Scalable

‣  Tons of cooperative and collaborative apps

12

Cooperation Model?

Image Movie Blog Wiki Interactive Apps

Arti

fact

Com

plex

ity

Web 2.0���aka Participative Web

13

Computer Games

Towards Game Design 2.0

Game Design 1.0 Solitary game design

Share the play

External communication tools

Embedded games

Download, Modify, Upload

Learning limited to classroom

Game Design 2.0 Cooperative game design

Share the design

Integrated communication tools

Native games

---, Modify, ---

Peer learning, Social learning

14

à à à à à à

GAME DEVELOPMENT PROCESS

15

Visual Programming

16

Scene Authoring

17

Execution

18

frog.prototype.Forever = function() {if (this.stacked('AB'), agents['goal']) { this.erase(0, 0); this.Broadcast(agents['life'], "reincarnation");} else if (this.stacked('AB'), agents['car']) { this.make(0, 0, "dead");}

};

Compile

Run-time System

Game EngineScene ManagerAgent Instances

...

...

EditorGraphics Engine

Agent Behavior APIPositionDepiction...stacked()erase()broadcast()make()... Output

Render

<<instantiate>>

API Calls

Design of cooperative features I���best practices from Web 2.0

‣  User-created content –  Instant publishing

–  Design for sharing

‣  Explore the inside of games

‣  Comments, likes, etc.

19

Design of cooperative features II���support for learning

‣  Compensate for the lack of a teacher –  Video tutorials

–  Showcase

–  Forum

–  One-to-One Chat

–  Chat Room

20

Design of cooperative features II

Video tutorials

21

Design of cooperative features II

Showcase

22

Design of cooperative features II

Forum

23

Design of cooperative features II

One-to-One Chat

24

Design of cooperative features II

Chat Room

25

Design of cooperative features III���online social presence

‣  Enable social learning –  Online presence (user accounts, my games)

–  Integration with Facebook

–  Community building around games

26

Usability Evaluation

‣  One-day workshop with 13 high-school students –  Age: [15 .. 20] –  Round-table setting –  90’ hands-on, 60’ individual game design

‣  Observations –  Students worked often with their adjacent students –  Face-to-face cooperation for problem solving –  Tried chat –  Explored each other’s games –  Used Facebook account for registration –  Managed to complete given game design tasks

27

Attitude Test

28

1"

2"

3"

4"

5"Strongly Agree

Agree

Not Sure

Disagree

Strongly Disagree

Computer Use

Fun

Inte

rest

ing

Frus

tratin

gBo

ring

Game Design Environment

Con

fusi

ngC

ool

Anno

ying

Easy

to le

arn

Ente

rtain

ing

Cooperative Website

Con

fusi

ngC

ool

Anno

ying

Easy

to le

arn

Ente

rtain

ing

Usability Evaluation

‣  Kids make a Frogger game in 60-120 minutes –  Comparable to the desktop-based AgentSheets

‣  Remote Monitoring –  Opportunities for detailed analysis of end user interaction

29

!"

#"

$"

%"

&"

!" #!" $!" %!" &!" '!" (!"

!"#$%&#"'()$*+%

ProgrammingEnvironment

Worksheet Editor

Image Editor

Agent Gallery

Future Work I���Measuring the effect of cooperation

30

vs.

Conclusions about AgentWeb

‣  A cooperative game design environment ‘in the cloud’ –  Based on Web 2.0 and social networking practices

–  Open-source community for game designers

‣  The role of cooperation –  Allows creating communities of practice

–  Enables peer learning and social learning

–  Supports scaling up the computer science education

32

Computational Thinking

33

2+Computa(onal+Thinking+ JeanneMe+M.+Wing+

My+Grand+Vision+

•  Computa(onal+thinking+will+be+a+fundamental+skill+used+by+everyone+in+the+world+by+the+middle+of+the+21st+Century.+

–  Just+like+reading,+wri(ng,+and+arithme(c.+

–  Incestuous:+Compu(ng+and+computers+will+enable+the+spread+of+computa(onal+thinking.+

–  In+research:+scien(sts,+engineers,+…,+historians,+ar(sts+–  In+educa(on:+KX12+students+and+teachers,+undergrads,+…+

J.M.+Wing,+“Computa(onal+Thinking,”+CACM+Viewpoint,+March+2006,+pp.+33X35.+Paper+off++hMp://www.cs.cmu.edu/~wing/++

Contrasting Voices

34

Peter Denning, Beyond Computational Thinking, CACM, June 2009 “If we are not careful, our fascination with “computational thinking” may lead us back into the trap we are trying to escape... We are valued at the table when we help the others solve problems they care about. We are most valued not for our computational thinking, but for our computational doing.”

Jennette Wing, Computational Thinking, CACM, March 2006 “It represents a universally applicable attitude and skill set everyone, not just computer scientists, would be eager to learn and use…Thinking like a computer scientist means more than being able to program a computer. It requires thinking at multiple levels of abstraction.”

Questions to ponder

‣  Do you believe in the premise of computational thinking?

‣  Should everybody learn to program?

‣  At what age should people learn programming?

‣  How important is the learning of textual syntax?

‣  Can end-users write sophisticated, reliable programs?

‣  Is programming the essence of computing?

‣  Can you learn just “a little” about programming?

35