簡易檢索 / 詳目顯示

研究生: 廖容
Liao, Jung
論文名稱: 基於機器學習之初學者程式設計迷思概念自動診斷與關聯性分析
A Study of Novice Programmers' Misconceptions Based on Machine Learning: Automatic Misconception Diagnosis and Exploration of Relations Between Misconceptions
指導教授: 林育慈
Lin, Yu-Tzu
口試委員: 吳正己 張凌倩
口試日期: 2021/07/26
學位類別: 碩士
Master
系所名稱: 資訊教育研究所
Graduate Institute of Information and Computer Education
論文出版年: 2021
畢業學年度: 109
語文別: 中文
論文頁數: 106
中文關鍵詞: 迷思概念診斷程式設計類神經網路關聯規則學習法
英文關鍵詞: Misconception, Programming, Automatic diagnosis, Machine Learning, Association rule learning
DOI URL: http://doi.org/10.6345/NTNU202100919
論文種類: 學術論文
相關次數: 點閱:116下載:12
分享至:
查詢本校圖書館目錄 查詢臺灣博碩士論文知識加值系統 勘誤回報
  • 程式設計迷思概念經常造成學習者在學習過程中產生學習困難,並會在未來學習更高階的程式知識時學習表現不佳,進而導致撰寫的程式品質不佳,許多相關研究皆是透過人工分析的方式探究程式設計迷思概念。然而,這些研究方法大多樣本數少、針對單一程式語言,因此被指出不夠客觀、適用性不高。倘若能即時掌握學生迷思概念的狀況,即可趁早給予相對應的解決方案。因此,為了提供能廣泛應用、精準預測學生程式迷思之機制,本研究蒐集共一千多筆程式測驗資料,不侷限於單一程式語言,研究利用機器學習的技術,聚焦於流程控制(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.

    摘要 I Abstract III 誌謝 V 目錄 VI 表目錄 VIII 圖目錄 IX 第一章 緒論 1 第一節 研究背景與動機 1 第二節 研究目的 4 第二章 文獻探討 6 第一節 迷思概念 6 第二節 程式設計之迷思概念 11 第三節 類神經網路 14 第三章 研究方法 19 第一節 研究對象 19 第二節 研究工具 20 第三節 程式迷思自動診斷機制與關聯性分析 21 第四章 研究結果與討論 35 第一節 程式迷思概念自動診斷機制 35 第二節 迷思概念之間的關聯性 47 第五章 結論與建議 65 第一節 結論 65 第二節 建議 67 參考文獻 68 附錄一 程式設計紙本測驗試卷(Python) 73 附錄二 程式設計紙本測驗試卷(C++) 79 附錄三 程式設計紙本測驗試卷(C語言) 86 附錄四 程式設計紙本測驗試卷(Java) 93 附錄五 程式設計紙本測驗試卷(JavaScript) 100

    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.

    Mannila, L., Dagiene, V., Demo, B., Grgurina, N., Mirolo, C., Rolandsson, L., &
    Settle, A. (2014, June). Computational thinking in K-9 education. In Proceedings of the working group reports of the 2014 on innovation & technology in computer science education conference (pp. 1-29). ACM.

    Pea, R. D., & Kurland, D. M. (1984). On the cognitive effects of learning computer
    programming. New ideas in psychology, 2(2), 137-168.

    Perkins, D. N., & Martin, F. (1986). Fragile knowledge and neglected strategies in
    novice programmers. In at Empirical Studies of Programmers, 1st Workshop, Washington, DC (pp. 213-229).

    Bayman, P., & Mayer, R. E. (1983). A diagnosis of beginning programmers'
    misconceptions of BASIC programming statements. Communications of the ACM, 26(9), 677-679.

    Altadmri, A., & Brown, N. C. (2015, February). 37 million compilations:
    Investigating novice programming mistakes in large-scale student data. In Proceedings of the 46th ACM Technical Symposium on Computer Science Education (pp. 522-527). ACM.

    Bonar, J., & Soloway, E. (1985). Preprogramming knowledge: A major source of
    misconceptions in novice programmers. Human-Computer Interaction, 1(2), 133-161.

    Du Boulay, B. (1986). Some difficulties of learning to program. Journal of
    Educational Computing Research, 2(1), 57-73.

    Ehrig, H., Kreowski, H. J., Thatcher, J., Wagner, E., & Wright, J. (1981, August).
    Parameter passing in algebraic specification languages. In Workshop on Program
    Specification (pp. 322-369). Springer, Berlin, Heidelberg.

    Kaczmarczyk, L. C., Petrick, E. R., East, J. P., & Herman, G. L. (2010, March).
    Identifying student misconceptions of programming. In Proceedings of the 41st ACM technical symposium on Computer science education (pp. 107-111). ACM.

    Plass-Oude Bos, D. (2015). Identifying and addressing common programming
    misconceptions with variables (part 1) (Master's thesis, University of Twente).

    Sirkiä, T., & Sorva, J. (2012, November). Exploring programming misconceptions:
    an analysis of student mistakes in visual program simulation exercises. In Proceedings of the 12th Koli Calling International Conference on Computing Education Research (pp. 19-28). ACM.

    Veerasamy, A. K., D'Souza, D., & Laakso, M. J. (2016). Identifying novice student
    programming misconceptions and errors from summative assessments. Journal of
    Educational Technology Systems, 45(1), 50-73.

    Klopfer, L. E., Champagne, A. B., &Gunstone, R. F. (1983). Naive Knowledge and
    Science Learning. Research in Science & Technological Education, 1(2), 173–183.

    Eryilmaz, A. (2002). Effects of conceptual assignments and conceptual change
    discussions on students' misconceptions and achievement regarding force and motion.Journal of research in science teaching, 39(10), 1001-1015.

    Taber, K. S. (2015). Alternative conceptions/frameworks/misconceptions.
    Encyclopedia of Science Education. Dordrecht: Springer, 37-41.

    Vamvakoussi, X., & Vosniadou, S. (2010). How many decimals are there between
    two fractions? Aspects of secondary school students’ understanding of rational numbers and their notation. Cognition and instruction, 28(2), 181-209.

    Durkin, K., & Rittle-Johnson, B. (2015). Diagnosing misconceptions: Revealing
    changing decimal fraction knowledge. Learning and Instruction, 37, 21-29.

    Clancy, M. (2004). Misconceptions and attitudes that interfere with learning to
    program. Computer science education research, 85-100.

    Mayer, R. E. 1981. The Psychology of How Novices Learn Computer Programming.
    ACM Comput. Surv. 13, 1 (Mar. 1981), 121-141.

    Bayman, P. and Mayer, R. E. 1983. A diagnosis of beginning programmers'
    misconceptions of BASIC programming statements. Commun. ACM 26, 9 (Sep. 1983), 677-679.

    Bonar, J. and Soloway, E. 1985. Preprogramming knowledge: a major source of
    misconceptions in novice programmers. Hum.-Comput. Interact. 1, 2 (Jun. 1985), 133161.

    Johnson, F., McQuistin, S., & O'Donnell, J. (2020, January). Analysis of Student
    Misconceptions using Python as an Introductory Programming Language. In Proceedings of the 4th Conference on Computing Education Practice 2020 (pp. 1-4).

    Kwon, K. (2017). Novice Programmer's Misconception of Programming Reflected
    on Problem-Solving Plans. International Journal of Computer Science Education in
    Schools, 1(4), n4.

    Gal-Ezer, J., & Zur, E. (2004). The efficiency of algorithms—misconceptions.
    Computers & Education, 42(3), 215-226.

    Abiodun, O. I., Jantan, A., Omolara, A. E., Dada, K. V., Mohamed, N. A., & Arshad,
    H. (2018). State-of-the-art in artificial neural network applications: A survey. Heliyon, 4(11), e00938.

    Mahapatra, S. S., & Khan, M. S. (2007). A neural network approach for assessing
    quality in technical education: an empirical study. International Journal of Productivity and Quality Management, 2(3), 287-306.

    Tang, S., Peterson, J. C., & Pardos, Z. A. (2016, April). Deep neural networks and
    how they apply to sequential education data. In Proceedings of the Third (2016) ACM Conference on Learning@ Scale (pp. 321-324).

    Moridis, C. N., & Economides, A. A. (2009). Prediction of student’s mood during an online test using formula-based and neural network-based method. Computers & Education, 53(3), 644-652.

    Lykourentzou, I., Giannoukos, I., Mpardis, G., Nikolopoulos, V., & Loumos, V.
    (2009). Early and dynamic student achievement prediction in e‐learning courses using neural networks. Journal of the American Society for Information Science and
    Technology, 60(2), 372-380.

    Gedeon, T. D., & Turner, H. S. (1993, October). Explaining student grades predicted
    by a neural network. In Proceedings of 1993 International Conference on Neural Networks (IJCNN-93-Nagoya, Japan) (Vol. 1, pp. 609-612). IEEE.

    Kardan, A. A., Sadeghi, H., Ghidary, S. S., & Sani, M. R. F. (2013). Prediction of
    student course selection in online higher education institutes using neural network. Computers & Education, 65, 1-11.

    Sarle, W. S. (1994). Neural networks and statistical models.
    Abiodun, O. I., Jantan, A., Omolara, A. E., Dada, K. V., Mohamed, N. A., & Arshad,
    H. (2018). State-of-the-art in artificial neural network applications: A survey. Heliyon, 4(11), e00938.

    Kröse, B., Krose, B., van der Smagt, P., & Smagt, P. (1993). An introduction to neural
    networks.

    Kavzoglu, T. (2009). Increasing the accuracy of neural network classification using
    refined training data. Environmental Modelling & Software, 24(7), 850-858.

    Tang, W., Hua, G., & Wang, L. (2017, February). How to train a compact binary
    neural network with high accuracy?. In Proceedings of the AAAI Conference on Artificial Intelligence (Vol. 31, No. 1).

    Velázquez-Iturbide, J. Á. (2019, July). Students' Misconceptions of Optimization
    Algorithms. In Proceedings of the 2019 ACM Conference on Innovation and Technology in Computer Science Education (pp. 464-470).

    Gal-Ezer, J., & Zur, E. (2004). The efficiency of algorithms—misconceptions.
    Computers & Education, 42(3), 215-226.

    Albrecht, E., & Grabowski, J. (2020, February). Sometimes It's Just SloppinessStudying Students' Programming Errors and Misconceptions. In Proceedings of the 51st ACM Technical Symposium on Computer Science Education (pp. 340-345).

    Kohn, T. (2017). Teaching Python programming to novices: addressing
    misconceptions and creating a development environment. ETH Zurich.

    Chen, C. M., & Hsieh, Y. L. (2005, July). Mining learner profile utilizing association
    rule for common learning misconception diagnosis. In Fifth IEEE International
    Conference on Advanced Learning Technologies (ICALT'05) (pp. 588-592). IEEE.

    Mining, D. (2001). Concepts and techniques. Jiawei Han and Micheline Kamber, 2.
    Žanko, Ž., Mladenović, M., & Boljat, I. (2019). Misconceptions about variables at
    the K-12 level. Education and Information Technologies, 24(2), 1251-1268.

    Götschi, T., Sanders, I., & Galpin, V. (2003, January). Mental models of recursion. In
    Proceedings of the 34th SIGCSE technical symposium on Computer science education (pp. 346-350).

    Bubica, N., & Boljat, I. (2015). PROGRAMMING NOVICES'MENTAL MODELS.
    In 7th International Conference on Education and New Learning Technologies.

    Canas, J. J., Bajo, M. T., & Gonzalvo, P. (1994). Mental models and computer
    programming. International Journal of Human-Computer Studies, 40(5), 795-811.

    下載圖示
    QR CODE