1,098 research outputs found
Introductory programming: a systematic literature review
As computing becomes a mainstream discipline embedded in the school curriculum and acts as an enabler for an increasing range of academic disciplines in higher education, the literature on introductory programming is growing. Although there have been several reviews that focus on specific aspects of introductory programming, there has been no broad overview of the literature exploring recent trends across the breadth of introductory programming.
This paper is the report of an ITiCSE working group that conducted a systematic review in order to gain an overview of the introductory programming literature. Partitioning the literature into papers addressing the student, teaching, the curriculum, and assessment, we explore trends, highlight advances in knowledge over the past 15 years, and indicate possible directions for future research
Effects of sequencing computer-based instruction and lecture in learning function concepts of C programming language
This study investigated the effectiveness of a computer-based lesson used before versus after formal lecture and examined students\u27 difficulties in learning the function concepts of the C programming language. The subjects were fifteen university students who were randomly assigned to two treatment groups that received different instructional sequences. The subjects completed questionnaires, a pretest, the computer-based lesson and a posttest. During the experiment, students\u27 learning processes were observed, their program errors were recorded by the computer system, and some students\u27 reactions were video-taped;Results showed that students\u27 posttest scores were not significantly affected by whether the computer-based lesson was presented before or after the formal lecture. The study reported students\u27 difficulties in syntax, semantics, design and debugging of C programs on the function topics. Recommendations for programming instruction, such as providing appropriate examples, teaching design and debugging strategies and developing a notional machine , were discussed. Use of a team approach, interviews of students, use of think-aloud and investigations of students\u27 preferences were also made for future research
How can the teaching of programming be used to enhance computational thinking skills?
The use of the term computational thinking, introduced in 2006 by Jeanette Wing, is having repercussions in the field of education. The term brings into sharp focus the concept of thinking about problems in a way that can lead to solutions that may be implemented in a computing device. Implementation of these solutions may involve the use of programming languages.This study explores ways in which programming can be employed as a tool to teach computational thinking and problem solving. Data is collected from teachers, academics, and professionals, purposively selected because of their knowledge of the topics of problem solving, computational thinking, or the teaching of programming. This data is analysed following a grounded theory approach. A Computational Thinking Taxonomy is developed. The relationships between cognitive processes, the pedagogy of programming, and the perceived levels of difficulty of computational thinking skills are illustrated by a model.Specifically, a definition for computational thinking is presented. The skills identified are mapped to Bloom’s Taxonomy: Cognitive Domain. This mapping concentrates computational skills at the application, analysis, synthesis, and evaluation levels. Analysis of the data indicates that the less difficult computational thinking skills for beginner programmers are generalisation, evaluation, and algorithm design. Abstraction of functionality is less difficult than abstraction of data, but both are perceived as difficult. The most difficult computational thinking skill is reported as decomposition. This ordering of difficulty for learners is a reversal of the cognitive complexity predicted by Bloom’s model. The plausibility of this inconsistency is explored.The taxonomy, model, and the other results of this study may be used by educators to focus learning onto the computational thinking skills acquired by the learners, while using programming as a tool. They may also be employed in the design of curriculum subjects, such as ICT, computing, or computer science
A study of novice programmer performance and programming pedagogy.
Identifying and mitigating the difficulties experienced by novice programmers is an active
area of research that has embraced a number of research areas. The aim of this research
was to perform a holistic study into the causes of poor performance in novice
programmers and to develop teaching approaches to mitigate them. A grounded action
methodology was adopted to enable the primary concepts of programming cognitive
psychology and their relationships to be established, in a systematic and formal manner.
To further investigate novice programmer behaviour, two sub-studies were conducted
into programming performance and ability.
The first sub-study was a novel application of the FP-Tree algorithm to determine if
novice programmers demonstrated predictable patterns of behaviour. This was the first
study to data mine programming behavioural characteristics rather than the learner’s
background information such as age and gender. Using the algorithm, patterns of
behaviour were generated and associated with the students’ ability. No patterns of
behaviour were identified and it was not possible to predict student results using this
method. This suggests that novice programmers demonstrate no set patterns of
programming behaviour that can be used determine their ability, although problem
solving was found to be an important characteristic. Therefore, there was no evidence
that performance could be improved by adopting pedagogies to promote simple changes
in programming behaviour beyond the provision of specific problem solving instruction.
A second sub-study was conducted using Raven’s Matrices which determined that
cognitive psychology, specifically working memory, played an important role in novice
programmer ability. The implication was that programming pedagogies must take into
consideration the cognitive psychology of programming and the cognitive load imposed
on learners.
Abstracted Construct Instruction was developed based on these findings and forms a new
pedagogy for teaching programming that promotes the recall of abstract patterns while
reducing the cognitive demands associated with developing code. Cognitive load is
determined by the student’s ability to ignore irrelevant surface features of the written
problem and to cross-reference between the problem domain and their mental program
model. The former is dealt with by producing tersely written exercises to eliminate
distractors, while for the latter the teaching of problem solving should be delayed until
the student’s program model is formed. While this does delay the development of
problem solving skills, the problem solving abilities of students taught using this pedagogy
were found to be comparable with students taught using a more traditional approach.
Furthermore, monitoring students’ understanding of these patterns enabled micromanagement of the learning process, and hence explanations were provided for novice
behaviour such as difficulties using arrays, inert knowledge and “code thrashing”.
For teaching more complex problem solving, scaffolding of practice was investigated
through a program framework that could be developed in stages by the students.
However, personalising the level of scaffolding required was complicated and found to be
difficult to achieve in practice.
In both cases, these new teaching approaches evolved as part of a grounded theory study
and a clear progression of teaching practice was demonstrated with appropriate
evaluation at each stage in accordance with action researc
Purpose-first Programming: A Programming Learning Approach for Learners Who Care Most About What Code Achieves
Introductory programming courses typically focus on building generalizable programming knowledge by focusing on a language’s syntax and semantics. Assignments often involve “code tracing” problems, where students perform close tracking of code’s execution, typically in the context of ‘toy’ problems. “Reading-first” approaches propose that code tracing should be taught early to novice programmers, even before they have the opportunity to write code.
However, many learners do not perform code tracing, even in situations when it is helpful for other students. To learn more, I talked to novice programmers about their decisions to trace and not trace code. Through these studies, I identified both cognitive and affective factors related to learners’ motivation to trace. My research found that tracing activities can create a “perfect storm” for discouraging learners from completing them: they require high cognitive load, leading to a low expectation of success, while also being disconnected from meaningful code, resulting in low value for the task.
These findings suggest that a new learning approach, where novices quickly and easily create or understand useful code without the need for deep knowledge of semantics, may lead to higher engagement. Many learners may not care about exactly how a programming language works, but they do care about what code can achieve for them.
I drew on cognitive science and theories of motivation to describe a “purpose-first” programming pedagogy that supports novices in learning common code patterns in a particular domain. I developed a proof-of-concept ”purpose-first” programming curriculum using this method and evaluated it with non-major novice programmers who had a variety of future goals.
Participants were able to complete scaffolded code writing, debugging, and explanation activities in a new domain (web scraping with BeautifulSoup) after a half hour of instruction. An analysis of the participants’ thinkalouds provided evidence the learners were thinking in terms of the patterns and goals that they learned with in the purpose-first curriculum.
Overall, I found that these novices were motivated to continue learning with purpose-first programming. I found that these novices felt successful during purpose-first programming because they could understand and complete tasks. Novices perceived a lower cognitive load on purpose-first programming activities than many other typical learning activities, because, in their view, plans helped them apply knowledge and focus only on the most relevant information. Participants felt that what they were learning was applicable, and that the curriculum provided conceptual, high-level knowledge. For some participants, particularly conversational programmers who didn’t plan to program in their careers, this information was sufficient for their needs. Other participants felt that purpose-first programming was a starting point, from which they could move forward to gain a deeper understanding of how code works.PHDInformationUniversity of Michigan, Horace H. Rackham School of Graduate Studieshttp://deepblue.lib.umich.edu/bitstream/2027.42/167912/1/kicunn_1.pd
Recommended from our members
Towards a mood sensitive integrated development environment to enhance the performance of programmers
This thesis was submitted for the degree of Doctor of Philosophy and awarded by Brunel University.The aim of the research was to analyze the possibility of developing an Integrated Development Environment (IDE) that could improve a programmer‘s performance by considering their current mood. Various experiments were conducted to study this idea. However, the impact of moods on programmer performance was initially examined in the literature. Based on this, a Cognitive Programming Task Model (CPTM) was developed showing that various cognitive functions and programming activities are interrelated. A second model derived from the literature, the Cognitive Mood Model (CMM), suggested that moods are also interrelated with various cognitive functions. Combining these two models indirectly suggests a relation between moods and programming tasks, which was presented as the Mood Programming Model (MPM). As direct empirical support was lacking for this relation, two experiments were conducted to study the effect mood could have on performance in a debug task. Validated mood-inducing movie clips were used to induce specific moods along two-mood dimensions: valence and arousal. The first study was conducted online. The results showed that arousal is a significant factor when considering programmer performance whereas valence was found to have no significant effect. The second study was a continuation study to validate the findings from the first study within lab conditions. The results were not able to confirm the findings of the first experiment. The reasons for these findings were explained accordingly.
As mood was found to have an effect on a programmer‘s coding and debugging performance, this factor might be considered when developing a support system. The next step in the research was therefore to consider mood measuring in a non-interruptive way. The next two experiments were based around the hypothesis that ―moods can be measured from the keyboard and mouse interaction of the computer user‖. In the first experiment an application was installed on participants‘ computers to record their key presses and mouse clicks in a log file. Their self reported moods in intervals of 20 minutes were also stored in the same file over an average period of eight days. Correlations between participants‘ self reported moods and their keyboard and mouse use revealed that it might be possible to measure moods of the some of the participants. The second experiment took place in the lab, where participants were asked to perform programming like tasks while listening to
ii
mood inducing background music. Their moods were measured with a Galvanic Skin Response (GSR) meter whereas key presses and mouse clicks again were recorded in log files. The correlations between GSR measurements and keyboard and mouse interaction validated the findings of the experiment in the field that it might be possible to measure the mood of some users from their computer use. Analyzing participants‘ personality traits showed dutifulness and self discipline as indicators that a person‘s mood correlates with his/her interaction behaviour. Considering that mood has an effect on programmer performance and that it might be possible to measure mood in a non-intrusive manner, the last question to focus on was whether a computer-generated intervention could change a programmer‘s mood and consequently improve their performance. In the final experiment programmers had to dry run algorithms for 16 minutes with the expectation that a level of boredom would set in. After this the video clip instructed them to participate in some physical exercises. Participants continued tracing algorithms for 8 minutes after the intervention. Results showed that the mood change after the intervention coincided with a programmers improved ability to provide the correct output of the algorithms. Together these findings lay the foundation for developing an IDE that can measure the programmer mood in a non-intrusive way and make effective interventions to improve programmer performance
Comparison of training hard copy and computer job-aids: using expert object technology
The purpose of this study was to develop a computer job-aid for industrial trainers from a hard copy version using an object-based expert-system, and to test the effectiveness of the resulting training process against the traditional paper version. The objectives allowed for this development, pilot-testing of the expert computer job-aid, and comparison of the computer job-aid for: (a.) content understanding and use, (b.) completion time, and (c.) participants\u27 satisfaction.
Computer programming methods allow flow chart, and procedural development in the object paradigm. These methods closely resemble problem solving methods used for diagnostics and traditional job-aids. Training methods also allow for the use of holistic computer methods together with traditional training development. Logically, if the two methods are similar then the results of the application should be similar.
A posttest only quasi-experimental design was used to compare results of the posttest to the objectives to demonstrate effectiveness of the two methods of training. Two groups of 12 professional persons were taken from industry in North East Tennessee. Twelve took the traditional paper instruction and 12 took the expert computer job-aid. The results indicate that both methods worked equally well. Neither method had an advantage. The paper method took less time to administer and the computer method was better perceived by the user
The Stained Glass of Knowledge: On Understanding Novice Mental Models of Computing
Learning to program can be a novel experience. The rigidity of programming can be at odds with beginning programmer\u27s existing perceptions, and the concepts can feel entirely unfamiliar. These observations motivated this research, which explores two major questions: What factors influence how novices learn programming? and How can analogy by more appropriately leveraged in programming education?
This dissertation investigates the factors influencing novice programming through multiple methods. The CS1 classroom is observed as a whole system , with consideration to the factors present in it that can influence the learning process. Learning\u27s cognitive processes are elaborated to ground exploration into specifically learning programming. This includes extensive literature review spanning multiple disciplines. This allows positioning to guide the investigation. The literature survey also contributes to greater understanding of learning cognition within computing education research through its disciplinary depth.
The focus on analogy with the second question is motivated through the factors observed in the first question. Analogy\u27s role in cognition and in education is observed, and the analogical inclinations of technology as a field are showcased. Stigma surrounds the use of analogy in computer science education in spite of these indications. This motivated investigation on how the use of analogy could be better addressed in programming education in order to utilize its value. This research presents a tool for the design of well-formed analogy in programming to answer this question. It also investigates additional forms analogy can take in the classroom setting, proposing relevant cultural forms such as memes can be analogical vehicles that promote learner engagement.
This research presents a strong case for the value of analogy use in the CS1 classroom, and provides a tool to facilitate the design of well-formed analogies. In identifying ways to better leverage analogy in the programming classroom, presenting this research will hopefully contribute to dispelling analogy\u27s bad reputation in computing education.
By exploring factors that contribute to the learning process in CS1, this research frames education design as experience design. This motivates methods and considerations from user experience design, and investigates aspects of the whole system that can promote or deter a learner\u27s experience.
This dissertation presents findings on understanding the learner\u27s experience in the programming classroom, and how analogy can be used to benefit their learning process
The Effectiveness of Aural Instructions with Visualisations in E-Learning Environments
Based on Mayer’s (2001) model for more effective learning by exploiting the brain’s dual sensory channels for information processing, this research investigates the effectiveness of using aural instructions together with visualisation in teaching the difficult concepts of data structures to novice computer science students. A small number of previous studies have examined the use of audio and visualisation in teaching and learning environments but none has explored the integration of both technologies in teaching data structures programming to reduce the cognitive load on learners’ working memory.
A prototype learning tool, known as the Data Structure Learning (DSL) tool, was developed and used first in a short mini study that showed that, used together with visualisations of algorithms, aural instructions produced faster student response times than did textual instructions. This result suggested that the additional use of the auditory sensory channel did indeed reduce the cognitive load.
The tool was then used in a second, longitudinal, study over two academic terms in which students studying the Data Structures module were offered the opportunity to use the DSL approach with either aural or textual instructions. Their use of the approach was recorded by the DSL system and feedback was invited at the end of every visualisation task.
The collected data showed that the tool was used extensively by the students. A comparison of the students’ DSL use with their end-of-year assessment marks revealed that academically weaker students had tended to use the tool most. This suggests that less able students are keen to use any useful and available instrument to aid their understanding, especially of difficult concepts.
Both the quantitative data provided by the automatic recording of DSL use and an end-of-study questionnaire showed appreciation by students of the help the tool had provided and enthusiasm for its future use and development. These findings were supported by qualitative data provided by student written feedback at the end of each task, by interviews at the end of the experiment and by interest from the lecturer in integrating use of the tool with the teaching of the module. A variety of suggestions are made for further work and development of the DSL tool. Further research using a control group and/or pre and post tests would be particularly useful
- …