Teaching computer programming with PRIMM: a sociocultural perspective

ABSTRACT Background and Context: Vygotsky's sociocultural theory emphasises the importance of language, mediation, and the transfer of skills and knowledge from the social into the cognitive plane. This perspective has influenced the development of PRIMM (Predict, Run, Investigate, Modify, Make), a structured approach to teaching programming. Objective: The objective of the study was to find out if using PRIMM to teach programming had an impact on learner attainment in secondary school, and the extent to which it was valuable for teachers. Method: We evaluated the use of PRIMM in 13 schools with 493 students aged 11-14 alongside a control group, using a mixed-methods approach. Teachers delivered programming lessons using the PRIMM approach for 8-12 weeks. Data were collected via a combination of a baseline test, a post-test to compare control and experimental groups, and teacher interviews. Findings: Learners performed better in the post test than the control group. Teachers reported several benefits of the PRIMM approach, including that PRIMM helped them to teach effectively in mixed-ability classes, enabling all learners to make progress. Implications: PRIMM makes a contribution to programming education research by building on previous work in effective pedagogy for teachers, and encouraging the use of language and dialogue to facilitate understanding.

[1]  Benedict duBoulay,et al.  Some Difficulties of Learning to Program , 1986 .

[2]  J. Wertsch,et al.  L. S. Vygotsky and Contemporary Developmental Psychology. , 1992 .

[3]  P. Scott,et al.  Individual and Sociocultural Views of Learning in Science Education , 2003 .

[4]  Nadia Kasto,et al.  Learning to Program: The Development of Knowledge in Novice Programmers , 2016 .

[5]  Leigh Ann Sudol-DeLyser,et al.  Code comprehension problems as learning events , 2012, ITiCSE '12.

[6]  Matthew Hertz,et al.  Trace-based teaching in early programming courses , 2013, SIGCSE '13.

[7]  Teresa Busjahn,et al.  The use of code reading in teaching programming , 2013, Koli Calling '13.

[8]  Philip Machanick,et al.  A social construction approach to computer science education , 2007, Comput. Sci. Educ..

[9]  Anthony Robins,et al.  Learning and Teaching Programming , 2016 .

[10]  Jacob Perrenet,et al.  Exploring students' understanding of the concept of algorithm: levels of abstraction , 2005, ITiCSE '05.

[11]  Tony Clear The hermeneutics of program comprehension: a 'holey quilt' theory , 2012, INROADS.

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

[13]  Yizhou Qian,et al.  Students’ Misconceptions and Other Difficulties in Introductory Programming , 2017, ACM Trans. Comput. Educ..

[14]  R. Paul Wiegand,et al.  A Data-Driven Analysis of Informatively Hard Concepts in Introductory Programming , 2016, SIGCSE.

[15]  Mordechai Ben-aft,et al.  Constructivism in computer science education , 1998, SIGCSE '98.

[16]  Carsten Schulte,et al.  Block Model: an educational model of program comprehension as a tool for a scholarly approach to teaching , 2008, ICER '08.

[17]  Michal Armoni,et al.  On Teaching Abstraction in CS to Novices , 2013 .

[18]  Hein P. M. Krammer,et al.  Instructional strategies and tactics for the design of introductory computer programming courses in high school , 1987 .

[19]  Ivan Kalas,et al.  Designing productive gradations of tasks in primary programming education , 2013, WiPSE '13.

[20]  Åsa Cajander,et al.  On valuing peers: theories of learning and intercultural competence , 2012, Comput. Sci. Educ..

[21]  Rodziah Latih,et al.  Major Problems in Basic Programming that Influence Student Performance , 2012 .

[22]  Petra Kaufmann,et al.  Experimental And Quasi Experimental Designs For Research , 2016 .

[23]  Ahmad Zamri Khairani,et al.  Assessing Content Validity of IKBAR among Field Experts in Polytechnics , 2015 .

[24]  James P. Lantolf,et al.  Vygotsky's Educational Theory in Cultural Context: Intrapersonal Communication and Internalization in the Second Language Classroom , 2003 .

[25]  Anne Venables,et al.  A closer look at tracing, explaining and code writing skills in the novice programmer , 2009, ICER '09.

[26]  Sue Sentance,et al.  Teachers' Experiences of using PRIMM to Teach Programming in School , 2019, SIGCSE.

[27]  Aída Walqui,et al.  Scaffolding Instruction for English Language Learners: A Conceptual Framework , 2006 .

[28]  Elliot Soloway,et al.  Novice mistakes: are the folk wisdoms correct? , 1986, CACM.

[29]  Jacob Perrenet,et al.  Levels of abstraction in students' understanding of the concept of algorithm: the qualitative perspective , 2006, ITICSE '06.

[30]  ThotaNeena,et al.  Learning Computer Science , 2016 .

