132,511 research outputs found
Four approaches to teaching programming
Based on a survey of literature, four different approaches to teaching introductory programming are identified and described. Examples of the practice of each approach are identified representing procedural, visual, and object-oriented programming language paradigms. Each approach is then further analysed, identifying advantages and disadvantages for the student and the teacher. The first approach, code analysis, is analogous to reading before writing, that is, recognising the parts and what they mean. It requires learners to analyse and understand existing code prior to producing their own. An alternative is the building blocks approach, analogous to learning vocabulary, nouns and verbs, before constructing sentences. A third approach is identified as simple units in which learners master solutions to small problems before applying the learned logic to more complex problems. The final approach, full systems, is analogous to learning a foreign language by immersion whereby learners design a solution to a non-trivial problem and the programming concepts and language constructs are introduced only when the solution to the problem requires their application. The conclusion asserts that competency in programming cannot be achieved without mastering each of the approaches, at least to some extent. Use of the approaches in combination could provide novice programmers with the opportunities to acquire a full range of knowledge, understanding, and skills. Several orders for presenting the approaches in the classroom are proposed and analysed reflecting the needs of the learners and teachers. Further research is needed to better understand these and other approaches to teaching programming, not in terms of learner outcomes, but in terms of teachers’ actions and techniques employed to facilitate the construction of new knowledge by the learners. Effective classroom teaching practices could be informed by further investigations into the effect on progression of different toolset choices and combinations of teaching approache
Event Loops as First-Class Values: A Case Study in Pedagogic Language Design
The World model is an existing functional input-output mechanism for
event-driven programming. It is used in numerous popular textbooks and
curricular settings. The World model conflates two different tasks -- the
definition of an event processor and its execution -- into one. This conflation
imposes a significant (even unacceptable) burden on student users in several
educational settings where we have tried to use it, e.g., for teaching physics.
While it was tempting to pile on features to address these issues, we instead
used the Scheme language design dictum of removing weaknesses that made them
seem necessary. By separating the two tasks above, we arrived at a slightly
different primitive, the reactor, as our basis. This only defines the event
processor, and a variety of execution operators dictate how it runs. The new
design enables programmatic control over event-driven programs. This simplifies
reflecting on program behavior, and eliminates many unnecessary curricular
dependencies imposed by the old design. This work has been implemented in the
Pyret programming language. The separation of concerns has enabled new
curricula, such as the Bootstrap:Physics curriculum, to take flight. Thousands
of students use this new mechanism every year. We believe that reducing
impedance mismatches improves their educational experience
Setting the Stage for Community Change: Reflecting on Creative Placemaking Outcomes
As interest in measuring and understanding the impact of arts investments in community development continues to grow, this new study, Setting the Stage for Community Change: Reflecting on Creative Placemaking Outcomes, commissioned by the Levitt Foundation and led by Slover Linett Audience Research, examines how "creative placemaking" interventions build social capital in communities, using permanent outdoor Levitt music venues as case studies. This research offers insights into arts-based strategies to promote social connectivity, a central goal of many creative placemaking efforts, and is a working illustration of what can and can't be learned from different impact measurement approaches
Action semantics in retrospect
This paper is a themed account of the action semantics project, which Peter Mosses has led since the 1980s. It explains his motivations for developing action semantics, the inspirations behind its design, and the foundations of action semantics based on unified algebras. It goes on to outline some applications of action semantics to describe real programming languages, and some efforts to implement programming languages using action semantics directed compiler generation. It concludes by outlining more recent developments and reflecting on the success of the action semantics project
Recommended from our members
Arcadia, a software development environment research project
The research objectives of the Arcadia project are two-fold: discovery and development of environment architecture principles and creation of novel software development tools, particularly powerful analysis tools, which will function within an environment built upon these architectural principles.Work in the architecture area is concerned with providing the framework to support integration while also supporting the often conflicting goal of extensibility. Thus, this area of research is directed toward achieving external integration by providing a consistent, uniform user interface, while still admitting customization and addition of new tools and interface functions. In an effort to also attain internal integration, research is aimed at developing mechanisms for structuring and managing the tools and data objects that populate a software development environment, while facilitating the insertion of new kinds of tools and new classes of objects.The unifying theme of work in the tools area is support for effective analysis at every stage of a software development project. Research is directed toward tools suitable for analyzing pre-implementation descriptions of software, software itself, and towards the production of testing and debugging tools. In many cases, these tools are specifically tailored for applicability to concurrent, distributed, or real-time software systems.The initial focus of Arcadia research is on creating a prototype environment, embodying the architectural principles, which supports Ada1 software development. This prototype environment is itself being developed in Ada.Arcadia is being developed by a consortium of researchers from the University of California at Irvine, the University of Colorado at Boulder, the University of Massachusetts at Amherst, TRW, Incremental Systems Corporation, and The Aerospace Corporation. This paper delineates the research objectives and describes the approaches being taken, the organization of the research endeavor, and current status of the work
Design as conversation with digital materials
This paper explores Donald Schön's concept of design as a conversation with materials, in the context of designing digital systems. It proposes material utterance as a central event in designing. A material utterance is a situated communication act that depends on the particularities of speaker, audience, material and genre.
The paper argues that, if digital designing differs from other forms of designing, then accounts for such differences must be sought by understanding the material properties of digital systems and the genres of practice that surround their use. Perspectives from human-computer interaction (HCI) and the psychology of programming are used to examine how such an understanding might be constructed.</p
An efficient, parametric fixpoint algorithm for analysis of java bytecode
Abstract interpretation has been widely used for the analysis of object-oriented languages and, in particular, Java source and bytecode. However, while most existing work deals with the problem of flnding expressive abstract domains that track accurately the characteristics of a particular concrete property, the underlying flxpoint algorithms have received comparatively less attention. In fact, many existing (abstract interpretation based—) flxpoint algorithms rely on relatively inefHcient techniques for solving inter-procedural caligraphs or are speciflc and tied to particular analyses. We also argüe that the design of an efficient fixpoint algorithm is pivotal to supporting the analysis of large programs. In this paper we introduce a novel algorithm for analysis of Java bytecode which includes a number of optimizations in order to reduce the number of iterations. The algorithm is parametric -in the sense that it is independent of the abstract domain used and it can be applied to different domains as "plug-ins"-, multivariant, and flow-sensitive. Also, is based on a program transformation, prior to the analysis, that results in a highly uniform representation of all the features in the language and therefore simplifies analysis. Detailed descriptions of decompilation solutions are given and discussed with an example. We also provide some performance data from a preliminary implementation of the analysis
- …