Conceptual Understandings of Novice Programmers (original) (raw)

On the Cognitive Development of the Novice Programmer and the Development of a Computing Education Researcher

9th Computer Science Education Research Conference (CSERC '20), 2020

This paper is a companion to my keynote address at the 9th Computer Science Education Research Conference (CSERC '20). I review the research that led to my three stage neo-Piagetian model of how novices understand code. Code tracing is the key. In the first stage, the novice cannot trace code. In the second stage, the novice has mastered tracing, but, crucially, that is the only skill they have mastered. It is only when novices reach the third stage that they begin to reason about code in a more general, abstract way. The principal failure of traditional approaches to teaching programming has been the assumption that the novices begin at the third stage.

Teaching How to Think Like a Programmer: Emerging Insights

2017

This chapter aims to provide a general description of the preferred pedagogical approaches for the delivery and practice of computer science education based on a review of the literature. Pedagogical approaches mainly used in the teaching of computer science are unplugged activities, robotics program-ming, block-based or initial programming environments and cross-curricular activities. The preference of these pedagogical approaches varies according to the learners’ age and level. Whilst all of these ap-proaches can be used for all ages, some are aimed more at the beginner level than others. The benefits of using each of these approaches will be discussed in this chapter by way of considering educational tips.

Conceptualisation of a learning environment for programming through an analysis of the underlying research issues in teaching programming

CSEIT 2012 conference proceedings, 2012

This paper provides insights into the underlying research on issues in teaching introductory programming at university which gave rise to the conceptualisation of the CABLE model - a learning environment for teaching computer programming trialed at the National University of Samoa over a period of 3 years. The paper describes why students find programming difficult. From analysis of the research, potential solutions are proposed. These solutions form the basis of recommendations for the conceptualization and establishment of a model of a learning environment called CABLE. Findings from the analyses of research on issues in teaching programming are also used as recommendations on methodology and implementation details of the proposed pedagogical model. Keywords-programming; computer programming; CABLE; collaborative learning; cognitive apprenticeship; modelling; metacognition; computer mediated communication I. INTRODUCTION (HEADING I) "Computer science educators have shown growing concern over the difficulties with which novice Computer programmers leam programming principles. Computer programming is a challenging subject area which places a heavy cognitive load on students [I - 3]. Most novice programmers have had little or no previous experience in programming and takes on average 10years for a novice to be proficient in programming [4]. This paper describes why students find programming challenging and then recommends potential solutions from which the proposed pedagogical model CABLE is conceptualized. From these recommendations the components of CABLE are then proposed and put together to formulate the CABLE learning environment. This learning environment was then trialed over a period of 3 years in programming courses at the National University of Samoa. 3rd Annual International Conference on Computer Science Education: Innovation & Technology (CSEIT 2012) Copyright © GSTF 2012 ISSN: 2251-2195 doi: 10.5176/2251-2195_CSEIT12.42 11. ISSUES AND DIFFICULTIES I LEARNING PROGRAMMING A. Cognitive requirements of programming Programming requires students to hold a wide range of information in working memory. These include the details of syntax and semantics specific to the programming language being used, some mental model of how to solve each problem, and the ability to differentiate between solving the problem and specifying the solution [5]. Computer programming also requires that the user be proficient in the use of (a) the development environment, (b) the programming language, and (c) compiler/interpreter, which are separate levels of th

Students’ Misconceptions and Other Difficulties in Introductory Programming

ACM Transactions on Computing Education

Efforts to improve computer science education are underway, and teachers of computer science are challenged in introductory programming courses to help learners develop their understanding of programming and computer science. Identifying and addressing students’ misconceptions is a key part of a computer science teacher's competence. However, relevant research on this topic is not as fully developed in the computer science education field as it is in mathematics and science education. In this article, we first review relevant literature on general definitions of misconceptions and studies about students’ misconceptions and other difficulties in introductory programming. Next, we investigate the factors that contribute to the difficulties. Finally, strategies and tools to address difficulties including misconceptions are discussed. Based on the review of literature, we found that students exhibit various misconceptions and other difficulties in syntactic knowledge, conceptual kno...

Today's learners (of all ages) need a new type of computer science

When you think 'computer science', do you think "bits", "ports", "programming", "cables" and "busses"? May be role plays, diagrams, simulations or models have more appeal! Computer users (of all ages) need a sound understanding of the technology they use, and we need to develop innovative approaches to help them recognise their present understanding and move to more sophisticated and meaningful ones. This presentation draws on the "representational approach" emergent in Science eduacation to explore innovative and enlivening approaches to do just that.

Why Complicate Things? Introducing Programming in High School Using Python

Deciding what to teach novices about programmingand what programming language to use is a commontopic for debate. Should an industry relevantprogramming language be taught, or should a languagedesigned for teaching novices be used? Typically,these questions are raised at university level,but in this paper we address them from a high schoolperspective.

Questioning Two Myths in Computer Science Education

IFIP advances in information and communication technology, 2014

This paper examines two statements regarding computer science as a discipline and its theoretical basis. We shall demonstrate how those statements are questionable and in addition they tend to hide the real root-causes of some significant educational issues. Those statements are very popular in the scientific community and have noteworthy negative effect on the researchers who frequently double their efforts and get around the same problems for years. This work concludes with the claim that experts on computer science education (CSE) should be more attentive to the theoretical aspects of this discipline and should pay more attention to speculative proposals.

Toward a Developmental Epistemology of Computer Programming

Proceedings of the 11th Workshop in Primary and Secondary Computing Education, 2016

This paper was written as a companion to my keynote address at the 11th Workshop in Primary and Secondary Computing Education (WiPSCE 2016). The paper outlines my own research on how novices learn to program. Any reader whose interest has been piqued may pursue furher detail in the papers cited. I begin by explaining my philosophical position. In making that explanation, I do not claim that it is the only right position; on the contrary I allude to other philosophical positions that I regard as complimentary to my own. The academic warfare between these positions is pointless and counterproductive --- all the established positions have something positive to offer. Having established my position, I then go on to argue that the work of Jean Piaget, and subsequent neo-Piagetians, offers useful insight into how children learn to program computers.