1. Research Area
The main research topics in PL lab. of PNU is focusing on the science of programming encompassing the code analysis and the language processors. The core technology of language implementation consists of the analysis and the synthesis of the codes. The fascinating aspect of these technologies is that they can be applied in various application domains including code security, data engineering, and machine intelligence. PL lab is currently extending its research domain to these fields.
2. Research Overview
Currently, the following research projects actively proceed in PL lab.:
(1) The analysis of code similarity and evolution
(2) Programming languages for the next-generation operating system
(3) Programming education environment for the next generation
The first topic can be applied to the detection of code plagiarism. It can also be applied to automatic program tidying-up using code refactoring. The second topic is driven to the evolution of computer architecture. Since multicore and manycore computers are pervasive nowadays, we need a new language to get the most performance in this environment. An improved version of functional and logic languages can be the candidates to these kinds of architectures. The third topic is somewhat in reverse, but the right direction to human, to make the programming environment much easier and more direct to use. For human beings, programming should be natural and intuitive to make their idea to concrete code. This is especially important in education. We seek for the environments to make it in a direct and interesting way.
3. Research Achievements
■ PINT (Program Investigation and Tracking):PINT is a plagiarism detection program for source codes. It is currently used with NeoESPA for motivating students to write their own codes. It was also used in ACM ICPC to promote the fairness of the contest.
■NeoESPA (A new Evaluation System for Programming Assignments):NeoESPA is an automatic judging system for programming courses. It has taken the role of the automatic evaluation from ESPA, an archaic auto judge by Prof Cho. Unlike ESPA, students do not have to use file input and output in their codes.
■CQI (Code Quality Inspector):CQI is a quality checker of the source code, which is implemented as a subsystem of NeoESPA. It takes advantage of SonarQube to inspect the quality issues of students' programs. It currently supports Python, C/C++, and Java.