基于竞赛的程序设计类课程教学改革研究
Competition-Based Teaching Reform in Programming Courses
摘要: 针对程序设计类课程教学中实践能力培养不均衡等现实问题,开展基于ACM/ICPC竞赛的“程序设计(C)”课程教学改革研究。以构建军事特色竞赛案例库为内容基石,构建赛教深度融合的全员全周期教学体系,并实施多元评价机制。对千余名学生的问卷调查结果表明,本次教学改革不仅有效激发了学生的学习内驱力,更在实践中使其编程能力与算法设计能力得到有效提升,为探索人才培养新路径贡献了新的实践方案。
Abstract: In response to practical issues such as imbalanced cultivation of practical skills in programming course teaching, this teaching research paper explores the reform of the “Programming (C)” course based on the ACM/ICPC competition model. The reform establishes a military-specific competition case library as its foundational component, constructs a fully integrated competition-education system that encompasses all students throughout the entire learning cycle, and implements a diversified evaluation mechanism. Survey results from over a thousand students indicate that this teaching reform not only effectively stimulates students’ intrinsic motivation for learning but also significantly enhances their programming and algorithm design capabilities in practice, thereby contributing a new practical approach to exploring innovative pathways for talent cultivation.
文章引用:尤惠彬, 南煜, 许岩, 岳智慧, 麻顺顺. 基于竞赛的程序设计类课程教学改革研究[J]. 教育进展, 2026, 16(1): 1612-1617. https://doi.org/10.12677/ae.2026.161219

1. 引言

在新时代的背景下,新工科建设的推进对高等教育教学改革提出了新的挑战和要求。教育部通过发布“复旦共识”[1]和“北京指南”等重要文件,明确强调高校必须在体制层面进行深度创新,以适应国家未来建设发展的新需求。程序设计类课程作为计算机基础教育的底座,其教学改革亟需突破“第一课堂”仅完成“语法讲授、期末机考”这种一锤定音的教学方式,优化仅将竞赛作为补充教学“第二课堂”[2]的传统范式。目前,国外高校虽已将ACM/ICPC嵌入算法课程,但服务对象仅面向精英小班,缺乏真实场景与假期延伸;国内研究者近年虽提出了“赛教互促”的教学模式,却止步于小班试点,未能解决大规模授课中“全员覆盖”与“能力断档”的难题。所以,本研究直接将竞赛标准优化为日常教学,构建一个覆盖全体学生、贯穿整个教学周期的程序设计教学体系,以培养出能够适应未来国家需求的高素质技术人才。

2. 研究背景

近年来,随着“新工科”计划的实施,国家对计算机基础课程的建设提出了更高标准,这就要求程序设计类课程内容与科技发展趋势必须保持同步,并着重强调学生的工程实践能力、创新能力和问题解决能力的培养。特别是在第十一届“中国大学教学论坛”上,国家教育部高教司司长吴岩明确指出,中国的“金课”应具备高阶性、创新性和挑战度[3],这里的“挑战度”意味着课程设计应具有适当的难度,能够激发学生潜能,推动其突破认知边界。在此背景下,程序设计竞赛作为一种以“编程解决问题”为核心的综合实践平台,其内在的高阶挑战特质恰好承载并呼应了“金课”的建设理念。

基于此,国内很多高校正积极探索以竞赛为依托的程序设计课程教学改革,尤其是面向ACM/ICPC竞赛的计算机人才培养教学与实践方法[4]。经研究发现,国内研究主要将“第二课堂”作为培养学生竞赛能力的主要阵地,通过组织学生参加ACM/ICPC等国际级大学生程序设计竞赛[5] [6],不仅可以有效地提高学生的编程技能和问题解决能力,同时也有助于促进学生的创新思维和团队协作能力的发展。

但是,我国学者对于将竞赛融入常规教学改革的关注度还不够,尽管国内高校在新工科背景下对程序设计类课程的教学改革进行了积极的探索和实践,但在将竞赛试题和教学内容深度融合、优化评价机制等方面仍显不足,需要进一步关注如何通过竞赛来提升教学质量,特别是在竞赛试题与教学内容的融合、教学方法的创新以及评价机制的多元化等方面进行深入研究和实践。

