I can't see programming education faring better, especially considering that the emphasis is on "code". This is a horrible thing to put at the forefront, because it limits your view to the particular set of language constructs you use as opposed to broader properties of computer systems and computation. It is best to start by a rundown of high-level computer architecture (von Neumann and Harvard) so as to understand basic machine instructions and types, progressing into OS fundamentals (something like The Design and Implementation of the FreeBSD Operating System, though condensed), then briefly into compiler construction and language VMs, onto practical usage of a CLI shell, the various ways of representing resources and IPC, data structures and how to use them in forming basic services (like a message/event broker bus or publish-subscribe with named pipes and the file system under a standard interface/toolkit), build systems and so forth. Ideas and concepts with code on the side.
Obviously these are rushed examples, but the point is that code-centric computing education in public schools will probably backfire by creating people with just enough knowledge to have extremely warped views of software. Unless your goal is to turn kids into ALGOL monkeys who can't see beyond the mnemonics, I suppose.
You might say this would be too complex for public schools to implement. I agree, which is why it should stay out. Do it right or don't at all. Bashing out Java code alone is nowhere near as relevant as some people seem to think it is.