Model parabolic motion in Scratch to show students (and teachers) that Scratch can handle engaging, complex problems because it is a real programming languages.
Show past student projects during professional developments for courses that use Scratch to convince adults that kids of all ages can wrestle with hard, interesting problems and be excited by programming in Scratch.
Use Project Based Learning, not just projects, to teach CS so that students develop important content knowledge while building interesting, self-motivated projects.
Ask students to respond to their peers’ comments and questions, along with other procedures, to facilitate classroom discussions that move forward as a result of meaningful student engagement.
Have students write or explain how their open-ended project meets the rubric specifications to provide ample scaffolding to open-ended project success.
Ask students to interpret a string of binary to introduce the idea of abstraction and motivate why it is so important.
Use 20 Questions as a way to introduce binary to help motivate the way binary works in an engaging and interactive activity.
Show students many examples of computer science to help them see that computer science isn’t just about programming.
Plan and structure your lectures using detailed questions that address possible confusion whose answers motivate the new content and further a student’s understanding of the material.
Misconception: Students may think that assigning one array to point to another array makes a copy of that array, failing to make a distinction between shallow and deep copies.
Have students trace loops with break statements to reinforce the behavior of break because tracing is a powerful and straight-forward exercise.
Demo visualizations of code executing online, using tools like Python Tutor, and on paper before having students practice visualizing code execution in the same way to better learn how code executes.
Use Car as an example of an interface because students agree on the general behaviors of a car but can only come up with specific instantiations of cars, which provides students with a strong mental model for interface relationships.
Use Clock as an example of an abstract class because ALL clocks have the same mechanism for keeping time, a necessary property for an Abstract Class, to provide students with a strong real-world mental model for abstract classes.
Explain that Strings in Java are a weird-hybrid between a primitive and an Object and as a result they can’t be modified.
Have students act out diagrams they create of the stack and heap to extend this common drawing exercise and help them strengthen their mental models.
Walk students through clicking on links in Java Docs to figure out unknown words and concepts (like iterable) by exploring the detailed explanation; plus the AP test expects students to read Java Docs online.
Force students to explore inheritance and the Java APIs for ArrayList by writing code that HAS-A ArrayList or IS-A ArrayList.