军队院校肩负着为国家培养高素质军事人才的重任,必须紧跟现代战争的需求,加大实战化教学训练的力度,不断推进实战化教学训练向深度和广度发展。而程序设计类课程作为培养信息化战争时代军事技术人才的关键环节,其教学改革对于提升军事人才的科技素养和实战能力具有决定性影响。

3. 程序设计类课程教学现状分析

当前,高校程序设计类课程的教学实施主要依托于“第一课堂”,旨在夯实学生的学科基础,达成教学培养的核心目标。同时,为满足学有余力学生群体的个性化发展需求,进一步培养其创新和实践能力,高校积极引导并鼓励学生参与国内外各类程序设计竞赛。其中包括以算法难度高、团队协作性强著称的ACM/ICPC国际大学生程序设计竞赛,以及参与规模大、覆盖面广的“蓝桥杯”等等。这种教学模式的优点在于,为有兴趣深入学习的学生提供了“第二课堂”的专业训练机会,但其局限性在于依赖学生兴趣,参与度有限,对学生整体的编程能力提升影响较小,显然这种做法往往难以覆盖到每一个学生。

具体而言,课程教学中仍存在以下问题:

(1) 目前程序设计类课程居多为大规模人数教学,如何整体提升全体学生的编程基础和创新能力,是亟需关注的第一个重点问题。

(2) 算法是计算机科学的核心,也是程序设计能力培养的关键,如何潜移默化培养学生的竞赛意识和高效的解题能力,是关注的第二个重点问题。

(3) 假期期间学生学习效率相较于在校期间必然会有所下滑,确保学生在非学期时间也能持续提升程序设计能力,是关注的第三个重点问题。

在当前军队院校教学改革的大背景下,特别是在新工科建设的推动下,程序设计类课程的教学改革显得尤为重要。研究将聚焦于教学内容与方法的创新优化、评价机制的多元化建立等方面,以培养适应未来国家需求的高素质技术人才。

4. 基于竞赛的“程序设计(C)”课程改革措施

受限于程序设计类竞赛的参与门槛,目前仅有部分学生得以参与,未能全面覆盖所有学生。同时,我校学生的学习时间主要集中在春季和秋季两个学期,假期时间并未得到充分利用。面对这两个突出问题,本文基于“程序设计(C)”课程,致力于将ACM/ICPC等国际编程竞赛的创新理念和实践经验深度融入课程教学中,旨在全面提升学生的编程能力、创新思维以及团队协作能力。此外,本文还致力于在假期期间为学生提供丰富的学习资源和有针对性的竞赛培训,以确保学生在程序设计能力培养上的连续性和深度。

4.1. 课程改革思路

遵循国家对新工科建设的高标准和严要求,深入研究如何将国际竞赛的先进理念,有效融入程序设计类课程的常规教学中,教学改革思路如图1所示。

Figure 1. Framework of the teaching reform

1. 教学改革思路

为了实现这一目标,研究并设计出“以赛促教”的教学模式,探讨如何通过引入具有军事特色的竞赛题目到“第一课堂”,以及高效利用“第二课堂”开展教学,从理论和实践两个层面,全面提升学生的编程能力、创新思维和备战打仗的意识。另外,还将探讨多元化的学生能力评价机制,特别是如何将竞赛成绩纳入评价体系,以实现评价的全面性、公正性和客观性,进而激发学生的学习热情,提高学习成效。

4.2. 构建具有军事特色的竞赛试题案例库

为强化程序设计课程与军事应用的紧密对接,构建一个深度融合军事特色的竞赛试题案例库。该项工作基于国际最具权威性的ACM/ICPC竞赛题目,结合军队院校特殊需求进行优化重塑,并将构建的具有军事特色的案例纳入常规的“第一课堂”教育中,丰富教学资源。

