C++程序设计课程实验教学改革与探索

2024-05-18 14:23贾金芳
电脑知识与技术 2024年8期
关键词:实践能力程序设计教学改革

贾金芳

摘要:C++程序设计课程作为计算机专业本科生必修的专业核心课程之一,实验教学是课程的重要教学环节,实验教学环节在培养学生通过编程解决实际问题的能力和逻辑思维方面起重要作用。针对课程实验教学过程存在的问题分析,对课程实验教学方法、考核评价方式等方面进行多元化、过程化改革,构建“以赛促学,以赛促练”的教学体系,有助于进一步培养和提升学生的编程实践能力、竞赛能力和综合应用能力。

关键词: C++程序设计;实验教学;教学改革;实践能力

中图分类号:G642      文献标识码:A

文章编号:1009-3044(2024)08-0146-03

开放科学(资源服务)标识码(OSID)

0 引言

C++程序设计是计算机专业学生需要重点掌握的一门程序设计课程,其主要讲授C++编程语言,介绍面向对象程序设计方法,培养面向对象编程思维。该课程的先导课程是C语言程序设计,C语言是一种面向过程的编程语言,从C语言到C++语言的过渡, 也是面向过程思维向面向对象思维的跨越。

C++程序设计课程包括理论课和实验课两部分,二者相辅相成,缺一不可。俗话说:“纸上得来终觉浅,绝知此事要躬行。”,程序设计类课程除了让学生掌握基本语法和编程思想等基础知识外,更重要的是要通过课程学习让学生掌握编程方法,具备动手编程解决实际问题的能力[1]。因此,实验教学是程序设计类课程教学中的重要环节,在理论知识点学习和将理论应用于实践中起到桥梁作用,也有助于培养学生的实践能力、自主分析能力和解决问题的思维能力[2]。然而,传统的实验教学方法单一、技术手段相对滞后,无法完全调动学生的学习积极性,教学效果和学习成效不佳。为改善这些问题,及时调整教学手段,探索新的教学模式和方法显得非常重要。

1 课程实验教学现状分析

C++作为计算机专业学生接触的第二门程序设计语言,基于前期C语言学习基础,学生的编程能力参差不齐,按照传统的教学方法无疑是达不到平衡需求的。经总结分析,C++程序设计课程实验教学存在的挑战主要有以下几个方面。

1) 忽略实践的重要性。实验课程是注重实践能力锻炼的重要环节,传统实验教学中,大多数上机实验内容为对理论课堂讲解实例或教材上例题的练习,或对一些理论知识点的调试和验证。实验题目难度低,没有与实际问题相关的针对性或综合性训练,只是对所學知识点的分散理解,没有做到融会贯通,不能达到熟练应用水平。同时,缺乏与实际应用联系的实验,限制了学生对编程在实际应用中的理解和应用。此外,学生参加程序设计类竞赛很少,如ACM、蓝桥杯、天梯赛等大范围开展的程序设计大赛,其题目难度较大,也需要全面的知识储备。学生在这方面了解不深,未能及时掌握行业发展需求,没有真正理解学会编程的重要性。

2) 未考虑学生能力的差异性。经过前期对C语言课程的学习,学生对编程的了解和掌握程度不可避免地会存在差异性,有些学生可能更擅长分析和解决复杂的编程问题,而另一些学生可能需要更多的指导和帮助,这种差异对实验教学的设计和组织提出了挑战。一般来说,学习能力强的学生会表现出较强的逻辑思维,容易接受新知识、新观念,但是,正所谓尺有所短,寸有所长[3]。传统实验教学中所有学生所做实验内容一样,导致学习好的学生觉得没有任何挑战,长此以往学生的学习兴趣逐渐降低,而基础薄弱的学生不能独立完成或完成有一定难度,无法达到预期的教学效果。因此,实验教学应提供不同层次和难度的实验任务,以满足学生的不同需求。

3) 考核方式单一。传统实验教学方法倾向于以结果为导向,重视实验的正确性和完成度。这种评价方式忽略了学生实验过程中思考能力和创造性思维能力的培养,导致学生限于完成实验任务,不重视解决问题的思考过程,无法有效激发学生的学习热情。另外,传统实验教学方法受限于实验设备、软件环境和教师人力等资源的限制,学生的实验时间和机会受到限制,无法充分探索和实践。

2 课程实验改革思路

计算机专业课程的教学与实验及实践环节密不可分,动手编程能力在程序设计课程中具有不可替代的重要地位,是培养、提高学生综合素质和创新能力的重要组成部分。

理论是实践的基础,实践是理论的应用,二者相辅相成,缺一不可。只有将课程理论教学与实践教学相结合,课内教学和课外实践相结合,才能扎实掌握一门编程语言。

针对以上课程现状,C++程序设计课程组在计算机系的大力支持下,以培养学生编程实践能力为基础,培养计算思维为核心,培养自主学习能力为目标[4],主要从实验教学方法和考核方式两方面进行了多元化、过程化的改革尝试,具体改革思路如下。

2.1 教学方法

