For an introduction into CS, we recommend starting with block-based programming. Understanding how to synthesize issues into commands is essential for success in adopting a programmer mindset.
CS.101S Introduction to CS with Scratch
Provides an introduction that can be the prefix towards any coding workshop or class, or used independently for elementary school students. This is designed to help solidify the idea of commands, but also to expose the large possibilities of programming.
CS.102SN Block-based Programming with Snap!
An addendum to the CS.101S course. Additional complexity by introducing the ideas of abstraction and advanced loops.