{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,7,6]],"date-time":"2026-07-06T11:22:37Z","timestamp":1783336957890,"version":"3.54.6"},"reference-count":50,"publisher":"Association for Computing Machinery (ACM)","issue":"OOPSLA1","license":[{"start":{"date-parts":[[2024,4,29]],"date-time":"2024-04-29T00:00:00Z","timestamp":1714348800000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"funder":[{"name":"NSF","award":["2227863"],"award-info":[{"award-number":["2227863"]}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Proc. ACM Program. Lang."],"published-print":{"date-parts":[[2024,4,29]]},"abstract":"<jats:p>Misconceptions about core linguistic concepts like mutable  \nvariables, mutable compound data, and their interaction with scope  \nand higher-order functions seem to be widespread.  \nBut  \nhow do we detect  \nthem, given that experts have blind spots and may not realize the  \nmyriad ways in which students can misunderstand programs?  \nFurthermore, once identified, what can we do to correct them?<\/jats:p>\n          <jats:p>In this paper, we present a curated list of misconceptions, and an  \ninstrument to detect them. These are distilled from student work  \nover several years and match and extend prior research. We also  \npresent an automated, self-guided tutoring system. The tutor builds  \non strategies in the education literature and is explicitly designed  \naround identifying and correcting misconceptions.<\/jats:p>\n          <jats:p>We have tested the tutor in multiple settings.  \nOur data consistently show that (a) the misconceptions we tackle are  \nwidespread, and (b) the tutor appears to improve understanding.<\/jats:p>","DOI":"10.1145\/3649823","type":"journal-article","created":{"date-parts":[[2024,4,29]],"date-time":"2024-04-29T17:53:50Z","timestamp":1714413230000},"page":"334-361","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":12,"title":["Identifying and Correcting Programming Language Behavior Misconceptions"],"prefix":"10.1145","volume":"8","author":[{"ORCID":"https:\/\/orcid.org\/0000-0001-6502-9275","authenticated-orcid":false,"given":"Kuang-Chen","family":"Lu","sequence":"first","affiliation":[{"name":"Brown University, Providence, USA"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0001-5184-1975","authenticated-orcid":false,"given":"Shriram","family":"Krishnamurthi","sequence":"additional","affiliation":[{"name":"Brown University, Providence, USA"}],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"320","published-online":{"date-parts":[[2024,4,29]]},"reference":[{"key":"e_1_2_2_1_1","doi-asserted-by":"publisher","DOI":"10.1080\/00461520.2013.775712"},{"key":"e_1_2_2_2_1","doi-asserted-by":"publisher","DOI":"10.5555\/3351.3354"},{"key":"e_1_2_2_3_1","unstructured":"Gary Bernhardt. 2012. Wat. https:\/\/www.destroyallsoftware.com\/talks\/wat"},{"key":"e_1_2_2_4_1","unstructured":"David Chase and Russ Cox. 2023. Fixing For Loops in Go 1.22 - The Go Programming Language. https:\/\/go.dev\/blog\/loopvar-preview"},{"key":"e_1_2_2_5_1","doi-asserted-by":"publisher","DOI":"10.1145\/286936.286947"},{"key":"e_1_2_2_6_1","doi-asserted-by":"publisher","unstructured":"John Clements and Shriram Krishnamurthi. 2022. Towards a Notional Machine for Runtime Stacks and Scope: When Stacks Don\u2019t Stack Up. https:\/\/doi.org\/10.1145\/3501385.3543961 10.1145\/3501385.3543961","DOI":"10.1145\/3501385.3543961"},{"key":"e_1_2_2_7_1","volume-title":"Spec: Less Error-Prone Loop Variable Scoping \u22c5 Issue #60078 \u22c5 Golang\/Go. https:\/\/github.com\/golang\/go\/issues\/60078","author":"Cox Russ","year":"2023","unstructured":"Russ Cox. 2023. Spec: Less Error-Prone Loop Variable Scoping \u22c5 Issue #60078 \u22c5 Golang\/Go. https:\/\/github.com\/golang\/go\/issues\/60078"},{"key":"e_1_2_2_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/3622841"},{"key":"e_1_2_2_9_1","doi-asserted-by":"publisher","DOI":"10.1145\/1086339.1086340"},{"key":"e_1_2_2_10_1","doi-asserted-by":"publisher","DOI":"10.1006\/ijhc.1981.0309"},{"key":"e_1_2_2_11_1","doi-asserted-by":"publisher","DOI":"10.1145\/3469128"},{"key":"e_1_2_2_12_1","doi-asserted-by":"publisher","DOI":"10.1145\/3127323"},{"key":"e_1_2_2_13_1","doi-asserted-by":"publisher","DOI":"10.1145\/3017680.3017777"},{"key":"e_1_2_2_14_1","doi-asserted-by":"publisher","DOI":"10.1145\/107005.107066"},{"key":"e_1_2_2_15_1","volume-title":"Essentials of Programming Languages","author":"Friedman Daniel P.","unstructured":"Daniel P. Friedman, Mitchell Wand, and Christopher Thomas Haynes. 2001. Essentials of Programming Languages. MIT press. isbn:978-0-262-56067-2 https:\/\/mitpress.mit.edu\/9780262560672\/essentials-of-programming-languages\/"},{"key":"e_1_2_2_16_1","unstructured":"froadie. 2022. What\u2019s the Scope of a Variable Initialized in an If Statement? https:\/\/stackoverflow.com\/q\/2829528"},{"key":"e_1_2_2_17_1","doi-asserted-by":"publisher","DOI":"10.1145\/1352135.1352226"},{"key":"e_1_2_2_18_1","doi-asserted-by":"publisher","DOI":"10.1145\/1789934.1789935"},{"key":"e_1_2_2_19_1","doi-asserted-by":"publisher","DOI":"10.1145\/3017680.3017723"},{"key":"e_1_2_2_20_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-14107-2_7"},{"key":"e_1_2_2_21_1","doi-asserted-by":"publisher","DOI":"10.1145\/3265757.3265765"},{"key":"e_1_2_2_22_1","doi-asserted-by":"publisher","DOI":"10.1119\/1.2343497"},{"key":"e_1_2_2_23_1","doi-asserted-by":"publisher","DOI":"10.1287\/moor.12.2.262"},{"key":"e_1_2_2_24_1","volume-title":"Programming Languages: Application and Interpretation. Shriram Krishnamurthi. https:\/\/cs.brown.edu\/~sk\/Publications\/Books\/ProgLangs\/","author":"Krishnamurthi Shriram","year":"2007","unstructured":"Shriram Krishnamurthi. 2007. Programming Languages: Application and Interpretation. Shriram Krishnamurthi. https:\/\/cs.brown.edu\/~sk\/Publications\/Books\/ProgLangs\/"},{"key":"e_1_2_2_25_1","volume-title":"Programming Languages: Application and Interpretation","author":"Krishnamurthi Shriram","year":"2022","unstructured":"Shriram Krishnamurthi. 2022. Programming Languages: Application and Interpretation (third ed.). https:\/\/www.plai.org\/"},{"key":"e_1_2_2_26_1","volume-title":"Programming Paradigms and Beyond","author":"Krishnamurthi Shriram","unstructured":"Shriram Krishnamurthi and Kathi Fisler. 2019. Programming Paradigms and Beyond. In The Cambridge Handbook of Computing Education Research, Sally Fincher and Anthony Robins (Eds.)."},{"key":"e_1_2_2_27_1","unstructured":"Eric Lippert. 2009. Closing over the Loop Variable Considered Harmful Part One. https:\/\/ericlippert.com\/2009\/11\/12\/closing-over-the-loop-variable-considered-harmful-part-one\/"},{"key":"e_1_2_2_28_1","doi-asserted-by":"publisher","unstructured":"Kuang-Chen Lu and Shriram Krishnamurthi. 2024. Replication Package for Article: \u2018Identifying and Correcting Programming Language Behavior Misconceptions\u2019. https:\/\/doi.org\/10.1145\/3580432 10.1145\/3580432","DOI":"10.1145\/3580432"},{"key":"e_1_2_2_29_1","first-page":"644","article-title":"Expert Blind Spot : When Content Knowledge Eclipses Pedagogical Content Knowledge","volume":"644648","author":"Nathan Mitchell J.","year":"2001","unstructured":"Mitchell J. Nathan, Kenneth R. Koedinger, and Martha W. Alibali. 2001. Expert Blind Spot : When Content Knowledge Eclipses Pedagogical Content Knowledge. In Proceedings of the Third International Conference on Cognitive Science. 644648, 644\u2013648.","journal-title":"Proceedings of the Third International Conference on Cognitive Science."},{"key":"e_1_2_2_30_1","doi-asserted-by":"publisher","DOI":"10.17226\/5287"},{"key":"e_1_2_2_31_1","doi-asserted-by":"publisher","DOI":"10.1109\/HCC.2002.1046372"},{"key":"e_1_2_2_32_1","doi-asserted-by":"publisher","DOI":"10.1145\/2384577.2384579"},{"key":"e_1_2_2_33_1","doi-asserted-by":"publisher","DOI":"10.1145\/2544173.2509536"},{"key":"e_1_2_2_34_1","volume-title":"2nd Summit on Advances in Programming Languages (SNAPL","author":"Pombrio Justin","year":"2017","unstructured":"Justin Pombrio, Shriram Krishnamurthi, and Kathi Fisler. 2017. Teaching Programming Languages by Experimental and Adversarial Thinking. In 2nd Summit on Advances in Programming Languages (SNAPL 2017). Schloss Dagstuhl-Leibniz-Zentrum fuer Informatik. https:\/\/drops.dagstuhl.de\/opus\/volltexte\/2017\/7117\/"},{"key":"e_1_2_2_35_1","volume-title":"Gertzog","author":"Posner George J.","year":"1982","unstructured":"George J. Posner, Kenneth A. Strike, Peter W. Hewson, and William A. Gertzog. 1982. Toward a Theory of Conceptual Change. Science education, 66, 2 (1982), 211\u2013227."},{"key":"e_1_2_2_36_1","doi-asserted-by":"publisher","DOI":"10.2190\/FGN9-DJ2F-86V8-3FAU"},{"key":"e_1_2_2_37_1","volume-title":"The Hitchhiker\u2019s Guide to Python: Best Practices for Development. O\u2019Reilly Media","author":"Reitz Kenneth","unstructured":"Kenneth Reitz and Tanya Schlusser. 2016. The Hitchhiker\u2019s Guide to Python: Best Practices for Development. O\u2019Reilly Media, Inc.. isbn:978-1-4919-3322-0 https:\/\/docs.python-guide.org\/"},{"key":"e_1_2_2_38_1","doi-asserted-by":"publisher","DOI":"10.1145\/3287324.3287504"},{"key":"e_1_2_2_39_1","doi-asserted-by":"publisher","DOI":"10.1007\/s10648-021-09656-z"},{"key":"e_1_2_2_40_1","unstructured":"sharvey. 2022. Creating Functions (or Lambdas) in a Loop (or Comprehension). https:\/\/stackoverflow.com\/q\/3431676"},{"key":"e_1_2_2_41_1","volume-title":"Visual Program Simulation in Introductory Programming Education","author":"Sorva Juha","unstructured":"Juha Sorva. 2012. Visual Program Simulation in Introductory Programming Education. Aalto University. isbn:978-952-60-4626-6 issn:1799-4942 (electronic) https:\/\/aaltodoc.aalto.fi\/handle\/123456789\/3534"},{"key":"e_1_2_2_42_1","volume-title":"Visual Program Simulation in Introductory Programming Education. Ph. D. Dissertation","author":"Sorva Juha","unstructured":"Juha Sorva. 2012. Visual Program Simulation in Introductory Programming Education. Ph. D. Dissertation. Aalto University, Department of Computer Science and Engineering."},{"key":"e_1_2_2_43_1","doi-asserted-by":"publisher","DOI":"10.1145\/2483710.2483713"},{"key":"e_1_2_2_44_1","doi-asserted-by":"publisher","DOI":"10.1145\/2534973"},{"key":"e_1_2_2_45_1","doi-asserted-by":"publisher","DOI":"10.1145\/3576123.3576128"},{"key":"e_1_2_2_46_1","doi-asserted-by":"publisher","DOI":"10.1080\/08993408.2014.970779"},{"key":"e_1_2_2_47_1","doi-asserted-by":"publisher","DOI":"10.1145\/1953163.1953200"},{"key":"e_1_2_2_48_1","doi-asserted-by":"crossref","unstructured":"Preston Tunnell Wilson Ben Greenman Justin Pombrio and Shriram Krishnamurthi. 2018. The Behavior of Gradual Types: A User Study.","DOI":"10.1145\/3276945.3276947"},{"key":"e_1_2_2_49_1","doi-asserted-by":"crossref","unstructured":"Preston Tunnell Wilson Justin Pombrio and Shriram Krishnamurthi. 2017. Can We Crowdsource Language Design?","DOI":"10.1145\/3133850.3133863"},{"key":"e_1_2_2_50_1","doi-asserted-by":"publisher","DOI":"10.5555\/1435351.1435353"}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3649823","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3649823","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T22:54:06Z","timestamp":1750287246000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3649823"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2024,4,29]]},"references-count":50,"journal-issue":{"issue":"OOPSLA1","published-print":{"date-parts":[[2024,4,29]]}},"alternative-id":["10.1145\/3649823"],"URL":"https:\/\/doi.org\/10.1145\/3649823","relation":{},"ISSN":["2475-1421"],"issn-type":[{"value":"2475-1421","type":"electronic"}],"subject":[],"published":{"date-parts":[[2024,4,29]]},"assertion":[{"value":"2024-04-29","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}