CS-2020-01
Title Revisiting the SPLITS Model: Towards an Enhanced Implementation
Authors Mark Y. Iwanchyshyn, Bradley W. Kimmel and Gladimir V. G. Baranoski
Abstract The first-principles model known as SPLITS (SPectral LIght Transport model for Sand) was developed by the Natural Phenomenon Simulation Group (NPSG) at the University of Waterloo. This model has been employed in a wide range of investigations involving particulate materials. In this report, we present the refinements made to the model’s implementation and introduce its enhanced version.
Date February 23, 2020
Report CS-2020-01 (PDF)
CS-2020-02
Title An Engineering View of Regulating AI in Canada’s Financial Institutions
Authors Derek Rayside, Emily Huang and Ayush Kapur
Abstract An adaptation of NHTSA’s Proposed Voluntary Guidance for Autonomous Vehicles to the context of Canada’s financial institutions.
Date February 28, 2020
Report CS-2020-02 (PDF)
CS-2020-03
Title A Semantics for the Essence of React
Authors Magnus Madsen, Ondřej Lhoták, Frank Tip
Abstract Traditionally, web applications have been written as HTML pages with embedded JavaScript code that implements dynamic and interactive features by manipulating the Document Object Model (DOM) through a low-level browser API. However, this unprincipled approach leads to code that is brittle, difficult to understand, non-modular, and does not facilitate incremental update of user-interfaces in response to state changes.

React is a popular framework for constructing web applications that aims to overcome these problems. React applications are written in a declarative and object-oriented style, and consist of components that are organized in a tree structure. Each component has a set of properties representing input parameters, a state consisting of values that may vary over time, and a render method that declaratively specifies the subcomponents of the component. React’s concept of reconciliation determines the impact of state changes and updates the user-interface incrementally by selective mounting and unmounting of subcomponents. At designated points, the React framework invokes lifecycle hooks that enable programmers to perform actions outside the framework such as acquiring and releasing resources needed by a component.

These mechanisms exhibit considerable complexity, but, to our knowledge, no formal specification of React’s semantics exists. This paper presents a small-step operational semantics that captures the essence of React, as a first step towards a long-term goal of developing automatic tools for program understanding, automatic testing, and bug finding for React web applications. To demonstrate that key operations such as mounting, unmounting, and reconciliation terminate, we define the notion of a well-behaved component and prove that well-behavedness is preserved by these operations.
Date June 2, 2020
Report CS-2020-03 (PDF)