End User Programming for Cyber-Physical Systems
Two trends are converging that will shape the future of computing. First, due to the growth in number and diversity of programmable devices, end-users (i.e., those not trained as programmers) are increasingly becoming de facto programmers, configuring and commanding their own systems. Second, computing is now interacting with the physical world, as consumer robotics and home automation are becoming commonplace. In this new context, where end-users program cyber-physical systems, both the programming languages they use to specify programs and the programming tools that help them avoid common mistakes will become vital to their productivity, security, and safety.
Our research strategy is to apply the hard-won lessons from traditional software engineering research to end-user programming, making improvements upon the relevant tools and languages, ultimately making end-user programs more robust, secure and easier-to-write.
Projects will include:
- Evaluate the application of visual programming languages often used for education like MIT’s Scratch as a viable alternative to low-level programming
- Evaluate Trigger-Action Programming (TAP) platforms like IFTTT (IF-This-Then-That), Zapier and Microsoft Flow as a viable alternative for programming Internet-of-Things (IoT) devices
- Evaluate applications developed using techniques such as IFTTT for security and privacy violations that can be used to warn end-user or disallow specific dangerous applet compositions or configurations