我们制定出更具针对性的教学措施,以期能够为每位学生提供优质的教育和指导。优化以语法讲授为主的教学方式,根据章节内容和军队院校培养需求,系统梳理ACM/ICPC等国际级竞赛试题,精选其中能够体现实战背景、蕴含典型工程思维与解决问题范式的题目,对其情境、数据与要求进行重塑,使其更贴近军事应用场景,最终构建一套既符合ACM/ICPC竞赛标准、又具有军队特色的竞赛试题案例库。为学生提供更加贴近实战的学习资源,这将有助于学生在充满“战味”的课堂上吸收知识,提升能力,为未来战争中的技术对抗做好准备。

这样的教学方式,不仅可以帮助全体学生更好地理解和掌握教学内容,更能借助竞赛级题目的系统性训练,全方位锤炼其编程实践能力、创新思维与军事素养,为未来战场的技术对抗奠定坚实基础。

4.3. 以赛促教,引入竞赛式教学方法

推行“以赛促教”的竞赛驱动式教学模式,全面提升学生实践编程能力。这里所说的“赛”,并非单纯特指让学生参与程序设计类竞赛,而是指在教学过程中加大对算法分析的重视,借鉴程序设计竞赛的核心理念、方法和优质题目资源进行优化改编,将重塑后的ACM/ICPC等国际竞赛题目融入到常规实践教学环节中,以此强化学生的实际操作能力。

利用竞赛试题实现对各个章节实践环节的拉伸,拓展各教学章节的实践深度。精选并改编竞赛题目,为每个核心知识点设置具有挑战性的实战任务,例如在讲授二维数组时,传统教学多用于处理矩阵运算等数学问题,而我们设计一个名为“战场雷达探测区域模拟与目标分析”的编程任务,高效完成特定军事目标(如高价值目标、受干扰单元)的识别与定位。在日积月累的过程中逐步培养学生的竞赛意识和解题能力,深刻体会程序设计在解决军事实际问题中的威力,同步提升其编程技能与备战打仗意识。

构建“竞赛驱动、平台支撑、案例赋能”实践教学新范式,在实践课和平时作业中充分利用EDUCoder实训平台的可控性与可测性,将军事特色案例库资源转化为一系列“限时编程任务”与“小组对抗挑战”。这种设计不仅模拟了竞赛的高压环境,更重要的是,它迫使学生将编程能力从一种单纯的技术操作,升华为一种在时间约束、复杂规则及团队互动下解决未知问题的系统性思维能力,从而实现对编程实战能力与创新思维的根本性强化。

4.4. 构建课程和竞赛相融合的全员全周期教学体系

针对学生在假期期间学习效率下降的问题,构建“程序设计(C)”课程和竞赛相融合的全员、全周期教学体系,该体系旨在打破传统学期的时间壁垒,通过系统化的资源供给和递进式的竞赛活动,确保学生程序设计能力的持续培养“不断线”。

该体系核心在于建立一套面向全体学生、贯穿课内与课外、衔接学期与假期的完整教学闭环。在学期内,以前沿军事背景的竞赛案例为核心,将“第一课堂”打造为夯实理论基础、激发创新思维的主阵地;在假期,则通过系统规划的在线课程、实战项目与互动学习,将程序设计学习从阶段性课程任务转化为常态化能力训练,实现能力培养的无缝衔接。

为实现上述目标,除常规课堂教学外,我们在寒暑假期间同步部署系统化的假期学习资源包,包括精选的在线课程模块、具有军事背景的项目式学习任务以及互动式编程实训。同时,持续组织阶梯式竞赛活动,形成由易到难、循序渐进的挑战序列,构建“学期牵引,假期延伸”的长效学习机制。该机制旨在巩固学生在校学习成果,提高学生的自我管理和自我激励能力,同时也能很好地培育其自主学习和终身学习的习惯。

4.5. 基于竞赛引入学生编程能力评价机制

设计“程序设计(C)”课程融入竞赛元素的学生综合能力评价机制,多元化评价学生综合能力。构建一个新的评价机制,在保留传统的形成性考核和终结性考核成绩加权得分的基础上,将程序设计竞赛成绩以“能力拓展附加分”的形式纳入总评体系,明确量化竞赛参与的价值,实现对学生高阶思维与创新实践能力的显性评价。此外,学生在满足课程基础要求后,增设一级、二级、三级的考核认证等级,旨在激励学生积极参与各类程序设计竞赛,为不同层次的学习者提供持续奋斗的阶段性目标,从而真正提升学生的编程能力。

