programming for the other 99%laser.inf.ethz.ch/2012/slides/jazayeri/laser2012.pdfsimplify entering...
TRANSCRIPT
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.
Educational Game Design
6
‣ Creating video games as an engaging activity
‣ Teaching computer programming
‣ Raising interest in computer science
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
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
à à à à à à
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 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
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