Scratch
Ages: Best with grades 2 and up. For middle/high school, useful to quickly demonstrate core concepts in a visual, concrete way before transitioning to other object-oriented languages like Java and Python.
Ideal for:
- Creative, open-ended exploration and project design; there are a few tutorials, but the point is to learn by doing
- Beginner-friendly, drag and drop, block-based interface eliminates syntax errors and other common obstacles to learning how to program
For first-time students, we usually recommend following one of the step-by-step tutorials accessible through “Tips” in the editor menu.
Resources:
- Books:
- Exploring other projects on the website!
- Scratch cards (printable): scratch.mit.edu/info/cards
- Starter projects: scratch.mit.edu/starter_projects
- edX Programming in Scratch: edx.org/course/programming-scratch-harveymuddx-cs002x-1
- Scratch wiki: wiki.scratch.mit.edu/wiki/Scratch_Wiki
- CS First (club format curriculum by Google): cs-first.com/create
Code.org
studio.code.org/
studio.code.org/s/1 (main sequence, 20 hours with first corresponding to Hour of Code)
Ages: Best with grades 1 and up, with distinct content available for different age groups.
Ideal for:
- Learning basic programming logic by completing puzzle-like challenges for each level
- Linear and self-contained course progression, though you can jump around a bit and create and share your own projects using the Blockly language (similar to Scratch)
Resources:
- Plenty of official resources, including offline classroom activities: http://code.org/educate
- Constantly growing, so check the site
KhanAcademy
khanacademy.org/computing/computer-programming (Intro to JS and others, but some only for advanced coders)
Ages: Best with grades 5 and up.
Ideal for:
- A slightly more traditional course that covers material slowly but in more depth than most websites
- Students who have the attention span, self-discipline, and effective learning habits to make the most out of the interspersed videos, programming exercises, and peer-evaluated challenges
- Students who are patient and don’t need as much immediate gratification; given the learning curve for JavaScript and the intro course’s focus on animation, it will take at least 15 hours to get to the point of understanding how to make a simple game vs. alternatives like Scratch
CodeCombat
Ages: Best with grades 6 and up. Features automatic code completion/suggestions like a standard IDE, but typing proficiency is very helpful.
Ideal for:
- Familiarizing beginners with basic object-oriented programming
- Supplemental practice that feels like playing a game
Other useful resources
Tools and other
- repl.it (online IDE supporting many languages): repl.it/languages
- Typing.com (online typing course and games): typing.com
Local organizations
- CoderDojo (free workshops): coderdojosv.org
For middle school and older students
- Snap! (extended re-implementation of Scratch suitable for high school CS): snap.berkeley.edu
- Trinket (online Python-related tutorials and IDE): trinket.io
- Greenfoot (Java IDE for graphical games and simulations): greenfoot.org