36 research outputs found
Postcondition-preserving fusion of postorder tree transformations
Tree transformations are commonly used in applications such as program rewriting in compilers. Using a series of simple transformations to build a more complex system can make the resulting software easier to understand, maintain, and reason about. Fusion strategies for combining such successive tree transformations promote this modularity, whilst mitigating the performance impact from increased numbers of tree traversals. However, it is important to ensure that fused transformations still perform their intended tasks. Existing approaches to fusing tree transformations tend to take an informal approach to soundness, or be too restrictive to consider the kind of transformations needed in a compiler. We use postconditions to define a more useful formal notion of successful fusion, namely postcondition-preserving fusion. We also present criteria that are sufficient to ensure postcondition-preservation and facilitate modular reasoning about the success of fusion
Student engagement in massive open online courses
Completion rates in Massive Open Online Courses (MOOCs) are disturbingly low. Existing analysis has focused on patterns of resource access and prediction of drop-out using learning analytics. In contrast, the effectiveness of teaching programs in traditional Higher Education (HE) settings internationally is increasingly assessed by surveys measuring student engagement. The conceptualisation of engagement used is much richer and more informative than the way the term is currently interpreted in the context of MOOCs. This paper considers MOOC participation, learning and drop-out in the context of this richer conceptualisation of student engagement. MOOC pedagogy and practice are examined and we evaluate how far HE engagement measures can be successfully used in the MOOC context. We identify the need for a MOOC engagement model and suggest recommendations for basic, initial steps which MOOC developers can make towards improving engagement
Exploring societal factors affecting the experience and engagement of first year female computer science undergraduates
Despite computer science (CS) having many women associated with it historically, such as Ada Lovelace and Grace Hopper, the proportion of female students completing computing degrees is steadily declining, particularly in the USA, UK, and several other Western countries. Many initiatives have been attempted to address this gender imbalance, but the majority have proved to be ineffectual and difficult to sustain in the long term. One important step in the notorious shrinking participation pipeline for CS is the first year of a university degree. The transition from school to university can be a difficult time for many students and, for females in CS, issues of readjusting expectations and of developing their identity within a predominantly male cohort may present an additional challenge. In this paper, we analyse data from the North American National Survey of Student Engagement (NSSE) and discuss gender-distinct perceptions of the discipline and factors relating to retention of students, particularly female students, within the context of a small UK survey of first-year students’ expectations at the start of their studies. We suggest several areas emerging from the investigation which have implications for CS curricula and teaching practice
Networking strategies in streptomyces coelicolor
We are interested the soil dwelling bacteria Streptomyces coelicolor because its cells grow end to end in a line. New branches have the potential to extend from any point along this line and the result is a network of branches and connections. This is a novel form of colonisation in the bacterial world and it is advantageous for spreading through an environment resourcefully. Networking protocols for communication technologies have similar pressures to be resourceful in terms of time, computing power, and energy. In this preliminary investigation we design a computer model of the biological system to understand its limitations and strategies for survival. The decentralised capacity for organisation of both the bacterial system and the model reflects well on the now-popular conventions for path finding and ad hoc network building in human technologies. The project will ultimately become a comparison of strategies between nature and the man-made
Spatial simulations of myxobacterial development
Understanding how relatively simple, single cell bacteria can communicate and coordinate their actions is important for explaining how complex multicellular behaviour can emerge without a central controller. Myxobacteria are particularly interesting in this respect because cells undergo multiple phases of coordinated behaviour during their life-cycle. One of the most fascinating and complex phases is the formation of fruiting bodies—large multicellular aggregates of cells formed in response to starvation. In this article we use evidence from the latest experimental data to construct a computational model explaining how cells can form fruiting bodies. Both in our model and in nature, cells move together in dense swarms, which collide to form aggregation centres. In particular, we show that it is possible for aggregates to form spontaneously where previous models require artificially induced aggregates to start the fruiting process
Formal verification of a microcoded VIPER microprocessor using HOL
The Royal Signals and Radar Establishment (RSRE) and members of the Hardware Verification Group at Cambridge University conducted a joint effort to prove the correspondence between the electronic block model and the top level specification of Viper. Unfortunately, the proof became too complex and unmanageable within the given time and funding constraints, and is thus incomplete as of the date of this report. This report describes an independent attempt to use the HOL (Cambridge Higher Order Logic) mechanical verifier to verify Viper. Deriving from recent results in hardware verification research at UC Davis, the approach has been to redesign the electronic block model to make it microcoded and to structure the proof in a series of decreasingly abstract interpreter levels, the lowest being the electronic block level. The highest level is the RSRE Viper instruction set. Owing to the new approach and some results on the proof of generic interpreters as applied to simple microprocessors, this attempt required an effort approximately an order of magnitude less than the previous one
Program transformations using temporal logic side conditions
This paper describes an approach to program optimisation based on transformations, where temporal logic is used to specify side conditions, and strategies are created which expand the repertoire of transformations and provide a suitable level of abstraction. We demonstrate the power of this approach by developing a set of optimisations using our transformation language and showing how the transformations can be converted into a form which makes it easier to apply them, while maintaining trust in the resulting optimising steps. The approach is illustrated through a transformational case study where we apply several optimisations to a small program
Towards the automated correction of bugs
Bugs within Java programs often fall within well-known motifs, usually arising from misunderstood APIs or language features that encourage buggy corner cases. Existing software development tools can detect some of these situations, and integrated development environments may attempt to suggest automated fixes for some of the simple cases. We present a language for specifying program transformations paired with a novel methodology for identifying and fixing bug patterns within Java source code. We propose a combination of source code and bytecode analyses: this allows for using the control flow in the bytecode to help identify the bugs while generating corrected source code. The specification language uses a combination of syntactic rewrite rules and dataflow analysis generated from temporal logic based conditions. We introduce a prototype implementation that allows application of these transformations automatically to programs, and discuss correctness issues within the context of such program transformations. Finally we discuss other possible areas of application for this methodology, including generating refactoring operations from specifications and application to other imperative languages
Program transformations using temporal logic side conditions
This paper describes an approach to program optimisation based on transformations, where temporal logic is used to specify side conditions, and strategies are created which expand the repertoire of transformations and provide a suitable level of abstraction. We demonstrate the power of this approach by developing a set of optimisations using our transformation language and showing how the transformations can be converted into a form which makes it easier to apply them, while maintaining trust in the resulting optimising steps. The approach is illustrated through a transformational case study where we apply several optimisations to a small program