陈鑫影
(大连交通大学,辽宁 大连 116021)
C语言程序设计是面向新生的入门级别的语言类基础课程[1-2]。选修这门课程的同学,通过这门课程可以学习、了解和掌握C语言的基础知识、C语言的程序设计方法,并且可以培养结构化的程序设计思想。通过课程的实践,学生可以在一定程度上训练自己的逻辑思维能力,提升自身的动手能力,提高自己解决问题的能力等[3]。
然而,在现有的C 语言程序设计教育中,教学思想、教学方法、技术手段仍相对滞后,学生基础知识和能力掌握还不够深入,无法调动学生的学习积极性,学生的学习效果并不尽如人意,教学效果不佳[3]。上述问题亟待解决,需要借助新的教育模式,引入更为合理的教育理念,来提高和改善现有的教育方法。工程教育理念将为课程带来重大的改变,本文将探索OBE、PBL 和CDIO 三个模式的合理结合,针对C 语言程序设计教学改革进行研究,旨在结合三个模式的有益思想,以混合型教学方法,在课上课下的教学过程中,融入竞赛和评比机制,深入挖掘和完善更为合理的教学方法,以更好地培养学生的团队协作能力和科学素养,并使他们能够更好地应对未来的挑战,以达成更加有效的教育结果[3]。
作为高校新生接触的一门重要基础课,C 语言程序设计往往在第一学年开设,这样有助于学生在其后学习其他更深入的专业课程。C语言语法简洁精妙,利于描述算法。但学生刚接触C语言时,仍然摆脱不了高中的学习习惯,仍然会沿用高中的学习方法。经过观察,C语言的教学存在一些挑战,主要包括两点,具体分析如下。
1) 忽视实践
C语言程序设计是一门充满挑战的课程,因此,教师应当积极引导学生,让他们在理论知识的基础上,结合实际操作,培养他们的动手能力、程序设计能力以及解决实际问题的能力。一年级学生普遍存在计算机知识薄弱,缺乏基本的程序设计思想,无编程经验,动手操作能力差的问题。因而目前的上机实验大多仅满足于对教材实例的调试和理论知识的验证,尚没有与实际问题相关的针对性训练,很难达到使学生融会贯通的教学效果。
2) 模式单一,忽视个性化培养
在考核形式方面,多以终结性理论考核为主,考试内容依从“三中心”教学模式。尽管期末考试的成绩与平时成绩之间存在一定的比例关系,但是由于平时的实验题目相似,容易出现抄袭的情况,使得期末考试的成绩变得不够客观。因此,期末考试的成绩受到平时成绩的影响[4]。这种考核评价方式仅仅提高了学生的应试能力,其他综合素质却原地踏步,无法有效激发学生的学习热情。
在C 语言的教学中,应该清楚地定义教学目标,合理地选择教学内容和方法,并根据C 语言的特点,积极探索一套有效的方法和措施。基于多年来C 语言程序设计课程的教学实践,对这一课程进行深入的分析和思考,以期提出新的教学方法,来解决目前C语言教学中存在的一些问题。
C语言程序设计课程中,通过课堂教学,学生可以理解和基本掌握大部分知识,并且可以使用C语言编写出一些简单的程序,同时也可以解决一些比较基础的问题。但是,对于没有接触过实际问题的同学,他们面对繁复的问题时,就会显得力不从心、无所适从。OBE旨在建立一种关注学生成果的课堂环境,强调将学生置于课堂的核心位置,并对他们的成果进行有效的评价。PBL教学方法是以问题为导向的,也是以学生为中心的教学方法。CDIO 的四个核心要素是创意、规划、执行、结果,强调的是实际操作的重要性,并且注重团队的协同配合,同时也强调了工程技术的发展。因此,基于上述三种模式,借助他们的优势,融入竞赛和评比机制,可以构建一个分层级的、以人为本、因材施教、个性化发展的课堂教学,以培养创新精神、提升创新能力,进而激发学生的创造力,培育他们的思维,提升他们的创新能力素养[3]。同时,参考耿淼老师提出的教学体系[5],本课程教学改革将采用基于“多层级”的竞教融合、以竞促学的组合教学模式,以期达到更好的教学效果。具体的多层级组合教学模式详述如下(参见图1) 。
图1 多层级“竞教融合、以竞促学”体系
第一层级:该层级对应的是课前的基础知识竞赛环节,共包括两个模块,分别是“课前预习笔记评比”和“课前基础知识竞赛”。
第二层级:该层级对应的是课中的实践竞赛环节,共包括三个模块,分别是“个人实验模块”“团队内部竞赛模块”“团队间竞赛模块”。
第三层级:该层级对应的是课后的难点重点竞赛环节,共包括三个模块,分别是“课后复习笔记评比”“课后测验”以及“阶段性测验”。
第四层级:该层级对应的是课后校际竞赛环节,“蓝桥杯全国软件和信息技术专业人才大赛”每年会定期举行,可以组织同学们参加其中的C语言程序设计省赛和国赛。
其中第一层级和第三层级的相关的课程内容已经设计并存放于超星泛雅平台。在课中实践环节中,教师将利用课内时间组织学生团队进行项目竞赛。而校际竞赛环节则是课程实践环节面向实际应用、面向社会实践的进一步拓展。教师将引导学生依据自身情况,积极参报各级“蓝桥杯全国软件和信息技术专业人才大赛”。
课程将基于PBL 以问题为导向、以学生为中心,基于OBE 成果导向工程教育理念和CDIO 过程实践、团队协作教育理念,结合“多层级”教学体系循序渐进、因材施教培养学生实践应用能力,不断提升学生的专业素养,实现“竞教融合、以竞促学”。采取“多层级”的教学模式,通过让学生自己探索并找到最佳的解决方案,来激励他们的自我探索精神。通过强化课堂教育,培养学生的实际运用技巧。可以让他们更好地利用所掌握的技术来应对现实世界的挑战。该“多层级”模式是融合理论与实际的重要过程,在课中实践环节中,将根据教学重点难点,考虑项目问题的难易程度,对项目问题进行分割,鼓励学生团队协作解决难题,从而提升学生的个性化思维、协同创新,以及沟通技巧[5-6]。
以下列举一个简单的案例“求取等差、等比数列的和”来具体分析一下多层级组合教学模式的课中实践竞赛环节。其中:int f(int,int,int)函数负责计算等差数列的和;int g(int,int,int)负责计算等比数列的和;主函数负责调用两个函数,并负责向函数的参数传递值,比如将等差数列的首项的值、公差以及求和项数传递给所调用的函数。主函数在main.c源文件中,函数f在f.c源文件中,函数g在g.c源文件中。
main.c
#include
int f(int,int,int); //要调用的函数原型
int g(int,int,int); //要调用的函数原型
int main(){
int startItem; //首项
int d; //公差或公比
int n; //项数
int result;
startItem = 1;
d = 1;
n = 100;
【代码1】//调用f(int ,int,int)函数,将实参startItem,d,n的值传递给形参,将返回值赋值给result
printf("首项是%d,公差是%d的等差数列前%d项和是: ",startItem,d,n);
printf("%d ",result);
startItem = 2;
d = 3;
n = 6;
【代码2】//调用g(int ,int,int)函数,将实参startItem,d,n的值传递给形参,将返回值赋值给result
printf("首项是%d,公比是%d的等比数列前%d项和是: ",startItem,d,n);
printf("%d ",result);
return 0;
}
f.c
int f(int,int,int) ; //函数原型
int f(int start,int d,int n) { //函数实现
int sum,i;
for(i=1,sum=0;i<=n;i++){
sum = sum+start;
start = start+d;
}
return sum;
}
g.c
int g(int,int,int); //函数原型
int g(int start,int d,int n) { //函数实现
int sum,i;
for(i=1,sum=0;i<=n;i++){
sum = sum+start;
start = start*d;
}
return sum;
}
该案例涉及的C 语言程序设计课程的知识点是“参数调用过程中的传值原则”。调用函数时,对于函数中的参数,需要将某个实参的值传递给形参,传递的特点是“复制”机制,也就是说,函数中参数变量的值是调用者指定的值的拷贝。该部分知识点可以结合课堂教学和学生自主学习。
由于C 程序提倡让每个函数负责完成一定的任务,大家共同完成程序的目标,这不仅便于程序的模块化管理、也有利于系统的维护。因此,在课程实践环节中,教师可以根据这个案例的难易程度,以及学生自身的能力,对该案例项目进行划分。本案例可以由一个小团队,共3名学生组成。团队内,该案例可分为三部分:第一名同学负责实现主函数,完成main.c源文件;第二名同学负责实现等差数列求和函数,完成f.c 源文件;第三名同学负责实现等比数列求和函数,完成g.c 源文件。随后,团队内部三名同学,共同完成函数间的调用和程序的调试。
在团队内,三名同学各自完成“个人实验模块”;与此同时,团队内部可以展开“团队内部竞赛”;然后,三名学生协同地完成“团队项目”;在分析、解决该案例后,还可以与解决其他案例的团队进行各个小组间的“团队间竞赛”。指导教师可以根据任务的难易程度和完成情况,为每个同学和每个团队打分。采取“多层级”的融合方案,可以为学生分层级地提供更加有效的学习体验,从而更好地发挥他们的潜能,可以显著改善该课程的授课效果[4]。
本次教学体系结构的改革旨在将“多层级”的教育思想融入课程学习中,通过竞教融合、以竞促学,强化实践教学;通过让学生参加“多层级”竞赛形式,有效地激发学生的独立思考和创造性思维,促使他们在实践中不断进步,进而提升他们的综合素质。最终,将基于“多层级”的教育教学理念,进一步调整课程设置,完成教学过程重构和教学内容组织,并改进考核评价体系。