透過您的圖書館登入
IP:3.133.92.6
  • 學位論文

基於機器學習之初學者程式設計迷思概念自動診斷與關聯性分析

A Study of Novice Programmers' Misconceptions Based on Machine Learning: Automatic Misconception Diagnosis and Exploration of Relations Between Misconceptions

指導教授 : 林育慈

摘要


程式設計迷思概念經常造成學習者在學習過程中產生學習困難,並會在未來學習更高階的程式知識時學習表現不佳,進而導致撰寫的程式品質不佳,許多相關研究皆是透過人工分析的方式探究程式設計迷思概念。然而,這些研究方法大多樣本數少、針對單一程式語言,因此被指出不夠客觀、適用性不高。倘若能即時掌握學生迷思概念的狀況,即可趁早給予相對應的解決方案。因此,為了提供能廣泛應用、精準預測學生程式迷思之機制,本研究蒐集共一千多筆程式測驗資料,不侷限於單一程式語言,研究利用機器學習的技術,聚焦於流程控制(if-else, for-loop, while-loop),建構程式設計迷思的自動診斷機制,藉此可給予學生相關的教學輔助。 本研究主要有兩大貢獻:1. 建構迷思概念自動診斷機制:應用多層感知器(Multilayer Perceptron, 縮寫MLP),擷取學習者所撰寫之程式碼的特徵為類神經網路的輸入,訓練模型使其輸出能夠預測迷思概念種類。研究透過727筆訓練資料多層感知模型,測試486筆資料之迷思概念診斷正確率為97.9%。2. 探究迷思概念間的關聯性:利用關聯規則學習法分析各個迷思概念之間的關聯性,發掘哪些迷思概念經常同時出現,藉以了解迷思概念產生之原因與各迷思概念彼此間的影響。研究結果發現:迷思概念「認為所有的if條件分支都是同時執行」與多個迷思概念之間具有關聯性,推測當學生對於電腦指令運行上持有迷思概念時,會影響日後程式設計的學習。 本研究提出的研究結果,包含設計與實作迷思概念的自動診斷機制,以及探究各個迷思概念之間的關聯性,皆能夠為日後的程式教學上提供有益的參考。教師們能夠藉此即時了解學生程式設計迷思概念,並給予適切回饋。此外,根據研究所發現之迷思概念間的關聯性,可更清楚掌握導致迷思概念的原因與各迷思概念間之交互影響,藉以設計有效的程式設計教材,以防止或矯正學生迷思概念。

並列摘要


Programming misconceptions would lead to learning difficulties and should be overcome to help students’ build correct concepts for higher learning performance. Traditional research analyzed students’ misconceptions by manually reviewing their code or interviewing them for exploring their misconceptions, which was a time-consuming and subjective process. Additionally, the sample size for such research was relatively small and only one programming language was focused. To provide a more feasible and generalized misconception diagnosis mechanism, this research developed an automatic misconception diagnosis mechanism for exploring students’ misconceptions based on machine learning techniques. Relations between misconceptions were also explored based on association rule learning. The participants of the experiment were 1000 high school or college students. Features for machine learning were extracted from code (the control constructs: if-else, for-loop, and while-loop was focused) of five programming languages: Java, C++, C, Python, and Javascript. This research has two major contributions: (1) Developing an automatic diagnosis mechanism for misconception detection: Multilayer Perceptron (MLP) was employed to map the code syndrome to the misconception types, which could predict students’ misconceptions from their code. The training data consisted of the code from 727 students and the testing data consisted of the code from 486 students. The accuracy of misconception diagnosis was 97.9%. (2) Exploring the relations between misconceptions: the association rule learning was applied to analyze the relations between different misconceptions to explore the root cause of the misconceptions. The results of the study show that: the misconception "all the if-conditional-branches execute simultaneously" is related to several other misconceptions. This implies that if the students have misconceptions about instruction execution logic, then they are tended to have many other programming misconceptions. The research findings provide feasible suggestions for programming instruction: teachers can apply the proposed diagnosis mechanism to grasp students’ programming misconceptions, based on which appropriate feedback and correction can be provided. Cognitive perspectives of programming learning can be explored based on the relations of misconceptions for developing effective programming instruction.

參考文獻


Clement, J. (1993). Using bridging analogies and anchoring intuitions to deal with
students' preconceptions in physics. Journal of research in science teaching, 30(10), 1241-1257.
Alternative Conceptions/Frameworks/Misconceptions. In Encyclopedia of Science Education (pp. 1–5). Dordrecht: Springer Netherlands.
Zehetmeier, D., Böttcher, A., Brüggemann-Klein, A., & Thurner, V. (2015, June).
Development of a classification scheme for errors observed in the process of computer programming education. In 1ST INTERNATIONAL CONFERENCE ON HIGHER EDUCATION ADVANCES (HEAD'15) (pp. 475-484). Editorial Universitat Politècnica de València.

延伸閱讀