10,376 research outputs found
Recommended from our members
Solving linear programs without breaking abstractions
We show that the ellipsoid method for solving linear programs can be implemented in a way that respects the symmetry of the program being solved. That is to say, there is an algorithmic implementation of the method that does not distinguish, or make choices, between variables or constraints in the program unless they are distinguished by properties definable from the program. In particular, we demonstrate that the solvability of linear programs can be expressed in fixed-point logic with counting (FPC) as long as the program is given by a separation oracle that is itself definable in FPC. We use this to show that the size of a maximum matching in a graph is definable in FPC. This settles an open problem first posed by Blass, Gurevich and Shelah [Blass et al. 1999]. On the way to defining a suitable separation oracle for the maximum matching program, we provide FPC formulas defining canonical maximum flows and minimum cuts in undirected capacitated graphs.Research supported by EPSRC grant EP/H026835.This is the author accepted manuscript. The final version is available from ACM via http://dx.doi.org/10.1145/282289
Runtime verification for biochemical programs
The biochemical paradigm is well-suited for modelling autonomous systems and new programming languages are emerging from this approach. However, in order to validate such programs, we need to define precisely their semantics and to provide verification techniques. In this paper, we consider a higher-order biochemical calculus that models the structure of system states and its dynamics thanks to rewriting abstractions, namely rules and strategies. We extend this calculus with a runtime verification technique in order to perform automatic discovery of property satisfaction failure. The property specification language is a subclass of LTL safety and liveness properties
Teaching programming with computational and informational thinking
Computers are the dominant technology of the early 21st century: pretty well all aspects of economic, social and personal life are now unthinkable without them. In turn, computer hardware is controlled by software, that is, codes written in programming languages. Programming, the construction of software, is thus a fundamental activity, in which millions of people are engaged worldwide, and the teaching of programming is long established in international secondary and higher education. Yet, going on 70 years after the first computers were built, there is no well-established pedagogy for teaching programming.
There has certainly been no shortage of approaches. However, these have often been driven by fashion, an enthusiastic amateurism or a wish to follow best industrial practice, which, while appropriate for mature professionals, is poorly suited to novice programmers. Much of the difficulty lies in the very close relationship between problem solving and programming. Once a problem is well characterised it is relatively straightforward to realise a solution in software. However, teaching problem solving is, if anything, less well understood than teaching programming.
Problem solving seems to be a creative, holistic, dialectical, multi-dimensional, iterative process. While there are well established techniques for analysing problems, arbitrary problems cannot be solved by rote, by mechanically applying techniques in some prescribed linear order. Furthermore, historically, approaches to teaching programming have failed to account for this complexity in problem solving, focusing strongly on programming itself and, if at all, only partially and superficially exploring problem solving.
Recently, an integrated approach to problem solving and programming called Computational Thinking (CT) (Wing, 2006) has gained considerable currency. CT has the enormous advantage over prior approaches of strongly emphasising problem solving and of making explicit core techniques. Nonetheless, there is still a tendency to view CT as prescriptive rather than creative, engendering scholastic arguments about the nature and status of CT techniques. Programming at heart is concerned with processing information but many accounts of CT emphasise processing over information rather than seeing then as intimately related.
In this paper, while acknowledging and building on the strengths of CT, I argue that understanding the form and structure of information should be primary in any pedagogy of programming
The Parma Polyhedra Library: Toward a Complete Set of Numerical Abstractions for the Analysis and Verification of Hardware and Software Systems
Since its inception as a student project in 2001, initially just for the
handling (as the name implies) of convex polyhedra, the Parma Polyhedra Library
has been continuously improved and extended by joining scrupulous research on
the theoretical foundations of (possibly non-convex) numerical abstractions to
a total adherence to the best available practices in software development. Even
though it is still not fully mature and functionally complete, the Parma
Polyhedra Library already offers a combination of functionality, reliability,
usability and performance that is not matched by similar, freely available
libraries. In this paper, we present the main features of the current version
of the library, emphasizing those that distinguish it from other similar
libraries and those that are important for applications in the field of
analysis and verification of hardware and software systems.Comment: 38 pages, 2 figures, 3 listings, 3 table
Breaking Dense Structures: Proving Stability of Densely Structured Hybrid Systems
Abstraction and refinement is widely used in software development. Such
techniques are valuable since they allow to handle even more complex systems.
One key point is the ability to decompose a large system into subsystems,
analyze those subsystems and deduce properties of the larger system. As
cyber-physical systems tend to become more and more complex, such techniques
become more appealing.
In 2009, Oehlerking and Theel presented a (de-)composition technique for
hybrid systems. This technique is graph-based and constructs a Lyapunov
function for hybrid systems having a complex discrete state space. The
technique consists of (1) decomposing the underlying graph of the hybrid system
into subgraphs, (2) computing multiple local Lyapunov functions for the
subgraphs, and finally (3) composing the local Lyapunov functions into a
piecewise Lyapunov function. A Lyapunov function can serve multiple purposes,
e.g., it certifies stability or termination of a system or allows to construct
invariant sets, which in turn may be used to certify safety and security.
In this paper, we propose an improvement to the decomposing technique, which
relaxes the graph structure before applying the decomposition technique. Our
relaxation significantly reduces the connectivity of the graph by exploiting
super-dense switching. The relaxation makes the decomposition technique more
efficient on one hand and on the other allows to decompose a wider range of
graph structures.Comment: In Proceedings ESSS 2015, arXiv:1506.0325
Understanding Cognition Across Modalities for the Assessment of Digital Resources
Drawing from the theories of the cognitive process, this paper explores the transmission, retention and transformation of information across oral, written, and digital modes of communication and how these concepts can be used to examine the assessment of digital resource tools. The exploration of interactions across modes of communication is used to gain an understanding of the interaction between the student, digital resource and teacher. Cognitive theory is considered as a basis for the assessment of digital resource tools. Lastly, principles for the assessment of digital resource tools are presented along with how assessment can be incorporated in the educational practice to enhance learning in higher education
- âŚ