Explain nested for loops using a car odometer, the innermost loop controlling the ones digit must cycle fully before the outer loops steps forward, to help students better understand nested loops through a real world example.
Use note passing for explaining the difference between methods with no return (void methods) and methods with return to provide students with a relatable example.
Have students use a spiral notebook to keep track of important information to enhance their understanding of topics by writing down the material.
Use the “fence post” method when teaching Java’s substring method to help students use it accurately.
Experiment with different techniques for grouping students into pairs to find out what works best in your classroom because pair programming is a great tool that can improve student’s coding skills and syntax proficiency.
Use rotary programming - a variation of pair programming - to give students experience working with lots of different code.
Track the variable values of a recursive function using multiple pieces of paper to form a “stack” so that students can visualize what happens when a method calls itself and how each method call has its own unique variable values.
Use an Arduino and three LEDs to make an electronic, binary die to teach students about data representation, programming basics, and Arduino in an engaging introductory activity.
Get at eye-level when working with students who are working in their seats, rather than standing above them to reduce intimidation so you develop good student teacher relationships.
Start programming courses with HTML to get students to engage with programming languages by building off of their pre-existing, experiential curiosity.
Use the Beauty and Joy of Computing’s kaleidoscope assignment to integrate Art into CS so that students get excited about STEAM (Science, Technology, Engineering, Art, and Math).
Scaffold students through reverse engineering existing Scratch projects to help them gain competency in important concepts like message passing, variables, and event-based programming.
Mention to students that individual blocks in Scratch and Snap can be tested by double clicking them in the block library so they know this useful, non-intuitive trick for learning what an individual block does.
Misconception: Students get confused reconciling the coordinate system with the point Scratch uses as the center for Sprites.
Check your exam and homework questions to ensure they don’t rely on knowledge from outside of your course and aren’t phrased with excessively complex language to give students their best chance on each test.
Reinforce that certain types in Python such as lists are mutable while others (e.g. strings, tuples) are not. Students have difficulty tracing code that uses mutable types because they often forget this.
Train students to draw pictures of code traces through namespaces, objects and function calls because the benefits of drawing these processes helps them avoid common mistakes.
Teach students (even young kids) the 20/20/20 rule: every 20 minutes, students should focus their eyes on an object 20 feet away for 20 seconds to protect their vision and create healthy habits.
Assign students an “all-about-me” project to practice introductory Scratch content and to engage with computational thinking through expressing themselves.