Programming languages:
SCRATCH: Best for ages 3-12
PROS: Easy to learn. Easy to create games with. Does not require learning and remembering syntax, keywords, built in function names, etc.
CONS: Not a professional language. Structured in a very different way than other programming languages; this can make it hard to learn other languages. Going from a programming language that is graphical to a programming language that is textual might be difficult.

PYTHON: Best for ages 12-infinity
PROS: Easy to learn. Very light on syntax. Has widespread use in the professional world.
CONS: Has no graphics without including libraries, which themselves take time to learn. Hard to make games in, because of the above. Whitespace has semantic meaning for the interpreter (it affects the program you are writing, and not just the source code) which may or may not be confusing.

PROCESSING: Best for ages 13-infinity
PROS: Easy to make games in. Easy to make graphical programs in. Uses similar syntax to Java (and is actually a modification of Java) which is a language used on the AP Computer science exam.
CONS: The most syntax-heavy language on this list. Requires memorizing built-in functions (but has an easily accessible and navigable help website)Hardest to learn.

Programming websites:
CODECADEMY: Best for ages 13-infinty
PROS: Demonstrates each feature and gives you assignments where you use that feature, and nothing else. Gives you independent projects. Errors messages are more helpful.
CONS: Has mostly web languages. Only has python. Hods the students hand maybe a bit too much.

Compiled by Matt Goodstein, NYC HS Student volunteer at The CogniTech Cafe