Profile cover photo
Profile photo
Abdul Rauf
Abdul's interests
View all
Abdul's posts

Post has attachment

Post has shared content
Yes, 4.9 is the next longterm kernel. I've been saying that for a while, but somehow if it wasn't on the website, no one believed me :)

Post has shared content
They may be Small datasets, but they're huge for Code Jam. Learn why in this post from Ian, one of the lead Code Jam engineers.

A not-so-small post on Smalls

One of Google Code Jam's most distinctive features is its two-tier system of Small and Large datasets. In my first Code Jam meeting with other Googlers in 2014, I remarked that Smalls are one of my favorite things about Code Jam, since they give less experienced competitors like me more opportunities to write code and score points. I think this surprised a couple of the more senior contributors in the room, who had their own different ideas about the purpose of the Smalls. It became clear to me that this simple system has many ramifications.

Some of the advantages of Smalls are easy to see:

Instant feedback. It's exciting and encouraging to learn during a contest that a solution is Correct! It's also exciting and suspenseful to wait until the end for a verdict. The Small/Large system provides both forms of excitement.
More granularity. Even if your last remaining problem is too daunting for the last 30 minutes of a contest, you might be able to tackle the Small instead of twiddling your thumbs. Of course, we choose point values carefully to make it worth tackling those challenging Larges instead of just focusing on Smalls!
A safety net. If you pour an hour into a problem only to find that your Large solution is a little too slow, you won't walk away empty-handed -- you'll at least have the Small points.

Some other benefits of Smalls are perhaps less self-evident:

Iterative development. The resubmission system allows contestants to develop iteratively, just as in most real-world coding. We discourage scattershot attempts via the 4 minute time penalty (and the extra overhead of running and submitting the code).
A lower barrier to entry. We love to see strong competitors unravel our toughest problems, but we also love to see tens of thousands of people revel in the joy of coding, regardless of their level of programming contest experience. Writing a solution to a less difficult version of a problem is more fun than writing no code at all.
A possible stepping stone to the Large solution. Sometimes, you can write a brute force Small solution, submit it to confirm its correctness, and then see a pattern in the output or otherwise have an "aha moment". (2013's Many Prizes [] is an example of a problem that can be solved this way.) At the very least, you'll have a great set of test cases for a Large solution!

The system comes with some costs, too:

Extra overhead. Even if you hit upon a Large-worthy solution right away, you still have to download the Small dataset, run your code, and submit your answer before you can download the Large dataset. Nonetheless, resubmission reduces some of the pressure to fully think through a Small solution. 
An incentive for risk-taking. We'll expand on this issue in a future blog post, but here's a summary. You have a simple solution in mind that seems like it should work -- should you spend 10 minutes trying to prove its correctness, or just cross your fingers, submit it, and spend those 10 minutes on another problem? This dilemma comes up in most programming contests, but the presence of Smalls further encourages a leap of faith: you can just try your greedy solution, and if it works for the Small, it's likely that it will also work for the Large if it's fast enough. Because of this, we limit the number of problems like 2015's Noisy Neighbors (, which has a solution that isn't too hard to guess, but is very hard to prove. (More on this topic in a future blog post!)

We believe that the benefits of Smalls outweigh these downsides, and that the system adds variety to the programming contest landscape.

"Small" isn't synonymous with "easy" or "less rigorous". It is true that the Smalls in the Qualification Round and Round 1 tend to be solvable by brute force, but in Round 2 and beyond, we want even the Smalls to require significant work. Regardless of the round, we craft Small test cases to thoroughly test the correctness of your algorithm. Sometimes we set the Small limits in a way that precludes some kinds of test case, but we will always include all the edge/corner cases we can think of within the limits.

What about Smalls in Distributed Code Jam (more info on DCJ here: It's no accident that they are sometimes worth only 1 point. We already know that our DCJ contestants are good at non-distributed coding, since they've necessarily had to do well in Code Jam to qualify. In DCJ, many acceptable Small solutions could run to completion on a single node, even though we run them on ten nodes. Smalls in DCJ are helpful for testing and reassurance, but the 100-node Larges are the main event! On the other hand, we have had some higher-valued Smalls in DCJ that have been very challenging in their own right: check out Kolakoski ( and Shipping ( from the 2015 finals.

We hope that you have a not-so-small amount of fun with the Small (and Large) datasets in our Code Jam contests this year!

Post has shared content
Ian Tullis is the author of majority of #codejam  problems
Our #WorkerWednesday Spotlight today is Ian Tullis. 

Meet Ian:

What is your role on the Code Jam Team?
I've written many problems for the 2015 global Code Jam and the Code Jam to I/O for Women. I also help to prepare input/output generators for some problems. A surprising amount of work goes into each problem beyond just coming up with the idea and writing the statement!

Why and when did you join the Google Code Jam Team?
I participated in the internal Code Jam playtests in 2013 and 2014, and by the summer of 2014, I was just bursting with ideas and knew I had to contribute some problems of my own.

What was the first Code Jam you ever competed in?
2011. I missed winning a shirt by THIS much! (Actually, it wasn't that close -- I would have needed at least another Small.) Now, as part of the writing/testing team, I have more shirts than I know what to do with.

What is your favorite programming language?
I mostly program in Go at work, but I use Python to write puzzles (not just programming contest questions) and for other practical tasks. I need to get better at C++ so I can hold my own in Codeforces and TopCoder!

Here is Ian pictured below manually verifying one of the sample cases for the Qual round's Infinite House of Pancakes problem!

Post has attachment

Post has attachment

Post has attachment
#Google confirms next #android version will use Oracle’s #OpenJDK instead of proprietory JDK for Java APIs 

Post has attachment

Post has attachment

Post has shared content
IT WORKS.....................
Wait while more posts are being loaded