18,026 research outputs found
Syntactic Complexity Metrics and the Readability of Programs in a Functional Computer Language
This article reports on the defintion and the measutement of the software complexity metrics of Halstead and McCabe for programs written in the functional programming language Miranda. An automated measurement of these metrics is described. In a case study, the correlation is established between the complexity metrics and the expert assessment of the readability of programs in Miranda, and compared with those for programs in Pascal
Teaching Programming and Design-by-Contract
This paper summarizes the experience of teaching an introductory course to
programming by using a correctness by construction approach at Innopolis
University, Russian Federation. In this paper we claim that division in
beginner and advanced groups improves the learning outcomes, present the
discussion and the data that support the claim.Comment: 21th International Conference on Interactive Collaborative Learnin
Recommended from our members
An Empirical Study of the Effectiveness of 'Forcing Diversity' Based on a Large Population of Diverse Programs
Use of diverse software components is a viable defence against common-mode failures in redundant softwarebased systems. Various forms of "Diversity-Seeking Decisions" (âDSDsâ) can be applied to the process of developing, or procuring, redundant components, to improve the chances of the resulting components not failing on the same demands. An open question is how effective these decisions, and their combinations, are for achieving large enough reliability gains. Using a large population of software programs, we studied experimentally the effectiveness of specific "DSDs" (and their combinations) mandating differences between redundant components. Some of these combinations produced much better improvements in system probability of failure per demand (PFD) than "uncontrolled" diversity did. Yet, our findings suggest that the gains from such "DSDs" vary significantly between them and between the application problems studied. The relationship between DSDs and system PFD is complex and does not allow for simple universal rules
(e.g. "the more diversity the better") to apply
Reviews
Europe In the Round CDâROM, Guildford, Vocational Technologies, 1994
A review of Australasian investigations into problem solving and the novice programmer
This Australasian focused review compares a number of recent studies that have identified difficulties encountered by novices while learning programming and problem solving. These studies have shown that novices are not performing at expected levels and many novices have only a fragile knowledge of programming, which may prevent them from learning and applying problem solving strategies. The review goes on to explore proposals for explicitly incorporating problem solving strategy instruction into introductory programming curricula and assessment, in an attempt to produce improved learning outcomes for novices. Finally, directions suggested by the reviewed studies are gathered and some unanswered questions are raised
An approach for assessing software prototypes
A procedure for evaluating a software prototype is presented. The need to assess the prototype itself arises from the use of prototyping to demonstrate the feasibility of a design or development stategy. The assessment procedure can also be of use in deciding whether to evolve a prototype into a complete system. The procedure consists of identifying evaluations criteria, defining alterative design approaches, and ranking the alternatives according to the criteria
Security Code Smells in Android ICC
Android Inter-Component Communication (ICC) is complex, largely
unconstrained, and hard for developers to understand. As a consequence, ICC is
a common source of security vulnerability in Android apps. To promote secure
programming practices, we have reviewed related research, and identified
avoidable ICC vulnerabilities in Android-run devices and the security code
smells that indicate their presence. We explain the vulnerabilities and their
corresponding smells, and we discuss how they can be eliminated or mitigated
during development. We present a lightweight static analysis tool on top of
Android Lint that analyzes the code under development and provides just-in-time
feedback within the IDE about the presence of such smells in the code.
Moreover, with the help of this tool we study the prevalence of security code
smells in more than 700 open-source apps, and manually inspect around 15% of
the apps to assess the extent to which identifying such smells uncovers ICC
security vulnerabilities.Comment: Accepted on 28 Nov 2018, Empirical Software Engineering Journal
(EMSE), 201
Musical Program Auralisation: Empirical Studies
Program auralisation aims to communicate information about program state, data, and behaviour using audio. We have argued that music offers many advantages as a communication medium [1]. The CAITLIN system [4, 16, 17, 18] was constructed to provide auralisations within a formal structured musical framework. Pilot studies [4, 16] showed that programmers could infer program structure from auralisations alone. A study was conducted using twenty-two novice programmers to assess a) whether novices could understand the musical auralisations and b) whether the musical experience and knowledge of subjects affected their performance. The results show that novices could interpret the auralisations (with accuracy varying across different levels of abstraction) and that musical knowledge had no significant effect on performance. A second experiment was conducted with another twenty-two novice programmers to study the effects of musical program auralisation on debugging tasks. The experiment aimed to determine whether auralisations would lead to higher bug detection rates. The results indicate that, in certain circumstances, musical auralisations can be used to help locate bugs in programs and that musical skill does not affect the ability to make use of the auralisations. In addition, it the experiment showed that subjective workload increased when the musical auralisations were used
Instructional strategies and tactics for the design of introductory computer programming courses in high school
This article offers an examination of instructional strategies and tactics for the design of introductory computer programming courses in high school. We distinguish the Expert, Spiral and Reading approach as groups of instructional strategies that mainly differ in their general design plan to control students' processing load. In order, they emphasize topdown program design, incremental learning, and program modification and amplification. In contrast, tactics are specific design plans that prescribe methods to reach desired learning outcomes under given circumstances. Based on ACT* (Anderson, 1983) and relevant research, we distinguish between declarative and procedural instruction and present six tactics which can be used both to design courses and to evaluate strategies. Three tactics for declarative instruction involve concrete computer models, programming plans and design diagrams; three tactics for procedural instruction involve worked-out examples, practice of basic cognitive skills and task variation. In our evaluation of groups of instructional strategies, the Reading approach has been found to be superior to the Expert and Spiral approaches
KnowledgePro windows: The order of merit?
The producers of KnowledgePro look set with their latest release of KPWIN (KnowledgePro Windows) to fulfil Richard HaleâShaw's prophecy that it will become âone of the most powerful visual development environmentsâ (HaleâShaw 1992). Comparisons are drawn in this paper between the KPWIN family of products and other authoring tools. The conclusion is that KPWIN is worthy of being included in any courseware developer's tool set. Reasons for preferring a tool from the KnowledgePro family of products for courseware development over three main competitors â Authorware, Toolbook and Visual Basic â are explained, and the merits of KPWIN and KPWIN++ (a version that generates C++ code) are examined
- âŠ