Preliminary Analysis of Contestant Performance for a Code Hunt Contest

Slides:



Advertisements
Similar presentations
INSTRUCTION TIMES DELIBERATE PRACTICE EQUALS Skill Acquisition STEVIE CHEPKO, VP FOR PROGRAM REVIEW CAEP KAREN ROOF, INDIA.
Advertisements

ICT TEACHERS` COMPETENCIES FOR THE KNOWLEDGE SOCIETY
Programming Language Concepts
Deep Dive into Pex How Pex works, implications for design of Code Hunt puzzles Nikolai Tillmann Principal Software Engineering Manager Microsoft, Redmond,
1 / 27 California Educational Research Association 88 th Annual Conference Formative Assessment: Implications for Student Learning San Francisco, CA November.
Chapter 13 Recursion. Topics Simple Recursion Recursion with a Return Value Recursion with Two Base Cases Binary Search Revisited Animation Using Recursion.
1 PARSEWeb: A Programmer Assistant for Reusing Open Source Code on the Web Suresh Thummalapenta and Tao Xie Department of Computer Science North Carolina.
An analysis of exam results in the Object-Oriented Programming course at „Politehnica” University of Timisoara Ioan Jurca.
Teaching and Learning Programming and Software Engineering via Interactive Gaming Tao Xie University of Illinois at Urbana-Champaign In collaboration with.
Artificial Intelligence Bodies of animals are nothing more than complex machines - Rene Descartes.
Code Hunt: Experience with Coding Contests at Scale Judith Bishop, R Nigel Horspool, Tao Xie, Nikolai Tillmann, Jonathan de Halleux Microsoft Research,
1 CSCD 326 Data Structures I Software Design. 2 The Software Life Cycle 1. Specification 2. Design 3. Risk Analysis 4. Verification 5. Coding 6. Testing.
Reactive and Output-Only HKOI Training Team 2006 Liu Chi Man (cx) 11 Feb 2006.
1 Week 8 - Life cycle vs Methodology IT2005 System Analysis & Design.
CMPSC 16 Problem Solving with Computers I Spring 2014 Instructor: Tevfik Bultan Lecture 4: Introduction to C: Control Flow.
Science Ch. 1. Choose Your Contestant You are about to face a “ mob ” of ___ opponents in a winner takes all quiz challenge. Wrong answers from the mob.
Module: Software Engineering of Web Applications Dr. Samer Odeh Hanna 1.
Lecture 1 Data Structures Aamir Zia. Introduction Course outline Rules and regulations Course contents Good Programming Practices Data Types and Data.
Measuring the Power of Learning.™ 2015–16 CAASPP March, 2016 Laurie Carlson California Assessment of Student Performance and Progress (CAASPP)
Algorithm Analysis 1.
Component Object Model(COM)
A Tactical Games Approach to Teaching Sport Skills
Introduction To Design Patterns
Queensland University of Technology
Investigating the Impact of Chess Play on Developing Brains at Different Levels Of Education By: Daven Rees.
Introduction to Programming / chapter 3 / COM1022
Requirement Prioritization
Engaging Students in Class Activities Through Games to Increase Participation Fernando Paniagua Community College of Baltimore County.
Module: Software Engineering of Web Applications
Oleh: Beni Setiawan, Wahyu Budi Sabtiawan
CSC 221: Computer Programming I Spring 2010
Object-Oriented Software Engineering Using UML, Patterns, and Java,
CSC 221: Computer Programming I Fall 2005
The Software Development Cycle
Towards Trustworthy Program Repair
ETEC TECHNOLOGY AND THE SCHOOL CURRICULUM
General Education Assessment
Dissertation Defense Presentation
Introduction CSE 1310 – Introduction to Computers and Programming
Integration of ICT in teaching and learning
Supporting First Grader’s Ten-Structured Thinking by addition problems
Program Evaluation Essentials-- Part 2
Adaptive Cache Replacement Policy
Teaching with Instructional Software
Compiler Construction
Module: Software Engineering of Web Applications
The game MathScrabble. The game MathScrabble.
Exploring Naturalistic Gestures for Digital Tabletops
Comprehending Object and Process Models: An Empirical Study
CyMC.
Rapid Research - Format Showdown
Where Do Developers Log
Module: Software Engineering of Web Applications
A Metric for Evaluating Static Analysis Tools
The Challenge of Cross - Language Interoperability
ICT Gaming Lesson 2.
The Use of the National Development Plan 2030 to Develop Collaborative Problem Solving Skills in Secondary School Learners   Dr Helen Sidiropoulos (South.
Microsoft in Education Educator Professional Development
Can E-learning Replace the Traditional Classroom
Long Passing Technique Practice 1.2 teams of 5 in their own channel
Programming Languages, Preliminaries, History & Evolution
Agenda Software development (SD) & Software development methodologies (SDM) Orthogonal views of the software OOSD Methodology Why an Object Orientation?
Abstractions for Fault Tolerance
Applying Agile Lean to Global Software Development
Human vs. Automated Coding Style Grading in Computing Education
From Use Cases to Implementation
  Using the RUMM2030 outputs as feedback on learner performance in Communication in English for Adult learners Nthabeleng Lepota 13th SAAEA Conference.
The Software Development Cycle
Algorithm Analysis How can we demonstrate that one algorithm is superior to another without being misled by any of the following problems: Special cases.
Presentation transcript:

Preliminary Analysis of Contestant Performance for a Code Hunt Contest Adrian Clark, Jonathan Wells, Angello Astorga, Andrew Xie Jalen Coleman-Lands, Tao Xie University of Illinois at Urbana-Champaign, IL, USA

Code Hunt Is a serious programming game Works in C# and Java Appeals to coders wishing to hone their programming skills And also to students learning to code Since its release in Spring 2014 till now, for about 3.5 years, more than 6 million (6,112,500) users Including registered users playing on www.codehunt.com, anonymous users and accounts that access api.codehunt.com directly via the documented REST APIs). http://api.codehunt.com/ Stickiness (loyalty) is very high https://www.codehunt.com/

The Story

Behind the Scene of Code Hunt behavior Secret Impl == Player Impl Player Implementation class Player { public static int Puzzle(int x) { return x; } 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”); }

Background – Code Hunt Contest Imagine Cup Annual competition hosted by Microsoft to foster software innovation Dataset under analysis is based on the Imagine Cup 2014 Code Hunt Challenge https://www.microsoft.com/en-us/research/project/code-hunt-community/ 259 participants were given 48 hours to solve 24 levels (i.e., puzzles) Puzzles are grouped into 4 different sectors, and each sector corresponds to a specific topic (e.g., loops, arithmetic)

Methodology From the dataset, collect information about each user’s performance on each of the 24 puzzles # attempts until the winning submission or last failed attempt Completion status of a level (i.e., puzzle) Programming language(s) used in the attempts The information is then analyzed with R

Findings – Difficulty Based On Completions Because there are some cases where the highest number of attempts per puzzle skews the distribution (e.g., 278 or 330 attempts), we make a cutoff of the highest number of attempts as 100. The x-axis of both charts denote Puzzles 1-24. As levels increase, % completions decreases.

Findings – Difficulty Based On Completions Cont. Sector 1 Sector 2 Sector 3 Sector 4 98% to 41% 27% to 11% 14% to 6% 8% to 3% % completions of each sector (1-4) gradually decreases.

Findings – Difficulty Based On Completions Cont. Only 40% users completed Level 3, lower than Levels 4-6.

Solution Code for Level 3 -Users averaged seventy-five attempts before their winning submission (significantly more than the other puzzles in this sector) -Analysis showed that the C# users struggled more with this level than Java users C# users spent more time and averaged more attempts perhaps because of the unfamiliarity of that language compared to Java which is more commonly taught in classes Solution is based on using bit-wise operations

Score for a Completed Level Reflect how elegant the student solution is, measured by # instructions in the compiled .NET intermediate language Score 1: the solution is much longer than all other so far submitted student solutions Score 2: the solution is about average Score 3: the solution is significantly shorter

Findings – Difficulty Based on Score of User Cont. Findings – Difficulty Based on Score of User Sector 1 Sector 2 Sector 3 Sector 4 Users tend to get score 3 In the first sector and last sector, users obtaining score 3 are especially dominating

Findings – Difficulty Based on Score of User Cont. % users obtaining score 1 is similar to % users obtaining score 3 in Levels 6, 8, 17.

Findings – Difficulty Based on Score of User Cont. Interestingly, % users containing score 2 in Level 8 is higher than % users containing score 1 or 3.

Level 8’s Partial Secret Solution int openClose = 0; int maxDepth = 0; foreach (char c in s) { if (c == '(') { openClose++; if (openClose > maxDepth) maxDepth = openClose; } else if (c == ')') { openClose--; if (openClose < 0) return 0; return (openClose == 0) ? maxDepth : 0; Users failed to write the last return statement in a succinct way as adopted in the secret solution

Language Choice among 259 Users 143 C# users Attempting more than half (12) levels with C# 7 C# users attempted with both Java and C# 113 Java users Attempting more than half (12) levels with Java 11 C# users attempted with both Java and C# 3 users using C# to attempt 12 levels and Java to attempt the other 12 levels #C# users are 20% more than #Java users!

Findings – %Completion (C# vs Java) C# users performed worse than Java users with respect to % completions Levels 3 and 17 are the only two exceptions.

Solution Code for Level 17 The difficulty primarily comes from the relatively complex logic in the secret solution requires a combination of techniques and algorithms in order to successfully complete the puzzles The solution to Puzzle 17 in Sector 3 is to emulate the movement of a knight piece in a chess game. We hypothesize that the difficulty faced by many users when solving Puzzle 17 came from requiring the use of bit-wise operations to solve the puzzle, a similar situation for Puzzle 3.

Conclusion Code Hunt being used for contests or for fun/learning by a large number of users. Data analysis conducted on Code Hunt contest data, focusing on puzzle difficulty (%completion and %score 1, 2, or 3) and C# users vs. Java users Main findings: Trend of increasing difficulty from Levels 1 to 24/from Sectors 1 to 4 as expected; some outlier cases exist (puzzles that are much more difficult than others in the same sector). Java users generally outperform C# users; Java users may be more experienced coders than C# users(?).

Thank you! Questions?

Conclusion Code Hunt being used for contests or for fun/learning by a large number of users. Data analysis conducted on Code Hunt contest data, focusing on puzzle difficulty (%completion and %score 1, 2, or 3) and C# users vs. Java users Main findings: Trend of increasing difficulty from Levels 1 to 24/from Sectors 1 to 4 as expected; some outlier cases exist (puzzles that are much more difficult than others in the same sector). Java users generally outperform C# users; Java users may be more experienced coders than C# users(?).

Motivation Code Hunt is a web-based gaming platform from Microsoft Research Popularly used for various programming contests No existing analysis to better understand how users perform in these programming contests Analysis of the users in these programming contests can help by Showing areas where Code Hunt can be improved to help students improve their coding abilities Providing evidence that Code Hunt can be used as teaching and training tool To increase the number of participants in contests Transition: To reap the benefits of analyzing users in these programming contests we analyzed the dataset collected by Microsoft Research for the 2014 Imagine Cup. To better understand how users perform on puzzles Use the gathered info to help reaction of puzzles in the Codehunt Game improve the c We hope our analysis can help show any areas where Codehunt can be improved to better help students improve their coding abilities and to increase the number of people who participate in Codehunt