Sunday, September 14, 2014

Microsoft Coding Competition

This past Wednesday 9/10 Microsoft hosted a Coding Competition at Rochester Institute of Technology.  There were 2 prizes at stake: a $100 gift card for first place, and a tablet decided by raffle.  My friend and I jumped at the idea of winning a prize and getting to test our programming skills, so we enrolled about a week before the competition.

I had never really spoken to anyone about programming contests before so I honestly had no idea what to expect.  I joined hoping that we would not have to present anything or have our code looked over.  I remember reading the email which said something along the lines of "Think your the best coder here?  Here's your chance to prove it!".  Admittedly, this made the competition sound very difficult, and I definitely did not join thinking I was "the best coder" at RIT.  I mainly joined because it sounded like a friendly, no pressure competition, and I hadn't gotten a chance to really test my coding skills in awhile, so I looked at this as a way to refresh and test my skills.  Also, I would be lying if I said my friend didn't completely pressure me into doing it.

The competition kicked off at about 7pm in the Xerox auditorium on campus and there was a little over 100 people there.  For those of you who aren't really interested in a technical overview of what a Microsoft Coding Competition is like, just skip this paragraph.  Basically, my friend and I entered the auditorium and snagged a seat in the back next to a power outlet.  There was free pizza and soda that I more than helped myself too.  I had to text my roommate and ask him to run a notebook over to me because I thought we could benefit from being able to write any complex programming ideas down physically.  Once everyone was settled in at about 7, the workers from Microsoft introduced themselves and told us how the competition was going to work.  Everyone in the room had to join the coding competition's website via a Microsoft Live account.  On the website, we were presented with 6 problems that gave us some background on a topic, and then asked us to write a program to accomplish a specific task based on the topic.  Each problem was worth either 1, 2, or 3 points based on difficulty, and upon solving a problem, our team would be awarded the corresponding points.  To complete a problem, I would have to select a "compete" tab on the website where I would be given an input text file.  I would copy the contents of the text file and paste the input into my program.  I would then copy the output from my program back into a textbox region on the website and submit my answer.  If my program was able to produce the correct output, my team would be awarded the points.

Personally, I thought the problems were all quite challenging.  The highest valued 3 point problem involved using binary trees and searching using in-order and post-order traversal.  I actually remembered learning about the topics for this 3 point question in my classes, but I recognized that the problem was extremely difficult, so I suggested that my friend and I deal with it later.  The problem my friend worked on dealt with taking some text or word as an input, creating a word search puzzle with the input text, and then having the program solve the word search from top left to bottom right.  The program then had to replace the chosen path with periods, so others could see the way through the puzzle.  The problem I worked on was a palindrome problem where input was given in the form of sentences.  My program was then supposed to find all palindromes in the text and return only the longest palindromes in each line.  If there was no palindrome, my program would return a blank line.

At the end of the competition, our team "Nex Level Development" came in 16th place with 2 points.  I think I speak for both of us when I say we were very happy to be visible on the score board throughout the whole competition.  We actually did better than the majority of the other competitors.  Unfortunately, I was not able to get my problem completed, but my friend/teammate did complete his 2 point question, which was awesome!

Overall, even though we did not win first place, and neither of us won the raffle for a tablet, I think I speak for both of us when I say we were glad to have participated.  I got to program in Java, which I hadn't done in years!  I also got a great mind workout in by doing some difficult problem solving and programming.  I had a ton of fun competing with my friend and I think we'll definitely be keeping our eyes out for other coding events like this in the future!

P.S. If you're interested in the palindrome problem that I had the pleasure of trying to tackle, here is a source I found extremely helpful:  "Manacher's Algorithm" http://leetcode.com/2011/11/longest-palindromic-substring-part-ii.html

No comments:

Post a Comment