We present E-String Figures, a system for recognizing string figures using conductive fibers braided into a string and electrodes attached to the fingers of both hands. The system measures potential differences between electrodes on all ten fingers and applies machine learning to identify string figures based on these measurements. Since the way the cord is intertwined and the contact points vary for each figure, we assume that the resulting current paths between the electrodes also differ accordingly. To evaluate this hypothesis, we investigated whether the proposed system could estimate the transformation stages of three different string figure series. Consequently, we achieved F-scores of 0.91 for Series 1, 0.98 for Series 2, and 0.82 for Series 3. Furthermore, when evaluating all 36 transformation stages combined across the three series, we obtained an overall F-score of 0.87.
In programming education, evaluating dynamic and visually interactive programming assignments and providing rapid feedback is challenging with traditional automated assessment methods.This paper proposes PP-Checker, an automated checking and feedback system designed to enhance evaluation efficiency by focusing on immediacy, scoring accuracy, and ambiguity.PP-Checker collaborates with large language models (LLMs) to enable automated evaluation of dynamic and visual programming languages.Additionally, it features real-time prompt adjustment capabilities, allowing instructors to update evaluation criteria and immediately reflect changes while students work on their assignments.Through 2,400 minutes of operation in actual lectures, PP-Checker significantly reduced assignment resubmission times, improved evaluation efficiency, and received high praise from both students and teaching staff (TAs and instructors).
Whisphone is a novel earbud device designed for speech input via whispering. Utilizing canal-type earbuds with a unique microphone placement at the tip of the earplug, it effectively captures whispered voices radiated in the ear canal through bone conduction. This design can boost whispered voice volume with ear canal occlusion effect while simultaneously blocking external noise by sealing the ear hole; Active Noise Canceling (ANC) is also helpful. Preliminary experiment indicates Whisphone can effectively detect subtle whispers, even in noisy environments of up to 80dB(A). Its compact and comfortable design ensures discreet wearability, allowing users to interact with AI assistants hands-free without disturbing others in various daily situations such as offices, homes, or urban public spaces.
Despite many efforts made to detect memory leaks in large-scale software systems such as the Linux Kernel, state-of-the-art tools fail to find some common patterns of leaks due to the limitation incurred to achieve scalability. Memory leak of a struct member is one of the commonly found patterns neglected in these tools. This pattern occurs when a struct member remains allocated even when the struct is released. Detecting such patterns requires correlating the struct and its members, requiring complex inter-procedural, points-to analysis, known to be non-scalable.
In this paper, we present a scalable approach that focuses on detecting these struct member-related leaks in the Linux Kernel. Unlike state-of-the-art tools that analyze the value flow using Value Flow Graph (VFG) or Sparse Value Flow Graph (SVFG), our approach conducts a field-based flow analysis using the Control Flow Graph (CFG). To reduce false positives, we also check two types of branch conditions (NULL condition check and error code condition check) to determine what to propagate to each basic block in the CFG. Using our approach, we found 12 previously unknown leaks in Linux, with a precision of 59.1% in approximately 1 hour of analysis time. Some of the bugs were found in the core component, affecting many other components as well. We further created 9 fix patches for the bugs, all of them were reviewed and confirmed by the developers.
Background: Technical debt refers to design or implementation choices that can lead to increased maintenance costs in the future. The accumulation of technical debt not only raises maintenance costs but also hinders software evolution, making its early removal (i.e., repayment) desirable. In modern software development, TD-Issues exist as a means of managing technical debt through issue tracking systems. Although prior research has analyzed code changes related to technical-debt repayment within TD-Issues, no studies have examined whether code changes occur at all as part of TD-Issue resolution. Objective: This study investigates the relationship between technical-debt repayment and refactoring in TD-Issues, examining the extent to which refactoring is involved in the resolution of TD-Issues and clarifying its characteristics. Method: Using RefactoringMiner, we analyze commits linked to TD-Issues to determine the proportion that include refactoring operations and to identify the most frequently used refactoring operations. Results: RQ1) We found that 59.6% of technical-debt–repayment commits performed to resolve TD-Issues include refactoring, and over half of these commits combine multiple refactoring operations. RQ2) The refactoring operations applied tend to be fine-grained changes, such as data-type modifications and renaming. RQ3) When refactoring is performed, it is common for developers to simultaneously apply multiple data-type–changing operations involving variables, return values, and other program elements. Future Work: To support practitioners in managing technical debt, future work may identify concrete characteristics of technical debt by classifying types of technical debt and analyzing repayment patterns associated with each type.
In general, unit test cases are prepared as test programs (test code) and organized to facilitate automated testing. Consequently, whenever developers modify their production code, they can also test them automatically. Hence, test code plays an important role in the quality assurance of production code. However, because test code is also a manually written program, it might have a fault and offer inadequate testing. That is, test code can also contain code smells, which are referred to as “test smells.” Test smells may mislead developers by giving inaccurate test results. In other words, developers may feel a false sense of security about test results when the (smelled) test code overlooked latent bugs and did not fail. This paper focuses on test smells in Python test code and quantitatively analyzes relationships between test smell appearances and the bug-proneness of code under test. The analysis results show the following findings: (1) Specific test smells tend to have higher impacts on the bug-proneness of the code under test. (2) Test smells can be useful predictors for predicting latent bugs in the code under test.
Designing synchronous system, such as done in Programmable Logic Controller (PLC), timing diagrams are a common way to specify system behavior. The usual engineering workflow involves developing synchronous program according to the specified timing diagrams and then checking that the program conforms to the specification afterward. This process can be cumbersome. To ease such development processes, in this paper, we present a method to automatically synthesize synchronous program from a given timing diagram. We mainly target Ladder logic which is a major programming language in PLC program development. Our key contribution is a technique to complement a timing diagram with some explicit states, which enables our technology to easily rely on existing Programming-by-Example techniques. Additionally, we have developed a synthesis tool based on existing sketch-based program synthesis techniques.