937,330 research outputs found
Document number: N4024 Date: 2014-05-22 Project:
Reply-to: Nat Goodspeed ( nat at lindenlab dot com) Oliver Kowalke (oliver dot kowalke at gmail dot com) Distinguishing coroutines and fiber
Does choice of programming language affect student understanding of programming concepts in a first year engineering course?
Most undergraduate engineering curricula include computer programming to some degree,introducing a structured language such as C, or a computational system such as MATLAB, or both. Many of these curricula include programming in first year engineering courses, integrating the solution of simple engineering problems with an introduction to programming concepts. In line with this practice, Roger Williams University has included an introduction to programming as a part of the first year engineering curriculum for many years. However, recent industry and pedagogical trends have motivated the switch from a structured language (VBA) to a computational system (MATLAB). As a part of the pilot run of this change,the course instructors felt that it would be worthwhile to verify that changing the programming language did not negatively affect students’ ability to understand key programming concepts. In particular it was appropriate to explore students’ ability to translate word problems into computer programs containing inputs, decision statements, computational processes, and outputs. To test the hypothesis that programming language does not affect students’ ability to understand programming concepts, students from consecutive years were given the same homework assignment, with the first cohort using VBA and the second using MATLAB to solve the assignment. A rubric was developed which allowed the investigators to rate assignments independent of programming language. Results from this study indicate that there is not a significant impact of the change in programming language. These results suggest that the choice of programming language likely does not matter for student understanding of programming concepts. Course instructors should feel free to select programming language based on other factors, such as market demand, cost, or the availability of pedagogical resources
Open Programming Language Interpreters
Context: This paper presents the concept of open programming language
interpreters and the implementation of a framework-level metaobject protocol
(MOP) to support them. Inquiry: We address the problem of dynamic interpreter
adaptation to tailor the interpreter's behavior on the task to be solved and to
introduce new features to fulfill unforeseen requirements. Many languages
provide a MOP that to some degree supports reflection. However, MOPs are
typically language-specific, their reflective functionality is often
restricted, and the adaptation and application logic are often mixed which
hardens the understanding and maintenance of the source code. Our system
overcomes these limitations. Approach: We designed and implemented a system to
support open programming language interpreters. The prototype implementation is
integrated in the Neverlang framework. The system exposes the structure,
behavior and the runtime state of any Neverlang-based interpreter with the
ability to modify it. Knowledge: Our system provides a complete control over
interpreter's structure, behavior and its runtime state. The approach is
applicable to every Neverlang-based interpreter. Adaptation code can
potentially be reused across different language implementations. Grounding:
Having a prototype implementation we focused on feasibility evaluation. The
paper shows that our approach well addresses problems commonly found in the
research literature. We have a demonstrative video and examples that illustrate
our approach on dynamic software adaptation, aspect-oriented programming,
debugging and context-aware interpreters. Importance: To our knowledge, our
paper presents the first reflective approach targeting a general framework for
language development. Our system provides full reflective support for free to
any Neverlang-based interpreter. We are not aware of any prior application of
open implementations to programming language interpreters in the sense defined
in this paper. Rather than substituting other approaches, we believe our system
can be used as a complementary technique in situations where other approaches
present serious limitations
Programming Language Features for Refinement
Algorithmic and data refinement are well studied topics that provide a
mathematically rigorous approach to gradually introducing details in the
implementation of software. Program refinements are performed in the context of
some programming language, but mainstream languages lack features for recording
the sequence of refinement steps in the program text. To experiment with the
combination of refinement, automated verification, and language design,
refinement features have been added to the verification-aware programming
language Dafny. This paper describes those features and reflects on some
initial usage thereof.Comment: In Proceedings Refine'15, arXiv:1606.0134
- …
