Starts up again August 1st (sign up through Aug 15th) and runs through November 1st!

Let us know if you want to join in the fun on this Google form!
Pointer Wars: Linked List Edition is a high quality, high performance C or C++ challenge, consisting of four levels to accomplish. Levels 1 and 2 are primarily you writing code. Levels 3 and 4 are improving provided code (and yours, as needed). Here’s the roadmap, which participants have three months to complete:
- Level 1: Implement a linked list in C or C++ based around a provided header file. Pass functional and memory leak tests, and write code that compiles with no warnings nor errors. Paid participants get a code review and performance data around common linked list functions, and some hints about upcoming level 2 problems.
- Level 2: Using your level 1 code, implement a queue based around a provided header file. A provided program performs breadth first search over a directed graph, using your queue code. Paid participants get a code review and performance numbers on a machine calibrated for performance testing.
- Level 3: Using your level 2 code, choose from a set of 15 optimizations to improve the performance of the breadth first search code, and code that runs on CPUs in general. Resources are provided for you to assess how fast your code can run, and your job to is get it running as fast as possible. Resources detailing what the optimizations might look like and why they are useful are under development. Paid participants get access to a CPU expert who can answer performance questions and provide guidance, get performance runs on the calibrated machine, receive knowledge of where their times fall against other participants, and performance data used to refine their optimization approach.
- Level 4: Expand the breadth first search code to run on multiple cores at the same time.
The ideal participant is an advanced undergraduate student, graduate student, or freshly graduated engineer or computer scientist who wants to understand how to think about software performance and wants to practice writing code of that caliber. Paying participants get the paid benefits above starting at the $35 USD tier. A free tier also exists, allowing everyone to participate on their own. In the free tier, you can still do the work and learn a ton about CPU performance along the way.
We’re also offering a $10 USD tier, later upgradable to the full one, if you want to just “give it a try” before fully committing!
Frequently Asked Questions
Q: What skills do I need to participate in Pointer Wars?
A: We try to push all of our participants to the maximum of their abilities. The minimum skillset required is the equivalent of a university course in the C programming language. If you understand what a pointer is, know what a linked list is, and are ready to learn a ton, you’re good to go. People who are still early on in their education may need more guidance than others and that’s why we have some of the higher priced support options.
Q: The previous answer makes it sound like a challenge for junior engineering students. Is it?
A: The more you know, the harder that we can push you, and the more you’ll learn. We’re going to explore how to get every single nanosecond out of our target machines from Level 2 onwards, including concepts that are often covered in graduate schools in the United States. In Level 3 you get to pick and choose which optimizations interest you, effectively allowing you to customize your journey with things that you haven’t learned about yet, if you wish.
Q: What about senior engineers?
If you’ve been writing high performance C or C++ code for a few years, you’re probably going to get less out of the challenge than others. Many of the habits that we want to see participants build are likely things you’re already doing. If C and C++ have never been your primary language though, you’ll still learn a ton, but most likely through feedback and other written material as opposed to the coding itself.
Leave a reply to Digging into a Weak Scaling Performance Problem: Part 1 – Chris Feilbach's Blog Cancel reply