首先,对于加强编程实践能力方面,根据学生的能力和学习进度,提供个性化的实践指导。一些学生可能需要更多的支持和指导,而另一些学生可能希望有更大的挑战。这部分需要增加辅导人力投入,引入了“高年级助教”机制。其次,在学生能力差异性问题方面,课程以培养学生动手编程能力为基础,贯彻“一提升,二突出,三层次”的实验教学指导思想,结合教学内容和人才培养目标开设不同层次的验证、综合类实验,每次实验题型主要包括编程题,题目难度从易到难提升,考点从基础到综合,部分章节内容会增加附加题目,以利于满足不同层次学生的学习需求,激发学生的学习兴趣,突出学生自主性。此外,多元化教学方法不应该仅用于理论教学中,实验教学也同样适用,如小组学习机制、项目实践练习等,利用现代化技术和在线学习平台,提供交互式学习资源和实践环境,使学生能够自主学习和探索。

2.2 考核方式

课程考核方式改革一直是高等教育改革的重要组成部分[5]。传统考核方式主要以学生提交的实验作业为主,学生的学习效果很难完全得到体现,成绩差距不明显。为改善传统实验定性评价方式,引入了过程化考核方式,将CSP认证考试成绩以20%的比例纳入课程考核中。CSP考试有固定的考试周期和时间,不仅考查学生对计算机基础知识的掌握,还注重培养学生的创新思维能力、问题解决能力和实践能力,是对学生综合能力的考验,没有平时的长期练习和知识、技术积累,很难取得好的成绩。因此,过程化考核方式的改革既有效评估了学生的学习效果,又促进了综合能力的提升。

3 课程实验教学改革与探索

基于上述改革思路,课程实验教学主要改革在以下几方面体现。

3.1 引入助教机制

为了提高实验教学质量,尽可能辅导到每一位同学,课程组引入“高年级助教”机制。助教通过课程组发布助教招聘公告后,由高年级优秀同学自愿报名,然后经过课程组面试选拔选出,每个班级分配1名助教辅助任课教师完成实验教学。

这些高年级助教通过前期的学习和实践,对该门课程有一定的掌握和经验。他们可以与学生进行更密切的互动,同时也更容易理解学生们的学习困难和疑惑,并结合自己学习的过程和经验提供个性化的指导和建议,促进与学生间的思维碰撞。另外,助教可以给学生分享优秀的学习资源、学习经验和学习方法,帮助学生培养自主学习的能力,引导学生形成良好的学习习惯。助教也可以通过分享自己的编程经验和实践案例,激发学生对程序设计的兴趣,有趣的编程项目和应用案例,帮助学生看到编程的实际应用和潜在价值,从而增强学生的学习动力。

3.2 分层实验设计

根据理论教学及学生对知识点掌握情况自行编写实验卡,设计多道实验题目,难度从易到难,难度依次递增。将实验任务分为不同的层次和难度,学生可根据自己的能力水平选择适合的实验任务,这样可以满足不同学生的需求,提高实验教学的个性化和针对性。为了与竞赛等编程环境保持一致,实验题目主要以测试用例模式为准。为防止学生直接复制粘贴快速抄袭,给学生留有充分的做实验时间,原则上学生将在课堂上完成所有题目,若有不能完成的同学,课后也会有3天左右时间继续完成,学生完成作业后将作业压缩包在限定截止日期前提交至网络教学平台,等待教师批阅。

3.3 发挥学生主体作用

实验课堂上,强调学生的主体作用。课前教师会将每道题目需要解决的问题阐述清楚,然后由学生自由发挥,自主完成代码编写、调试等,期间若有不能自主解决的问题,老师和助教也是以引导、激励的方式指导。

批改完作业后,整体分析学生作业情况,并在下次上课前半个小时内对大部分同学没有完全掌握的题目由任课教师或助教现场实时编程讲解。

3.4 小组学习机制

将班级学生按照4-5人/组划分成多个小组,以“好带差,小组帮扶制”为原则,学生自由组合,并推出组长的形式来分组。学生可以在小组中分享自己的理解和经验,解答彼此的疑问,互相帮助和支持,这种互动可以加深学生对知识的理解和掌握,激发学生的学习热情和动力。同时,通过小组讨论和合作完成编程任务,学生可以相互借鉴和学习其他同学的思路和方法,促进共同进步和提升,也有助于提高学生的团队合作能力和沟通能力,使成员个体感受到在团队中的价值,增强团队认同感,帮助学生树立“团结、和谐、进取”的社会价值观[6-7]。

3.5 引入OJ平台

引入在线评测系统OJ(Online Judge) 作为实验课程的一部分,任课教师可以根据理论教学进度和知识点范围设计题目并在OJ平台开放,这些题目可设置较长的时间范围,方便学生课后随时练习。如图1所示为学习面向对象三大特性期間的一次练习题目,通过答题情况来看,练习题目也切实做到了分层设计。一方面,OJ提供实时的程序评测和反馈功能,学生提交代码后,可以立即得到结果和反馈,这种实时性的评测和反馈有助于学生快速发现和修正代码中的错误,提高调试和错误处理的能力。另一方面,基于OJ系统学生需要按照特定的编码规范和要求完成编程任务,这有助于培养学生编写规范、可读性强的代码的能力,提高代码的质量和可维护性。同时通过学习和练习各种编程技巧和方法,提高学生的算法设计和解决问题的能力,做到与程序设计类竞赛较好的衔接。

