Pedagogical Content for Professors of Introductory Programming Courses

Teaching introductory programming requires knowledge of both content and pedagogy. Pedagogy includes understanding the typical difficulties students face as they learn, as well as recognizing didactic strategies professors can use to help students to overcome these difficulties. Our research aims to improve the pedagogical knowledge instructors have to teach introductory programming courses, especially those new in this area. We conducted 16 semi-structured interviews with instructors who teach introductory programming courses and collected diaries filled by 110 students during their studies. Qualitative analysis of this data revealed a set of difficulties students faced when learning programming basics and a set of didactic strategies professors use to mitigate them. The results were reviewed by senior instructors in order to confirm them and by junior instructors to verify the importance of this material from their perspective. The main contribution of our paper is a set of difficulties faced by students learning programming, a classification of the most harmful challenges, and the didactic strategies usually used to teach and avoid them. Thus, we provide the basis for the pedagogical content necessary to junior and senior professors planning introductory programming courses.

[1]  Caitlin Kelleher,et al.  A tool for authoring programs that automatically distribute feedback to novice programmers , 2014, 2014 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC).

[2]  Carlos Costa,et al.  Learning computer programming: study of difficulties in learning programming , 2013, ISDOC.

[3]  M. Mhashi,et al.  Difficulties Facing Students in Learning Computer Programming Skills at , 2013 .

[4]  Pranay Kumar Sevella Determining the barriers faced by novice programmers , 2013 .

[5]  Caitlin Kelleher,et al.  Towards block code examples that help young novices notice critical elements , 2017, 2017 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC).

[6]  M. Ishtiaq Book Review Creswell, J. W. (2014). Research Design: Qualitative, Quantitative and Mixed Methods Approaches (4th ed.). Thousand Oaks, CA: Sage , 2019, English Language Teaching.

[7]  F. Deek,et al.  Pedagogical Changes in the Delivery of the First‐Course in Computer Science: Problem Solving, Then Programming , 1998 .

[8]  Edward F. Redish,et al.  Discipline-Based Education and Education Research: The Case of Physics , 2000 .

[9]  Anselm L. Strauss,et al.  Basics of qualitative research : techniques and procedures for developing grounded theory , 1998 .

[10]  Kirsti Ala-Mutka,et al.  A study of the difficulties of novice programmers , 2005, ITiCSE '05.

[11]  David Weintrop Blocks, text, and the space between: The role of representations in novice programming environments , 2015, 2015 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC).

[12]  Matthew Fisher,et al.  The Curse of Expertise: When More Knowledge Leads to Miscalibrated Explanatory Insight , 2016, Cogn. Sci..

[13]  Rebecca T. Mercuri,et al.  Identifying and correcting Java programming errors for introductory computer science students , 2003, SIGCSE.

[14]  L. Giddings Research Design: Qualitative, Quantitative, and Mixed Methods Approaches, 2d ed , 2005 .

[15]  Jens Bennedsen,et al.  Failure rates in introductory programming , 2007, SGCS.

[16]  Philip J. Guo,et al.  HappyFace: Identifying and predicting frustrating obstacles for learning programming at scale , 2017, 2017 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC).

[17]  Alan F. Blackwell,et al.  The practices of programming , 2016, 2016 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC).

[18]  Juliet M. Corbin,et al.  Basics of Qualitative Research (3rd ed.): Techniques and Procedures for Developing Grounded Theory , 2008 .

[19]  Anabela Gomes,et al.  Learning to program - difficulties and solutions , 2007 .

[20]  Anthony V. Robins,et al.  My Program is Correct But it Doesn t Run: A Preliminary Investigation of Novice Programmers Problems , 2005, ACE.

[21]  L. Shulman Knowledge and Teaching: Foundations of the New Reform , 1987 .

[22]  Michael J. Lee Gidget: An online debugging game for learning and engagement in computing education , 2014, 2014 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC).

[23]  L. Shulman Those Who Understand: Knowledge Growth in Teaching , 1986 .

[24]  Margaret M. Burnett,et al.  From barriers to learning in the idea garden: An empirical study , 2012, 2012 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC).

[25]  Zenón José Hernández Figueroa,et al.  A Virtual Programming Lab for Moodle with automatic assessment and anti-plagiarism features , 2012 .

[26]  Anabela Gomes,et al.  A teacher's view about introductory programming teaching and learning: Difficulties, strategies and motivations , 2014, 2014 IEEE Frontiers in Education Conference (FIE) Proceedings.

[27]  A. Strauss,et al.  Grounded theory , 2017 .

[28]  Ann L. Brown,et al.  How people learn: Brain, mind, experience, and school. , 1999 .

[29]  Alexander Repenning Making programming more conversational , 2011, 2011 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC).

[30]  Iain Milne,et al.  Difficulties in Learning and Teaching Programming—Views of Students and Tutors , 2002, Education and Information Technologies.

[31]  Marco Aurélio Gerosa,et al.  Why is programming so difficult to learn?: Patterns of Difficulties Related to Programming Learning Mid-Stage , 2017, SOEN.