[论文阅读] AI+教学 | 编程入门课的AI助手革命?ChatGPT的4大核心影响全解析
编程入门课的AI助手革命?ChatGPT的4大核心影响全解析
论文信息
- 论文原标题:ChatGPT in Introductory Programming: Counterbalanced Evaluation of Code Quality, Conceptual Learning, and Student Perceptions
- 发表情况:Accepted to SIGCITE’25
一段话总结
该研究针对ChatGPT在C语言入门编程课(CS1)中的应用,对27名学生开展平衡准实验:两组交替在“用ChatGPT”和“不用ChatGPT”条件下完成函数、结构体作业,通过代码质量评分、概念测试、完成时间及问卷评估影响。结果显示,ChatGPT组代码质量显著更高(结构体作业p<0.001)、完成时间大幅缩短(函数作业平均快1890秒),但概念理解效果因主题而异(结构体有提升,函数无差异);学生认可其代码生成/调试价值,却担忧准确性与长期技能发展。研究为AI融入编程教学提供了实证依据。
思维导图
研究背景
如果你教过或学过编程入门课(比如CS1),一定懂这种“痛”:
新手对着屏幕写C语言函数,光是调试“未初始化变量”的警告就能耗掉1小时;讲到结构体这种抽象概念,一半学生盯着“struct Book {char title[50]; int pages;}”发呆——这就是CS1的常态:基础语法繁琐、抽象概念难啃,学生容易陷入“卡壳焦虑”。
而ChatGPT的出现像一剂“特效药”:学生输入“写一个检查字符串变位词的C函数”,几秒就能拿到可运行代码;遇到结构体嵌套问题,它还能举“图书信息包含作者地址”的例子。但这剂药也藏着“副作用”:
- 老师怕学生“抄代码不思考”,连最基础的函数逻辑都记不住;
- 学界争议不断:AI到底是“提升生产力的工具”,还是“削弱独立解决问题能力的拐杖”?
此前研究要么只问学生“你觉得GPT有用吗”,要么只测单一作业的代码得分,没人系统地搞清楚:GPT到底对“代码质量、完成速度、概念理解”这三件编程学习的核心事,分别有什么影响? 这篇论文就瞄准了这个缺口,用实打实的实验给出答案。
创新点
这篇研究的“独特之处”在于三个“不将就”:
-
实验设计不将就:拒绝“一刀切”
不像传统实验“一组用GPT、一组不用”(可能受作业难度顺序影响),它用平衡准实验:两组学生交替用GPT做函数、结构体作业,既控制了“先易后难”的顺序效应,又能对比同一批学生在两种条件下的表现,结果更可信。 -
评估维度不将就:不止看“代码对不对”
多数研究只看“代码是否通过测试用例”,这篇设计了5维评分表(正确性、效率、可读性、警告处理、错误处理),连“变量命名规范”“注释是否清晰”都纳入评估——毕竟真实编程里,“能跑的烂代码”不如“优雅的好代码”。 -
研究问题不将就:直击教学痛点
不回避“AI会不会让学生变懒”的核心争议,专门加了概念后测和学生感知问卷,既看“短期代码产出”,也看“长期概念理解”,还听学生真实声音,结论更全面。
研究方法和思路
整个研究像“拆积木”一样清晰,分4步走:
步骤1:确定“玩家”和“规则”
- 玩家:27名CS1学生(6女21男),自愿参与(获少量加分),分成A组(14人)和B组(13人)。
- 规则:搞“交替任务”——
- 作业1(函数主题:变位词检查、数组最值等):A组用ChatGPT,B组不用;
- 作业2(结构体主题:英尺-英寸加法、图书记录等):A组不用ChatGPT,B组用。
步骤2:设计“任务”和“评分尺”
- 任务:两道C语言作业,每道含3个贴近课程内容的小题(比如结构体要处理“英尺进位到英寸”的实际场景)。
- 评分尺:5维代码评分表(κ=0.87,双评分者一致度高),每维按“完全达标(1分)、部分达标(0.5分)、未达标(0分)”打分。
- 辅助工具:前后测问卷(测ChatGPT熟悉度、编程信心)、概念测试题(比如“结构体和数组的区别是什么”)。
步骤3:收集“战绩”
用Qualtrics平台统一发作业、收代码,自动记录“完成时间”,同时回收问卷和概念测试答案。
步骤4:算“胜负”
用统计学方法对比两组数据:代码得分用t检验,概念得分用曼-惠特尼U检验(因样本量小),确保结果的显著性。
主要成果和贡献
核心成果(用表格看更清楚)
研究问题(RQ) | 对比实验条件 | 关键结论 |
---|---|---|
RQ1:GPT是否提升代码质量? | GPT组 vs 非GPT组 | 是!结构体作业p<0.001,函数作业p=0.018,可读性和警告处理提升最明显 |
RQ2:GPT是否缩短完成时间? | GPT组 vs 非GPT组 | 是!函数作业平均快1890秒(GPT组495秒 vs 非GPT组2385秒),p=0.0002 |
RQ3:GPT是否影响概念理解? | GPT组 vs 非GPT组 | 混合效果:结构体主题总得分更高(p=0.0457),函数主题无差异(p=0.3234) |
RQ4:学生对GPT的感知如何? | GPT组前后测问卷 | 认可代码生成/调试价值,但30%担忧“依赖后不会独立写代码” |
实际贡献
对编程教育者来说,这篇研究相当于“AI教学说明书”:
- 不用谈GPT色变:它确实能帮新手突破“语法卡壳”“调试耗时”的瓶颈,把时间花在“问题思路”上;
- 不能放任不管:要针对不同主题调整策略——结构体等抽象内容可多用GPT辅助,函数等基础内容需强化自主练习;
- 要加“保险措施”:让学生“先写代码再用GPT验证”,并要求解释GPT代码的逻辑,避免“抄而不懂”。
关键问题
Q1:为什么用“平衡准实验”而不是普通分组实验?
A:因为编程作业有“难度顺序效应”——如果先做简单的函数、再做难的结构体,后做的组可能因“学过了”表现更好。平衡设计让两组都经历“用/不用GPT”的两种情况,抵消了顺序干扰,结果更公平。
Q2:GPT提升了代码质量,为什么函数主题的概念理解没进步?
A:因为函数是CS1基础内容,学生通过课堂和课本已掌握核心逻辑(比如“函数要传参数”);而结构体是复合数据类型,抽象度高,GPT的“代码+解释”帮学生把抽象概念和实际应用结合,反而促进了理解。
Q3:学生既认可GPT又担忧技能,教学中该怎么平衡?
A:可以搞“三段式任务”:① 学生自主写代码(限时);② 用GPT调试、优化;③ 写“对比报告”,说明自己的代码哪里错了、GPT为什么更好。既用了GPT的效率,又强迫思考,避免依赖。
Q4:这个研究结果能推广到Python等其他编程语言吗?
A:目前不好说。C语言注重语法严谨性(比如变量类型声明),GPT在补全语法、处理警告上优势明显;Python语法更简洁,GPT的“语法辅助”价值可能降低,但“逻辑思路提示”的作用或许还在,需要后续实验验证。
详细总结
一、研究背景与核心目标
-
背景
- 大型语言模型(LLMs)如ChatGPT在入门编程课程(CS1)中应用激增,主要用于实时代码生成、调试和概念解释,虽能提升学生生产力与代码质量,但学界担忧其可能导致学生过度依赖,并对概念性学习(如核心编程原理理解)产生负面影响。
- 现有文献多聚焦学生对ChatGPT的感知或单一使用场景,缺乏实证研究探讨其对学习成果(如代码质量、概念掌握)的具体影响,尤其在基础编程课程中。
-
核心目标
探究ChatGPT访问对CS1课程(C语言)学生的四大维度影响:代码质量、概念理解、任务完成时间、学生感知,核心研究问题为“ChatGPT访问如何影响基础编程课程的学习与表现?”
二、研究设计详情
维度 | 具体内容 |
---|---|
参与者 | - 来源:美国东南部某大型大学的CS1课程(C语言基础)学生,以大一新生为主。 - 规模:共27人,含6名女性、21名男性,自愿参与2个实验性作业(获少量加分),分组为便利样本(学生自选课程 section)。 |
实验设计 | - 类型:平衡准实验(控制顺序效应)。 - 分组:A组(n=14)、B组(n=13),两组交替使用ChatGPT: - 作业1(函数主题):A组用ChatGPT,B组不用; - 作业2(结构体主题):A组不用ChatGPT,B组用。 - 流程:前测问卷→完成作业→后测问卷→代码评分。 |
作业设计 | 2个C语言作业,各含3个任务(表1): - 作业1(函数):① 字符串变位词检查;② 函数返回数组求最值;③ 函数比较出生年份(含闰年)。 - 作业2(结构体):① 结构体实现英尺-英寸加法(含进位);② 结构体创建图书记录;③ 嵌套结构体示例。 |
评估工具 | 1. 多维代码评分表(表2):含5类维度,评分标准为1(完全达标)、0.5(部分达标)、0(未达标),双评分者一致性κ=0.87(分歧已讨论解决): - 正确性(通过测试用例、特殊场景处理); - 效率/用法(时空效率、结构体字段合理性); - 代码质量(命名、注释、格式); - 警告分析(无编译器警告、无未初始化变量); - 错误处理(输入合法性检查)。 2. 问卷: - 前测:评估AI态度、ChatGPT熟悉度、编程信心; - 后测:① 概念题(评估目标概念理解);② GPT体验问卷(仅GPT组填,含有用性、使用意愿)。 3. 完成时间:记录任务(秒)和问卷(秒)耗时。 |
数据收集 | - 平台:Qualtrics(统一呈现作业、收集数据)。 - 内容:学生代码提交、后测问卷答案、任务与问卷完成时间。 |
三、数据分析与关键结果
3.1 RQ1:ChatGPT是否提升代码质量?
- 结论:是,GPT组代码质量评分显著高于非GPT组。
- 具体数据(表3):
作业 分组 正确性均值 代码质量均值 警告分析均值 统计显著性 作业1(函数) A组(GPT) 2.0 2.8 7.5 t=4.46,p=0.018 B组(非GPT) 1.1 1.9 6.5 作业2(结构体) A组(非GPT) 2.5 2.3 1.9 t=5.02,p<0.001 B组(GPT) 1.2 1.6 1.3 - 核心增益:GPT组在正确性(测试用例通过率)、代码可读性、警告处理(如无未初始化变量)上提升最显著,尤其帮助新手掌握“防御性编程”和陌生语法(如结构体)。
3.2 RQ2:ChatGPT是否影响任务完成时间?
- 结论:是,GPT组完成时间显著短于非GPT组(表4)。
- 具体数据:
任务类型 作业 分组 平均耗时(秒) 统计显著性 编程任务 作业1(函数) A组(GPT) 494.92 t=-5.222,p=0.0002 B组(非GPT) 2385.31 作业2(结构体) A组(非GPT) 1934.33 t=4.175,p=0.0011 B组(GPT) 868.00 后测问卷 作业1(函数) A组(GPT) 238.77 t=-0.717,p=0.4828(不显著) B组(非GPT) 318.80 作业2(结构体) A组(非GPT) 210.82 t=3.996,p=0.0008 B组(GPT) 109.90 - 关键发现:作业2中GPT组问卷耗时也显著缩短,可能因结构体概念更抽象,GPT辅助提升了学生对概念的即时理解。
3.3 RQ3:ChatGPT是否影响概念理解?
- 结论:混合效果,因主题而异(表5、6)。
- 具体表现:
- 作业1(函数):
- 两组总概念得分无显著差异(U=153.5,p=0.3234);
- 仅“函数用途”题GPT组优势显著(91.7%正确vs非GPT组0%),其他题(如函数参数、递归输出)无差异。
- 作业2(结构体):
- GPT组总概念得分显著高于非GPT组(U=77.0,p=0.0457);
- 但所有单题(如结构体存储、数组初始化)均无显著差异,可能因总得分受多题微小优势累积影响。
- 作业1(函数):
- 可能原因:结构体作为复合数据类型更抽象,GPT的解释更贴合新手需求;函数概念更基础,学生已通过传统学习掌握,GPT增益有限。
3.4 RQ4:学生对ChatGPT的感知如何?
-
前测(基线):
维度 A1(函数)GPT组(A) A1非GPT组(B) A2(结构体)GPT组(B) A2非GPT组(A) ChatGPT熟悉度(高) 76.9% 60.0% 50.0% 45.5% 使用GPT信心(高) 69.2% 80.0% 66.7% 63.6% 学习主题信心(高) 84.6% 86.7% 58.3% 90.9% - 结论:两组基线态度、熟悉度平衡,无显著偏差。
-
后测(体验):
- 积极面:作业1(GPT组)在“理解主题”“愿意再用”“感知学习”上的高评级比例高于作业2(GPT组),所有GPT组学生均认可GPT在“代码生成”“调试错误”中的价值。
- 担忧面:作业2中“中等/低”评级比例上升,学生普遍担忧GPT的准确性(如生成错误代码)和对长期编程技能(如独立调试能力)的负面影响。
四、研究局限性
- 内部有效性:学生自选择分组,未控制先前编程经验和技术能力;样本量小(27人),个体技能差异对结果影响较大。
- 构造有效性:评估方法与“概念理解”“编程技能”等目标构念可能不匹配,评分表需进一步优化以捕捉深层能力提升。
- 外部有效性:仅基于单校、单门C语言CS1课程,结果难以推广到其他院校、编程语言或教学场景;仅测量短期效果,无长期技能保留数据。
五、结论与教学建议
-
核心结论
- ChatGPT能显著提升CS1学生的代码质量(正确性、可读性)和任务效率(缩短完成时间);
- 对概念理解的影响因主题复杂度而异(结构体有提升,函数无提升);
- 学生对ChatGPT的辅助价值认可,但存在对准确性和长期技能的担忧。
-
教学建议
- 需结构化整合ChatGPT,而非放任使用(如限定GPT用于调试而非完整代码生成);
- 配合补充教学策略(如引导学生验证GPT代码、反思逻辑、开展概念讨论),培养独立问题解决能力;
- 针对抽象主题(如结构体)可加强GPT辅助,基础主题(如函数)仍需强化传统教学。
-
未来研究方向
- 扩大样本量和学生多样性,扩展到其他编程语言(如Python)和课程;
- 探究AI访问移除后的长期技能保留效果;
- 分析AI-学生交互日志,优化任务复杂度和引导性提示(如结构化prompt);
- 纳入伦理使用和学术诚信管理(如设计口头考试、复杂任务防作弊)。
4. 关键问题与答案
问题1:该研究的“平衡准实验设计”相比传统单组实验有何优势?具体如何实施以控制干扰因素?
- 答案:
优势:解决了先前AI教育研究中常被忽视的顺序效应(如“先做函数作业再做结构体作业”可能因学习曲线影响结果),通过让两组学生均经历“GPT”和“非GPT”条件,确保作业顺序、学习进度等干扰因素对两组影响一致,提升结果的可信度和因果推断能力。
实施方式:将27名学生分为A组(n=14)和B组(n=13),采用“交替条件”设计:- 作业1(函数主题):A组使用ChatGPT,B组不使用;
- 作业2(结构体主题):A组不使用ChatGPT,B组使用;
同时通过前测问卷(评估ChatGPT熟悉度、编程信心、概念基线)确保两组初始状态平衡,进一步控制组间偏差。
问题2:ChatGPT对学生“概念理解”的影响呈现“混合特征”,这一特征的具体表现是什么?可能与哪些因素相关?
-
答案:
具体表现:- 函数主题:GPT组与非GPT组的总概念得分无显著差异(U=153.5,p=0.3234),仅“函数用途”单题GPT组正确率(91.7%)远高于非GPT组(0%),其他题(如递归输出、函数参数)无优势;
- 结构体主题:GPT组总概念得分显著高于非GPT组(U=77.0,p=0.0457),但所有单题(如结构体存储、数组初始化)均无显著差异,总得分优势来自多题微小正确率的累积。
相关因素:
- 主题复杂度:结构体是复合数据类型,抽象度高于基础函数,新手更难通过自主学习构建概念,ChatGPT的解释(如字段关联、嵌套逻辑)更易填补理解缺口;
- 任务关联性:结构体作业任务(如创建图书记录)需直接应用概念,GPT辅助代码生成时同步强化了概念关联;函数任务(如变位词检查)更侧重程序性实现,概念与代码的关联较弱,GPT增益有限。
问题3:基于学生感知数据,教学中应如何“扬长避短”地利用ChatGPT?
- 答案:
从学生感知的“积极面”和“担忧面”出发,教学策略需兼顾效率与能力培养:-
扬长(利用积极面):
- 学生对ChatGPT的代码生成、调试功能认可度高(两组GPT用户均给予积极评价),可将GPT作为“调试工具”引入教学,如让学生先自主编写代码,再用GPT验证错误(如编译器警告、逻辑漏洞),缩短调试耗时,集中精力于问题解决;
- 针对结构体等抽象主题,利用学生对GPT的“高接受度”(A2 GPT组58.3%对学习有信心),设计“GPT辅助概念预习”任务(如让学生用GPT生成结构体示例并标注核心逻辑),降低课堂概念讲解难度。
-
避短(应对担忧面):
- 学生担忧GPT的准确性和长期技能影响,需设计“验证反思环节”,如要求学生对比GPT代码与自主代码的差异,分析GPT代码的错误(如未处理边界输入),避免盲目依赖;
- 针对作业2中“感知学习”评级下降的问题,可在GPT辅助后增加“概念复述”任务(如让学生用文字解释结构体嵌套逻辑),强化概念内化,抵消“重代码、轻理解”的倾向;
- 利用前测中“学生熟悉度高”的基础(A1 GPT组76.9%熟悉),开设“GPT伦理使用”讨论课,明确GPT的辅助定位(非替代自主学习),同时通过复杂任务(如开放性编程项目)评估真实技能,防范学术诚信风险。
-
总结
这篇研究用严谨的实验,给“ChatGPT该不该进编程课”的争议提供了实证答案:它不是“洪水猛兽”,也不是“万能神药”——能显著提升新手的代码质量和效率,但对概念理解的影响因主题而异,且需要配合结构化教学策略。 对教育者来说,与其禁止学生用AI,不如思考“如何让AI成为教学助手”;对学生来说,GPT可以当“调试师傅”,但不能当“代笔先生”。未来随着样本量扩大和长期跟踪,AI在编程教育中的角色会更清晰,但目前这篇研究,无疑是一块重要的“铺路石”。