[31]  Udo Kuckartz,et al.  Qualitative Text Analysis: A Guide to Methods, Practice & Using Software , 2013 .

[32]  M. Cole,et al.  Mind in society: The development of higher psychological processes. L. S. Vygotsky. , 1978 .

[33]  J. Sweller,et al.  Cognitive Load Theory and Complex Learning: Recent Developments and Future Directions , 2005 .

[34]  J. Bruner,et al.  The role of tutoring in problem solving. , 1976, Journal of child psychology and psychiatry, and allied disciplines.

[35]  Lauri Malmi,et al.  A Review of Generic Program Visualization Systems for Introductory Programming Education , 2013, TOCE.

[36]  Raymond Lister,et al.  Toward a Developmental Epistemology of Computer Programming , 2016, WiPSCE.

[37]  M. Linn,et al.  Cognitive consequences of Programming Instruction: Instruction, Access, and Ability , 1985 .

[38]  Wu-Yuin Hwang,et al.  Investigating the role of computer-supported annotation in problem-solving-based teaching: An empirical study of a Scratch programming pedagogy , 2014, Br. J. Educ. Technol..

[39]  Chih-Kai Chang,et al.  Cognitive Load Comparison of Traditional and Distributed Pair Programming on Visual Programming Language , 2015, 2015 International Conference of Educational Innovation through Technology (EITT).

[40]  Mitchel Resnick,et al.  All I really need to know (about creative thinking) I learned (by studying how children learn) in kindergarten , 2007, C&C '07.

[41]  Michail N. Giannakos,et al.  Computing education in K-12 schools: A review of the literature , 2015, 2015 IEEE Global Engineering Education Conference (EDUCON).

[42]  Jean Jinsun Ryoo Pedagogy Matters: Engaging Diverse Students as Community Researchers in Three Computer Science Classrooms - eScholarship , 2013 .

[43]  Jorma Sajaniemi,et al.  Factors in novice programmers' poor tracing skills , 2007, ITiCSE.

[44]  Alexander Repenning,et al.  The zones of proximal flow: guiding students through a space of computational thinking skills and challenges , 2013, ICER.

[45]  Roland Mittermeir,et al.  Perspectives and Visions of Computer Science Education in Primary and Secondary (K-12) Schools , 2014, TOCE.

[46]  Karim Shabani,et al.  Applications of Vygotsky’s sociocultural approach for teachers’ professional development , 2016 .

[47]  Joyce Malyn-Smith,et al.  Computational thinking for youth in practice , 2011, INROADS.

[48]  Raymond Lister,et al.  Some empirical results for neo-Piagetian reasoning in novice programmers and the relationship to code explanation questions , 2012, ACE 2012.

[49]  Michal Armoni,et al.  Teaching Abstract Thinking in Introduction to Computer Science for 7th Graders , 2016, WiPSCE.

[50]  Jens Bennedsen,et al.  Categorizing Pedagogical patterns by teaching activities and Pedagogical values , 2006, Comput. Sci. Educ..

[51]  Alex Kozulin,et al.  Mediated learning experience and psychological tools: Vygotsky's and Feuerstein's perspectives in a study of student learning , 1995 .

[52]  Roy D. Pea,et al.  Language-Independent Conceptual “Bugs” in Novice Programming , 1986 .

[53]  Tony Clear,et al.  Surely we must learn to read before we learn to write! , 2009, ACE '09.

[54]  Raymond Lister,et al.  Relationships between reading, tracing and writing skills in introductory programming , 2008, ICER '08.

[55]  David Perkins,et al.  Fragile knowledge and neglected strategies in novice programmers , 1985 .

[56]  Hartmut Giest,et al.  Vygotsky's Educational Theory in Cultural Context: Formation of Learning Activity and Theoretical Thinking in Science Teaching , 2003 .

[57]  Peter Beike,et al.  Teaching Today A Practical Guide , 2016 .

[58]  Marc J. Rubin The effectiveness of live-coding to teach introductory programming , 2013, SIGCSE '13.

[59]  Sue Sentance,et al.  PRIMM: Exploring pedagogical approaches for teaching text-based programming in school , 2017, WiPSCE.

[60]  Colin J. Fidge,et al.  Further evidence of a relationship between explaining, tracing and writing skills in introductory programming , 2009, ITiCSE.

[61]  Angela Carbone,et al.  Going SOLO to assess novice programmers , 2008, ITiCSE.

[62]  Raymond Lister,et al.  Concrete and other neo-Piagetian forms of reasoning in the novice programmer , 2011, ACE 2011.

[63]  David Harel,et al.  Scenario-based programming: reducing the cognitive load, fostering abstract thinking , 2014, ICSE Companion.

[64]  Robert W. Rieber,et al.  Thought and Word , 2004 .

