×

用Haskell理解初学者的错误。 (英语) 兹比尔1420.68048

摘要:本文概述了学生在Haskell教授的函数编程入门(FP)课程中遇到的困难。本研究的动机源于我们的信念,即通过了解错误的根本原因,并相应地修改教育方法和可能的教学语言,可以缓解学生的许多困难。我们分析学生提交的练习,并根据编译器错误消息对学生错误进行分类,然后根据观察到的潜在原因手动进行分类。我们的研究通过应用计算机和人工分析补充了早期关于该主题的研究,同时侧重于提供特定于FP语言的困难的描述性统计。我们的结论是,大多数学生的错误,无论是什么原因,都是由三条不同的编译器错误消息报告的,而学生们对此并没有很好的理解。此外,语法特征,如优先级、函数应用的语法和深层嵌套语句,在整个过程中都会造成困难。

MSC公司:

68甲18 函数编程和lambda演算
97页40页 编程语言(教育方面)
PDF格式BibTeX公司 XML格式引用
全文: 内政部

参考文献:

[1] 安德森J。R.,皮罗利P&法雷尔。(1988)学习编写递归函数。在《专业知识的本质》中,RobertG。,奇姆。T.H.和FarrM.J.(编辑),希尔斯代尔:心理学出版社;ISBN-13:978-0805804041,第153-184页。
[2] 别纽萨。,德根。,海德格尔。,蒂曼P。,国防军、GasbichlerM.、克雷斯塔尼姆。,克拉伦海。,可耐尔电气SperberM.(2008)战场上的HtDP和DMdA。教育中的函数式和声明式编程。维多利亚,不列颠哥伦比亚省,加拿大。
[3] 布兰科J。,洛萨诺。,阿吉雷恩。,诺瓦拉姆。M.、PermigianiS.和ScilingoG公司。(2009)基于形式规范和程序计算的编程入门课程。ACM SIGCSE公告41(2),31-37。
[4] BonarJ.&SolowayE。(1985)预编程知识:初学者误解的主要来源。人类计算。互动1(2),133-161.10.1207/s15327051hci0102_3·doi:10.1207/s15327051hci0102_3
[5] 布朗恩。C.C.&AltadmriA.(2014)《调查新手编程错误:教育者的信念与学生数据》。第十届国际计算机教育研究年会论文集。苏格兰格拉斯哥格拉斯哥大学:ACM。
[6] 查克拉瓦蒂M。M.T.和KellerG。(2004)第一年教授纯函数编程的风险和好处。J.功能。程序.14(1),113-123.10.1017/S0956796803004805·doi:10.1017/S0956796803004805
[7] 钱伯斯C。,陈仕。,LeD.和斯卡菲迪。(2012)信息源在学习函数式编程中的作用和功能障碍。J.计算。科学。学院28(1),220-226。
[8] 克拉克公司迈尔斯公司。(1995)机能失调学生。《教育中的函数编程语言》,P.Hartel&R.Plasmeijer(eds),《计算机科学讲义》,第1022卷。柏林/海德堡:施普林格,第289-309.10.1007/3-540-60675-0页
[9] Damas L.和MilnerR.(1982)功能程序的主要类型模式。第九届ACM SIGPLAN-SIGACT编程语言原理研讨会会议记录。美国新墨西哥州阿尔伯克基:ACM出版社,ISBN 0-89791-065-6,第207-212页。
[10] 丹尼·P。,卢克斯顿ReillyA.&温度E。(2012)并非所有语法错误都相同。第17届ACM计算机科学教育创新与技术年会论文集。以色列海法:ACM,第75-80页。
[11] 法基。,尼罗河和我们的。(2003)并发错误模式以及如何测试它们。《并行和分布式处理研讨会论文集》,国际,法国尼斯,2003年。IEEE,第7页。
[12] 费利森。,FindlerR.B.、FlattM.&克里希纳穆提斯。(2001)如何设计程序。剑桥:麻省理工学院出版社·Zbl 0994.68013号
[13] 费利森。,FindlerR.B.、FlattM.&克里希纳穆提斯。(2004)计算机科学课程的结构和解释。J.功能。程序.14(4),365-378.10017/S0956796804005076·网址:10.1017/S0956796804005076
[14] 芬威克J。诺里斯·小B。,巴里夫。E.、RountreeJ.、。,香料C。J.&CheekS公司。D.(2009年)再次审视初学者的行为。ACM SIGCSE公告41(1),296-300.10.1145/1539024.1508973·doi:10.1145/1539024.1508973
[15] Findler R.B.、ClementsJ.、。,佛罗里达州。,扁平M。,克里希纳穆提斯。,StecklerP.&公司费利森。(2002)Drscheme:方案的编程环境。J.功能。程序.12(02),159-182·Zbl 0987.68610号
[16] 加里森德。R.和KanukaH。(2004)混合学习:揭示其在高等教育中的变革潜力。互联网高等教育。7(2),95-105.10.1016/j.iheduc.2004.02.001·doi:10.1016/j.iheduc.2004.02.001
[17] 哈伯曼银行AverbuchH公司。(2002)基本案例:为什么它们如此难以识别?学生在递归方面有困难。ACM SIGCSE公告,第34卷。ACM,第84-88页。
[18] 哈格·J·&KeekenP公司。(2006)氦开采。UU-CS技术报告。
[19] 哈格·J·&海伦布。(2007)用于类型错误发现和恢复的启发式方法。《函数语言的实现和应用》,斯普林格出版社,199-216页。
[20] 大厅C。V.、HammondK、。,佩顿·琼斯瓦德勒。(1996)Haskell中的类型类。ACM事务处理。程序。语言系统。(托普拉斯)18(2),109-138.10.1145/227699.227700·doi:10.1145/227699.227700
[21] 海伦布。J.(2005)《顶级质量类型错误消息》,2005/9/20,IPA论文系列,乌得勒支大学。
[22] 海伦布。,Leijen D.&公司van IJzendoornA公司。(2003)氦,用于学习Haskell。2003年ACM SIGPLAN Haskell研讨会论文集。瑞典乌普萨拉:ACM,第62-71页。
[23] 哈顿。(1999)关于折叠的普遍性和表现力的教程。J.功能。程序9(4),355-372.10.1017/S0956796899003500·Zbl 0948.68036号 ·doi:10.1017/S0956796899003500
[24] IsomöttönenV.&TirronenV公司。(2013)通过强调自我导向来教授编程:学生对要求他们扮演的积极角色有何反应?事务处理。计算。教育。13(2),6:1-6:21。
[25] 贾达姆。C.(2005)使用BlueJ首次观察新手编译行为。计算。科学。教育15(1),25-40.10.108/08993400500056530·doi:10.1080/08993400500056530
[26] JoostenS.、。,BergK和霍文·G。V.D.(1993)向一年级学生教授函数编程。J.功能。程序.3(1),49-65.10.1017/S0956796800000599·doi:10.1017/S0956796800000599
[27] 卡尼·H。(1983)初学者对递归了解多少。在SIGCHI计算机系统人为因素会议记录中。美国马萨诸塞州波士顿:ACM,第235-239页。
[28] 科拉夫努。(1995)通过函数语言向计算机科学本科生介绍编程原理。第一届函数式编程语言教育国际研讨会论文集。(FPLE’95),LNCS 1022,荷兰奈梅亨:施普林格-弗拉格出版社,ISBN-13:978-3540606758,第15-34页。
[29] KinnunenP.&公司马尔米。(2006)为什么学生会放弃CS1课程?第二届计算机教育研究国际研讨会论文集。英国坎特伯雷肯特大学,ICER’06。美国纽约:ACM,第97-108页。
[30] 拉赫蒂宁。,阿拉穆特卡克和JärvinenH。M.(2005)一项关于新手程序员困难的研究。SIGCSE公告。37(3),14-18。
[31] 勒布朗。J.&Fischer公司。N.(1982)Pascal程序中运行时错误的案例研究。软件:实际。实验12(9),825-834。
[32] 勒纳B。美国、FlowerM.、Grossman D.&钱伯斯C。(2007)搜索类型错误消息。在ACM SIGPLAN通知中,第42卷。ACM,第425-434页。
[33] 勒万多夫斯基。(2003)使用过程期刊来获得对初级程序员的定性理解。J.计算。科学。学院19(1),299-310。
[34] 卢斯。,公园。,SeoE.和周毅。(2008)从错误中学习:对真实世界并发错误特征的综合研究。在ACM SIGPLAN通知中,第43卷。ACM,第329-339页。
[35] MaL.,FergusonJ。,RoperM.和WoodM。(2011)调查和改进新手程序员持有的编程概念模型。计算。科学。教育21(1),57-80.10.1080/08993408.2011.554722·doi:10.1080/08993408.2011.554722
[36] 马赛。,FislerK和KrishnamurthiS。(2011a)测量为初学者设计的错误消息的有效性。第42届ACM计算机科学教育技术研讨会论文集。ACM,第499-504页。
[37] 马赛。,FislerK和KrishnamurthiS。(2011b)注意语言:关于新手与错误消息的交互。第十届SIGPLAN会议记录。爱沙尼亚塔林,2005年9月26-28日,关于编程和软件的新思想、新范式和思考的研讨会。ACM,第3-18页。
[38] 麦克布莱德公司帕特森·R。(2008)《功能性珍珠:具有效果的应用程序设计》。J.功能。程序.18(1),1-13·兹比尔1128.68020
[39] 莫拉赞。T.(2011)CS1教室中的功能视频游戏。《函数编程趋势》,2011年5月16日至18日,西班牙马德里:斯普林格出版社,第166-183页。
[40] 莫拉赞。T.(2012)CS1 II中的功能视频游戏。《函数编程趋势》,英国苏格兰圣安德鲁斯大学施普林格分校,第146-162页。
[41] 窗格J。F.、RatanamahatanaC。A.和MyersB。A.(2001)研究非程序员解决编程问题的语言和结构。国际人类计算杂志。螺柱54(2),237-264.10.1006/ijhc.2000.0410·Zbl 1011.68651号 ·doi:10.1006/ijhc.2000.0410
[42] 梨。D.(1986)初学者编程中与语言相关的概念性“错误”。J.教育。计算。第2(1)号决议,25-36.10.2190/689T-1R2A-X4W4-29J2·doi:10.2190/689T-1R2A-X4W4-29J2
[43] 珀金斯。N.&MartinF.公司。(1986)初学者的脆弱知识和被忽视的策略。《程序员实证研究第一届研讨会论文集》,美国华盛顿特区,第213-229页。
[44] RuehrF公司。(2008)关于教学类型和功能的提示。2008年9月21日,加拿大不列颠哥伦比亚省维多利亚市,《2008年教育功能性和声明性编程国际研讨会论文集》,ACM,第79-90页。
[45] 西格尔J。(1994)函数编程学习者评估递归函数的实证研究。《仪器科学》22(5),385-411。
[46] 索洛韦公司埃利希克。(1984)编程知识的实证研究。IEEE传输。柔和。工程595-609。
[47] 索洛韦东部。,埃利希克&BonarJ.(1982)利用隐性编程知识。1982年计算机系统人为因素会议记录。美国盖瑟斯堡:ACM,第52-57页。
[48] 萨默伦M。W.(1990)怎么了?了解Prolog初学者的问题。《仪器科学》19(4),257-282。2007年10月10日/BF00116441·doi:10.1007/BF00116441
[49] Spohrer J.G.&SolowayE公司。(1986)分析新手程序中的高频错误。在第一届程序员实证研究研讨会上发表的论文。美国华盛顿特区:美国新泽西州诺伍德:Ablex出版公司,第230-251页。
[50] 斯特菲克公司西贝茨。(2013)编程语言语法的实证调查。ACM事务处理。计算。教育。(目录)13(4),19。
[51] 汤普森公司希尔斯。(1995)通过课程进行功能编程。《函数编程语言教育》,FPLE LNCS 1022,HartelP。H.&PlasmeijerM.J.(编辑),奈梅亨,荷兰:施普林格-弗拉格出版社,第85-102页。
[52] 廷托V。(1997)教室作为社区:探索学生坚持的教育特征。《高等教育杂志》,68(6),599-623.10.2307/2959965·doi:10.2307/2959965
[53] TirronenV.&IsomöttönenV公司。(新闻稿)具有认知有效工作示例格式的教学类型。J.功能。程序·Zbl 1420.68047号
[54] 乌洛姆。(1980)计算机编程教学:学生问题、教学方法和自动化教学工具的调查。SIGCSE公告12(2),48-64.10.1145/989253.989263·数字对象标识代码:10.1145/989253.989263
[55] Vujoševic-JanicicM.和致:gs icD。(2008)编程范例在第一门编程课程中的作用。教。数学。十一(2),63-83。
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。