EDBT 2026 Demo / reviewers in the wild / expert
João F. Ferreira 0001
dblp:f/JoaoFFerreira · also João Fernando Ferreira
· DBLP profile ↗
37ranked-venue papers
7as first author
16since 2021 · last 2026
0000-0002-6612-9013ORCID · verified
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 24 · 4 first-author · 14 since 2021Theory of computation · 7 · 2 first-author · 1 since 2021Artificial intelligence and machine learning · 4 · 1 since 2021Databases, data management, data science and information retrieval · 2 · 1 since 2021Systems, architecture and hardware · 1 · 1 first-authorSecurity and privacy · 1Graphics, computer vision, multimedia, augmented reality and games · 1Human-computer interaction and ubiquitous computing · 1 · 1 first-authorApplied, interdisciplinary, general and emerging computing · 1 · 1 since 2021
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2026 | An Empirical Study of Policy as Code: Adoption, Purpose, and MaintenanceabstractPolicy as Code (PaC) is an emerging DevOps practice that enables teams to specify organisational and technical policies, such as regulatory compliance, security requirements, and resource limits, through machine-enforceable declarative code. As PaC gains prominence, practitioners face difficulties in adopting PaC while there remains a limited empirical understanding of how these policies are introduced, what types can be expressed, and how they are maintained in practice. Ruben Opdebeeck, Mahmoud Alfadel, Akond Ashfaque Ur Rahman, Yutaro Kashiwa, João F. Ferreira 0001, Raula Gaikovina Kula, Coen De Roover |
MSR | 5 |
| 2025 | Contract Usage and Evolution in Android Mobile ApplicationsabstractContracts and assertions are effective methods to enhance software quality by enforcing preconditions, postconditions, and invariants. Previous research has demonstrated the value of contracts in traditional software development. However, the adoption and impact of contracts in the context of mobile app development, particularly of Android apps, remain unexplored. To address this, we present the first large-scale empirical study on the use of contracts in Android apps, written in Java or Kotlin. We consider contract elements divided into five categories: conditional runtime exceptions, APIs, annotations, assertions, and other. We analyzed 2,390 Android apps from the F-Droid repository and processed 52,977 KLOC to determine 1) how and to what extent contracts are used, 2) which language features are used to denote contracts, 3) how contract usage evolves from the first to the last version, and 4) whether contracts are used safely in the context of program evolution and inheritance. Our findings include: 1) although most apps do not specify contracts, annotation-based approaches are the most popular; 2) apps that use contracts continue to use them in later versions, but the number of methods increases at a higher rate than the number of contracts; and 3) there are potentially unsafe specification changes when apps evolve and in subtyping relationships, which indicates a lack of specification stability. Finally, we present a qualitative study that gathers challenges faced by practitioners when using contracts and that validates our recommendations. David R. Ferreira, Alexandra Mendes, João F. Ferreira 0001, Carolina Carreira |
ECOOP | 3 |
| 2025 | Rango: Adaptive Retrieval-Augmented Proving for Automated Software VerificationabstractFormal verification using proof assistants, such as Coq, enables the creation of high-quality software. However, the verification process requires significant expertise and manual effort to write proofs. Recent work has explored automating proof synthesis using machine learning and large language models (LLMs). This work has shown that identifying relevant premises, such as lemmas and definitions, can aid synthesis. We present Rango, a fully automated proof synthesis tool for Coq that automatically identifies relevant premises and also similar proofs from the current project and uses them during synthesis. Rango uses retrieval augmentation at every step of the proof to automatically determine which proofs and premises to include in the context of its fine-tuned LLM. In this way, Rango adapts to the project and to the evolving state of the proof. We create a new dataset, CoqStoq, of 2,226 open-source Coq projects and 196,929 theorems from GitHub, which includes both training data and a curated evaluation benchmark of well-maintained projects. On this benchmark, Rango synthesizes proofs for 32.0% of the theorems, which is 29% more theorems than the prior state-of-the-art tool Tactician. Our evaluation also shows that Rango adding relevant proofs to its context leads to a 47% increase in the number of theorems proven. Kyle Thompson, Nuno Saavedra, Pedro Carrott, Kevin Fisher, Alex Sanchez-Stern, Yuriy Brun, João F. Ferreira 0001, Sorin Lerner, Emily First |
ICSE | 7 |
| 2025 | Are Users More Willing to Use Formally Verified Password Managers?
Carolina Carreira, João F. Ferreira 0001, Alexandra Mendes, Nicolas Christin |
SEFM | 2 |
| 2025 | Do Experts Agree About Smelly Infrastructure?abstractCode smells are anti-patterns that violate code understandability, re-usability, changeability, and maintainability. It is important to identify code smells and locate them in the code. For this purpose, automated detection of code smells is a sought-after feature for development tools; however, the design and evaluation of such tools depends on the quality of oracle datasets. The typical approach for creating an oracle dataset involves multiple developers independently inspecting and annotating code examples for their existing code smells. Since multiple inspectors cast votes about each code example, it is possible for the inspectors to disagree about the presence of smells. Such disagreements introduce ambiguity into how smells should be interpreted. Prior work has studied developer perceptions of code smells in traditional source code; however, smells in Infrastructure-as-Code (IaC) have not been investigated. To understand the real-world impact of disagreements among developers and their perceptions of IaC code smells, we conduct an empirical study on the oracle dataset of GLITCH—a state-of-the-art detection tool for security code smells in IaC. We analyze GLITCH's oracle dataset for code smell issues, their types, and individual annotations of the inspectors. Furthermore, we investigate possible confounding factors associated with the incidences of developer misaligned perceptions of IaC code smells. Finally, we triangulate developer perceptions of code smells in traditional source code with our results on IaC. Our study reveals that unlike developer perceptions of smells in traditional source code, their perceptions of smells in IaC are more substantially impacted by subjective interpretation of smell types and their co-occurrence relationships. For instance, the interpretation of admins by default, empty passwords, and hard-coded secrets varies considerably among raters and are more susceptible to misidentification than other IaC code smells. Consequently, the manual identification of IaC code smells involves annotation disagreements among developers—46.3% of studied IaC code smell incidences have at least one dissenting vote among three inspectors. Meanwhile, only 1.6% of code smell incidences in traditional source code are affected by inspector bias stemming from these disagreements. Hence, relying solely on the majority voting, would not fully represent the breadth of interpretation of the IaC under scrutiny. Sogol Masoumzadeh, Nuno Saavedra, Rungroj Maipradit, Lili Wei 0001, João F. Ferreira 0001, Dániel Varró, Shane McIntosh |
IEEE Trans. Software Eng. | 5 |
| 2024 | DifFuzzAR: automatic repair of timing side-channel vulnerabilities via refactoringabstractAbstract Vulnerability detection and repair is a demanding and expensive part of the software development process. As such, there has been an effort to develop new and better ways to automatically detect and repair vulnerabilities. DifFuzz is a state-of-the-art tool for automatic detection of timing side-channel vulnerabilities, a type of vulnerability that is particularly difficult to detect and correct. Despite recent progress made with tools such as DifFuzz, work on tools capable of automatically repairing timing side-channel vulnerabilities is scarce. In this paper, we propose DifFuzzAR, a tool for automatic repair of timing side-channel vulnerabilities in Java code. The tool works in conjunction with DifFuzz and it is able to repair 56% of the vulnerabilities identified in DifFuzz’s dataset. The results show that the tool can automatically correct timing side-channel vulnerabilities, being more effective with those that are control-flow based. In addition, the results of a user study show that users generally trust the refactorings produced by DifFuzzAR and that they see value in such a tool, in particular for more critical code. Rui Lima, João F. Ferreira 0001, Alexandra Mendes, Carolina Carreira |
Autom. Softw. Eng. | 2 |
| 2024 | Evolution of automated weakness detection in Ethereum bytecode: a comprehensive studyabstractAbstract Blockchain programs (also known as smart contracts) manage valuable assets like cryptocurrencies and tokens, and implement protocols in domains like decentralized finance (DeFi) and supply-chain management. These types of applications require a high level of security that is hard to achieve due to the transparency of public blockchains. Numerous tools support developers and auditors in the task of detecting weaknesses. As a young technology, blockchains and utilities evolve fast, making it challenging for tools and developers to keep up with the pace. In this work, we study the robustness of code analysis tools and the evolution of weakness detection on a dataset representing six years of blockchain activity. We focus on Ethereum as the crypto ecosystem with the largest number of developers and deployed programs. We investigate the behavior of single tools as well as the agreement of several tools addressing similar weaknesses. Our study is the first that is based on the entire body of deployed bytecode on Ethereum’s main chain. We achieve this coverage by considering bytecodes as equivalent if they share the same skeleton. The skeleton of a bytecode is obtained by omitting functionally irrelevant parts. This reduces the 48 million contracts deployed on Ethereum up to January 2022 to 248 328 contracts with distinct skeletons. For bulk execution, we utilize the open-source framework SmartBugs that facilitates the analysis of Solidity smart contracts, and enhance it to accept also bytecode as the only input. Moreover, we integrate six further tools for bytecode analysis. The execution of the 12 tools included in our study on the dataset took 30 CPU years. While the tools report a total of 1 307 486 potential weaknesses, we observe a decrease in reported weaknesses over time, as well as a degradation of tools to varying degrees. Monika Di Angelo, Thomas Durieux, João F. Ferreira 0001, Gernot Salzer |
Empir. Softw. Eng. | 3 |
| 2023 | Hoogle⋆: Constants and λ-abstractions in Petri-net-based Synthesis using Symbolic Execution
Henrique Botelho Guerra, João F. Ferreira 0001, João Costa Seco |
ECOOP | 2 |
| 2023 | SmartBugs 2.0: An Execution Framework for Weakness Detection in Ethereum Smart ContractsabstractSmart contracts are blockchain programs that often handle valuable assets. Writing secure smart contracts is far from trivial, and any vulnerability may lead to significant financial losses. To support developers in identifying and eliminating vulnerabilities, methods and tools for the automated analysis of smart contracts have been proposed. However, the lack of commonly accepted benchmark suites and performance metrics makes it difficult to compare and evaluate such tools. Moreover, the tools are heterogeneous in their interfaces and reports as well as their runtime requirements, and installing several tools is time-consuming. In this paper, we present SmartBugs 2.0, a modular execution framework. It provides a uniform interface to 19 tools aimed at smart contract analysis and accepts both Solidity source code and EVM bytecode as input. After describing its architecture, we highlight the features of the framework. We evaluate the framework via its reception by the community and illustrate its scalability by describing its role in a study involving 3.25 million analyses. Monika Di Angelo, Thomas Durieux, João F. Ferreira 0001, Gernot Salzer |
ASE | 3 |
| 2023 | Polyglot Code Smell Detection for Infrastructure as Code with GLITCHabstractThis paper presents GLITCH, a new technology-agnostic framework that enables automated polyglot code smell detection for Infrastructure as Code scripts. GLITCH uses an intermediate representation on which different code smell detectors can be defined. It currently supports the detection of nine security smells and nine design & implementation smells in scripts written in Ansible, Chef, Docker, Puppet, or Terraform. Studies conducted with GLITCH not only show that GLITCH can reduce the effort of writing code smell analyses for multiple IaC technologies, but also that it has higher precision and recall than current state-of-the-art tools. A video describing and demonstrating GLITCH is available at: https://youtu.be/E4RhCcZjWbk. Nuno Saavedra, Miguel Henriques, João F. Ferreira 0001, Alexandra Mendes |
ASE | 4 |
| 2023 | bGSL: An imperative language for specification and refinement of backtracking programs
Steve Dunne, João F. Ferreira 0001, Alexandra Mendes, Campbell Ritchie, Bill Stoddart, Frank Zeyda |
J. Log. Algebraic Methods Program. | 2 |
| 2022 | Verified Password Generation from Password Composition Policies
Miguel Grilo, João Campos, João F. Ferreira 0001, José Bacelar Almeida, Alexandra Mendes |
IFM | 3 |
| 2022 | GLITCH: Automated Polyglot Security Smell Detection in Infrastructure as CodeabstractInfrastructure as Code (IaC) is the process of managing IT infrastructure via programmable configuration files (also called IaC scripts). Like other software artifacts, IaC scripts may contain security smells, which are coding patterns that can result in security weaknesses. Automated analysis tools to detect security smells in IaC scripts exist, but they focus on specific technologies such as Puppet, Ansible, or Chef. This means that when the detection of a new smell is implemented in one of the tools, it is not immediately available for the technologies supported by the other tools — the only option is to duplicate the effort. Nuno Saavedra, João F. Ferreira 0001 |
ASE | 2 |
| 2022 | Integrating an academic management system with blockchain: A case studyabstractThis paper reports the design, implementation, and experimental phases of the EU H2020 QualiChain pilot “Staffing the Public Sector—The Case of Portugal”. The overall purpose of this pilot is to ensure the authenticity and integrity of the diplomas for all involved stakeholders and therefore to contribute to solving the diploma counterfeiting and/or falsification that is a great threat to the recruitment of qualified personnel. The main innovative aspect of this solution is the integration that is offered between an Academic Management System (the Fenix.edu platform) and a Blockchain (Ethereum) to automatically deploy diplomas. This solution helps the involved stakeholders trust the diplomas provided. The case study involves four different stakeholders and studies, specifically, the increase in their satisfaction in terms of diploma control, diploma veracity, and diploma credibility. The developed system was tested with external participants who were asked to follow a set of guidelines and complete a survey to assess their perceptions. All system interactions were recorded, and the data were analyzed. The results indicated that the participants successfully executed the guidelines and that a perception increase toward diploma control, veracity, and credibility was identified. Sérgio Guerreiro 0001, João F. Ferreira 0001, Tiago Fonseca, Miguel Correia 0001 |
Blockchain Res. Appl. | 2 |
| 2021 | EcoAndroid: An Android Studio Plugin for Developing Energy-Efficient Java Mobile ApplicationsabstractMobile devices have become indispensable in our daily life and reducing the energy consumed by them has become essential. However, developing energy-efficient mobile applications is not a trivial task. To address this problem, we present EcoAndroid, an Android Studio plugin that automatically applies energy patterns to Java source code. It currently supports ten different cases of energy-related refactorings, divided over five energy patterns taken from the literature. We used EcoAndroid to analyze 100 Java mobile applications (≈ 1.5M LOC) and we found that 35 of the projects had a total of 95 energy code smells. EcoAndroid was able to automatically refactor all the code smells identified. João F. Ferreira 0001, Alexandra Mendes |
QRS | 2 |
| 2021 | Automated narrative planning model extension
Julie Porteous, João F. Ferreira 0001, Alan Lindsay, Marc Cavazza |
Auton. Agents Multi Agent Syst. | 2 |
| 2020 | Narrative Planning Model Acquisition from Text Summaries and DescriptionsabstractAI Planning has been shown to be a useful approach for the generation of narrative in interactive entertainment systems and games. However, the creation of the underlying narrative domain models is challenging: the well documented AI planning modelling bottleneck is further compounded by the need for authors, who tend to be non-technical, to create content. We seek to support authors in this task by allowing natural language (NL) plot synopses to be used as a starting point from which planning domain models can be automatically acquired. We present a solution which analyses input NL text summaries, and builds structured representations from which a pddl model is output (fully automated or author in-the-loop). We introduce a novel sieve-based approach to pronoun resolution that demonstrates consistently high performance across domains. In the paper we focus on authoring of narrative planning models for use in interactive entertainment systems and games. We show that our approach exhibits comprehensive detection of both actions and objects in the system-extracted domain models, in combination with significant improvement in the accuracy of pronoun resolution due to the use of contextual object information. Our results and an expert user assessment show that our approach enables a reduction in authoring effort required to generate baseline narrative domain models from which variants can be built. Thomas Hayton, Julie Porteous, João F. Ferreira 0001, Alan Lindsay |
AAAI | 3 |
| 2020 | Skeptic: Automatic, Justified and Privacy-Preserving Password Composition Policy SelectionabstractThe choice of password composition policy to enforce on a password-protected system represents a critical security decision, and has been shown to significantly affect the vulnerability of user-chosen passwords to guessing attacks. In practice, however, this choice is not usually rigorous or justifiable, with a tendency for system administrators to choose password composition policies based on intuition alone. In this work, we propose a novel methodology that draws on password probability distributions constructed from large sets of real-world password data which have been filtered according to various password composition policies. Password probabilities are then redistributed to simulate different user password reselection behaviours in order to automatically determine the password composition policy that will induce the distribution of user-chosen passwords with the greatest uniformity, a metric which we show to be a useful proxy to measure overall resistance to password guessing attacks. Further, we show that by fitting power-law equations to the password probability distributions we generate, we can justify our choice of password composition policy without any direct access to user password data. Finally, we present Skeptic---a software toolkit that implements this methodology, including a DSL to enable system administrators with no background in password security to compare and rank password composition policies without resorting to expensive and time-consuming user studies. Drawing on 205,176,321 passwords across 3 datasets, we lend validity to our approach by demonstrating that the results we obtain align closely with findings from a previous empirical study into password composition policy effectiveness. Saul A. Johnson, João F. Ferreira 0001, Alexandra Mendes, Julien Cordry |
AsiaCCS | 2 |
| 2020 | Empirical review of automated analysis tools on 47, 587 Ethereum smart contractsabstractOver the last few years, there has been substantial research on automated analysis, testing, and debugging of Ethereum smart contracts. However, it is not trivial to compare and reproduce that research. To address this, we present an empirical evaluation of 9 state-of-the-art automated analysis tools using two new datasets: i) a dataset of 69 annotated vulnerable smart contracts that can be used to evaluate the precision of analysis tools; and ii) a dataset with all the smart contracts in the Ethereum Blockchain that have Solidity source code available on Etherscan (a total of 47,518 contracts). The datasets are part of SmartBugs, a new extendable execution framework that we created to facilitate the integration and comparison between multiple analysis tools and the analysis of Ethereum smart contracts. We used SmartBugs to execute the 9 automated analysis tools on the two datasets. In total, we ran 428,337 analyses that took approximately 564 days and 3 hours, being the largest experimental setup to date both in the number of tools and in execution time. We found that only 42% of the vulnerabilities from our annotated dataset are detected by all the tools, with the tool Mythril having the higher accuracy (27%). When considering the largest dataset, we observed that 97% of contracts are tagged as vulnerable, thus suggesting a considerable number of false positives. Indeed, only a small number of vulnerabilities (and of only two categories) were detected simultaneously by four or more tools. Thomas Durieux, João F. Ferreira 0001, Rui Abreu 0001, Pedro Cruz 0003 |
ICSE | 2 |
| 2020 | SmartBugs: A Framework to Analyze Solidity Smart ContractsabstractOver the last few years, there has been substantial research on automated analysis, testing, and debugging of Ethereum smart contracts. However, it is not trivial to compare and reproduce that research. To address this, we present SmartBugs, an extensible and easy-to-use execution framework that simplifies the execution of analysis tools on smart contracts written in Solidity, the primary language used in Ethereum. SmartBugs is currently distributed with support for 10 tools and two datasets of Solidity contracts. The first dataset can be used to evaluate the precision of analysis tools, as it contains 143 annotated vulnerable contracts with 208 tagged vulnerabilities. The second dataset contains 47,518 unique contracts collected through Etherscan. We discuss how SmartBugs supported the largest experimental setup to date both in the number of tools and in execution time. Moreover, we show how it enables easy integration and comparison of analysis tools by presenting a new extension to the tool SmartCheck that improves substantially the detection of vulnerabilities related to the DASP10 categories Bad Randomness, Time Manipulation, and Access Control (identified vulnerabilities increased from 11% to 24%). João F. Ferreira 0001, Pedro Cruz 0003, Thomas Durieux, Rui Abreu 0001 |
ASE | 1 |
| 2018 | Towards Verified Handwritten Calculational Proofs - (Short Paper)
Alexandra Mendes, João F. Ferreira 0001 |
ITP | 2 |
| 2018 | Towards a Program Logic for C11 Release-SequencesabstractBy accepting order weakening for memory operations, the C11 memory model allows C/C++ programs to take advantage of modern hardware architectures, where weak/relaxed memory models are now the norm. However, the weakened C11 memory model introduces many complex and counterintuitive behaviours, rendering it more difficult for people to understand or reason about concurrent C11 programs. Several program logics (RSL, GPS, FSL, GPS+) have been proposed over the last few years to support formal reasoning for C11 programs, but each of them deals with only a specific subset of C11 programs, mainly due to the high complexity of the weakened memory model. Notably none of these program logics supports the reasoning of release-sequences - a highly flexible synchronisation mechanism in C11. Very recently, Doko and Vafeiadis propose a way in their FSL++ logic to reason about C11 programs using release-sequences, but their solution is restricted to those scenarios where only atomic update operations are between the release head and the receiver. In this paper we propose a new program logic that offers full support for reasoning about C11 programs using release-sequences. Our proposed logic is built on top of our previous program logic GPS+, but with much finer control over the resource transmission by introducing restricted-shareable assertions and an enhanced protocol system. We also illustrate our approach by verifying release-sequence programs that existing logics would not be able to. Mengda He, Shengchao Qin, João F. Ferreira 0001 |
TASE | 3 |
| 2017 | Certified Password Quality - A Case Study Using Coq and Linux Pluggable Authentication Modules
João F. Ferreira 0001, Saul A. Johnson, Alexandra Mendes, Phillip J. Brooke |
IFM | 1 |
| 2017 | Visualization of Patient Behavior from Natural Language RecommendationsabstractThe visualization of procedural knowledge from textual documents using 3D animation may be a way to improve understanding. We are interested in applying this approach to documents relating to patient education for bariatric surgery: a domain with challenging textual documents describing behavior recommendations that contain few procedural steps and leave much commonsense knowledge unspecified. In this work we look at how to automatically capture knowledge from a range of differently phrased recommendations and use that with implicit knowledge about compliance and violation, such that the recommendations can be visualized using 3D animations. Our solution is an end-to-end system that automates this process via: analysis of input recommendations to uncover their conditional structure; the use of commonsense knowledge and deontic logic to generate compliance and violation rules; and mapping of this knowledge to update a default knowledge base, which is used to generate appropriate sequences of visualizations. In this paper we overview this approach and demonstrate its potential. Jonathan Siddle, Alan Lindsay, João F. Ferreira 0001, Julie Porteous, Jonathon Read, Fred Charles, Marc Cavazza, Gersende Georg |
K-CAP | 3 |
| 2016 | Reasoning about Fences and Relaxed AtomicsabstractFor efficiency reasons, weak (or relaxed) memory is now the norm on modern architectures. To cater for this trend, modern programming languages are adapting their memory models. The new C11 memory model [1] allows several levels of memory weakening, including non-atomics, relaxed atomics, release-acquire atomics, and sequentially consistent atomics. Under such weak memory models, multithreaded programs exhibit more behaviours, some of which would have been inconsistent under the traditional strong (i.e. sequentially consistent) memory model. This makes the task of reasoning about concurrent programs even more challenging. The GPS framework, recently developed by Turon et al.[22], has made a step forward towards tackling this challenge. By integrating ghost states, per-location protocols and separation logic, GPS can successfully verify programs with release-acquire atomics. In this paper, we present a program logic, an enhancement of the GPS framework, that can support the verification of a bigger class of C11 programs, that is, programs with release-acquire atomics, relaxed atomics and release-acquire fences. Key elements of our proposed logic include two new types of assertions, a more expressive resource model and a set of newly-designed verification rules. Mengda He, Viktor Vafeiadis, Shengchao Qin, João F. Ferreira 0001 |
PDP | 4 |
| 2014 | The magic of algorithm design and analysis: teaching algorithmic skills using magic card tricksabstractWe describe our experience using magic card tricks to teach algorithmic skills to first-year Computer Science undergraduates. We illustrate our approach with a detailed discussion on a card trick that is typically presented as a test to the psychic abilities of an audience. We use the trick to discuss concepts like problem decomposition, pre- and post-conditions, and invariants. We discuss pedagogical issues and analyse feedback collected from students. The feedback has been very positive and encouraging. João F. Ferreira 0001, Alexandra Mendes |
ITiCSE | 1 |
| 2014 | Automated verification of the FreeRTOS scheduler in Hip/Sleek
João F. Ferreira 0001, Cristian Gherghina, Guanhua He, Shengchao Qin, Wei-Ngan Chin |
Int. J. Softw. Tools Technol. Transf. | 1 |
| 2013 | Deadline Analysis of AUTOSAR OS Periodic Tasks in the Presence of Interrupts
Yanhong Huang, João F. Ferreira 0001, Guanhua He, Shengchao Qin, Jifeng He 0001 |
ICFEM | 2 |
| 2013 | Linear Logic Programming for Narrative Generation
Chris Martens 0001, Anne-Gwenn Bosser, João F. Ferreira 0001, Marc Cavazza |
LPNMR | 3 |
| 2013 | The algorithmics of solitaire-like gamesabstractOne-person solitaire-like games are explored with a view to using them in teaching algorithmic problem solving. The key to understanding solutions to such games is the identification of invariant properties of polynomial arithmetic. We demonstrate this via three case studies: solitaire itself, tiling problems and a novel class of one-person games. The known classification of states of the game of (peg) solitaire into 16 equivalence classes is used to introduce the relevance of polynomial arithmetic. Then we give a novel algebraic formulation of the solution to a class of tiling problems. Finally, we introduce an infinite class of challenging one-person games, which we call “replacement-set games”, inspired by earlier work by Chen and Backhouse on the relation between cyclotomic polynomials and generalisations of the seven-trees-in-one type isomorphism. We present an algorithm to solve arbitrary instances of replacement-set games and we show various ways of constructing infinite (solvable) classes of replacement-set games. Roland Carl Backhouse, Wei Chen 0023, João F. Ferreira 0001 |
Sci. Comput. Program. | 3 |
| 2012 | A Timed CSP Model for the Time-Triggered Language GiottoabstractGiotto is a time-triggered embedded programming language which provides an abstract programming model for hard real-time applications. It effectively decouples the implementation from the design. A Giotto program focuses on the functionality and timing of periodic tasks. All the actions, e.g., task invocations, actuator updates, and mode switches, described in Giotto programs are triggered by real time. We take the views of the concerns of Giotto programs, including the reaction to the environment, the communication between tasks, the timing predictability, etc. Our goal is to simulate Giotto programs using a timed CSP-based model which can effectively express the concerns and can be used to verify safety properties. This paper is a first step that presents the timed CSP model for Giotto programs. We also give a case study to illustrate the utility of the timed CSP model. Based on the existing research for CSP with time, we believe that our model can support to analyze and verify safety properties of Giotto programs. Yanhong Huang, Shengchao Qin, Guanhua He, João F. Ferreira 0001 |
SEW | 5 |
| 2012 | Automated Verification of the FreeRTOS Scheduler in HIP/SLEEKabstractAutomated verification of operating system kernels is a challenging problem, partly due to the use of shared mutable data structures. In this paper, we show how we can automatically verify memory safety and functional correctness of the task scheduler component of the FreeRTOS kernel using the verification system HIP/SLEEK. We show how some of HIP/SLEEK features like user-defined predicates and lemmas make the specifications highly expressive and the verification process viable. To the best of our knowledge, this is the first code-level verification of memory safety and functional correctness properties of the FreeRTOS scheduler. The outcome of our experiment confirms that HIP/SLEEK can indeed be used to verify code that is used in production. Moreover, since the properties that we verify are quite general, we envisage that the same approach can be adopted to verify the scheduler of other operating systems. João F. Ferreira 0001, Guanhua He, Shengchao Qin |
TASE | 1 |
| 2011 | On Euclid's algorithm and elementary number theory
Roland Carl Backhouse, João F. Ferreira 0001 |
Sci. Comput. Program. | 2 |
| 2010 | The Algorithmics of Solitaire-Like Games
Roland Carl Backhouse, Wei Chen 0023, João F. Ferreira 0001 |
MPC | 3 |
| 2010 | Designing an Algorithmic Proof of the Two-Squares Theorem
João F. Ferreira 0001 |
MPC | 1 |
| 2008 | Recounting the Rationals: Twice!
Roland Carl Backhouse, João F. Ferreira 0001 |
MPC | 2 |
| 2006 | JaSkel: A Java Skeleton-Based Framework for Structured Cluster and Grid ComputingabstractThis paper presents JaSkel, a skeleton-based framework to develop parallel and grid applications. The framework provides a set of Java abstract classes as a skeleton catalogue, which implements recurring parallel interaction paradigms. This approach aims to improve code efficiency and portability. It also helps to structure scalable applications through the refinement and composition of skeletons. Evaluation results show that using the provided skeletons do contribute to improve both application development time and execution performance. João F. Ferreira 0001, João Luís Ferreira Sobral, Alberto José Proença |
CCGRID | 1 |