Making Software Sandboxing Practical using Language-based Techniques
(Keywords: Computer Security, information flow control, type systems, WebAssembly)
Recommendations to read
The latest work in a series of studies from our group on automatic syntax completion [1][2][3][10], or also available in Link to Series of Studies on Automatic Syntax Completion.
The paper introduces a method for collecting syntax (structure) completion candidates from open-source software, and then suggests these candidates, ranking them based on the frequency with which each candidate appeared in the software being investigated.
Recommendations to read
IOTA: a calculus for internet of things automation
Authors: Julie L. Newcomb, Satish Chandra, Jean-Baptiste Jeannin, Cole Schlesinger, Manu Sridharan
While this paper was not written by our group, it has greatly inspired us, leading to the publication of a series of software engineering papers focused on IoT and home automation from our research group as [4][5][6][7]
I strongly recommend reading this IOTA calculus paper carefully before delving into our research works, as it will provide you with essential background information.
We have begun the development of a programming language that is based on the IoTa calculus, as in IoTa Calculus Programming Language
Programs for home automation platforms, like SmartThings, are intended to be developed by end-users. Therefore, it is essential to provide a method that enables end-users to write these programs with ease.
One solution for simplifying programming is a visual programming environment called Smartblock [5]. Rather than writing text-based programs, the end-users can compose home automation programs by dragging and dropping visual blocks, making the process more intuitive and user-friendly.
Alternatively, a natural language interface that translates everyday language into programming languages based on the IoTa calculus could be developed. The study of recent advancements like LLM (large language models) could be instrumental in implementing the latter solution.
A single trial translation based on LLM may not be likely to result in satisfactory home automation programs. There must be a method for end-users to intervene and control the translation or the translated programs themselves. The existing Smartblock [5] system could facilitate this by enabling translation from the IoTa calculus based programs into the visual block programs and back.
Debugging home automation programs is notoriously challenging.
A smart provenance system [4] was one solution where end-users can explore timed events and actions to investigate their problems, for example, why the light would not be turned on when a person opened the door.
One solution to the challenge of debugging home automation programs is a smart provenance system [4], allowing end-users to explore timed events and actions to diagnose problems. An example of this might be investigating why the light did not turn on when a person opened the door at home.We could integrate this system with SmartBlock, enabling debugging to be conducted directly through the visual block programs, thereby simplifying the process and making it more intuitive.
Solutions for the fragmentation problem in home automation programming
Samsung SmartThings is a leading home automation system, but it is not the only one available. Other intriguing options include IFTTT, OpenHap, and more. A significant issue is that programming methods used for one home automation system are often incompatible with others, leading to what is known as the fragmentation problem. We believe that a programming language based on the IoTa calculus could provide a solution to this challenge by compiling it into the other home automation programming languages as:
We hope to submit initial results from this topic to the SERP4IoT workshop by January 2024.
A design of domain-specific programming language for multi-party computation (MPC) using the polymorphic RPC calculus
(Keywords: Computer Security, privacy, language design, type systems)
The emerging paradigm of choreographic programming
Motivation: A distributed system consists of a collection of nodes that operate independently and communicate by message passing. One of the challenges of programming distributed systems is the need to reason about the implicit global behavior of the system while writing the explicit local programs that actually run on each node. While running independently, nodes must exchage messages a carefully executed dance: every message sent from one node must be expected by its recipie or we risk deadlock.
Recommendations to read
Research directions
I encourage students to explore new programming languages that pique your curiosity. If you're unsure where to begin, here's a list to kicstart your journey.
Before deeply delving into these research areas, I recommend acquiring a solid foundation in programming language and compiler skills. A suggestion for learning these skills is to study the book "Essentials of Programming Languages" (3rd Ed.), a renowned text in the field.
One effective method to study this book is to rewrite the example programs found within, using a programming language of your choice.
Haskell is my favorite programming language, though you have your favorite one such as Python. I have already worked on rewriting some examples from Chapter 3, 4, 5, 7 in Haskell as:
To begin learning Haskell, you can explore the following excellent MOOC (Massive Open Online Course) site:
Updated: 16 May, 2024