### Abstract

[TryCarbide](https://alpha.trycarbide.com/) is an online, notebook-like interactive programming environment. It allows users to annotate their code in cells and to interact with variables and results using widgets. Of special interest to our work is Carbide's two-way data binding between input and output data. While common programming environments let users modify the input data of a computation and observe changing results, Carbide in many cases also allows users to change the result of a computation and adjusts the input variables accordingly. 
In this work we are analyzing and [documenting](https://lively-kernel.org/lively4/lively4-seminars/EUD2020/project_2/documentation/carbide_features.md) in which cases Carbide is able to provide such a two-way data binding and in which instances it fails to do so. We are describing the different backpropagation strategies used for different scenarios and data types and show the resulting limitations for each. We also provide reverse-engineered implementations of all strategies and integrate them into a [reusable widget](https://lively-kernel.org/lively4/lively4-seminars/EUD2020/project_2/src/).