Results 1 - 10
of
11
Learning and teaching programming: A review and discussion
- Computer Science Education
, 2003
"... In this paper we review the literature relating to the psychological/educational study of programming. We identify general trends comparing novice and expert programmers, programming knowledge and strategies, program generation and comprehension, and objectoriented versus procedural programming. (We ..."
Abstract
-
Cited by 54 (2 self)
- Add to MetaCart
In this paper we review the literature relating to the psychological/educational study of programming. We identify general trends comparing novice and expert programmers, programming knowledge and strategies, program generation and comprehension, and objectoriented versus procedural programming. (We do not cover research relating specifically to other programming styles.) The main focus of the review is on novice programming and topics relating to novice teaching and learning. Various problems experienced by novices are identified, including issues relating to basic program design, to algorithmic complexity in certain language features, to the ‘‘fragility’ ’ of novice knowledge, and so on. We summarise this material and suggest some practical implications for teachers. We suggest that a key issue that emerges is the distinction between effective and ineffective novices. What characterises effective novices? Is it possible to identify the specific deficits of ineffective novices and help them to become effective learners of programming? 1.
Cognitive Support in Software Engineering Tools: A Distributed Cognition Framework
, 2002
"... Software development remains mentally challenging despite the continual advancement of training, techniques, and tools. Because completely automating software development is currently impossible, it makes sense to seriously consider how tools can improve the mental activities of developers apart fro ..."
Abstract
-
Cited by 19 (0 self)
- Add to MetaCart
Software development remains mentally challenging despite the continual advancement of training, techniques, and tools. Because completely automating software development is currently impossible, it makes sense to seriously consider how tools can improve the mental activities of developers apart from automating them away. Such mental assistance can be called “cognitive support”. Understanding and developing cognitive support in software engineering tools is an important research issue but, unfortunately, at the moment our theoretical foundations for it are inadequately developed. Furthermore, much of the relevant research has occurred outside of the software engineering community, and is therefore not easily available to the researchers who typically develop software engineering tools. Tool evaluation, comparison, and development are consequently impaired. The present work introduces a theoretical framework intended to seed further systematic study of cognitive support in the field of software engineering tools. This theoretical framework, called RODS, imports ideas and methods from a field of cognitive science called “distributed cognition”. The crucial concept in RODS is that cognitive support can be understood and explained in terms of the computational advantages that are conferred when cognition is redistributed between software developer and their tools and environment. The name RODS, in fact, comes from the
How Programmers Visualize Programs
, 1993
"... How does a programmer see a computer language? What does a program look like? How would a programmer express these visualizations given a set of graphic and animation creation tools? We explore these questions with learners of object-oriented programming. The learners were provided with the tools ..."
Abstract
-
Cited by 11 (3 self)
- Add to MetaCart
How does a programmer see a computer language? What does a program look like? How would a programmer express these visualizations given a set of graphic and animation creation tools? We explore these questions with learners of object-oriented programming. The learners were provided with the tools and wrote programs to animate features of the language C++. We present the results and conclude that: (1) learners use various abstractions when visualizing; (2) a study of programmers' visualizations provides a complementary view to textual-based empirical studies of programmers; (3) programmers frequently represent the same textual programming construct in different visual forms; (4) visualization provides a framework for studying learners' misconceptions; and (5) visualization exercises for learners appear to foster programming skills. 1 Introduction and Background What does a programmer's mental image of a computer language look like? What does a program look like? Of course we are un...
Designing as construction of representations: a dynamic viewpoint in cognitive design research
- Human-Computer Interaction
, 2006
"... This article presents a cognitively oriented viewpoint on design. It focuses on cognitive, dynamic aspects of real design, i.e., the actual cognitive activity implemented by designers during their work on professional design projects. Rather than conceiving designing as problem solving—Simon’s symbo ..."
Abstract
-
Cited by 8 (1 self)
- Add to MetaCart
This article presents a cognitively oriented viewpoint on design. It focuses on cognitive, dynamic aspects of real design, i.e., the actual cognitive activity implemented by designers during their work on professional design projects. Rather than conceiving designing as problem solving—Simon’s symbolic information processing (SIP) ap-proach—or as a reflective practice or some other form of situated activity—the situativity (SIT) approach—we consider that, from a cognitive viewpoint, designing is most appropriately characterised as a construction of representations. After a critical discussion of the SIP and SIT approaches to design, we present our viewpoint. This presentation concerns the evolving nature of representations regarding levels of abstraction and degrees of precision, the function of external representations, and specific qualities of representation in collective design. Designing is described at three levels: the organisation of the activity, its strategies, and its design-representation construction activities (different ways to generate, transform, and evaluate representations). Even if we adopt a “generic design ” stance, we claim that design can take different forms depending on the nature of the artefact, and we propose some candidates for dimensions that allow a distinction to be made between these forms of design. We discuss the potential specificity of HCI design, and the lack
A Meta-Study of Software Visualization Effectiveness
- Journal of Visual Languages and Computing
, 1996
"... this article consolidates all of the meta-studys principal data for easy access. Readers interested in further scrutinizing the numerical counts that are graphed and discussed in Sections 3 and 4 can consult the appendix, which indicates the precise manner in which each of the SV effectiveness stu ..."
Abstract
-
Cited by 6 (3 self)
- Add to MetaCart
this article consolidates all of the meta-studys principal data for easy access. Readers interested in further scrutinizing the numerical counts that are graphed and discussed in Sections 3 and 4 can consult the appendix, which indicates the precise manner in which each of the SV effectiveness studies is classified
My program is correct but it doesnt run: A review of novice programming and a study of an introductory programming paper
, 2001
"... Contents 1.0 Introduction 2.0 Learning to program 2.1 Overview 2.1.1 Experts vs. novices 2.1.2 Knowledge vs. strategies 2.1.3 Comprehension vs. generation 2.1.4 Procedural vs. object--oriented 2.1.5 Other 2.2 Novice programmers 2.2.1 The task 2.2.2 Mental models and processes 2.2.3 Novic ..."
Abstract
-
Cited by 2 (2 self)
- Add to MetaCart
Contents 1.0 Introduction 2.0 Learning to program 2.1 Overview 2.1.1 Experts vs. novices 2.1.2 Knowledge vs. strategies 2.1.3 Comprehension vs. generation 2.1.4 Procedural vs. object--oriented 2.1.5 Other 2.2 Novice programmers 2.2.1 The task 2.2.2 Mental models and processes 2.2.3 Novice capabilities and behavior 2.2.4 Kinds of novice 2.3 Novice learning and teaching in CS1 2.3.1 Goals and progress 2.3.2 Course design and teaching methods 2.3.3 Alternative methods and curricula 2.4 Summary 3.0 A study of an introductory programming paper 3.1 The design of COMP103 3.1.1 Context 3.1.2 Lectures and knowledge 3.1.3 Laboratory sessions and strategy 3.1.4 Summary 3.2 The study 3.2.1 Background 3.2.2 Method 3.3 Results 3.3.1 Lab based problem tallies 3.3.2 Trends 3.3.3 Other observations 4.0 Discussion 4.1 Kinds of novice 4.2 Knowledge, strategies, and effective teaching and learning 4.3 A framework 5.0 Summary References
My Program is Correct But it Doesn't Run: A Preliminary Investigation of Novice Programmers' Problems
- in Proceedings of Australasian Computing Education Conference
, 2005
"... In this paper we describe an ongoing study of novice programmers. The aim is to record (as close as possible to) all of the problems encountered by students during the laboratory sessions of our introductory Java programming class. We discuss the tools and methods employed, in particular presenting ..."
Abstract
-
Cited by 2 (0 self)
- Add to MetaCart
In this paper we describe an ongoing study of novice programmers. The aim is to record (as close as possible to) all of the problems encountered by students during the laboratory sessions of our introductory Java programming class. We discuss the tools and methods employed, in particular presenting the list of problem definitions which is used to classify students' problems. Data collected during 2003 are presented and discussed. The results are consistent with trends noted in the literature, and highlight the significance of both fundamental design issues and the procedural aspects of programming. Different problem distributions are observed for high and low performing students. An analysis of individual lab sessions can be useful for refining course materials and teaching practice.
A methodology for analyzing the temporal evolution of novice programs based on semantic components
- In Proceedings of the 2006 ACM International Computing Education Research Workshop ACM
, 2006
"... Empirical studies of novice programming typically rely on code solutions or test responses as the basis of their analyses. While such data can provide insight into novice programming knowledge, they say little about the programming processes in which novices engage. For those interested in improving ..."
Abstract
-
Cited by 2 (1 self)
- Add to MetaCart
Empirical studies of novice programming typically rely on code solutions or test responses as the basis of their analyses. While such data can provide insight into novice programming knowledge, they say little about the programming processes in which novices engage. For those interested in improving novice programming environments, a key research question arises: How can we collect and analyze data on novice programming that will enable us (a) to analyze and compare the programming processes promoted by alternative novice programming environments, and (b) ultimately to build better novice programming environments? To address this question, we have collected a large video corpus of novices as they construct code solutions in various versions of ALVIS Live! [14], a novice programming environment. Through detailed post-hoc analyses of our video corpus, we have developed a methodology for compiling the moment-by-moment evolution of novice code solutions. Based on an analysis of an ideal code solution’s key semantic components, our methodology enables one to document, on a second-by-second basis, (a) what part of a code solution a programmer is focusing on, and (b) where the semantic feedback provided by the programming environment is helping. Although it is time and labor intensive, our methodology provides researchers with a standard set of data and representations for comparing the programming processes promoted by alternative programming environments.
Cognitive activities in OO development
- International Journal of Human-Computer Studies
, 2001
"... The cognitive activities performed by systems designers during systems development include problem understanding, problem decomposition and solution speci"cation. One aspect of object-oriented (OO) approaches to system design that appeals to many adopting organizations is the purported naturaln ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
The cognitive activities performed by systems designers during systems development include problem understanding, problem decomposition and solution speci"cation. One aspect of object-oriented (OO) approaches to system design that appeals to many adopting organizations is the purported naturalness, i.e. the consistency of OO approaches with these cognitive activities of problem solving. Essentially, OO aims to abstract components of the problem of system development to a high level that parallels problem solving in the world the system represents. In other words, knowing how a problem is solved in the real world informs one about how the OO system solves the problem. Thus, the OO development process and the resulting OO model are believed to be consistent with innate cognitive activities and consistent with the problem/real world, respectively. A cognitive mapping method was used to ask graduate students experienced with OO techniques about their perceptions of what is complex (di$cult to understand) about OO systems. Their responses include a set of concepts, categories of similar concepts and cognitive maps that reveal what they believe is di$cult about using OO techniques. Evaluating these perceptions in terms of the cognitive activities of system design reveals problem decomposition was perceived as the activity that caused the most di$culties related to learning OO techniques. Problem understanding was the goal of the participants, while the solution activity ranked lower in importance but contained many issues essential to systems development and in#uenced problem understanding.
Dynamic Aspects of Design Cognition: Elements for a Cognitive Model of Design
, 2004
"... This text adopts a cognitive viewpoint on design, focusing on individually conducted activities actually implemented in professional, industrial design projects. It presents elements for a cognitive descriptive model of design that, on the one hand, furthers our understanding of design, and on the ..."
Abstract
-
Cited by 1 (1 self)
- Add to MetaCart
This text adopts a cognitive viewpoint on design, focusing on individually conducted activities actually implemented in professional, industrial design projects. It presents elements for a cognitive descriptive model of design that, on the one hand, furthers our understanding of design, and on the other hand, offers elements to people who wish to use such knowledge in order to advance education and practice of professional designers. The text is especially concerned with dynamic aspects of design —that is, it focuses on the activity implemented by designers, especially the cognitive processes and/or strategies they use — rather than with static aspects. Section 1 presents the classical cognitive viewpoint on design, that is, the symbolic information-processing (SIP) approach, represented by Herbert A. Simon. Section 2 focuses on the main alternative to the SIP approach for design, i.e. the "situativity " (SIT) approach, mainly represented by Donald Schön. Section 3 is the main division of this text. It presents nuances and critiques with respect to both SIP and SIT approaches, and completes and integrates these two approaches into our own cognitively oriented dynamic approach to design.

