基于启发式的C++程序设计教学改革实践探析

作者: 刘其永

摘要:C++是一门至关重要的专业基础课程,对计算机专业学生后续的学习具有深远的影响。本文深入剖析了C++程序设计课程在传统教学模式下存在的问题,并依据C++程序设计课程的独特性质,结合个人教学实践,将“启发式”与“案例驱动”教学法相融合,提出了一种基于启发式的程序设计教学改革实践探索方案,这对C++程序设计教学方法的改进具有显著的参考价值。

关键词:C++程序设计;启发式;教学方法;教学改革实践

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

文章编号:1009-3044(2024)23-0161-02

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

0 引言

C++程序设计不仅是计算机专业学生的专业基础必修课程,在专业人才培养体系中占据核心地位,而且随着教育的发展,它也逐渐成为越来越多非计算机专业的公共基础必修课程,其重要性日益凸显。掌握程序设计是深入理解计算机及其工作原理的关键,而C++程序设计的扎实基础对后续专业学习具有不可或缺的支撑作用[1]。

1 现状分析

C++程序设计在整个专业教育体系中占据举足轻重的地位。然而,传统的教学方法往往侧重语法知识点的灌输,这种教学方式因内容枯燥、难以理解,导致学生学习兴趣普遍不高。部分学生不得不依赖死记硬背来应对考试[2-3],教学效果不尽如人意。此外,C++复杂的语法规则使得学生在学习过程中容易出错,进而产生畏难情绪。

为了更全面地了解学生的学习状况,我们针对学校部分学生进行了随机问卷调查。调查结果显示,学生对C++的学习普遍感到困难,缺乏兴趣,具体表现为4种情况:1) 感兴趣、能听懂、想学;2) 不感兴趣但能听懂;3) 不感兴趣但能部分听懂;4) 不想听、想放弃。统计结果如表1所示。

根据统计表做成更直观的统计图,如图1所示。

通过对学生学习兴趣情况的分析及与学生的访谈,可以发现,绝大部分学生对C++程序设计这门课程持有畏惧态度,且缺乏兴趣。这主要源于两方面原因:一方面,C++程序设计课程本身逻辑性强且内容较为抽象,给学生理解带来了一定的难度;另一方面,传统的教学模式往往偏重知识点的直接讲授,而缺乏足够的启发和引导,导致这些枯燥的知识点难以有效激发学生的学习兴趣[4]。

为了更好地了解学生对不同类型知识点的掌握情况,通过对学生期末考试不同题型的得分情况进行统计,结果如表2所示。

将统计表制成柱状统计图,如图2所示。

通过对不同类型题目学生掌握情况的分析,我们可以发现,学生在选择题、填空题、判断题等基础性知识点上掌握较好,得分相对较高;然而,在动手能力要求较高的程序分析题、程序设计题上则掌握较差,得分相对较低。这一现象揭示了学生在学习过程中可能更多是为了应对考试而采取死记硬背的方式,并未真正理解和内化知识,因此难以做到学以致用,更无法实现灵活应用。这与我们一直倡导的素质教育理念相悖。

基于上述分析可以看出,学生对C++程序设计课程的掌握并不理想,而该课程在整个专业体系中的重要性又是不容忽视的。因此,对C++程序设计课程的教学改革势在必行。

2 基于启发式的C++程序设计教学改革实践探析方案

针对C++程序设计教学中存在的问题,我们需要积极寻求切实可行的教学改革实践探析方案。启发式教学是指教师根据教学目标,遵循教学规律,在教学过程中依据学习的客观规律,通过引导、指导、开导、启示、激发学生的学习兴趣,从具体问题出发,通过巧设悬念,积极引导学生的求知欲,激发学生学习兴趣,形成以学生自主学习为主体,教师进行适当引导的良好互动氛围,培养学生自主学习能力和分析解决问题能力,让学生在一种成就感的氛围中寻求解题方法[5-6]。下面以一道编程题为例,说明具体实现过程。

2.1 提出问题

在教授数组这一章节时,由于数组是一个全新的概念,较为抽象,学生往往难以熟练掌握。此时,教师可以通过一些学生感兴趣的实际例子来引导学生主动思考。例如,教师可以提出这样的问题:“大家平时在电脑上玩扑克牌游戏时,是否思考过电脑是如何实现洗牌的呢?如果让你来设计,你会如何设计?扑克牌的花色和数字又该如何存储呢?”接着,教师可以以52张牌为例,引导学生设计一个简单的洗牌算法。通过这样的方式,不仅能激发学生对数组这一知识点的兴趣,促使他们独立思考,还能在解决问题后给予他们成就感,进一步加强其学习兴趣。同时,这个过程也是对数组知识点的一次巩固练习。

2.2 教师给出提示,学生自主分析

提出问题之后,首先给予学生两分钟时间进行思考,同时老师进行适当的分析:在不考虑大小王的情况下,总共有52张牌,分为四种花色{红桃、黑桃、梅花、方块},每种花色从A到K共有13张牌。可以建议学生按照“红桃”“黑桃”“梅花”“方块”的顺序给这52张牌编号,其中红桃A编号为0、红桃2编号为1,以此类推,直至方块K编号为51。

