Catalogs of C and Python Antipatterns by CS1 Students
Yorah Bosse, Igor Scaliante Wiese, Marco Aur\'elio Graciotto Silva,, Nelson Lago, Le\^onidas de Oliveira Brand\~ao, David Redmiles, Fabio Kon,, Marco A. Gerosa

TL;DR
This paper presents catalogs of 41 programming antipatterns in C and Python, derived from analyzing student code, to better understand misconceptions and improve teaching strategies in introductory programming courses.
Contribution
It introduces a systematic catalog of antipatterns for C and Python based on student code analysis, aiding educators in identifying misconceptions.
Findings
Cataloged 41 antipatterns from 95 misconceptions
Analyzed 166 students' solutions in CS1 courses
Provided code examples and solutions for each antipattern
Abstract
Understanding students' programming misconceptions is critical. Doing so depends on identifying the reasons why students make errors when learning a new programming language. Knowing the misconceptions can help students to improve their reflection about their mistakes and also help instructors to design better teaching strategies. In this technical report, we propose catalogs of antipatterns for two programming languages: C and Python. To accomplish this, we analyzed the codes of 166 CS1 engineering students when they were coding solutions to programming exercises. In our results, we catalog 41 CS1 antipatterns from 95 cataloged misconceptions in C and Python. These antipatterns were separated into three catalogs: C, Python, and antipatterns found in code using both programming languages. For each antipattern, we present code examples, students' solutions (if they are present), a…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsTeaching and Learning Programming · Software Testing and Debugging Techniques · Software Engineering Techniques and Practices
