SlideShare a Scribd company logo
Crowdsourcing Code and
Process via Code Hunt
Tao Xie, Judith Bishop, Nigel Horspool, Nikolai
Tillmann, Jonathan de Halleux
University of Illinois at Urbana-Champaign, USA;
Microsoft Research, USA; University of Victoria, Canada
https://www.codehunt.com
Testing Tool  Educational Gaming
Dynamic Symbolic Execution (Pex)
Pex for Fun/Code Hunt:
Interactive Gaming for
Teaching and Learning
Support
http://research.microsoft.com/pex/ http://pex4fun.com
https://www.codehunt.com
http://research.microsoft.com/pex/
Pex is Part of Visual Studio 2015!
• As new feature of “Smart Unit Tests”
http://www.visualstudio.com/en-us/news/vs2015-preview-vs#Testing
Nikolai Tillmann, Jonathan de Halleux, and Tao Xie. Transferring an Automated Test Generation
Tool to Practice: From Pex to Fakes and Code Digger. In ASE 2014, Experience Papers.
http://web.engr.illinois.edu/~taoxie/publications/ase14-pexexperiences.pdf
Coding Duels
http://pex4fun.com/
Nikolai Tillmann, Jonathan De Halleux, Tao Xie, Sumit Gulwani and Judith Bishop. Teaching and Learning
Programming and Software Engineering via Interactive Gaming. In ICSE 2013, SEE.
http://web.engr.illinois.edu/~taoxie/publications/icse13see-pex4fun.pdf
Coding Duel Competition
@ICSE 2011
http://pexforfun.com/icse2011
Code Hunt: Resigned As Game
https://www.codehunt.com/
Gameplay
1. User writes code in browser
2. Cloud analyzes code – test cases show differences
As long as there are differences: User must adapt code, repeat
When they are no more differences: User wins level!
code
test cases
Behind the Scene of Code Hunt
Secret Implementation
class Secret {
public static int Puzzle(int x) {
if (x <= 0) return 1;
return x * Puzzle(x-1);
}
}
Player Implementation
class Player {
public static int Puzzle(int x) {
return x;
}
}
class Test {
public static void Driver(int x) {
if (Secret.Puzzle(x) != Player.Puzzle(x))
throw new Exception(“Mismatch”);
}
}
behavior
Secret Impl == Player Impl
9
It’s a game!
• iterative gameplay
• adaptive
• personalized
• no cheating
• clear winning criterion
code
test cases
Towards a Course Experience
Code Hunt as Crowdsourcing Platform
Secret Implementation
class Secret {
public static int Puzzle(int x) {
if (x <= 0) return 1;
return x * Puzzle(x-1);
}
}
Player Implementation
class Player {
public static int Puzzle(int x) {
return x;
}
}
class Test {
public static void Driver(int x) {
if (Secret.Puzzle(x) != Player.Puzzle(x))
throw new Exception(“Mismatch”);
}
}
behavior
Secret Impl == Player Impl
12
Take 1: Code
Code Hunt as Crowdsourcing Platform
Secret Implementation
class Secret {
public static int Puzzle(int x) {
if (x <= 0) return 1;
return x * Puzzle(x-1);
}
}
Player Implementation
class Player {
public static int Puzzle(int x) {
return x;
}
}
class Test {
public static void Driver(int x) {
if (Secret.Puzzle(x) != Player.Puzzle(x))
throw new Exception(“Mismatch”);
}
}
behavior
Secret Impl == Player Impl
13
Take 2: Process class Secret {
public static int Puzzle(int x) {
if (x <= 0) return 1;
return x * Puzzle(x-1);
}
}
class Secret {
public static int Puzzle(int x) {
if (x <= 0) return 1;
return x * Puzzle(x-1);
}
}
class Secret {
public static int Puzzle(int x) {
if (x <= 0) return 1;
return x * Puzzle(x-1);
}
}
class Secret {
public static int Puzzle(int x) {
if (x <= 0) return 1;
return x * Puzzle(x-1);
}
}
class Secret {
public static int Puzzle(int x) {
if (x <= 0) return 1;
return x * Puzzle(x-1);
}
}
Code Hunt as Crowdsourcing Platform
Secret Implementation
class Secret {
public static int Puzzle(int x) {
if (x <= 0) return 1;
return x * Puzzle(x-1);
}
}
Player Implementation
class Player {
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”);
}
}
behavior
Secret Impl == Player Impl
14
Take 3: Code (w/o secret)
class Secret {
public static int Puzzle(int x) {
if (x <= 0) return 1;
return x * Puzzle(x-1);
}
}
Passing Player Contributed
Implementations
class Secret {
public static int Puzzle(int x) {
if (x <= 0) return 1;
return x * Puzzle(x-1);
}
}
class Secret {
public static int Puzzle(int x) {
if (x <= 0) return 1;
return x * Puzzle(x-1);
}
}
class Secret {
public static int Puzzle(int x) {
if (x <= 0) return 1;
return x * Puzzle(x-1);
}
}
class Secret {
public static int Puzzle(int x) {
if (x <= 0) return 1;
return x * Puzzle(x-1);
}
}
Judge
Metrics
Why Code Hunt as Crowdsourcing
Platform?
Why Code Hunt as Crowdsourcing
Platform?
Crowdsourcing Scale
& Open Data
Coding Duels
1,667,521 clicked 'Ask Pex!'
http://pex4fun.com/
2014 Beauty of Programming Contest
Code Hunt can identify
top coders
Code Hunt - the APCS (default) Zone
• Opened in March 2014
• 129 problems covering the Advanced Placement
Computer Science course
• By August 2014, over 45,000 users started
• By now, over 725,000 users
0
10000
20000
30000
40000
50000
1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 1.101.111.121.131.141.15 2.1 2.2 2.3 2.4 2.5 2.6 2.7 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8
Players
Sector and Level
APCS Zone, First three sectors, 45K to 1K
Code Hunt Usage
Code Hunt has had several hundred thousands of
users since launch in March 2014
Stats from Visual Studio Analytics over the period
9/19/14 and 10/20/14 indicate 1,150 users a day
Stickiness (loyalty) is very high
APCS 725,199
ICSE 627
BoPQuali 13,778
BopA 1,017
BopB 1,103
BopSemi 1,164
CSTA 61
TEALS 14
BootCamp 30
Laser Sept 12
Polska Oct 344
ImCupJan 542
ImCupDec 222
ImCupNov 379
ImCupOct 831
ImCupSept 257
Total Try
Count
Average Try
Count
Max Try
Count
Total
Solved
Users
13374 363 1306 1581
Size of Code Hunt Data (so far)
For ImCupSept
257 users x 24 puzzles x approx. 10 tries =
about 13,000 programs
#users
Code Hunt Data Released to the Public!
http://research.microsoft.com/codehuntcommunity/
https://github.com/Microsoft/Code-Hunt
The currently released data set contains the programs written by students
(only) worldwide during a contest over 48 hours. There are approximately 250
users, 24 puzzles and about 13,000 programs.
Judith Bishop, Nigel Horspool, Tao Xie, Nikolai Tillmann, and Jonathan de Halleux. Code Hunt:
Experience with Coding Contests at Scale. In ICSE 2015 JSEET.
http://web.engr.illinois.edu/~taoxie/publications/icse15jseet-codehunt.pdf
http://research.microsoft.com/chese2015/
Summary: Testing Tool Educational Gaming
DSE/Pex
Pex for Fun/Code Hunt:
Interactive Gaming for
Teaching and Learning
Support
http://pex4fun.com
https://www.codehunt.com
http://research.microsoft.com/codehuntcommunity/
https://github.com/Microsoft/Code-Hunt
Testing Tool  Educational Gaming
Support
http://research.microsoft.com/pex/ http://pex4fun.com
Q & A
Thank you!
http://research.microsoft.com/codehuntcommunity/
https://github.com/Microsoft/Code-Hunt