[65]  L. Vygotsky Imagination and Creativity in Childhood , 2004 .

[66]  David Kellogg,et al.  The ZPD and whole class teaching: Teacher-led and student-led interactional mediation of tasks , 2007 .

[67]  Paul Montgomery,et al.  Experimental and Quasi-Experimental Designs , 2011 .

[68]  Sue Sentance,et al.  Computing in the curriculum: Challenges and strategies from a teacher’s perspective , 2016, Education and Information Technologies.

[69]  Juha Sorva,et al.  Notional machines and introductory programming education , 2013, TOCE.

[70]  Richard E. Clark,et al.  Why Minimal Guidance During Instruction Does Not Work: An Analysis of the Failure of Constructivist, Discovery, Problem-Based, Experiential, and Inquiry-Based Teaching , 2006 .

[71]  Shuchi Grover,et al.  Measuring Student Learning in Introductory Block-Based Programming: Examining Misconceptions of Loops, Variables, and Boolean Logic , 2017, SIGCSE.

[72]  Sue Sentance,et al.  Computer Science Education: Perspectives on Teaching and Learning in School , 2018 .

[73]  Ira Diethelm,et al.  Questions on Spoken Language and Terminology for Teaching Computer Science , 2015, ITiCSE.

[74]  Robert F. Rosin,et al.  Teaching “about programming” , 1973, Commun. ACM.

[75]  Raymond Lister,et al.  Programming: reading, writing and reversing , 2014, ITiCSE '14.

[76]  Alex Kozulin,et al.  Vygotsky's Educational Theory in Cultural Context: Psychological Tools and Mediated Learning , 2003 .

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

[78]  Sowmya Somanath,et al.  A Pedagogical Framework for Computational Thinking , 2017, Digital Experiences in Mathematics Education.

[79]  S. Elo,et al.  Qualitative Content Analysis , 2014 .

[80]  H. Daniels Vygotsky and Pedagogy , 2001 .

[81]  R. Rieber,et al.  The Instrumental Method in Psychology , 1997 .

[82]  Richard Catrambone,et al.  Improving problem solving with subgoal labels in expository text and worked examples , 2016 .

[83]  Roy D. Pea,et al.  Designing for deeper learning in a blended computer science course for middle school students , 2015, Comput. Sci. Educ..

[84]  Mitchel Resnick,et al.  Lifelong Kindergarten: Cultivating Creativity through Projects, Passion, Peers, and Play , 2017 .

[85]  Josh D. Tenenberg,et al.  Out of our minds: a review of sociocultural cognition theory , 2014, Comput. Sci. Educ..

[86]  Lauren E. Margulieux,et al.  Review of measurements used in computing education research and suggestions for increasing standardization , 2019, Comput. Sci. Educ..

[87]  Barbara Ericson,et al.  Subgoals Help Students Solve Parsons Problems , 2016, SIGCSE.

[88]  Janet Rountree,et al.  Learning and Teaching Programming: A Review and Discussion , 2003, Comput. Sci. Educ..

[89]  Efthimia Aivaloglou,et al.  Code Phonology: An Exploration into the Vocalization of Code , 2018, 2018 IEEE/ACM 26th International Conference on Program Comprehension (ICPC).

[90]  Sze Yee Lye,et al.  Review on teaching and learning of computational thinking through programming: What is next for K-12? , 2014, Comput. Hum. Behav..

[91]  Anthony V. Robins,et al.  Learning edge momentum: a new account of outcomes in CS1 , 2010, Comput. Sci. Educ..

[92]  Seymour Papert,et al.  Mindstorms: Children, Computers, and Powerful Ideas , 1981 .

[93]  Amruth N. Kumar,et al.  Solving Code-tracing Problems and its Effect on Code-writing Skills Pertaining to Program Semantics , 2015, ITiCSE.

[94]  William Marsh,et al.  Comparing K-5 teachers' reported use of design in teaching programming and planning in teaching writing , 2018, WiPSCE.

[95]  Beth Simon,et al.  Evaluating a new exam question: Parsons problems , 2008, ICER '08.

[96]  J. Sweller COGNITIVE LOAD THEORY, LEARNING DIFFICULTY, AND INSTRUCTIONAL DESIGN , 1994 .

[97]  Tony Clear,et al.  An introduction to program comprehension for computer science educators , 2010, ITiCSE-WGR '10.

[98]  Mordechai Ben-Ari,et al.  Learning computer science concepts with scratch , 2010, ICER '10.

[99]  Quintin I. Cutts,et al.  The abstraction transition taxonomy: developing desired learning outcomes through the lens of situated cognition , 2012, ICER '12.

[100]  Richard E. Pattis A philosophy and example of CS-1 programming projects , 1990, SIGCSE '90.