Miracle-dz/UniFAR-FTUs huggingface dataset:
Typed Memory Management

Programming languages with sound static type systems have significant software engineering advantages over unsafe programming languages. Types can enforce a wide variety of program invariants at compile time, making it possible to catch programmer errors early in the software development cycle. Types can also improve programming language implementations by helping to guide program transformations and optimizations. In typed intermediate languages, such as the Java Virtual Machine Language, types certify crucial safety properties needed to implement secure and reliable software systems. One area where traditional type systems provide little help to programmers is in the specification and enforcement of memory management invariants. In this thesis, I address this problem by developing new type systems with sophisticated mechanisms for checking programs that perform their own memory management. The central goal is to make it possible for programs to control memory resources, as in unsafe languages, and yet retain the software engineering benefits of strong type systems. The central technical novelty of these type systems is the presence of a static capability that can control access to memory resources. Capabilities are instantiated in two ways in this thesis. First, they are instantiated with specifications of individual memory blocks. These capabilities make it possible to allocate, initialize, use and recycle data structures. They also provide a mechanism for controlling and reasoning about pointer aliasing. Second, capabilities are instantiated with vast memory regions (address spaces). This second alternative provides coarser-grained memory management as regions may contain many objects and all such objects are deallocated simultaneously when a region is freed. For each of the resulting capability-based type systems I prove two theorems to quantify their memory management properties. First, I show that the type systems are sound: Well-typed programs never dereference dangling pointers or commit other memory faults at run time. Second, I prove a garbage collection theorem that specifies how effectively well-typed programs recycle memory.
Probabilistic methods for searching ocr-degraded arabic text

Since many Arabic documents are available only in print, automating retrieval from collections of scanned Arabic document images using Optical Character Recognition (OCR) is an important problem. This dissertation addresses retrieval of Arabic document images based on OCR, with emphasis on probabilistic methods to improve retrieval effectiveness. Arabic's rich morphology (word construction) and complex orthography (writing system) present unique challenges for OCR and Information Retrieval (IR) systems. New probabilistic structured query methods that leverage replacement probabilities were developed in this research to improve retrieval effectiveness in OCR degraded text retrieval and their generality has been shown in cross-language information retrieval. For the OCR-degraded text retrieval, the probabilistic structured query methods were applied using the most effective index terms for OCR-degraded text, with replacement probabilities estimated using an OCR degradation model. Overlapping character n-grams and combinations of character n-grams with terms obtained through morphological analysis were found to be the most effective indexing terms for Arabic collections of varying sizes, genres, and degradation levels. For index terms requiring morphological analysis, existing automated Arabic morphological analysis techniques were adapted to make them more suitable for IR applications. Different OCR models were developed to account for the complex Arabic orthography and a group of tests were crafted to verify that modeled and real OCR degradation have similar effects on IR. One of the models was also used to synthetically degrade a large document collection. The techniques presented in this dissertation offer the potential to unlock access to printed documents of Arabic and other languages with similar orthographic characteristics.
A Structural Model of Data Warehousing Success

Data warehousing is an important area of practice and research, yet few studies have assessed its practices in general and critical success factors in particular. Although plenty of guidelines for implementation exist, few have been subjected to empirical testing. Furthermore, no model is available for comparing and evaluating the various claims made in different studies. In order to better understand the critical success factors and their effects on data warehousing success, a research model is developed in this paper. This model is useful for comparing findings across studies and for selecting variables for future research. The model is tested using data collected from a cross sectional survey of data warehousing professionals. Partial Least Square (PLS) is used to validate the structural relations identified in the model. The resulting model has three groups of success factors. Technical factor is found to positively influence information quality, whereas both operational and economic factors have a positive effect on system quality. Structural relations are also found among the dependent variables. System quality positively influences information quality, which in turn positively affects individual benefits. Individual benefits in turn has a positive relation with organizational benefits.
Compilation optimisée des modèles UML