5. 研究成果分析

为考察基于ACM/ICPC等国际编程竞赛的课程教学改革实施效果,我们在我校全体2024级大一新生中进行了问卷调查,发放并收回有效问卷一千余份,调查内容包括:① 引入具有军事特色的竞赛案例,能否更好地帮助你理解相关知识点;② 本课程是否有效地介绍了竞赛试题的相关“解题思路”;③ 课程中采用的“以赛代练”教学模式,对你的学习帮助如何;④ 你认为课程提供的练习题在题量、难度设置上是否合理;⑤ 在课程的小组合作解题训练中,你和队友的协作体验如何;⑥ 与传统“讲授–作业”教学模式相比,你认为课程和竞赛相融合的全员全周期教学模式,在提升整体编程实践能力上效果如何;⑦ 你认为利用EDUCoder实训平台进行小组对抗赛,其竞赛的“排名”和“通过率”实时榜单,对你的影响主要有哪些;⑧ 你认为本课程设置的“限时编程任务”与“小组对抗挑战”,是否还原了真实ACM/ICPC赛场的氛围与压力;⑨ 通过基于ACM/ICPC竞赛的课程教学实施,你认为自己的算法设计与分析能力是否得到有效提升;⑩ 你认为本课程设置的考核方式是否能公平地反映你的真实努力与能力水平。

调查结果表明,本次课程教学改革在激发学生学习兴趣、深化知识理解、提升实践能力与培养创新思维等方面取得了显著成效,初步验证了“以赛促教、赛教融合”的全员全周期教学体系的有效性与可推广性。有超过92%的学生认为,引入具有军事特色的竞赛案例对于更好理解相关知识点非常有帮助;近80%的学生表示,EDUCoder平台上实时更新的“排名”与“通过率”榜单,有助于学生了解题目难度,激发好胜心与斗志;与传统教学模式相比,超过90%的学生认为新的教学模式在提升整体编程实践能力上效果显著,证实了将竞赛训练从“第二课堂”延伸至“第一课堂”并贯穿假期的做法,能够为全体学生提供一个能力持续提升的路径;同时,超过86%的学生认为新的考核方式相对公平地反映了自身的真实水平,不仅认可了学生的个性化发展,更为其设定了清晰的学习目标,形成了“以赛促教、以评促学”的良性循环。

6. 结语

本文立足于新工科建设与军队院校实战化人才培养的双重需求,针对传统教学中存在的覆盖面有限、实践性不足等痛点,系统构建并实践了一套以ACM/ICPC国际竞赛为引领、深度融合军事特色的“程序设计(C)”课程教学改革新模式。实践证明,该模式有效将竞赛的高阶性、创新性与挑战度内化于常规教学之中,成功激发了全体学生的学习内驱力,实现了其编程实践能力、算法思维、团队协作精神与军事素养的协同提升。

NOTES

*通讯作者。

参考文献

[1] “新工科”建设复旦共识[J]. 高等工程教育研究, 2017(1): 10-11.
[2] 吴永辉. 基于“编程解决问题”的程序设计语言实验——以程序设计方法的综合应用为例[C]//中国计算机学会, 全国高等学校计算机教育研究会, 教育部高等学校计算机类专业教学指导委员会. 2022中国高校计算机教育大会论文集. 2022: 364-368.
[3] 吴岩. 建设中国“金课” [J]. 中国大学教学, 2018(12): 4-9.
[4] 郭云镝, 傅向华, 李经宇. 融入算法竞赛训练体系的算法设计与分析课程教学实践[J]. 计算机教育, 2024(11): 178-181+186.
[5] 杨松涛, 王斌, 张海燕. 从ACM/ICPC竞赛探讨大学生的能力培养[J]. 计算机教育, 2010(24): 16-18.
[6] 曾雪强, 卢家兴, 吴水秀. 基于程序设计竞赛的计算机创新型人才培养探索[J]. 教育教学论坛, 2023(24): 32-35.