关键词: 任务引导式教学 程序设计类课程 教学方法
程序设计类课程是高校计算机专业开设的一类主要的专业课程,通常至少开设一门,此类课程多为实践性内容较多。程序设计类课程注重实践动手能力的培养,因此课程的教学和实践环节具有同等重要的地位。本文针对程序设计类课程的特点,提出了在教学过程中应用任务引导的方法,从而在提高学生学习主动性的同时,增强他们的实践动手能力和团队协作精神。
1.任务引导式方法
1.1任务引导式方法的主要内容
所谓任务引导式教学是指在教学过程中,教师布置相关任务,学生依照任务要求逐步完成对教学内容的学习及实践的过程[1,2]。在传统教学方法中,学生处于被动接受知识的状态,对新技术的掌握完全局限于教师讲授的内容,而任务引导式教学方法强调,以教师提供的任务作为引导,学生在完成任务的过程中主动地学习知识,教师在整个教学过程中的作用不再仅限于对知识的讲解,更多的是对学生所学知识正确性的确认及纠正。
任务引导式教学方法主要包括以下几个主要内容:
教师布置学习任务,教师在课前将学习任务通过交流平台(公共电子信箱或E-class等)布置给学生,学生通过分组讨论的方式学习,然后撰写并提交学习报告。
教师以布置的学习任务为主线,以解决任务中的问题为目标,讲授知识点,重点讲解学生讨论后提出质疑的问题。
学生上机完成学习任务中的实践部分,这是针对计算机相关技术课程设计的环节,学生通过实践进一步对所学知识进行巩固,教师在此环节中起到辅助指导的作用。
教师通过学生在完成任务过程中提交的学习报告和上机情况,对学生进行考核。
1.2程序设计类课程中应用任务引导方法的必要性
目前,在程序设计类课程的教学过程中存在一些问题,表现为:
程序设计语言类课程,通常由基本语法入手,层层递进,对于初学者而言不熟悉的术语和关键知识点较多,对没有任何编程经验的学生而言具有一定的难度。
教师采用传统教学模式,填鸭式地讲解,学生处于被动接受的状态,学习过程枯燥无味,严重缺乏学习主动性。
程序设计语言虽然自身语法简单,但涉及内容广泛,教学内容离散性较强,知识点太多,且应用领域广泛,仅靠课上教师讲解,往往事倍功半。
针对以上这些问题,应用任务引导式教学方法,可以使得学生在完成任务的过程中完成学习。在课前的分组讨论中充分地打开视野,了解相关领域知识,通过按照学习任务要求整理学习报告,进一步对这部分知识进行理解,同时将问题带入课堂,带着问题接受教师的讲解;教师依照任务实现的过程讲解知识点,使得知识的离散性问题得以解决,同时学生学习时有备而来,教学过程不再是单方向的活动,增加了教学的互动性可能;在实践环节中,学生通过动手实现任务,了解实践过程中的知识要点,巩固课堂教学内容;教师在任务结束后,对学生的学习过程和结果做出点评并进行考核,及时纠正学生学习中存在的问题。
在任务引导式教学过程中,通过任务的完成,帮助学生掌握各个知识点,培养学生的自学能力和独立分析问题、解决问题的能力。
2.任务引导式教学的实施
本文以C语言为例,讨论如何在程序设计语言课程中实施任务引导式教学方法。在C语言课程教学过程中,通过参考多本教材和大量中英文文献,整理出符合课程教学需要的相关知识点[3],针对这些知识点设计出相关学习任务,共计九项,任务的概要说明如下:
数据类型、运算符和表达式的计算:给出表达式,设计程序完成计算过程;
顺序程序设计:实现华氏温度与摄氏温度间的转化;
分支结构程序设计:(a)实现三角形形状的判断,(b)求解水仙花数;
循环控制:(a)打印二维图案,(b)求最大公约数和最小公倍数;
数组的应用:(a)检验并打印魔方矩阵,(b)判断字符串是否回文;
函数的使用:(a)设计实现汉诺塔游戏,(b)显示斐波那契数列;
指针的运用:(a)冒泡排序,(b)二维数组元素求和;
结构体、共用体的使用:实现学生多门课程成绩打印输出;
文件的应用:磁盘文件复制。
本文以任务3为例,介绍任务引导教学方法的实施过程。
2.1布置任务
针对了解并掌握分支结构程序设计方法及其用途的教学目标,在课堂教学开展之前,为学生布置相关任务,如下:
了解if语句和switch语句;
了解如何设计条件表达式;
设计一个实现程序可以输入三角形的三条边,判断是否是一个合法三角形;
设计程序分解一个三位整数。
学生通过交流平台接到任务信息后,按预先分组开始学习和讨论。分组学习讨论有以下优点:首先,可以集思广益,新的知识需要从不同的角度去理解和学习,小组交流可以增加知识吸收的数量,提高知识吸收的速度;其次,小组交流可以取长补短,学生作为学习的个体,每个人对这一领域知识的接受能力都是不同的,讨论可以使得学生相互促进;最后,小组讨论还可以培养学生的参与和协作意识。
每组在讨论后,将相关内容整理为学习报告,每组提交一份。小组成员按不同的任务轮流撰写,培养对知识的总结、归纳、表述和整理的能力。
2.2课堂教学
课堂教学围绕任务中的要求展开,分别介绍相关知识点: 了解if语句和switch语句。知识点:if语句的3种形式及对应的语法规则、执行流程,switch语句的语法规则、执行流程。
了解如何设计条件表达式。知识点:6个关系运算符、3个逻辑运算符的基本概念、基本属性、运算规则。
介绍分支结构程序设计的基本过程。知识点:算法分析,确定问题可以利用哪种分支语句实现,以判断三角形形状的问题为例,讲解整个程序设计过程。
在整个教学过程中,对知识点的讲解及资料的组织,都围绕任务中的三部分内容进行,同时允许学生在讲解过程中随时提出问题,因为学生在此之前对相关知识已经有一定程度的了解,所以提出的问题相对比较有代表性;同时,前期的学习过程,让学生对相关内容产生兴趣,使得课堂教学效果事半功倍。
2.3上机实践
依据课程开始之前布置任务的内容,结合上课讲解的知识点,对原有任务进行修改细化,让学生通过实际动手完成任务,对知识点加深理解。细化后的任务概述如下:
2.3.1输入三角形的三边长,判断这个三角形是否是直角三角形。
2.3.1.1算法分析:直角三角形斜边最长,要先找出三边中最长的边,判断最长边的平方是否等于其余两边的平方和,若相等就是直角三角形。
2.3.1.2源程序:
#include
void main( )
{
int a,b,c,t;
/* 三边设为a,b,c,t是用于交换的中间变量 */
scanf("%d,%d,%d",&a,&b,&c);
if(a {/* a中放a,b中较长边 */
t=a; a=b; b=t;
}
if(a
t=a; a=c; c=t;
}
if(a*a==b*b+c*c)
printf("Y");
else
printf("N");
}
2.3.1.3在VC++编辑环境下编辑源程序。
2.3.2输入一个三位数,若此数是水仙花数输出“Y”,否则输出“N”,若输入值不是三位数输出“data error”。
2.3.2.1算法提示:水仙花数是一个三位数,组成这个三位数的三个数字的立方和与这个三位数相等。如:153=13+53+33。判断是否是水仙花数需把构成三位数的三个数字分离出来并存入变量。
2.3.2.2源程序:
#include
int main()
{
int i,j,k,n;
printf("水仙花数:\n");
for(n=100;n<=999;n++)
{
i=n/100;
j=n/10%10;
k=n%10;
if(n==i*i*i+j*j*j+k*k*k) printf("%d\n",n);
}
}
细化后的任务以实验手册的形式提供给学生,具体的操作细节在实验手册中都会进行详尽的说明。学生可以在这一环节,将之前所学习的知识点,在实践过程中进一步巩固,并且真正了解技术的应用领域。
2.4学习效果考核
实践环节结束的同时,教师要针对学生的学习情况进行点评和考核。总结学生遇到的问题,进一步讲解强调,同时客观地评价学生的学习效果。
教与学是教学过程中两个重要的有机部分,为激励大学生学习的积极性,最大限度的提高教学质量,程序设计类课程考核方式将平时教学任务的完成与期末实践开发设计考核相结合,真正检验出学生的学习效果。具体实施方法为:
每次任务中的学习报告成绩,记录为该任务分数的50%;
每次任务的实践环节考核成绩,记录为该任务分数的50%;
7次任务考核总分,最终换算为100分,占期末总成绩的40%;
学期期末以课程设计进行考核,记录为期末成绩,满分100分,占期末总成绩的60%。
3.教学效果分析
任务引导式教学方法在程序设计类课程中的实施是逐步展开的,到目前为止,已在本专业的三个年级学生当中开展过实践。该方法在教学过程中,体现出来的优势有如下几个方面:
3.1提高了学生主动学习的能力
本科学习阶段的学生,由于刚刚由接受型为主的高中教育,过渡到大学学习阶段,许多学生的主动性学习能力相对较弱,对未知领域知识的接受,带有很强的畏惧心理。通过为学生提供课前的学习任务,让他们在发散的、宽松的学习氛围中,对知识有初步的了解,为进一步的教学过程打好基础,避免出现因为对教师所讲内容完全没有接触过,而产生的厌学情绪大大提高了学生的学习积极性。
3.2培养了学生团队协作的能力
以小组为单位讨论学习,并总结撰写学习报告,让学生深刻体会到团队合作解决问题的乐趣。布置的任务如果单个人在短时间内完成可能存在很多困难,但是,经过合理分工后,分解后的任务实现的难度大大降低。同时,在团队中,各个成员相互取长补短,“先进带后进”,让许多学生的问题在小组讨论阶段就得以解决。
3.3扩大了学生接受知识的范围
传统的教学方式,由于课时的限制,对细节知识点和实践中的操作细节不能做详细的讲解,造成学生对某些问题存有疑问。任务引导式教学方法,在课堂教学之前就提供给学生学习的空间,使学生在不受教师讲解内容限制的情况下,对相关的知识就有了初步的掌握,再经过教师在授课过程中强调和补充,进而在实践环节就可以完成对更多问题的验证,大大扩宽学生的知识接收范围。
3.4增强了学生的实践动手能力
学生以完成教师布置的课程任务为目标,参与任务中相关内容的设计和最终实现,在实践过程中,掌握了课程知识点的同时,也增强了操作能力。
当然,在教学方法的实施过程中,也发现了一些需要进一步改进的环节,例如课前布置任务进行小组讨论时,由于教师未参与学生讨论,各小组讨论的效果差别较大,要在今后的教学过程中采取一定的控制措施,例如提供基本的讨论目标。
4.结语
任务引导式教学方法在程序设计类课程中的成功实施,为同类课程的教学提供了参考。对于一些应用性较强、领域较新的课程,调动学生的学习主动性是非常必要的,而任务引导式教学通过提供需要学生完全参与的学习任务,使得学生成为整个教学过程的主体,教师的主要作用调整为引导和纠正,同时学生之间的学习互助潜力被充分挖掘出来。教学实践充分证明,学生对这种教学方式非常认可,认为在课程的学习过程中,自身主动思考的能力增强,通过讨论获得的知识比单纯教师讲授的内容更容易理解和记忆,同时小组合作完成任务也锻炼了每个学生表达思想、相互合作的能力,促进了合理学习习惯的养成,在学生中间形成了良好的学习氛围。总之,任务引导式教学方法,充分发挥了学生学习的主动性和创造性,符合以学生为本的现代教育理念。
参考文献:
[1]张晓海.任务驱动法在PLC教学中的实践[J].实验技术与管理,2009,26(11):131-132.
[2]张萍.任务驱动法在DSP课程教学中的实践[J].计算机教育,2010(16):93-94.
[3]谭浩强.C程序设计[M].第4版.北京:清华大学出版社,2010:37-354.
上海海洋大学校级教学改革研究项目(A1-0209-15-0301-14)