赵军富 徐 扬 胡 勇 王 猛
(内蒙古科技大学 工程训练中心,内蒙古 包头 014010)
“C 语言程序设计”是本科院校工科专业的计算机技术公共基础课,通过C语言的学习可以培养非计算机专业本科生的计算思维能力,利用计算机来解决实际问题的系统分析、设计和编程能力。然而大多数学生在学习C语言的过程中,仍然是“老师讲,学生听”的模式,不能很好地掌握C语言。学生被动学习,为了考试而学习,很少有学生主动地、创造性地去解决问题。学生用C语言编程解决实际专业问题的能力没有得到重视。在新工科背景下培养学生运用计算机解决问题的独特思维方式,在后续的专业课程中再由专业课教师指导学生进一步应用实践,不仅能提高学生全面分析问题、解决问题的能力,养成良好的学习习惯和思维方式,也能在更大程度上激发学生的创造潜能。本文提出与专业背景相结合的C语言程序设计案例教学模式[1],以与专业知识相关的实际问题为教学案例,引入解决该问题用到的C语言知识点,通过对知识点的深入学习,最后反过来再解决教学案例的问题。这种模式可以有效地提高学生对所学知识与专业知识的衔接,自觉地在教学中建立起C 语言与专业应用的关系桥梁,培养学生运用计算机解决问题的独特思维方式来解决专业中的实际问题[2],不仅能提高学生全面分析问题、解决问题的能力,也可实现学以致用,激发学生对专业学习的兴趣。培养具有实践能力、创新能力,适应社会需求的应用型人才。
本科院校工科专业的学生在学习过程中,虽然掌握了各知识点的概念、基础语法、语句结构等,但在知识点的灵活应用、算法设计、程序编写、程序调试上存在缺乏解决实际问题的科学思维、算法设计和编程实现等能力问题。因此,本文针对本科院校工科专业培养学生的目标,结合教师存在教学理念陈旧,教学方法简单,过分注重知识的传授,忽略了对学生实践能力、创新能力的培养,提出对本科院校工科专业“C语言程序设计”教学进行创新型改革。
第一,采用“项目驱动式”的创新教学模式,通过教学项目引入知识点,详解知识点后,再用所学知识解决教学项目提出的问题。
第二,在教学设计上,对课程知识点进行单元化设计,以单元知识点为中心,根据各专业工程教育认证指标点,设计与专业背景相融合的教学项目[3],将知识点引入、讲解、并用相关的知识应用解决专业实际问题。
第三,在教学内容上,为每个单元知识点创建多样化的教学资源包括教学项目、PPT课件、微视频(带有二维码)、随堂单元知识测试题。
第四,在考核方式上,应注重过程考核,将对学生出勤、平时作业、项目考核、期末考试等进行多元化考核。
在实际教学中运用“项目驱动式”的教学方法,通过事先设计好的教学项目,以案例的形式引出知识点,为解决教学项目中的问题,需要学习相关的知识点。首先,进行知识点的精讲,通过经典的例题让学生掌握知识点的关键内容。其次,让学生做相应的练习巩固熟练知识点。最后,将所学的知识点用来解决刚才教学项目中的问题以提高学生的学习兴趣,充分培养学生解决实际问题的逻辑思维能力、分析判断能力和学以致用的能力。
对“C语言程序设计”课程按照章节进行知识点划分,主要包括分支结构、循环结构、数组、函数、指针、结构体、文件等 7大模块。[4]首先,对每一模块进行知识点单元化[5],分出若干个知识点。然后,进行专业调研来寻找专业中需要用编程来解决的问题,将专业课程中的问题与C语言中的某一个知识点进行融合凝练出科学、合理、具有创新的教学项目,教学设计方案如图1所示:
图1 教学设计方案
在图1中,教学设计环节将课程单元知识点与专业问题融合后产生教学项目,下面以循环结构单元知识点为例设计教学项目,给出教学内容及教学过程。
教学项目(爱因斯坦出了一道数学题):有一条不超过200阶的长阶梯,若每步跨2阶,则最后剩1阶,若每步跨3 阶,则最后剩2阶,若每步跨5阶,则最后剩4阶,若每步跨6阶则最后剩5阶。只有每次跨7阶,最后才正好一阶不剩。请问这条阶梯共有多少阶?
第一步:问题分析与算法设计。根据题意,可知台阶数位为区间[7,200]中的1个数。假设阶梯数为n,则阶梯数应该满足下面一组同余式:
n % 2≡1
n % 3≡2
n % 5≡4
n % 6≡5
n % 7≡0
第二步:相关知识点引入。本项目通过循环语句可以对区间[7,200]中的每个整数进行判断,使用for语句来实现。引入for语句,并进行详细讲解,for语句一般格式:
for ( 表达式1;表达式2;表达式3 )
循环体;
第三步:编程实现。
/*程序说明与注释
#include
main( )
{
int n=1;/*n为所设的阶梯数*/
for(n=7;n<=200;n++)
{
if( (n%2==1)&&(n%3==2)&&(n%5==4)&&(n%6==5)&&(n%7==0) )
printf(“阶梯数number=%d ”,n);
}
}
程序运行结果
阶梯数number =119
多数高校使用传统的考核标准,“C语言程序设计”课程以“平时成绩+ 期末考试成绩”的方式进行考核[5],比例为 2:8(或3:7)。由于期末考试成绩的占比较大,大多学生是在考前突击学习,通过死记硬背知识点和做题的方式来应付考试,即使学生取得了很高的成绩,但是用C语言来编写程序解决专业问题的能力不足,不能把C语言所学知识与专业相结合,这是应用型本科工科专业同学的一大弊病。因此,要注重过程考核,对每个知识点新增一个与专业相结合的考核项目,批改、打分计入总成绩。可以以考勤(10%)、考核项目5个(50%,每个占10%)、期末测试(40%)的模式进行考核,提升学生用C语言知识解决专业问题的能力,培养工科学生的创新能力。
应用型本科院校培养学生解决实际问题的能力及创新能力至关重要,工科专业的学生利用C语言编程来解决一些专业实际问题是必备的能力。本文通过对C语言从教学模式、教学设计、教学内容、考核方式上进行创新型改革。将C语言课程进行知识点的单元化,将单元知识点与专业问题进行融合,凝练教学项目,在教学过程中先通过教学项目需要解决的问题将相关知识点引出,详细精讲知识点,掌握知识点后反过来用所学知识来解决教学项目中的专业问题。提高学生理论联系实际、解决实际问题的综合能力,将教学从单一的“结构化编程” 转变为“结构化和面向对象”,激发学生学习和探索的激情,提高教学质量。