Back by popular demand, Instructure hosted the second annual MebiPenny Coding Competition this weekend. This is the competition where hundreds of nerds come and battle for 2^20 pennies. This year we increased the stakes by awarding $512 (half kebidollar) to the first 20 runners-up. It was grueling, it was intense, and it was a rewarding experience for at least the 21 people who walked away with some cash.

Zach Wily awards Anthony Neal with a mebipenny Zach awards Anthony with his mebipenny

And the dominator of this year's competition was…Anthony Neal.

You might recognize Anthony from last year's competition. He won the large bag of Swedish fish, which took him a while to finish. We gave him some more this year, for good measure.

Here's a quick rundown of how things worked:

The competition was split into two rounds. The first round was an online challenge hosted in Canvas. We integrated it with a custom coding competition app we wrote, which automates the grading of contestant code and passes the grade back to Canvas. (There are plans to open-source this app in the future.) The final round, held in person at Instructure HQ, required competitors to write an artificial intelligence bot to play a game inspired by "Risk" against other contestants’ programs.

Let's break down the two rounds.

Round 1

This round is mostly about the numbers, so let's dive right in.

Over 350 people signed up at http://www.mebipenny.com to learn more information about the competition. More than 200 people logged into the online competition portal. During the round, 143 people made at least one code submission, with 1,624 submissions being made overall.

These submissions were compiled, interpreted or otherwise processed to compute a score. The maximum possible score anyone could have received was 50 points. The top score was 34 points (also Anthony) with an average score of 9.71.

Here is the distribution of points by all contestants who scored at least one point:

MebiPenny 2012 Score Distribution

And here are some stats to fuel the language holy wars. This year Java unseated C# as the most-used language.

 MebiPenny 2012 language breakdown

Round 2

The final round took place at the Instructure offices in Sandy, Utah. We invited the top 12 performers to show up and battle each other for the grand MebiPenny.

MebiPenny finalists hack away MebiPenny finalists wired in

They came armed with various machines, including two MacBook Pros, a Windows Tablet PC (the kind of tablet that existed before Apple invented the tablet), and a desktop tower. With that, the 2nd floor of Instructure turned into a code foundry where bits of source were forged and cooled into territory-claiming conquistadors.

After a pooled tournament, capped by a four-player battle royal, Anthony emerged as the clear winner. As he stood and looked through the smoke at the dead bots strewn on the battlefield, he spotted an Instructure employee bot charging from the distance. Patiently waiting, sword drawn, Anthony slashed through the employee bot with ease and collected his MebiPenny check.

Here's a video of the final contestant battle:

Video - MebiPenny 2012: Final Boss Battle

Source Code

This year's competition had some enhancements over last year's. We ran the entire competition in Canvas, which handled user accounts, modules, assignments, and grades. We used LTI to integrate with our own code harness which ran the user's code and passed the grade back to Canvas. The discussions area was very active during the competition.

Canvas - This is our open-source learning platform.

StraightJacket - This is a restricted code execution system based on Linux AppArmor. This project is where you want to contribute if we didn't support your language correctly or at all.

Dredd - This is an LTI tool that linked Canvas to StraightJacket, passing code and grades between the two. We plan on releasing the code for this in the future.

First round problems - This has all the first round competition problems, the test cases, our solutions, post-mortem-style descriptions of common issues people had, and what the right solution strategy was. Make sure to read the readme file if you need help finding the goods

Final problem - the code for the final problem will be posted here in the coming weeks. (We said this last year, but never posted it. This year will be different, promise.)

We have more pictures of the event posted on Facebook. Head over there to Like them.

Thanks again to those who participated. We hope to see you again next time.

Zach