Topics for research and also for fun

(1) Code completion

Recent work in progress: A ranked text-based syntax completion method using LR parsing

Authors: Kwanghoon Choi, Sooyeon Hwang, Hyeonah Moon, Isao Sasano

This represents the latest work in a series of studies from our group on automatic syntax completion [1][2][3], 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.

This paper will be available on request.

Recommendations to read

(2) End-user programming/debugging/explaining in Home Automation Platforms such as SmartThings and Home Assistant

IOTA: a calculus for internet of things automation

Authors: Julie L. Newcomb, Satish Chandra, Jean-Baptiste Jeannin, Cole Schlesinger, Manu Sridharan

DOI link

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

(3) Multi-party computation for security and privacy

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)

(4) Choreographic Programming (Deadlock-free Distributed Programming)

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

(5) Software Security

Making Software Sandboxing Practical using Language-based Techniques

(Keywords: Computer Security, information flow control, type systems, WebAssembly)

(6) Experiencing new programming languages

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.

(7) Study Recommendations

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:

References

  1. Isao Sasano and Kwanghoon Choi. 2023. A Text-Based Syntax Completion Method using LR Parsing and Its Evaluation.
  2. Isao Sasano and Kwanghoon Choi. 2021. A text-based syntax completion method using LR parsing. In Proceedings of the 2021 ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation (PEPM 2021).
  3. Jintaeck Lim, Gayoung Kim, Seunghyun Shin, Kwanghoon Choi, and Iksoon Kim. 2020. Parser generators sharing LR automaton generators and accepting general purpose programming language based specifications. Journal of KIISE 47, 1 (2020), 52–60.
  4. Byeong-Mo Chang, Kyung-Min Lee, Ga-Young Koh, Kwanghoon Choi, SmartProvenance: user-friendly provenance system for internet of things applications based on event flow graphs. IET Soft. 16(6), 576–602 (2022).
  5. Na-Yeon Bak, Byeong-Mo Chang, Kwanghoon Choi, Smart Block: A Visual Block Language and its Programming Environment for IoT, Journal of Computer Languages, Vol.60, 100999, October 2020.
  6. Na-Yeon Bak, Byeong-Mo Chang, Kwanghoon Choi, SmartVisual: A Visualisation Tool for SmartThings IoT Apps Using Static Analysis, IET Software, Vol.14, Issue 4, pp.411-422, August 2020.
  7. Byeong-Mo Chang, Janine Cassandra Son, Kwanghoon Choi, A GQM Approach to Evaluation of the Quality of SmartThings Applications Using Static Analysis, KSII Transactions on Internet and Information Systems, Vol.14, Issue 6, pp. 2354-2376, June 2020.
  8. Kwanghoon Choi, James Cheney, Simon Fowler, Sam Lindley, A Polymorphic RPC Calculus, Science of Computer Programming, Vol.197, Article 102499, October 2020.
  9. Kwanghoon Choi, Byeong-Mo Chang, A Theory of RPC Calculi for Client-Server Model, Journal of Functional Programming (JFP), Vol.29, pp.1-39, Cambridge University Press, March 2019.

Updated: 12 September, 2023