Misconception: Students have difficulty using the correct data types in Java because their go-to data type is int most of the time.
Give students a large data file to sort when teaching sorting algorithms to remind students that computers are great at dealing with a large set of data.
Use graphics when possible to keep students engaged because text-only output can discourage students.
Use Shapes, Rectangles, and Squares to teach objects and inheritance in Java, tell students they’re the only ones who can complete the job for extra engagement.
Have students compete calculating to the 50th Fibonacci number, one team of humans doing the math versus a team students writing a program to stress the importance of computing for calculations.
Introduce a (sometimes silly) back-story for why students need to write particular methods to motivate them and see how their work might be needed in industry jobs.
Show code without inheritance before showing code that uses inheritance so that students create a tacit understanding of the benefits inheritance provides.
Explain that arrays work like a dresser of clothing to help students understand this abstract data structure by relating it to structures they know.
Explain that using objects/classes helps students keep their programs organized to motivate the use of object oriented programming, some students need extra help understanding its importance.
Encourage students to write instructions that a 5-year old could follow to give them a technique for problem solving and planning their programs.
Misconception: students forget about language-specific or paradigm-specific material (e.g., new/delete or types) when they switch between languages that don’t use the same concepts.
Provide specific ways to get additional practice on material (e.g., Linked lists) because teachers often underestimate the amount of practice students need to solidify course concepts.
Misconception: When passing arrays in C/C++ students often forget to pass in the size of the array and to use [] (square brackets) to make the variable an array.
Loosen your requirements for style sometimes to keep students motivated to write programs, this is especially relevant when students come from an engineering background.
Give students assignments where students have to make their computational results understandable to their customer, an important skill for industry computation across fields.
Have students do the most frustrating tasks in class, so that you can support them when they get stuck and prevent them from giving up or become overwhelmingly flustered.
Have students design projects based on content from their other courses, and have them brainstorm how the code they write might be useful in a variety of fields. This broadens their understanding of CS’s many applications.
Help students monitor their emotional experience to know when they should take a break from writing code to maximize learning and student attitudes.
Email student groups at colleges to identify guest speakers because having college students come to your high-school class can be valuable for motivating your students.