Cette these s'inscrit dans le cadre de la mise en œuvre de l’ingenierie dirigee par les modeles (IDM) pour le developpement des systemes embarquees. Ces systemes ayant generalement des ressources limitees (memoire et/ou calculs), exigent que le code genere soit le plus optimise possible. L’objectif de cette these est de produire a partir d’un modele specifie dans le langage UML, un code assembleur plus compact que le code assembleur produit par les compilateurs de code. Malgre l’evolution croissante des compilateurs optimises, les compilateurs les plus repandus comme le GCC (Gnu Compiler Collection) sont incapables d’effectuer certains types d’optimisations qu'il est possible d'effectuer a un plus haut niveau d'abstraction dans une phase de pre-generation de code. En effet, certaines informations (liees a la semantique d’execution du langage UML) sont perdues lors de la generation de code. Ces informations, utiles pour les optimisations de haut niveau, sont invisibles par le compilateur de code vue qu’il prend toutes les informations liees au systeme modelise a partir du code genere. Nous proposons ainsi une nouvelle approche dirigee par les modeles pour le developpement des systemes a ressources limitees, qui elimine l’etape de la generation de code en remplacant cette etape par une compilation directe des modeles. Nous avons developpe le premier compilateur de modeles UML (GUML : le front-end UML pour le compilateur GCC) qui genere directement de l’assembleur (sans passer par un langage de programmation) a partir des modeles UML. GUML permet de compiler les classes, les activites et les machines a etats UML. Il permet de generer, en compilant certaines machines a etats, un code assembleur plus compact que le code assembleur produit par GCC. Deux optimisations de GCC sont ameliorees : l’elimination de code mort et l’elimination des expressions redondantes.
Dynamically reconfigurable parameterized components

With the size and complexity of software systems growing at a very fast pace, one of the concerns that we have to address is that of tractable reasoning. We need to make sure that the software we build does not exceed the limits of our understanding. Since we only know how to reason about software of limited sizes, we need to find a way of always keeping the logical size of the programs we write small. Software should thus be built from small, well-understood components put together in predictable ways. Parameterization is a technique that can greatly help in building scalable, flexible, and robust software systems. An important consideration with parameterized components is the time of binding parameters to the component; whether a commitment to parameters can be changed or not depends on the binding time. In order to achieve maximum flexibility, parameters should be bound as late as possible. Postponing parameter binding to execution time allows for the selection of parameters to be most effective, because it is at run time that details of a system are most complete. Further, dynamically bound parameterized components also present the possibility for dynamic reconfiguration. In this dissertation, we present a methodology for building dynamically reconfigurable parameterized components. The methodology is presented as a design pattern, with minimal assumptions on the target programming language or environment. The Service Facility design pattern offers a model of parameterized components that supports dynamic binding of parameters. Further, the model supports a mode of dynamic reconfiguration called dynamic module replacement, which involves re-binding of some or all of the parameters to a parameterized component during run time. The model also includes safety conditions to ensure that the dynamic parameter bindings (and re-bindings) are correct with respect to type-safety. The techniques and ideas presented in this dissertation are in the context of well-known and widely-used technologies (such as Java, .NET, and XML) so as to enable these ideas to be inducted into practice quickly. The solutions presented here are generic and incrementally deployable.
A Research on EEG Synchronization of Movement Cognition for Brain Computer Interface

Brain computer interface is the technology of interface for next generation. Recently, user intention has been tried to be recognized for interfacing a computer. EEG plays important role in developing practical application in this area. Much research has focused on extracting EEG commander generated by human movement. ERD/ERS has generally accepted as important EEG parameters for prediction of human movement. However, There has been difference between initial movement indicated by ERD/ERS and real movement. Therefore, this study was to determine the time differences for brain interface by ERD/ERS. Five university students performed ten repetitive movements. ERD/ERS was determined according to movement execution and the significant pattern showed the difference between movement execution and movement indication of ERD/ERS.
Estudio comparativo de tres instrumentos para la toma de muestras citológicas de la cavidad oral: cytobrush, oral CDx y cureta dermatológica

El COCE (carcinoma oral de celulas escamosas) es la sexta neoplasia maligna mas frecuente del mundo. A pesar de todos los avances en el tratamiento del cancer oral combinando cirugias resectivas, quimioterapia y radioterapia, el ratio de supervivencia a los 5 anos es menor del 50%. Todos estos datos justifican la necesidad y el interes de buscar tecnicas de diagnostico que faciliten el diagnostico precoz de estas neoplasias. La citologia exfoliativa es una tecnica no invasiva, muy aceptada por el paciente y de relativa facilidad para llevarla a cabo por parte de los odontologos generales. Concretamente la citologia en base liquida o monocapa facilita al anatomopatologo la interpretacion de las muestras eliminando artefactos y proporciona una mayor nitidez a la preparacion. Por otro lado debido a la aceptacion de que la etiologia del COCE es la consecuencia de la adquisicion de trastornos genomicos celulares que promueven la malignizacion, en las ultimas decadas, la identificacion de marcadores tumorales en citologia del COCE ha recibido un especial interes. En este trabajo de Tesis doctoral se realiza un estudio comparativo de tres instrumentos de citologia exfoliativa diferentes para llevar a cabo, por una parte, estudios citologicos en base liquida y por otra parte, estudios de expresion genetica. Nuestro estudio demuestra que cuando nuestro objetivo en la citologia exfoliativa oral es hacer estudios citomorfologicos en citologia en base liquida no existen diferencias en funcion del instrumento, sin embargo si el objetivo es llevar a cabo estudios de expresion genetica existen diferencias estadisticamente significativas de muestras suficientes o insuficientes en relacion al instrumento utilizado. La probabilidad de conseguir una muestra adecuada con Cureta es 10 veces mayor y con Oral CDx es 4 veces mayor que con Cytobrush.
Multicasting algorithms for mesh and torus networks

