# Methods for Cognitive Diagnosis of Students' Abilities Based on Keystroke Features
## 1 Introduction  
With the rapid development of information technology, the field of education is constantly experiencing digital transformation. In programming education, traditional evaluation methods mainly rely on students' examination scores and the completion of their assignments. Although this approach can, to a certain extent, reflect students' learning achievements, it fails to comprehensively assess students' cognitive processes and the proficiency levels of their abilities during the learning process [1]. Cognitive diagnosis relies on the performance of individuals in specific tasks to infer their cognitive abilities, and these performances are the outcomes of cognitive processes. Cognitive diagnosis can not only assess the cognitive abilities of individuals but also offer important insights for studying cognitive processes. By comparing the performances of different individuals in tasks, the disparities and characteristics of cognitive processes can be uncovered [2]. Previous studies have indicated that behavioral data generated during the learning process can reflect how the results of cognitive processes influence the final performance [3]. Keystroke data represent a type of behavioral data generated by students during the programming process. They encapsulate rich information and can mirror the distinct behavioral patterns of individuals. Similar to other biometric characteristics, keystroke data exhibit a certain degree of uniqueness and stability. The spatio-temporal characteristics of keystroke data offer a foundation for behavioral pattern analysis. By analyzing keystroke data, we can gain insights into students' programming speed, code-editing behavior, and other characteristics. This enables us to determine whether students encounter problems during the learning process [4]. At the learning strategy level, programming learning involves both shallow and deep learning strategies, which are closely associated with students' programming abilities, self-efficacy, and perseverance. Shallow learning strategies are more likely to be adopted in the initial stages of programming learning. They have a positive impact on perseverance and self-efficacy in computer programming. In contrast, deep learning strategies are more commonly employed in more advanced programming courses. The characteristics derived from keystroke data analysis reflect, to some extent, the learning strategies students adopt in programming learning. These characteristics are also related to students' cognitive abilities [5]. Therefore, the in depth analysis of keystroke data in programming can offer a novel perspective for researching learning behaviors in the field of programming education. It also provides robust support for gaining a deeper understanding of students' programming abilities and cognitive processes. Keystroke data have demonstrated unique application value in multiple fields. In the field of identity recognition, by analyzing features such as the time intervals between users' keystrokes and the force applied when they press keys, we can achieve the precise identification of users' identities, with an accuracy rate of over 90% [6; 7]. In the field of psychological state analysis, research has found that users' emotions can be recognized through keystrokes, and the accuracy rate can exceed 75% [8]. In the field of education, as the most direct and detailed behavioral records during students' programming process, keystroke data can, to a certain extent, reflect aspects like the speed, state, fluency, and accuracy of students during the programming process. Through the in-depth exploration and analysis of multi-dimensional keystroke features, students can be divided into different categories based on keystroke data, which can offer a unique perspective on understanding students' programming learning statuses and abilities [9; 10]. Clustering algorithms, as significant tools in the field of data mining, can group similar data objects, thereby revealing the latent patterns or rules within the data [11].