4 research outputs found

    A cognitive study of learning to program in introductory programming courses.

    Get PDF
    Programming is notoriously hard for novices to learn and a substantial number of learners fail in introduction to programming courses. It is not just a UK problem: a number of multi-institutional and multi-national studies reveal that the problem is well-known and is widespread. There is no general agreement about the causes or the remedies. The major factors which can be hypothesised as a cause of this phenomenon are: learners' psychology; teaching methods; complexity of programming. In this study, learners' common mistakes, bugs, misconceptions, frequencies and type of errors (syntactic and semantic) in the early stages of learning programming were studied. Noticing the patterns of rationales behind novices' mistakes swayed the study toward investigating novices' mental ability which was found to have a great effect on their learning performance. It was observed that novices reported a recognisable set of models of program execution each of which was logically acceptable as a possible answer and it appeared that some students even used these models systematically. It was suspected that the intellectual strategies behind their reasoning could have been built up from their programming background knowledge and it was surprising when it was found that some of those novices had not even seen a program before. A diagnostic questionnaire was designed that apparently examined a student's understanding of assignments and sequence but in fact was capturing the reasoning strategy behind their interpretation of each question, regardless of a correct or wrong answer. The questionnaire was administered in the first week of an introductory programming course, without giving any explanation of what the questions were about. A full response from most participants was received, despite the fact that the questions were unexplained. Confronted with a simple program, about half of novices seem to spontaneously invent and consistently apply a mental model of program execution. They were called the consistent subgroup. The other half are either unable to build a model or to apply one consistently. They were called the inconsistent subgroup. The first group perform very much better in their end-of-course examination than the rest. Meta-analysis of the results of six experiments in UK and Australia confirmed a strong effect of consistency on success which is highly significant (p < 0:001). A strong eect persisted in every group of candidates, sliced by background factors of programming experience (with/ without), relevant programming experience(with/without), and prior programming course (with/without) which might be thought to have had an effect on success. This result confirms that consistency is not simply provided by prior programming background. Despite the tendency in institutions to rely on students' prior programming background as a positive predictor for success, this study revealed that prior programming education did not have a noticeable eect on novices' success. A weak positive eect of prior programming experience was observed overall which appeared to be driven by one experiment with a programming-skilful population. This study shows that students in the consistent subgroup have the ability to build a mental model, something that follows rules like a mechanical construct. It also seems that when programming skill is measured by a weak assessment mechanism, the eect of consistency on success is reduced

    Code Puzzle Completion Problems in Support of Learning Programming Independently

    Get PDF
    Middle school children often lack access to formal educational opportunities to learn computer programming. One way to help these children may be to provide tools that enable them to learn programming on their own independently. However, in order for these tools to be effective they must help learners acquire programming knowledge and also be motivating in independent contexts. I explore the design space of using motivating code puzzles with a method known to support independent learning: completion problems. Through this exploration, I developed code puzzle completion problems and an introductory curriculum introducing novice programmers to basic programming constructs. Through several evaluations, I demonstrate that code puzzle completion problems can motivate learners to acquire new programming knowledge independently. Specifically, I found that code puzzle completion problems are more effective and efficient for learning programming constructs independently compared to tutorials. Puzzle users performed 33% better on transfer tasks compared to tutorial users, while taking 21% less time to complete the learning materials. Additionally, I present evidence that children are motivated to choose to use the code puzzles because they find the experience enjoyable, challenging, and valuable towards developing their programming skills. Given the choice between using tutorials and puzzles, only 10% of participants opted to use more tutorials than puzzles. Further, 80% of participants also stated a preference towards the puzzles because they simply enjoyed the experience of using puzzles more than the tutorials. The results suggest that code puzzle completion problems are a promising approach for motivating and supporting independent learning of programming

    An integrated environment for problem solving and program development

    Get PDF
    A framework for an integrated problem solving and program development environment that addresses the needs of students learning programming is proposed. Several objectives have been accomplished: defining the tasks required for program development and a literature review to determine the actual difficulties involved in learning those tasks. A comprehensive Study of environments and tools developed to support the learning of problem solving and programming was then performed, covering programming environments, debugging aids, intelligent tutoring systems, and intelligent programming environments. This was followed by a careful analysis and critique of these systems, which uncovered the limitations that have prevented them from accomplishing their goals. Next, an extensive study of problem solving methodologies developed in this century was carried out and a common model for problem solving was produced. The tasks of program development were then integrated with the common model for problem solving. Then, the cognitive activities required for problem solving and program development were identified and also integrated with the common model to form a Dual Common Model for problem Solving and Program Development. This dual common model was then used to define the functional specifications for a problem solving and program development environment which was designed, implemented, tested, and integrated into the curriculum. The development of the new environment for learning problem solving and programming was followed by the planning of a cognitively oriented assessment method and the development of related instruments to evaluate the process and the product of problem solving. A detailed statistical experiment to study the effect of this environment on students\u27 problem solving and program development skills, including system testing by protocol analysis, and performance evaluation of students based on research hypotheses and questions, was also designed, implemented and the result reported

    A generic architecture for interactive intelligent tutoring systems

    Get PDF
    This thesis was submitted for the degree of Doctor of Philosophy and awarded by Brunel University, 07/06/2001.This research is focused on developing a generic intelligent architecture for an interactive tutoring system. A review of the literature in the areas of instructional theories, cognitive and social views of learning, intelligent tutoring systems development methodologies, and knowledge representation methods was conducted. As a result, a generic ITS development architecture (GeNisa) has been proposed, which combines the features of knowledge base systems (KBS) with object-oriented methodology. The GeNisa architecture consists of the following components: a tutorial events communication module, which encapsulates the interactive processes and other independent computations between different components; a software design toolkit; and an autonomous knowledge acquisition from a probabilistic knowledge base. A graphical application development environment includes tools to support application development, and learning environments and which use a case scenario as a basis for instruction. The generic architecture is designed to support client-side execution in a Web browser environment, and further testing will show that it can disseminate applications over the World Wide Web. Such an architecture can be adapted to different teaching styles and domains, and reusing instructional materials automatically can reduce the effort of the courseware developer (hence cost and time) in authoring new materials. GeNisa was implemented using Java scripts, and subsequently evaluated at various commercial and academic organisations. Parameters chosen for the evaluation include quality of courseware, relevancy of case scenarios, portability to other platforms, ease of use, content, user-friendliness, screen display, clarity, topic interest, and overall satisfaction with GeNisa. In general, the evaluation focused on the novel characteristics and performances of the GeNisa architecture in comparison with other ITS and the results obtained are discussed and analysed. On the basis of the experience gained during the literature research and GeNisa development and evaluation. a generic methodology for ITS development is proposed as well as the requirements for the further development of ITS tools. Finally, conclusions are drawn and areas for further research are identified
    corecore