随后,老师继续提问以引导学生深入思考:“这52个编号应该如何存放呢?”鼓励学生回答,并通过师生之间的互动,自然地引出使用数组来存储这些编号的概念。

最后,老师引导学生进入下一步的思考:“既然是洗牌,那么我们的目标就是将这52个编号随机地放入数组中。这里,我们就需要用到随机函数。”通过老师的引导以及师生之间的积极互动,共同完成对程序逻辑的分析。最终,由学生根据这些分析独立实现程序代码。

2.3 学生给出答案

这个题目刚开始的时候,学生可能无从下手,但通过老师的引导,学生自主思考,师生互动,最后有的学生独立完成编程任务,给出了如下程序代码:

#include<iostream.h>

#include<time.h>

#include<stdlib.h>

void main(){

int  a[52]={0},k;  //定义长度为52的数组,初始值为0,用来存储52张扑克牌

char  number;

srand(time(0));  //给随机数产生一个随机种子(seed) ,时间在变化,所以种子也不同

for(int  i=1;i<53;i++){  //执行52次循环,随机给数组赋1-52的值。

while(1){

k=rand()%52;

if(a[k]==0){  //数组中某个元素没有被赋值的,则赋值,否则while循环继续。

a[k]=i;

break;

}

else  continue;

}}}

按上述算法进行了两次洗牌,两次洗牌的结果分别如下所示:

第一次情况为:

第二次情况为:

该学生写得特别好,通过学习,他/她不仅掌握了随机函数和数组的应用,还成功实现了洗牌的功能。采用启发式教学方法,借助学生感兴趣的实际例子,学生不仅解决了现实问题,而且对数组、循环嵌套、随机函数等概念有了更深刻的体会。完成程序后,学生深感成就感,学习兴趣更加浓厚。此时,老师可以趁热打铁,补充条件,如探讨如何加入大小王后进行洗牌,以及代码如何实现,以进一步激发学生的兴趣和探索欲。

2.4 学生汇报交流,老师恰当点评总结

学生完成程序后,老师邀请部分同学上台演示自己的程序,并要求他们分享对程序的思考过程、编程过程中涉及的知识点、遇到的问题及解决方法,以及此次课程的收获。老师根据学生的讲解,对学生的自主思考能力、知识点的应用情况以及程序的编写质量进行点评。课堂上采用学生互评与教师点评相结合的多维评价方式,并对学生的表现进行打分,最终将教师打分与学生互评分数按1:1的比例计算总分,计入学生的平时成绩。

3 考试形式改革

通过对考试试卷的深入分析,我们发现学生对基础性、记忆性知识的掌握较为扎实,但在动手能力和学以致用方面存在明显不足。因此,对传统考试模式进行改革,增加实践动手环节显得尤为必要,因为学习的最终目的在于解决问题。传统的笔试形式,包括选择题、填空题、判断题、程序分析题和程序设计题等,虽能在一定程度上考查学生的知识掌握情况,但无法全面评估学生的程序设计能力和程序调试能力,与实际应用仍有较大差距。考试形式改革的方向是将笔试转变为机试,提供几套综合应用题,要求学生编程实现,以此全面考查学生的知识掌握情况、动手编程能力和程序调试能力。

4 结束语

本文首先剖析了C++程序设计课程的教学现状,指出了传统教学方法中学生学习兴趣不高、动手能力不强等问题,进而提出了启发式教学方法。在启发式教学中,学生成为学习的主体,教师则侧重激发学生的学习兴趣、锻炼其动手能力,并挖掘其学习潜力。此外,本文还引入了多维评价方式以评估课堂教学效果。最后,针对考试形式进行了改革,将传统的笔试改为机试。通过引入启发式教学,学生的学习兴趣得到了显著提升。在未来的教学中,将继续根据学生的具体情况,不断总结经验,探索出一套更加适合学生学习的方法,以期取得更加显著的教学效果。

参考文献:

[1] 褚美玲.C语言程序设计课程的混合式教学实践[J].电子技术,2022(1):162-163.

[2] 雷慧宁.C语言程序设计课程的教学实践[J].电子技术,2022(2):142-143.

[3] 郑芝鸿. 启发式教学在本科旅游地理学教学中的应用研究[D].广州:广州大学,2013.

[4] 章杰瑛.基于 “MOOC+SPOC” 的高校翻转课堂教学模式设计及应用研究[J].湖北开放职业学院学报,2019,32(15):146-147.

[5] 刘波,戴小鹏,沈岳,等.Matlab融入线性代数的教学改革与实践[J].软件,2014,35(2):150-152.

[6] 杨劲峰,韩晓日,李炳学,等.农业资源与环境专业启发式实践教学改革:以“农业生产实习” 为例[J].教育教学论坛,2016(44):132-133.

【通联编辑:代影】

上一篇 点击页面呼出菜单 下一篇