{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/knowledge-tracing-in-programming-education","title":"Knowledge Tracing in Programming Education Integrating Students' Questions","arxiv_id":"2502.10408","date":"2025-01-22","proceeding":null,"authors":["Doyoun Kim","Suin Kim","Yojan Jo"],"abstract":"Knowledge tracing (KT) in programming education presents unique challenges due to the complexity of coding tasks and the diverse methods students use to solve problems. Although students' questions often contain valuable signals about their understanding and misconceptions, traditional KT models often neglect to incorporate these questions as inputs to address these challenges. This paper introduces SQKT (Students' Question-based Knowledge Tracing), a knowledge tracing model that leverages students' questions and automatically extracted skill information to enhance the accuracy of predicting students' performance on subsequent problems in programming education. Our method creates semantically rich embeddings that capture not only the surface-level content of the questions but also the student's mastery level and conceptual understanding. Experimental results demonstrate SQKT's superior performance in predicting student completion across various Python programming courses of differing difficulty levels. In in-domain experiments, SQKT achieved a 33.1\\% absolute improvement in AUC compared to baseline models. The model also exhibited robust generalization capabilities in cross-domain settings, effectively addressing data scarcity issues in advanced programming courses. SQKT can be used to tailor educational content to individual learning needs and design adaptive learning systems in computer science education.","url_abs":"https://arxiv.org/abs/2502.10408v1","url_pdf":"https://arxiv.org/pdf/2502.10408v1.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[],"tasks":[{"task_slug":"knowledge-tracing","task_name":"Knowledge Tracing"},{"task_slug":"misconceptions","task_name":"Misconceptions"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2502.10408","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2502.10408"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"deterministic:regex_extraction","url":"https://github.com/holi-lab/SQKT","reach":null}],"summary":{"ran":5},"by_repo_kind":{"found_in_text":{"samples":5,"ran":5,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":5,"samples":[{"code_sha256_prefix":"d05f03e21e70ce13","entry":"EncoderLayer","repo":"holi-lab/SQKT","repo_kind":"found_in_text","path":"main/blocks/encoder_layer.py","file_url":"https://github.com/holi-lab/SQKT/blob/HEAD/main/blocks/encoder_layer.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"d05f03e21e70ce13"}},{"code_sha256_prefix":"17febf0e3fd3f273","entry":"LayerNorm","repo":"holi-lab/SQKT","repo_kind":"found_in_text","path":"main/blocks/encoder_layer.py","file_url":"https://github.com/holi-lab/SQKT/blob/HEAD/main/blocks/encoder_layer.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"17febf0e3fd3f273"}},{"code_sha256_prefix":"9af23750c4257a47","entry":"MultiHeadAttention","repo":"holi-lab/SQKT","repo_kind":"found_in_text","path":"main/blocks/encoder_layer.py","file_url":"https://github.com/holi-lab/SQKT/blob/HEAD/main/blocks/encoder_layer.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"9af23750c4257a47"}},{"code_sha256_prefix":"3f04f961d1a1a3dd","entry":"PositionwiseFeedForward","repo":"holi-lab/SQKT","repo_kind":"found_in_text","path":"main/blocks/encoder_layer.py","file_url":"https://github.com/holi-lab/SQKT/blob/HEAD/main/blocks/encoder_layer.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"3f04f961d1a1a3dd"}},{"code_sha256_prefix":"5bd7d76b43a20681","entry":"ScaleDotProductAttention","repo":"holi-lab/SQKT","repo_kind":"found_in_text","path":"main/blocks/encoder_layer.py","file_url":"https://github.com/holi-lab/SQKT/blob/HEAD/main/blocks/encoder_layer.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"5bd7d76b43a20681"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}