Support students until they are proficient with content from the beginning of the course as subsequent content will be all the more difficult to learn without mastery of prior content, particularly in introductory CS courses.
Provide additional support for students with less experience programming so they appreciate the level of detail and specificity computers require from instructions to perform even simple tasks.
Students may have an easier time learning about conditionals when using a visual programming language like Scratch.
Emphasize to students that visual programming languages like Scratch are bona fide computer programming languages.
When students are working on projects, especially open-ended ones, resist the urge to intervene. Don’t do the job for them!
Use command-line running scripts or IDEs over the Python shell, which students may find incredibly confusing.
Standard tutorials have too much information to be appropriate in introductory courses; try using excerpts from them or creating your own.
Teach hierarchical task analysis using Requirement Cards to sort through 100 requirements engineers have created for a robot cleaning up a nuclear disaster.
Build a paper airplane instead of the PB&J exercise for a less messy, more extensible algorithms introduction activity.
Give students, especially younger kids, “movement breaks” so that they don’t have to sit still and stare at a computer for too long.