{"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/simplekt-a-simple-but-tough-to-beat-baseline","title":"simpleKT: A Simple But Tough-to-Beat Baseline for Knowledge Tracing","arxiv_id":"2302.06881","date":"2023-02-14","proceeding":null,"authors":["Zitao Liu","Qiongqiong Liu","Jiahao Chen","Shuyan Huang","Weiqi Luo"],"abstract":"Knowledge tracing (KT) is the problem of predicting students' future performance based on their historical interactions with intelligent tutoring systems. Recently, many works present lots of special methods for applying deep neural networks to KT from different perspectives like model architecture, adversarial augmentation and etc., which make the overall algorithm and system become more and more complex. Furthermore, due to the lack of standardized evaluation protocol \\citep{liu2022pykt}, there is no widely agreed KT baselines and published experimental comparisons become inconsistent and self-contradictory, i.e., the reported AUC scores of DKT on ASSISTments2009 range from 0.721 to 0.821 \\citep{minn2018deep,yeung2018addressing}. Therefore, in this paper, we provide a strong but simple baseline method to deal with the KT task named \\textsc{simpleKT}. Inspired by the Rasch model in psychometrics, we explicitly model question-specific variations to capture the individual differences among questions covering the same set of knowledge components that are a generalization of terms of concepts or skills needed for learners to accomplish steps in a task or a problem. Furthermore, instead of using sophisticated representations to capture student forgetting behaviors, we use the ordinary dot-product attention function to extract the time-aware information embedded in the student learning interactions. Extensive experiments show that such a simple baseline is able to always rank top 3 in terms of AUC scores and achieve 57 wins, 3 ties and 16 loss against 12 DLKT baseline methods on 7 public datasets of different domains. We believe this work serves as a strong baseline for future KT research. Code is available at \\url{https://github.com/pykt-team/pykt-toolkit}\\footnote{We merged our model to the \\textsc{pyKT} benchmark at \\url{https://pykt.org/}.}.","url_abs":"https://arxiv.org/abs/2302.06881v2","url_pdf":"https://arxiv.org/pdf/2302.06881v2.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":[{"paper_slug":"simplekt-a-simple-but-tough-to-beat-baseline","repo_url":"https://github.com/pykt-team/pykt-toolkit","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":null},{"paper_slug":"simplekt-a-simple-but-tough-to-beat-baseline","repo_url":"https://github.com/ZhijieXiong/pyedmine","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"knowledge-tracing","task_name":"Knowledge Tracing"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2302.06881","atlas_url":"https://app.syntology.ai/?focus=2302.06881","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2302.06881"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-25T09:33:49+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/pykt-team/pykt-toolkit","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/ZhijieXiong/pyedmine","reach":null}],"summary":{"ran":6,"ran_draft_wrong":3,"ran_fixture":1,"unverified":8},"by_repo_kind":{"official":{"samples":8,"ran":5,"repositories":1},"listed":{"samples":10,"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":0,"samples":[{"code_sha256_prefix":"51a4d97f18e4d74d","entry":"CosinePositionalEmbedding","repo":"pykt-team/pykt-toolkit","repo_kind":"official","path":"pykt/models/simplekt.py","file_url":"https://github.com/pykt-team/pykt-toolkit/blob/HEAD/pykt/models/simplekt.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"51a4d97f18e4d74d"}},{"code_sha256_prefix":"ab9278583893f81c","entry":"CosinePositionalEmbedding","repo":"ZhijieXiong/pyedmine","repo_kind":"listed","path":"edmine/model/sequential_kt_model/SimpleKT.py","file_url":"https://github.com/ZhijieXiong/pyedmine/blob/HEAD/edmine/model/sequential_kt_model/SimpleKT.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"ab9278583893f81c"}},{"code_sha256_prefix":"d15a23de22202ec8","entry":"EmbedLayer","repo":"ZhijieXiong/pyedmine","repo_kind":"listed","path":"edmine/model/sequential_kt_model/SimpleKT.py","file_url":"https://github.com/ZhijieXiong/pyedmine/blob/HEAD/edmine/model/sequential_kt_model/SimpleKT.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"d15a23de22202ec8"}},{"code_sha256_prefix":"a9a73e8f8da578a5","entry":"MultiHeadAttention","repo":"pykt-team/pykt-toolkit","repo_kind":"official","path":"pykt/models/simplekt.py","file_url":"https://github.com/pykt-team/pykt-toolkit/blob/HEAD/pykt/models/simplekt.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"a9a73e8f8da578a5"}},{"code_sha256_prefix":"259230bd3dadf29b","entry":"PredictorLayer","repo":"ZhijieXiong/pyedmine","repo_kind":"listed","path":"edmine/model/sequential_kt_model/SimpleKT.py","file_url":"https://github.com/ZhijieXiong/pyedmine/blob/HEAD/edmine/model/sequential_kt_model/SimpleKT.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"259230bd3dadf29b"}},{"code_sha256_prefix":"29b9654280d01c8a","entry":"TransformerLayer","repo":"pykt-team/pykt-toolkit","repo_kind":"official","path":"pykt/models/simplekt.py","file_url":"https://github.com/pykt-team/pykt-toolkit/blob/HEAD/pykt/models/simplekt.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"29b9654280d01c8a"}},{"code_sha256_prefix":"5bd62b8707ef0480","entry":"attention","repo":"pykt-team/pykt-toolkit","repo_kind":"official","path":"pykt/models/simplekt.py","file_url":"https://github.com/pykt-team/pykt-toolkit/blob/HEAD/pykt/models/simplekt.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"5bd62b8707ef0480"}},{"code_sha256_prefix":"e05cd8a1686715a5","entry":"attention","repo":"pykt-team/pykt-toolkit","repo_kind":"official","path":"pykt/models/simplekt.py","file_url":"https://github.com/pykt-team/pykt-toolkit/blob/HEAD/pykt/models/simplekt.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"e05cd8a1686715a5"}},{"code_sha256_prefix":"cba543ff01d32d68","entry":"binary_cross_entropy","repo":"ZhijieXiong/pyedmine","repo_kind":"listed","path":"edmine/model/sequential_kt_model/SimpleKT.py","file_url":"https://github.com/ZhijieXiong/pyedmine/blob/HEAD/edmine/model/sequential_kt_model/SimpleKT.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"cba543ff01d32d68"}},{"code_sha256_prefix":"7a822c04227645b1","entry":"register_model","repo":"ZhijieXiong/pyedmine","repo_kind":"listed","path":"edmine/model/sequential_kt_model/SimpleKT.py","file_url":"https://github.com/ZhijieXiong/pyedmine/blob/HEAD/edmine/model/sequential_kt_model/SimpleKT.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"7a822c04227645b1"}},{"code_sha256_prefix":"10d847633310982a","entry":"Architecture","repo":"pykt-team/pykt-toolkit","repo_kind":"official","path":"pykt/models/simplekt.py","file_url":"https://github.com/pykt-team/pykt-toolkit/blob/HEAD/pykt/models/simplekt.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"10d847633310982a"}},{"code_sha256_prefix":"21a296d1daf97849","entry":"Architecture","repo":"ZhijieXiong/pyedmine","repo_kind":"listed","path":"edmine/model/sequential_kt_model/SimpleKT.py","file_url":"https://github.com/ZhijieXiong/pyedmine/blob/HEAD/edmine/model/sequential_kt_model/SimpleKT.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"21a296d1daf97849"}},{"code_sha256_prefix":"843a8076c769659a","entry":"DLSequentialKTModel","repo":"ZhijieXiong/pyedmine","repo_kind":"listed","path":"edmine/model/sequential_kt_model/SimpleKT.py","file_url":"https://github.com/ZhijieXiong/pyedmine/blob/HEAD/edmine/model/sequential_kt_model/SimpleKT.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"843a8076c769659a"}},{"code_sha256_prefix":"03a3df87a41d52ec","entry":"Dim","repo":"pykt-team/pykt-toolkit","repo_kind":"official","path":"pykt/models/simplekt.py","file_url":"https://github.com/pykt-team/pykt-toolkit/blob/HEAD/pykt/models/simplekt.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"03a3df87a41d52ec"}},{"code_sha256_prefix":"583cf54d277de682","entry":"KnowledgeTracingModel","repo":"ZhijieXiong/pyedmine","repo_kind":"listed","path":"edmine/model/sequential_kt_model/SimpleKT.py","file_url":"https://github.com/ZhijieXiong/pyedmine/blob/HEAD/edmine/model/sequential_kt_model/SimpleKT.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"583cf54d277de682"}},{"code_sha256_prefix":"a0f64b6155f927e3","entry":"SimpleKT","repo":"ZhijieXiong/pyedmine","repo_kind":"listed","path":"edmine/model/sequential_kt_model/SimpleKT.py","file_url":"https://github.com/ZhijieXiong/pyedmine/blob/HEAD/edmine/model/sequential_kt_model/SimpleKT.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"a0f64b6155f927e3"}},{"code_sha256_prefix":"66d7f0607aa34ce3","entry":"TransformerLayer4SimpleKT","repo":"ZhijieXiong/pyedmine","repo_kind":"listed","path":"edmine/model/sequential_kt_model/SimpleKT.py","file_url":"https://github.com/ZhijieXiong/pyedmine/blob/HEAD/edmine/model/sequential_kt_model/SimpleKT.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"66d7f0607aa34ce3"}},{"code_sha256_prefix":"533a0f0a6e9e6641","entry":"simpleKT","repo":"pykt-team/pykt-toolkit","repo_kind":"official","path":"pykt/models/simplekt.py","file_url":"https://github.com/pykt-team/pykt-toolkit/blob/HEAD/pykt/models/simplekt.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"533a0f0a6e9e6641"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}