Follow Us On Twitter

Introduction Video

Discussion Questions

Activities/Reflections
  • Review the curriculum or the materials that you use for teaching. Are the lessons, examples, and activities are likely to help with the misconceptions listed in this chapter? Might they encourage some misconceptions? Is the combination of example programs rich enough?
  • Reflect on the model of program behavior (or “notional machine”) that your students need.
    • What capabilities of the programming environment are invoked by the commands in the programming language?
    • What do the students need to know about those capabilities in order to reason reliably about program behavior? Which “rules” does the system obey?
Discussion Questions Contributed by Dr. Christine Liebe (CSTeach Course, Colorado School of Mines)
  • Big question: What mental models must students understand to develop a working notional machine?
  • How could state tables be modified to help students learn how a computer will and won’t execute?
  • How are programming concepts similar or dissimilar to human language?
Activity (contributed by Jen Rosato, CS Methods course, College of St. Scholastica)

For one day this week, journal about how you interact with students who have made mistakes or have alternate conceptions in a CS or other class. (For summer semester students, journaling may not be possible if you are out of school already. In that case, try thinking back to three focal students from the previous year — a low performer, a high performer, and a student historically marginalized in computing — and the kinds of questions you have asked them.) 

  • What are some of the techniques you used to help students learn in those situations?
  • What went well?
  • What could you have done better?
  • Reflect on your own understanding of alternate conceptions in computer science. 

 

Additional Materials

Resources for Notional Machines (Shared by Matthias Hauswirth)

Collection of Notional Machines

As a companion to the 2020 ITiCSE working group report on notional machines (https://dl.acm.org/doi/10.1145/3437800.3439202) Matthias Hauswirth’s lab developed a web site that currently lists 57 notional machines used in practice: https://notionalmachines.github.io/

Curated Collections of Programming Language Misconceptions​
  1. As part of an NSF-funded effort related to classroom assessments and teacher preparation on formative assessments. Dr. Shuchi Grover used this chapter and other sources to aggregate a (living) list of programming misconceptions around which to discuss creation of formative assessments. She also helped create a set of assessment items in Python mapped to these misconceptions.
  2. Dr. Matthias Hauswirth’s lab has developed a large collection of programming misconceptions. The collection is openly accessible. It currently holds 252 misconceptions (some of them in draft form), covering 59 different programming concepts (see this concept matrix). It organizes misconceptions in Java, Python, and a very small number of them in JavaScript. The misconceptions are carefully described in the form of refutation texts, which teachers can use as self-checks). Each misconception is linked to relevant places in the authoritative specification of the programming language, to textbook chapters that may trigger the misconception, and to research papers that discuss it. Moreover, the misconceptions are cross-linked with each other. The website also provides a static API, so the collection can be queried programmatically by other websites and tools (e.g., Expression Tutor queries progmiscon to allow expression tree activities to be linked to specific misconceptions).
Teacher PD materials on misconceptions & formative assessments

Formative Classroom Assessment for Teachers is a “PD-in-a-Box” created by Dr. Shuchi Grover and Bryan “BT” Twarek. Session 3 on Tackling Misconceptions Through Formative Assessment shares ideas on targeting misconceptions and using formative assessments to ensure students are learning those concepts.

Assessments

Assessment mapped to programming misconceptions on edfinity.com

Share examples. Link to problemset.