More Related Content

PPTX
Advances in Unit Testing: Theory and Practice
Tao Xie
 
PPTX
Transferring Software Testing and Analytics Tools to Practice
Tao Xie
 
PDF
Software Analytics - Achievements and Challenges
Tao Xie
 
PDF
Software Mining and Software Datasets
Tao Xie
 
PDF
Software Analytics: Towards Software Mining that Matters
Tao Xie
 
PPTX
Java 104
Manuela Grindei
 
PPTX
Java 101
Manuela Grindei
 
PPTX
Java 103
Manuela Grindei
 
Advances in Unit Testing: Theory and Practice
Tao Xie
 
Transferring Software Testing and Analytics Tools to Practice
Tao Xie
 
Software Analytics - Achievements and Challenges
Tao Xie
 
Software Mining and Software Datasets
Tao Xie
 
Software Analytics: Towards Software Mining that Matters
Tao Xie
 
Java 104
Manuela Grindei
 
Java 101
Manuela Grindei
 
Java 103
Manuela Grindei
 

What's hot (20)

PDF
DLint: dynamically checking bad coding practices in JavaScript (ISSTA'15 Slides)
Liang Gong
 
PDF
A Survey on Dynamic Symbolic Execution for Automatic Test Generation
Sung Kim
 
PPTX
CrashLocator: Locating Crashing Faults Based on Crash Stacks (ISSTA 2014)
Sung Kim
 
PPTX
Static analysis: Around Java in 60 minutes
Andrey Karpov
 
PPTX
Java 102
Manuela Grindei
 
PPTX
Binary Analysis - Luxembourg
Abhik Roychoudhury
 
PPTX
Griffin: Grouping Suspicious Memory-Access Patterns to Improve Understanding...
Sangmin Park
 
PDF
Partitioning Composite Code Changes to Facilitate Code Review (MSR2015)
Sung Kim
 
PPTX
Automatically Generated Patches as Debugging Aids: A Human Study (FSE 2014)
Sung Kim
 
PPT
Crowd debugging (FSE 2015)
Sung Kim
 
PDF
On the Use of Static Analysis to Safeguard Recursive Dependency Resolution
Kamil Jezek
 
PPTX
Mining Source Code Improvement Patterns from Similar Code Review Works
奈良先端大 情報科学研究科
 
PPTX
Demystifying Machine and Deep Learning for Developers
Microsoft Tech Community
 
PDF
Effective Fault-Localization Techniques for Concurrent Software
Sangmin Park
 
PDF
Illustrated Code (ASE 2021)
CISPA Helmholtz Center for Information Security
 
PDF
OpenML 2019
Joaquin Vanschoren
 
PDF
OpenML NeurIPS2018
Joaquin Vanschoren
 
PDF
How the PVS-Studio analyzer began to find even more errors in Unity projects
Andrey Karpov
 
PDF
Learning how to learn
Joaquin Vanschoren
 
PPTX
Fabrizio pastore TORACLE-2021 @ESEC/FSE 2021
fabriziopastore
 
DLint: dynamically checking bad coding practices in JavaScript (ISSTA'15 Slides)
Liang Gong
 
A Survey on Dynamic Symbolic Execution for Automatic Test Generation
Sung Kim
 
CrashLocator: Locating Crashing Faults Based on Crash Stacks (ISSTA 2014)
Sung Kim
 
Static analysis: Around Java in 60 minutes
Andrey Karpov
 
Java 102
Manuela Grindei
 
Binary Analysis - Luxembourg
Abhik Roychoudhury
 
Griffin: Grouping Suspicious Memory-Access Patterns to Improve Understanding...
Sangmin Park
 
Partitioning Composite Code Changes to Facilitate Code Review (MSR2015)
Sung Kim
 
Automatically Generated Patches as Debugging Aids: A Human Study (FSE 2014)
Sung Kim
 
Crowd debugging (FSE 2015)
Sung Kim
 
On the Use of Static Analysis to Safeguard Recursive Dependency Resolution
Kamil Jezek
 
Mining Source Code Improvement Patterns from Similar Code Review Works
奈良先端大 情報科学研究科
 
Demystifying Machine and Deep Learning for Developers
Microsoft Tech Community
 
Effective Fault-Localization Techniques for Concurrent Software
Sangmin Park
 
OpenML 2019
Joaquin Vanschoren
 
OpenML NeurIPS2018
Joaquin Vanschoren
 
How the PVS-Studio analyzer began to find even more errors in Unity projects
Andrey Karpov
 
Learning how to learn
Joaquin Vanschoren
 
Fabrizio pastore TORACLE-2021 @ESEC/FSE 2021
fabriziopastore
 
Ad

Viewers also liked (14)

PPTX
Transferring Software Testing Tools to Practice
Tao Xie
 
PDF
SCAM 2012 Keynote Slides on Cooperative Testing and Analysis by Tao Xie
Tao Xie
 
PDF
SBQS 2013 Keynote: Cooperative Testing and Analysis
Tao Xie
 
PPTX
Impact-Driven Research on Software Engineering Tooling
Tao Xie
 
PPTX
Advancing Foundation and Practice of Software Analytics
Tao Xie
 
PPTX
Software Analytics: Towards Software Mining that Matters (2014)
Tao Xie
 
PPTX
HotSoS16 Tutorial "Text Analytics for Security" by Tao Xie and William Enck
Tao Xie
 
PDF
Pathways to Technology Transfer and Adoption: Achievements and Challenges
Tao Xie
 
PPTX
Teaching and Learning Programming and Software Engineering via Interactive Ga...
Tao Xie
 
PDF
Tutorial: Text Analytics for Security
Tao Xie
 
PDF
Mapping out a Research Agenda
Tao Xie
 
PPT
PhD-Program Preparation for Successful Post-PhD Career
Tao Xie
 
PDF
User Expectations in Mobile App Security
Tao Xie
 
PDF
How to Write Research Papers
Tao Xie
 
Transferring Software Testing Tools to Practice
Tao Xie
 
SCAM 2012 Keynote Slides on Cooperative Testing and Analysis by Tao Xie
Tao Xie
 
SBQS 2013 Keynote: Cooperative Testing and Analysis
Tao Xie
 
Impact-Driven Research on Software Engineering Tooling
Tao Xie
 
Advancing Foundation and Practice of Software Analytics
Tao Xie
 
Software Analytics: Towards Software Mining that Matters (2014)
Tao Xie
 
HotSoS16 Tutorial "Text Analytics for Security" by Tao Xie and William Enck
Tao Xie
 
Pathways to Technology Transfer and Adoption: Achievements and Challenges
Tao Xie
 
Teaching and Learning Programming and Software Engineering via Interactive Ga...
Tao Xie
 
Tutorial: Text Analytics for Security
Tao Xie
 
Mapping out a Research Agenda
Tao Xie
 
PhD-Program Preparation for Successful Post-PhD Career
Tao Xie
 
User Expectations in Mobile App Security
Tao Xie
 
How to Write Research Papers
Tao Xie
 
Ad

Similar to Csise15 codehunt (20)

PDF
Software Testing:
 A Research Travelogue 
(2000–2014)
Alex Orso
 
PPTX
Gamifying Teaching and Learning of Software Engineering and Programming
Tao Xie
 
PPTX
Testing for Educational Gaming and Educational Gaming for Testing
Tao Xie
 
PDF
Deep Learning And Business Models (VNITC 2015-09-13)
Ha Phuong
 
PDF
Apache Spark for Cyber Security in an Enterprise Company
Databricks
 
PDF
Data Structure and Algorithms (DSA) with Python
epsilonice
 
PDF
Open source ai_technical_trend
Mario Cho
 
PDF
Bringing an AI Ecosystem to the Domain Expert and Enterprise AI Developer wit...
Databricks
 
PDF
IRJET- Unabridged Review of Supervised Machine Learning Regression and Classi...
IRJET Journal
 
PPTX
Building an Empire with PowerShell
Will Schroeder
 
PDF
Deep Learning with CNTK
Ashish Jaiman
 
PDF
The Present and Future of the Web Platform
C4Media
 
PPTX
Python for Data Science with Anaconda
Travis Oliphant
 
PDF
TDD CrashCourse Part3: TDD Techniques
David Rodenas
 
PPTX
16. Java stacks and queues
Intro C# Book
 
PPTX
Static analysis works for mission-critical systems, why not yours?
Rogue Wave Software
 
PDF
Pythia Reloaded: An Intelligent Unit Testing-Based Code Grader for Education
ECAM Brussels Engineering School
 
PDF
Microservices Chaos Testing at Jet
C4Media
 
PDF
Faster deep learning solutions from training to inference - Amitai Armon & Ni...
Codemotion Tel Aviv
 
PPTX
1_Introduction_to_R - disease modeling.pptx
ChetanSharma78255
 
Software Testing:
 A Research Travelogue 
(2000–2014)
Alex Orso
 
Gamifying Teaching and Learning of Software Engineering and Programming
Tao Xie
 
Testing for Educational Gaming and Educational Gaming for Testing
Tao Xie
 
Deep Learning And Business Models (VNITC 2015-09-13)
Ha Phuong
 
Apache Spark for Cyber Security in an Enterprise Company
Databricks
 
Data Structure and Algorithms (DSA) with Python
epsilonice
 
Open source ai_technical_trend
Mario Cho
 
Bringing an AI Ecosystem to the Domain Expert and Enterprise AI Developer wit...
Databricks
 
IRJET- Unabridged Review of Supervised Machine Learning Regression and Classi...
IRJET Journal
 
Building an Empire with PowerShell
Will Schroeder
 
Deep Learning with CNTK
Ashish Jaiman
 
The Present and Future of the Web Platform
C4Media
 
Python for Data Science with Anaconda
Travis Oliphant
 
TDD CrashCourse Part3: TDD Techniques
David Rodenas
 
16. Java stacks and queues
Intro C# Book
 
Static analysis works for mission-critical systems, why not yours?
Rogue Wave Software
 
Pythia Reloaded: An Intelligent Unit Testing-Based Code Grader for Education
ECAM Brussels Engineering School
 
Microservices Chaos Testing at Jet
C4Media
 
Faster deep learning solutions from training to inference - Amitai Armon & Ni...
Codemotion Tel Aviv
 
1_Introduction_to_R - disease modeling.pptx
ChetanSharma78255
 

More from Tao Xie (18)

PDF
MSR 2022 Foundational Contribution Award Talk: Software Analytics: Reflection...
Tao Xie
 
PPTX
DSML 2021 Keynote: Intelligent Software Engineering: Working at the Intersect...
Tao Xie
 
PPTX
Intelligent Software Engineering: Synergy between AI and Software Engineering
Tao Xie
 
PDF
Diversity and Computing/Engineering: Perspectives from Allies
Tao Xie
 
PDF
Intelligent Software Engineering: Synergy between AI and Software Engineering...
Tao Xie
 
PDF
MSRA 2018: Intelligent Software Engineering: Synergy between AI and Software ...
Tao Xie
 
PDF
SETTA'18 Keynote: Intelligent Software Engineering: Synergy between AI and So...
Tao Xie
 
PDF
ISEC'18 Tutorial: Research Methodology on Pursuing Impact-Driven Research
Tao Xie
 
PDF
ISEC'18 Keynote: Intelligent Software Engineering: Synergy between AI and Sof...
Tao Xie
 
PPTX
Intelligent Software Engineering: Synergy between AI and Software Engineering
Tao Xie
 
PDF
Software Analytics: Data Analytics for Software Engineering and Security
Tao Xie
 
PDF
Planning and Executing Practice-Impactful Research
Tao Xie
 
PDF
Software Analytics: Data Analytics for Software Engineering
Tao Xie
 
PDF
Transferring Software Testing Tools to Practice (AST 2017 Keynote)
Tao Xie
 
PDF
Common Technical Writing Issues
Tao Xie
 
PPTX
Next Generation Developer Testing: Parameterized Testing
Tao Xie
 
PDF
Text Analytics for Security
Tao Xie
 
PPTX
Towards Mining Software Repositories Research that Matters
Tao Xie
 
MSR 2022 Foundational Contribution Award Talk: Software Analytics: Reflection...
Tao Xie
 
DSML 2021 Keynote: Intelligent Software Engineering: Working at the Intersect...
Tao Xie
 
Intelligent Software Engineering: Synergy between AI and Software Engineering
Tao Xie
 
Diversity and Computing/Engineering: Perspectives from Allies
Tao Xie
 
Intelligent Software Engineering: Synergy between AI and Software Engineering...
Tao Xie
 
MSRA 2018: Intelligent Software Engineering: Synergy between AI and Software ...
Tao Xie
 
SETTA'18 Keynote: Intelligent Software Engineering: Synergy between AI and So...
Tao Xie
 
ISEC'18 Tutorial: Research Methodology on Pursuing Impact-Driven Research
Tao Xie
 
ISEC'18 Keynote: Intelligent Software Engineering: Synergy between AI and Sof...
Tao Xie
 
Intelligent Software Engineering: Synergy between AI and Software Engineering
Tao Xie
 
Software Analytics: Data Analytics for Software Engineering and Security
Tao Xie
 
Planning and Executing Practice-Impactful Research
Tao Xie
 
Software Analytics: Data Analytics for Software Engineering
Tao Xie
 
Transferring Software Testing Tools to Practice (AST 2017 Keynote)
Tao Xie
 
Common Technical Writing Issues
Tao Xie
 
Next Generation Developer Testing: Parameterized Testing
Tao Xie
 
Text Analytics for Security
Tao Xie
 
Towards Mining Software Repositories Research that Matters
Tao Xie
 

Csise15 codehunt

  • 1. Crowdsourcing Code and Process via Code Hunt Tao Xie, Judith Bishop, Nigel Horspool, Nikolai Tillmann, Jonathan de Halleux University of Illinois at Urbana-Champaign, USA; Microsoft Research, USA; University of Victoria, Canada https://www.codehunt.com
  • 2. Testing Tool  Educational Gaming Dynamic Symbolic Execution (Pex) Pex for Fun/Code Hunt: Interactive Gaming for Teaching and Learning Support http://research.microsoft.com/pex/ http://pex4fun.com https://www.codehunt.com
  • 4. Pex is Part of Visual Studio 2015! • As new feature of “Smart Unit Tests” http://www.visualstudio.com/en-us/news/vs2015-preview-vs#Testing Nikolai Tillmann, Jonathan de Halleux, and Tao Xie. Transferring an Automated Test Generation Tool to Practice: From Pex to Fakes and Code Digger. In ASE 2014, Experience Papers. http://web.engr.illinois.edu/~taoxie/publications/ase14-pexexperiences.pdf
  • 5. Coding Duels http://pex4fun.com/ Nikolai Tillmann, Jonathan De Halleux, Tao Xie, Sumit Gulwani and Judith Bishop. Teaching and Learning Programming and Software Engineering via Interactive Gaming. In ICSE 2013, SEE. http://web.engr.illinois.edu/~taoxie/publications/icse13see-pex4fun.pdf
  • 6. Coding Duel Competition @ICSE 2011 http://pexforfun.com/icse2011
  • 7. Code Hunt: Resigned As Game https://www.codehunt.com/
  • 8. Gameplay 1. User writes code in browser 2. Cloud analyzes code – test cases show differences As long as there are differences: User must adapt code, repeat When they are no more differences: User wins level! code test cases
  • 9. Behind the Scene of Code Hunt Secret Implementation class Secret { public static int Puzzle(int x) { if (x <= 0) return 1; return x * Puzzle(x-1); } } Player Implementation class Player { public static int Puzzle(int x) { return x; } } class Test { public static void Driver(int x) { if (Secret.Puzzle(x) != Player.Puzzle(x)) throw new Exception(“Mismatch”); } } behavior Secret Impl == Player Impl 9
  • 10. It’s a game! • iterative gameplay • adaptive • personalized • no cheating • clear winning criterion code test cases
  • 11. Towards a Course Experience
  • 12. Code Hunt as Crowdsourcing Platform Secret Implementation class Secret { public static int Puzzle(int x) { if (x <= 0) return 1; return x * Puzzle(x-1); } } Player Implementation class Player { public static int Puzzle(int x) { return x; } } class Test { public static void Driver(int x) { if (Secret.Puzzle(x) != Player.Puzzle(x)) throw new Exception(“Mismatch”); } } behavior Secret Impl == Player Impl 12 Take 1: Code
  • 13. Code Hunt as Crowdsourcing Platform Secret Implementation class Secret { public static int Puzzle(int x) { if (x <= 0) return 1; return x * Puzzle(x-1); } } Player Implementation class Player { public static int Puzzle(int x) { return x; } } class Test { public static void Driver(int x) { if (Secret.Puzzle(x) != Player.Puzzle(x)) throw new Exception(“Mismatch”); } } behavior Secret Impl == Player Impl 13 Take 2: Process class Secret { public static int Puzzle(int x) { if (x <= 0) return 1; return x * Puzzle(x-1); } } class Secret { public static int Puzzle(int x) { if (x <= 0) return 1; return x * Puzzle(x-1); } } class Secret { public static int Puzzle(int x) { if (x <= 0) return 1; return x * Puzzle(x-1); } } class Secret { public static int Puzzle(int x) { if (x <= 0) return 1; return x * Puzzle(x-1); } } class Secret { public static int Puzzle(int x) { if (x <= 0) return 1; return x * Puzzle(x-1); } }
  • 14. Code Hunt as Crowdsourcing Platform Secret Implementation class Secret { public static int Puzzle(int x) { if (x <= 0) return 1; return x * Puzzle(x-1); } } Player Implementation class Player { 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”); } } behavior Secret Impl == Player Impl 14 Take 3: Code (w/o secret) class Secret { public static int Puzzle(int x) { if (x <= 0) return 1; return x * Puzzle(x-1); } } Passing Player Contributed Implementations class Secret { public static int Puzzle(int x) { if (x <= 0) return 1; return x * Puzzle(x-1); } } class Secret { public static int Puzzle(int x) { if (x <= 0) return 1; return x * Puzzle(x-1); } } class Secret { public static int Puzzle(int x) { if (x <= 0) return 1; return x * Puzzle(x-1); } } class Secret { public static int Puzzle(int x) { if (x <= 0) return 1; return x * Puzzle(x-1); } } Judge Metrics
  • 15. Why Code Hunt as Crowdsourcing Platform?
  • 16. Why Code Hunt as Crowdsourcing Platform? Crowdsourcing Scale & Open Data
  • 17. Coding Duels 1,667,521 clicked 'Ask Pex!' http://pex4fun.com/
  • 18. 2014 Beauty of Programming Contest Code Hunt can identify top coders
  • 19. Code Hunt - the APCS (default) Zone • Opened in March 2014 • 129 problems covering the Advanced Placement Computer Science course • By August 2014, over 45,000 users started • By now, over 725,000 users 0 10000 20000 30000 40000 50000 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 1.101.111.121.131.141.15 2.1 2.2 2.3 2.4 2.5 2.6 2.7 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 Players Sector and Level APCS Zone, First three sectors, 45K to 1K
  • 20. Code Hunt Usage Code Hunt has had several hundred thousands of users since launch in March 2014 Stats from Visual Studio Analytics over the period 9/19/14 and 10/20/14 indicate 1,150 users a day Stickiness (loyalty) is very high
  • 21. APCS 725,199 ICSE 627 BoPQuali 13,778 BopA 1,017 BopB 1,103 BopSemi 1,164 CSTA 61 TEALS 14 BootCamp 30 Laser Sept 12 Polska Oct 344 ImCupJan 542 ImCupDec 222 ImCupNov 379 ImCupOct 831 ImCupSept 257 Total Try Count Average Try Count Max Try Count Total Solved Users 13374 363 1306 1581 Size of Code Hunt Data (so far) For ImCupSept 257 users x 24 puzzles x approx. 10 tries = about 13,000 programs #users
  • 22. Code Hunt Data Released to the Public! http://research.microsoft.com/codehuntcommunity/ https://github.com/Microsoft/Code-Hunt The currently released data set contains the programs written by students (only) worldwide during a contest over 48 hours. There are approximately 250 users, 24 puzzles and about 13,000 programs. Judith Bishop, Nigel Horspool, Tao Xie, Nikolai Tillmann, and Jonathan de Halleux. Code Hunt: Experience with Coding Contests at Scale. In ICSE 2015 JSEET. http://web.engr.illinois.edu/~taoxie/publications/icse15jseet-codehunt.pdf http://research.microsoft.com/chese2015/
  • 23. Summary: Testing Tool Educational Gaming DSE/Pex Pex for Fun/Code Hunt: Interactive Gaming for Teaching and Learning Support http://pex4fun.com https://www.codehunt.com http://research.microsoft.com/codehuntcommunity/ https://github.com/Microsoft/Code-Hunt
  • 24. Testing Tool  Educational Gaming Support http://research.microsoft.com/pex/ http://pex4fun.com Q & A Thank you! http://research.microsoft.com/codehuntcommunity/ https://github.com/Microsoft/Code-Hunt