Pex4Fun (http://www.pex4fun.com/) is a web-based educational gaming environment for teaching and learning programming and software engineering. Pex4Fun can be used to teach and learn programming and software engineering at many levels, from high school all the way through graduate courses. With Pex4Fun, a student edits code in any browser – with Intellisense – and Pex4Fun executes it and analyzes it in the cloud. Pex4Fun connects teachers, curriculum authors, and students in a unique social experience, tracking and streaming progress updates in real time. In particular, Pex4Fun finds interesting and unexpected input values (with Pex, an advanced test-generation tool) that help students understand what their code is actually doing. The real fun starts with coding duels where a student writes code to implement a teacher's secret specification (in the form of sample-solution code not visible to the student). Pex4Fun finds any discrepancies in behavior between the student’s code and the secret specification. Such discrepancies are given as feedback to the student to guide how to fix the student’s code to match the behavior of the secret specification. In early 2014, Code Hunt (https://www.codehunt.com/) has been released as a redesign of Pex4Fun as game.
Teaching and Learning Programming and Software Engineering via Interactive Gaming
1. https://www.codehunt.com
Teaching and Learning
Programming and
Software Engineering
via Interactive Gaming
http://pex4fun.com
Tao Xie
University of Illinois at Urbana-Champaign
In collaboration with Nikolai Tillmann, Jonathan de Halleux, and Judith Bishop
(Microsoft Research)
Related Papers/Resources: https://sites.google.com/site/asergrp/projects/ese
2. Testing Tool Educational Gaming
Support
Dynamic Symbolic Execution (Pex)
http://research.microsoft.com/pex/
Pex for Fun:
Interactive Gaming for
Teaching and Learning
https://www.codehunt.com
http://pex4fun.com
7. Dynamic Symbolic Execution in Pex
Choose next path
Solve
void CoverMe(int[] a)
{
if (a == null) return;
if (a.Length > 0)
if (a[0] == 1234567890)
throw new Exception("bug");
}
F
F
a.Length>0
a==null
Execute&Monitor
Constraints to solve
Input
Observed constraints
a!=null
null
{}
a==null
a!=null &&
!(a.Length>0)
a==null &&
a.Length>0 &&
a[0]!=1234567890
a==null &&
a.Length>0 &&
a[0]==1234567890
a!=null &&
a.Length>0
a!=null &&
a.Length>0 &&
a[0]==123456890
T
T
{0}
{123…}
Done: There is no path left.
a[0]==123…
F
T
http://pex4fun.com/HowDoesPexWork
9. Coding Duels
Pex computes “semantic diff” in cloud
secret reference implementation vs.
code written in browser
You win when Pex finds no differences
For more info, see our ICSE 2013 SEE paper:
http://web.engr.illinois.edu/~taoxie/publications/icse13see-pex4fun.pdf
10. Behind the Scene of Pex for Fun
behavior
Secret Impl ==
Secret Implementation
class Secret {
public static int Puzzle(int x) {
if (x <= 0) return 1;
return x * Puzzle(x-1);
}
}
class Test {
public static void Driver(int x) {
if (Secret.Puzzle(x) != Player.Puzzle(x))
throw new Exception(“Mismatch”);
}
}
Player Impl
Player Implementation
class Player {
public static int Puzzle(int x) {
return x;
}
}
10
11. Coding Duels
Fun and Engaging
Iterative gameplay
Adaptive
Personalized
No cheating
Clear winning criterion
18. Example User Feedback
Released since 2010
“I used to love the first person shooters and the
satisfaction of blowing away a whole team of
Noobies playing Rainbow Six, but this is far more
fun.”
X
“I’m afraid I’ll have to constrain myself to spend just an hour
or so a day on this really exciting stuff, as I’m really stuffed
with work.”
“It really got me *excited*. The part that got me most is
about spreading interest in teaching CS: I do think that it’s
REALLY great for teaching | learning!”
19. Usage Scenarios of Pex4Fun
• Massive Open Online Courses (MOOC)
• Course assignments (students/professionals)
• Student/professional competitions
• Assessment of testing, programming,
problem solving skills for job applicants
21. End-User Programming
On Mobile Devices
TouchDevelop:
Bring your own devices,
program anywhere,
run immediately on devices
V.S.
https://www.touchdevelop.com/
21
26. TouchDevelop cont.
• Simple script language
– No user-defined type
– No class inheritance
Full-fledged platform for
• Rich API support
EUP on Mobile Devices
– Easy access to various sensors and resources
• Powerful cloud services
– Download/publish scripts
– Store information of entities (e.g., scripts, users)
– Answer queries
https://www.touchdevelop.com/
26
27. Rapid Increase of TouchDevelop Popularity
Oct 2013 vs. 17322 scripts Feb 2013
27
28. Summary: Testing Tool Educational Gaming
Support
DSE/Pex
Pex for Fun:
Interactive Gaming for
Teaching and Learning
https://www.touchdevelop.com/
https://www.codehunt.com
http://pex4fun.com
29. Testing Tool Educational Gaming
http://research.microsoft.com/pex/
http://pex4fun.com
Support
Q&A
Thank you!
Contact: taoxie@illinois.edu
http://www.cs.illinois.edu/homes/taoxie/
Related Papers/Resources: https://sites.google.com/site/asergrp/projects/ese
30. Summary: Testing Tool Educational Gaming
Support
DSE/Pex
Pex for Fun:
Interactive Gaming for
Teaching and Learning
https://www.touchdevelop.com/
https://www.codehunt.com
http://pex4fun.com