#2 - Build an agent to win online programming competitions.
Given that online programming competitions tend to fall into distinct classes (dynamic programming, algorithmic challenges, graph problems, string problems), this seems maybe more "solvable" with a non-AI implementation?
Imagine you have a framework that can spit out sub-pieces of a solution that worked in a Unix pipe-like way (e.g, sort the graphs | find strongly connected components in each graph | spit answer of graph with lowest number of SCC).
Then you need to grind out some type of expert system to replicate the competitive programmer who currently chunks together those framework pieces.
Of course, this probably doesn't work at all for something like kaggle or stockfighter.io, where parsing the instructions and observing a dynamic system are key parts of the hacking. I am more thinking of SPOJ or similar . . .
There's been significant progress in data science competitions (Kaggle etc).
Not so much parsing of the problem itself, but building generic frameworks where - given data and a target variable - it will work out the type of problem (eg classification vs regression) and develop a predictive model without human intervention.
ICML has had workshops for the last two years on this problem[1][2]
The hardest part here is not the actual generation of code, but to analyze the problem first and to determine what data structures/algorithms are best suited to tackle it. Also, there are a lot of real world examples used in these problems, so the AI would need a general understanding of the modern-day world, which again, is hard.
Lastly, even if the AI figures out the implementation, it has to take care of all the edge cases too, so that the test cases pass. But I suppose this is a trivial problem compared to the other two I mentioned above...
Given that online programming competitions tend to fall into distinct classes (dynamic programming, algorithmic challenges, graph problems, string problems), this seems maybe more "solvable" with a non-AI implementation?
Imagine you have a framework that can spit out sub-pieces of a solution that worked in a Unix pipe-like way (e.g, sort the graphs | find strongly connected components in each graph | spit answer of graph with lowest number of SCC).
Then you need to grind out some type of expert system to replicate the competitive programmer who currently chunks together those framework pieces.
Of course, this probably doesn't work at all for something like kaggle or stockfighter.io, where parsing the instructions and observing a dynamic system are key parts of the hacking. I am more thinking of SPOJ or similar . . .