Multicasting is an important interprocessor communication pattern existing in various parallel application algorithms. Mesh-connected topology is one of the most thoroughly investigated network topologies for parallel processing. The torus network has been proposed for metropolitan area networks (MAN). It can be divided into several mesh problems. Time and traffic are the main parameters considered in the multicasting communication environment. It is NP-complete in general to find an optimal multicasting algorithm which minimizes both time and traffic. This thesis proposes two kind of multicasting algorithms for torus/mesh networks, the VH algorithm with a time complexity of O(kD), and the DIST algorithm with a time complexity of O(kDN), where k is the number of destination nodes. D is the maximum distance, and N is the total number of nodes in the network. The VH algorithm guarantee that every destination node can receive the message from the source in a minimum multicasting time. The DIST algorithm generates less traffic compared to the VH algorithm, but at the price of an increased multicasting time.
On navigation and analysis of software architecture evolution

Software systems must evolve during their lifetime in response to changing expectations and environments. As the software evolves, the system becomes harder to understand and maintain without the proper knowledge about how the system had changed in the past and the context of those changes. Studying software evolution has been extraordinarily costly and time consuming, as it lacks a sound theory, effective research approaches, as well as an integrated research environment. In this thesis, we present a research approach for studying software evolution, which incorporates evolution metrics, visualization of system change history, and a method of relating similar program entities between different releases in spite of changed name or location. To validate our approach, we have implemented a prototype research environment called BEAGLE to aid the software maintainer to understand how large software systems have evolved overtime. BEAGLE integrates data from various statistic tools and metric tools, and provides a query engine as well as a web-based visualization and navigation interface. BEAGLE aims to provide help in understanding the long-term evolution of systems that have undergone architectural and structural changes. We performed a case study on the evolution of GNU Compiler Collection (GCC) using a prototype implementation of BEAGLE. We were able to discover several interesting evolution characteristics of GCC, and to answer specific questions related to the evolution history of GCC, such as the relationship between the experimental EGCS release and traditional GCC release, and the different evolution patterns shown by GCC releases at different periods of time.
The Design and development of secure password synchronization and querting system for the enterprise networks

Organizations that run large computer networks should also provide maintenance for the computers on these networks. Nowadays, it is a common practice to outsource this maintenance task to specialized service firms. These service firms may not be considered trustworthy. Therefore, the local administrator password of a local machine that a maintenance technician needs to access should be changed periodically. Consequently, the technician needs a way to learn the current local administrator password of each computer. In this thesis, a secure password synchronization and querying system is presented. In this system, the local administrator passwords of computers are changed periodically in synchronization with a server managing the system. The maintenance technicians can learn the current password of a computer by querying the server. For synchronization and querying mechanisms, we propose three secure protocols that employ symmetric and asymmetric encryption techniques. Moreover, in this thesis, the proposed protocols are implemented as a software product and the performance of the system is evaluated by simulating the system. The average of the number of successful synchronizations stays constant when the number of computers is increased from 3,000 to 20,000 in the simulation. An increase in the number of computers doesn't change the behavior of the system. In addition, it is shown that the system can be configured to survive under rough network conditions. The implementation details and the performance evaluation of the system are presented in the thesis.
Efficient Detection of Data Races in SR Programs

This thesis concerns the detection of data races in parallel programs. A data race occurs when two or more concurrently executing processes make use of the same shared-memory location, where at least one of the processes modi es the contents of the shared memory, and the accesses are not ordered by interprocess synchronization. As data races can prove to be a particularly di cult programming error to correct, automatic detection has prompted a signi cant amount of research. Two general techniques for detecting data races are static and dynamic analysis. In static-analysis techniques, an analyzer is used on the program source code to search for potential data races. In dynamic analysis, the program is instrumented to detect data races during program execution. In previous work by R. Scotte Zinn, a technique was developed that attempted to combine the bene ts of both static and dynamic analysis. In this thesis, Zinn's work is extended to include a wider range of programs. This extension includes data structures not covered in the original work, such as records, pointers, and call-by-reference parameters. The implementation of this technique is also described, including both modi cations to a compiler for the SR parallel-programming language and changes to a debugger for distributed programs. Finally, the results of performance testing on the implementation of the technique are presented and discussed. iv Acknowledgements First of all, I would like to thank my supervisor, Dr. David Taylor. His advice and suggestions, attention to detail, patience, and seemingly endless knowledge of English grammar made this thesis far better than it would have been otherwise. I would also like to thank my readers, Dr. Gordon Cormack and Dr. Michael Co n, for their feedback which further improved this thesis. I would also like to thank NSERC, ITRC/ICR, and the University of Waterloo for their nancial support, which made this work possible. v
The Economics of Software Maintenance

