Have students use Python’s Turtle graphics to draw fractals using a Lindenmayer system, instead of recursion, to give students experience with string manipulation.
Have students implement a web-based driving game in JavaScript to pick up classmates, who appear as 2D avatars, within Google Earth and drop them off at their homes to show students that arrays and objects are applicable to real-world problems.
Have students design a program in Python that performs various sound-processing tasks to give them a fun way to practice using variables, assignments, if-statements, and functions.
Have students write out test cases and their prediction for what their code will do in class before running it to teach them the practice of analyzing their code first.
Use programming spreadsheet functions as an introduction to programming to give students a simple but powerful mechanism for writing basic programs.
Emphasize the importance of documentation when working with spreadsheets or any programming language for future reference.
Have students use spreadsheets to analyze a dataset of their choice in order to provide an interesting and relevant context for developing their spreadsheet skills.
Make note of how students solve their own problems to identify successful problem-solving strategies.
Have students write a genetic algorithm in Java to solve instances of the Traveling Salesman Problem so that they can practice object-oriented programming and responsibility-driven design.
Have students design a Java program that detects plagiarism within a set of documents so that they gain practice designing and applying data structures in a relevant context.
When students are learning HTML and CSS, have them make personal websites featuring their resumés and hobbies or websites about another topic they find meaningful.
Design class activities that incorporate a student's local knowledge with specific computer science content and practices to enable engagement in deep learning.
Have students implement a rotating substitution cipher in Java that encrypts and decrypts strings in an assignment that gives them practice manipulating strings in a real-world context.
Have students create a program in Python that draws a map of the stars in order to gain practice using dictionaries to manipulate real data.
As a final project, have students create a generic side-scrolling game in Java so they can creatively showcase their object-oriented programming abilities.
Have students implement simple filters on sound objects so they can parse strings of notes into recognizable melodies to get practice manipulating strings.
Have students write a game of Hangman in Python in which the computer cheats by changing its secret word to give students practice using dictionaries.
Misconception: Students think you can use the “item (any) of (list)” block in Snap! and Scratch to check for every item in a list, but this block actually returns a random item.
Use Dixie cups with numbers written on the bottom to demonstrate sorting arrays and heap operations in a tangible, physical way.