This is the early stages of the First Bytes Society's web based programming education environment. It is based on the work of many excellent people and projects that preceeded it, like _why's Hackety Hack, Khan Academy's Computer Programming Coursework, John Resig's ProcessingJS, and Codecademy, to name a few.
The First Bytes Society App gets right down to business by immersing the student in legible code from the beginning and encouraing exploration as a means of accidentally learning programming.
Traditional CS curriculum focuses on teaching things the "right" way. Use a proper language (We use Javascript? Gasp!), start with the fundamentals (abstraction, encapsulation), specifics (int vs. float vs. unsigned int), using the proper tools, and on and on. If someone had to learn all of the "right" ways of programming before they dove in, we would never have any computer scientists.
The fact of the matter is most of us software people had an initial "hook" that opened their minds to the potential of programming in a real and impactful way. They usually aren't glamorous or ideal but they get the gears going. For me it was programming on a TI-83 calculator instead of actually doing my math homework, for others it was exploring BASIC on their Atari or editing a website, etc.. First Bytes Society is first and foremost the hook. The other stuff will come later. ###Code early and often Get students looking at code immediately. Imemrse them in it. Promote exploration into the code and its side effects. ###Provide quick feedback channels Banging your head against a table because you can't figure out why your code isn't running is frustrating for anyone, let along a beginner. Frustation is detrimental to excitement. Excitement and motivation are required to learn programming. Limit frustration for the coder by providing great feedback channels. Provide easy docs, great error feedback / suggestions, provide easy access to mentors via chat, etc.. ###Encourage looking over the shoulder Build upon the ideas that make the open source community so great. Promote sharing code, work, stories from day one. Inform students they should use their peers work to help them. Make it easy to share your work with others in the community. Make it easy to find other's work. This isn't your typical classroom environment. Copying is encouraged! ###Be the megaphone The only thing more satisfying than seeing your code work, is seeing others use your code. Provide a platform that makes it easy to share your finished projects with your friends. Not only should this be motivating to the student, but hopefully it will produce a domino effect.