2. Economic models and principles can help us understand the software maintenance process. I will illustrate this thesis by presenting a rationale showing how economic decisions made by software maintenance managers drive the software maintenance process into a dynamic equilibrium. The evolution dynamics of this equilibrium reflect and extend such current laws as the five Belady-Lehman laws of evolution dynamics [2].
Activity List as A Description of Software Behaviour For Requirements Validation

The validation of software requirements is widely perceived as of vital importance in software development. To facilitate static testing of requirements definitions, this paper proposes a method for generating detailed descriptions of software behaviour in the form of activity lists inspired by HCI''s approach to task analysis. An activity list is a prose description of the behaviour of a system. It is generated from a scenario of the operation of the system. It puts together all the information scattered over the requirements document, filters out information irrelevant to the scenario and presents the behaviour as a linear sequence of events in temporal order. Activity lists are more comprehensible and testable than two-dimensional multiple diagram models of software requirements. The paper presents the transformation rules, algorithms and a prototype tool for generating activity lists from requirements models represented by data flow diagrams, state transition diagrams, entity relationship diagrams and their associated dictionaries. A complete example is presented to illustrate the use of the method.
A survey of note-taking practices

note-taking, memory, notebook computers, filing Twenty-eight people from a variety of occupations were interviewed about how they made notes in order to provide guidelines for the development of pen computers. They were questioned about various aspects of note-taking including the situations of note-taking, what is noted down, the characteristics of notes, organization and filing, referring back to notes, problems with notes and the physical aspects of notetaking. An overview of the findings is presented and the implications for the development of a system to support the taking of notes discussed.
A FORTRAN IV PROGRAM FOR ELLIPSOMETER MEASUREMENTS OF SURFACE FILMS.

Introduction . Mathematical Methods 1. Computing the Index of Refraction of the Substrate Material . 2. Computing the Thickness of a Surface Film . 3. Determining the Index of Refraction of the Surface Film . Program Description . l. Computing the Index of Refraction of the Substrate Material . 2. Coniputine thr. Thickness of a Surface Film . 3. Determining the Index o( Refraction of the Surfat:e Film and Computing Film Thickness . 4. Calculating the Psi and Delta Optical Parameters . Appendix A Print-Out of the Source Program Appendix _B FORTRAN IV Notation . 1 2 2
SYSTEM REQUIREMENTS FOR MULTIPLE -ACCESS, TIME-SHARED COMPUTERS

It is now clear that it is possible to create a general-purpose time-shared multiple access system on most contemporary computers. However, it is equally clear that none of the existent computers are well designed for multiple access systems. At present, good service to a few dozen simultaneous users is considered state-of-the-art. Discussions include: clocks, memory protection and supervisor mode, program relocation and common subroutines which expose the reader to the difficulties encountered with contemporary machines when multiple user multiple-processor systems are considered.
The Tree Processing Language: Defining the structure and behaviour of a tree

Tree structures are commonly used in many applications. One of these is a compiler, in which the tree is called an abstract syntax tree (AST). Different techniques have been developed for building and working with ASTs. However, many of these techniques are limited in their applicability, require major effort to implement or introduce maintenance problems in an evolving application. This thesis introduces the Tree Processing Language, a language for defining the structure of a tree and adding functionality to this tree. The compiler tplc is used to produce the actual class hierarchy implementing the specified tree. TPL provides a clear separation between the structure of a tree, a tree definition, and behaviour of a tree, logic specifications. Different aspects of the behaviour of a tree can be provided in separate logic specifications, allowing a clear separation of concerns. TPLc generates a heterogeneous tree structure with strictly typed children. Functionality in a logic specification is specified using the inheritance pattern. To allow different inheritance trees in different logic specifications, the inheritance pattern is enhanced with multiple inheritance. For languages that do not support multiple inheritance, the inheritance pattern with composition is developed. To prove the applicability of tpl, tplc is written in tpl. When compared with an implementation in Java, this implementation provides a better separation of concerns and is easier to maintain.