3.6 CSP机制

中国计算机学会(CCF) 计算机软件能力认证(Certified Software Professional, CSP) 是CCF联合华为、360、滴滴等10余家知名IT企业以及清华、北航、国防科大等15所著名高校于2014年推出CCF CSP认证标准,用于评价业界人士的计算机软件能力。

计算机软件能力认证以被测试者熟练掌握程序设计、数据结构以及算法,通过一定范围内自选的通用编程语言,在指定时间空间内,熟练、准确地完成对给定问题的编程和调试为认证标准。编程语言允许使用C/C++、Java或Python。所编程序的正确性由计算机系统根据事先给定的数据进行测试,通过者得分,否则不得分。测试的问题覆盖大学计算机专业所学习的程序设计基础、数据结构以及算法,以及相关的数学基础知识,并关注编程技巧的使用、性能的优化,以及异常情况的正常处理。

通过准备和参加CSP认证考试,学生不仅可以提升在软件开发领域的专业技能,包括算法设计、编程语言等方面的知识[8];取得高成绩的CSP证书也可以为学生在求职和升学时提供有力的证明,增强学生的竞争力;通过考试内容还可以使学生了解实践应用和行业发展需求,发现自身的优势和不足,及时弥补知识和技能的漏洞,有效优化后期学习计划。

构建“以赛促学,以赛促练”的教学体系,在C++课程中,除了实验成绩外,将CSP以20%的比例计入考核方式。学生学习完C语言课程后即被要求参加CSP认证考试,通过实时体验竞赛模式、考题形式、考试内容,及对所学知识的实时应用,清楚对知识的掌握情况,明确后续学习的努力方向。课程具体考核方案如表1所示,可以看出,课程考核方案更注重过程学习效果,实现以考促学、以考促教,以赛促学、以赛促练的模式。通过CSP认证要求尽早培养和提升学生程序设计能力,部分学生在第一学年CSP成绩就可以达到200分左右水平。平时也鼓励学生参加ACM、蓝桥杯、天梯赛等程序设计类竞赛,获得了多项佳绩。

综上,通过多种实践环节,使学生更好地理解课堂教学内容,拓展知识面,延伸和扩展了课堂教学。全面地培养了学生的素质,提高了学生的抽象能力、逻辑思维能力、及动手编程能力等,为后续专业课程的学习打下坚实的基础。

4 结束语

通过综合运用课程助教、分层实验设计、小组学习、OJ平台、CSP认证等教学手段,为学生提供了更丰富、多样化和个性化的学习体验,帮助学生全面发展和成长。同时,也能够更好地满足不同学生的学习需求,提高教学效果和学生的学习动力。综合来看,这些教学方式可以全面提升学生的编程能力、解决实际问题的能力、团队合作能力和专业素养,对学生在编程领域的发展和未来的职业发展都具有重要意义。

参考文献:

[1] 汪香君,刘会芬.面向实践能力培养的C++程序设计教学研究[J].现代信息科技,2023,7(18):176-180,184.

[2] 张维梅.融入课程思政的《面向对象程序设计(Java)》实验教学改革[J].潍坊学院学报,2022,22(5):52-56.

[3] 岑琴.OBE理念下C语言程序设计实验教学改革探析[J].电脑知识与技术,2023,19(8):119-121.

[4] 王雷,秦琳琳,王嵩.面向新工科人才能力培养的计算机程序设计课程改革[J].高教学刊,2023,9(24):161-164.

[5] 方二喜,刘学观,谭洪,等.以目标驱动为支撑的课程过程化考核探索与实践[J].实验科学与技术,2016,14(4):136-138.

[6] 郭艳燕,娄兰芳,卢云宏,等.面向深度学习的程序设计提高实验教学设计与实践[J].计算机教育,2022(11):119-122,127.

[7] 胡燕,孔凡哲,陈心浩.实验项目驱动式教学促进四大关键能力的实证研究[J].实验室研究与探索,2021,40(2):191-196,203.

[8] 袁国武,岳昆,杨旭涛,等.通过CSP认证提高学生程序设计能力研究[J].软件导刊,2020,19(12):14-18.

【通联编辑:王 力】

猜你喜欢
实践能力程序设计教学改革
基于Visual Studio Code的C语言程序设计实践教学探索
从细节入手,谈PLC程序设计技巧
高职高专院校C语言程序设计教学改革探索
高校单片机课程设计教学方法探讨
刍议大学生实践创新训练计划项目
品德教学利用微课开展预学的实践研究
“创新人才培养模式”下的实验教学改革探索
基于人才培养的技工学校德育实效性研究
现代信息技术在高职数学教学改革中的应用研究
以职业技能竞赛为导向的高职单片机实践教学改革研究