Another fun idea is to make a "code denoiser". Removing noise (bugs) from your code.<p>It's quite simple to synthetically inject lots of noise into code, simply use the wrong variables, operators, numbers, structures, reverse statement ordering, transforming code at the AST level.<p>Then you can learn mappings of bad code => good code!<p>The same idea has worked for natural languages as well, correcting typos.