Papers by Theodore S . Norvell
The SIMPLE system, under development at Memorial University, allows abstract problem descriptions... more The SIMPLE system, under development at Memorial University, allows abstract problem descriptions to be refined by abstract algorithms. By data refining both the problem and its solution, we can reuse verified algorithms. We use binary search as an example of this method.
Dynamic programming is a recursive approach to solving optimization problems. It works by finding... more Dynamic programming is a recursive approach to solving optimization problems. It works by finding solutions to subproblems and combining those solutions. By storing solutions to solved problems, dynamic programming can be particularly efficient. In this paper we will discuss an approach to solving optimization problems based on specialization of an abstract dynamic programming algorithm. This provides not only reuse of the algorithm, but also reuse of its proof. Application of dynamic programming includes Matrix chain multiplication and Largest black square.
It is all too easy to write unsafe multithreaded Java code, in part because the language's notify... more It is all too easy to write unsafe multithreaded Java code, in part because the language's notify() and wait() methods can be difficult to use correctly. In 1974, Tony Hoare proposed the concept of monitors for designing and reasoning about objects that are shared between multiple threads. The key property of these "Hoare-style" monitors is that threads can wait until some specific assertion about the monitor's state is true and will be guaranteed that the assertion is still true after the thread has been awakened. In this article, I describe a Java class library that supports the monitor concept much as Hoare originally proposed it. As I will demonstrate, object-oriented technology makes it possible to improve on Hoare's concept by making assertions-which are traditionally stated as comments and then repeated in if statements and assert statements-executable objects. This approach reduces redundant coding and automates assertions checking during execution. I'll start by explaining why multithreaded programming is as unavoidable as it is challenging, then introduce you to the use of exclusive access, conditions, and assertions in Hoare-style monitors. See the Resources section to download the Java-based monitors package, which you are free to use.
In 2002, Moldovyan and Moldovyan introduced the CIKS-1 cipher was introduced as a cipher to be ef... more In 2002, Moldovyan and Moldovyan introduced the CIKS-1 cipher was introduced as a cipher to be efficiently implemented in hardware. The cipher was implemented using data-dependant permutations (DDPs) to achieve this efficiency. Unfortunately, due to the bit-wise nature of these permutations they lead to slow implementations of the cipher in software. However, it is common to use software implementations to investigate the security of ciphers. This paper investigates an efficient implementation of CIKS-1 in software using the bitslicing technique presented for use with the Data Encryption Standard by Biham.
We present a new way to implement ordinary programs with logic gates. and a new method of timing ... more We present a new way to implement ordinary programs with logic gates. and a new method of timing within circuits, and a new method of circuit verification. Application-specific circuit design can be done more effectively by using a standard programming language to describe the function that a circuit is intended to perform, rather than by describing a circuit that is intended to perform that function. The circuits are produced automatically; they behave according to the programs, and have the same structure as the programs. For timing we use local delays, rather than a global clock or local handshaking. We give a formal semantics for both programs and circuits in order to prove our circuits correct.
This paper develops the necessary "arithmetic" of relations.
ACM SIGCSE Bulletin, 2006
A demonstration of the integration of a program animation tool into a set of web based notes used... more A demonstration of the integration of a program animation tool into a set of web based notes used by instructors for lecturing and students for studying. Standard, conventionally prepared C++ and Java examples are dynamically incorporated into the class notes and can be interactively run in the animation tool directly from within the notes.
System designers have one goal in common: the system must behave according to the design requirem... more System designers have one goal in common: the system must behave according to the design requirements. Designers need to succinctly specify the behavioural requirements of a system. Peters in [1] proposes a technique for documenting system requirements in which the required system behaviour is described in terms of the environmental quantities that the system is required to observe and control; these are modeled as functions of time. This paper presents OXReq, a tool, based on Xylia [2], for authoring and processing of requirements documents. This tool employs two XMLs [3]: one for storage, analysis, and verification of requirements documents, and another for presentation to and editing by human users. The grammars for these XMLs are defined by document type definitions (DTDs) [3]. Mathematical and tabular expressions are integral parts of requirements documents. OXReq builds on OpenMath [4] for encoding complex mathematical and tabular expressions in XML. Using Xylia, XSLT [3], and a JavaCC generated parser, this tool provides the seamless transition from storage XML to presentation XML and vice versa. The plug-in mechanism of Xylia allows complex tasks to be performed on requirements documents, such as verification of internal consistency, completeness, and other properties of the documents, and generation of oracles.
This paper presents a dynamic semantics for the parallel language HARPO/L, based on Reynolds's gr... more This paper presents a dynamic semantics for the parallel language HARPO/L, based on Reynolds's grainless approach [1]. It shows that the approach scales to somewhat more sophisticated languages with few changes, while providing a solid semantics for the language, which will be used as a basis for compilation and optimization.
Coarse-Grained Reconfigurable Architectures (CGRAs) have gained currency in recent years due to t... more Coarse-Grained Reconfigurable Architectures (CGRAs) have gained currency in recent years due to their abundant parallelism, high computational intensity and flexibility. CGRAs have been structured for accelerating computation intensive parts like loops that require large amounts of execution time. Loops with conditional branches have multiple execution paths which are difficult to software pipeline. In this paper we review the works done in handling conditional branches of loop. We present the advantages of Predicated Execution and Speculative Execution to exploit the conditional branches of loop onto CGRAs. We suggest some architecture extensions to support conditional branches on CGRAs and future directions of research.
Software pipelining increases a loop's throughput by overlapping the loop's iterations; that is, ... more Software pipelining increases a loop's throughput by overlapping the loop's iterations; that is, by initiating successive iterations before prior iterations complete. A loop contains an inter-iteration dependence if an operation in an iteration of the loop has a direct or indirect dependence upon the same operation from a previous iteration. To software pipeline a loop, a scheduler must handle inter-iteration dependencies, which arise from the loop's non-trivial recurrence circuits. In this paper, we have analyzed the different approaches to solve the inter-iteration dependence in modulo scheduling. By using a dynamic priority scheme, slack scheduling provides a novel integration of recurrence constraints and critical-path considerations. We propose a method using dynamic priority scheme along with recurrence-aware modulo scheduling to map inter-iteration dependencies onto Coarse Grained Reconfigurable Architectures (CGRAs), which support abundant parallelism found in loops. The proposed method will be used in scientific benchmarks to analyze its performance.
This paper presents an overview of the Xylia software library, this library is being designed for... more This paper presents an overview of the Xylia software library, this library is being designed for the development of user friendly visual editors for the eXtensible Markup Language (XML)[1]. XML is a standard for markup languages. Each language conforming to XML is similar in structure to HTML, but has its own set of permissible tags, and rules about how they may relate. XML is designed to store structured data in a standardized, cross-platform, textual format. The Java programming language and the Swing toolkit from Sun Microsystems [2] are being used to build the library, which is suitable for application developers who wish to create simple, easy to use, robust editors for specific XML languages. Since both technologies are intended to promote cross-platform and cross-application interoperability, they are a good match for each other.
In 2002, Moldovyan and Moldovyan introduced a cipher with security based mainly on data-dependent... more In 2002, Moldovyan and Moldovyan introduced a cipher with security based mainly on data-dependent permutations (DDPs) called CIKS-1. The goal of the cipher was to exploit the speed and simplicity of DDPs to create a fast hardware-oriented block cipher. In the original paper, the authors claimed that the cipher is immune to differential cryptanalysis. This paper investigates the propagation of differentials through the cipher. An attack is then presented to reveal the last subkey of the cipher with a data complexity better than previously claimed.
A for-loop is somewhat similar to an inductive argument. Just as the truth of a proposition P(n +... more A for-loop is somewhat similar to an inductive argument. Just as the truth of a proposition P(n + 1) depends on the truth of P(n), the correctness of iteration n+1 of a for-loop depends on iteration n having been completed correctly. This paper presents the induce-construct, a new programming construct based on the form of inductive arguments. It is more expressive than the for-loop yet less expressive than the while-loop. Like the for-loop, it is always terminating. Unlike the for-loop, it allows the convenient and concise expression of many algorithms. The for-loop traverses a set of consecutive natural numbers, the induce-construct generalizes to other data types. The induce-construct is presented in two forms, one for imperative languages and one for functional languages. The expressive power of languages in which this is the only recursion construct is greater than primitive recursion, namely it is the multiply recursive functions in the rst order case and the set of functions expressible in G odel's system T in the general case. 0 Data Types We consider languages in which some of the data types are de ned by recursion as in Hoare's`Recursive Data Types' 8] or the language ML. The example in this paper use the following (polymorphic) types. tree 2() = empty j node(; tree 2(); tree 2()) list() = nil j :list() tree n() = empty j node(; list(tree n())) natural = 0 j natural 0 This article was processed using the L a T E X macro package with LLNCS style View publication stats View publication stats
Mobile robots have the potential to be very useful within healthcare environments such as hospita... more Mobile robots have the potential to be very useful within healthcare environments such as hospitals and care homes. Operating semi-autonomously, mobile robots may be used as intelligent mobility aids, navigation systems, or delivery vehicles. A typical scenario envisioned is that of a patient pressing a bedside button to request an associative robotic device. The robot would then navigate to the
As software systems evolve, errors sometimes sneak in; software that has been tested on certain i... more As software systems evolve, errors sometimes sneak in; software that has been tested on certain inputs may fail to work on those same inputs in the future. Regression testing aims to detect these errors by comparing present behaviour with past behaviour. JSnoopy automates the processes of capturing behaviour across one or more interfaces, of replaying the calls to those interfaces, and of comparing the current behaviour to previously captured behaviour. JSnoopy uses Java's reßection capabilities, so that instrumenting an existing interface requires only replacing a single line of code.
Uploads
Papers by Theodore S . Norvell