任务驱动教学法中计算思维的培养*
2015-07-21张敏李军
◆张敏 李军
作者:张敏,西安翻译学院计算机科学技术教研室讲师,主要研究方向为图形图像处理和数据库优化;李军,西安翻译学院计算机科学技术教研室工程师,主要研究方向为计算机网络(710105)。
C语言程序设计课程具有理论性和实践性强的特点。在教学实践中,由于学生初学计算机语言,而C语言灵活性较大,所以学生虽然能够掌握理论知识,但是在实际操作环节比较弱,成为学生学习C语言程序设计课程的瓶颈问题。为了提高学生的实践操作和动手能力,培养学生的计算思维,在近些年的教学中也对任务驱动教学法进行尝试,实验证明,以任务驱动为导向的程序设计课程教学,提高了学生的学习兴趣,增强了学生的动手能力,增加了实践经验,使学生与社会接轨。
1 任务驱动教学法
任务驱动教学法的内涵 任务驱动教学法是以建构主义学习理论为指导的一种教学法,具有能够激发学生学习兴趣,有利于培养学生实践能力、创新精神和合作意识等特点。程序设计课程教学注重培养学生的计算机应用能力和信息素养,因此特别适用这种教学方法。
任务驱动教学法的特征 任务驱动教学法是一种探究式教学模式,旨在对学生的创新能力和独立分析问题、解决问题的能力进行培养,教学工作以完成一个具体任务为主线,教师教学过程简单,学生学习任务明确,方便学生对知识点的掌握。学生带着任务学习,势必有一种完成任务的紧迫感和学习动力,从而促使学生尽力在有限的学习时间内完成知识的学习,并在一定理论基础上完成操作任务。这样将具体任务与教学内容进行有机结合,从而使学生在完成任务的同时掌握教学内容,实现知识的学习和应用的有效结合。在掌握了一定知识的基础上让学生自己去解决问题,又培养了学生发现和解决实际问题的动手能力,调动学习积极性和主动性[3]。
2 计算思维
2006年3月,美国卡内基·梅隆大学计算机科学系周以真教授在美国计算机权威期刊Communications of the ACM上提出“计算思维”的概念和详细定义。2013年,周教授在接受中国信息技术教育杂志社刘向永记者访谈时对计算思维进一步做了诠释,随后国外的众多研究者对“计算思维”进行了积极且深入的探讨和研究,这些学者涵盖计算机教育界、社会学界以及哲学界等各个领域,其中也包含各种学术团体。
基于计算机技术和Internet技术的飞速发展,培养大学生计算机综合能力,提高大学生使用程序语言解决问题的能力,是当今大学生计算机基础教育的核心点之一。根据《中国高等院校计算机基础教育课程体系2008》的规定,高校程序设计基础课程的学习目标是:
1)学习问题求解的思路和方法,即算法;
2)理解计算机是如何具体实现算法的,即如何才能有效利用计算机编程。
因此,在程序设计课程教学任务中,不仅要使学生掌握程序语言的语法规则来编写程序,更重要的是掌握算法思想与问题求解的思路,而计算思维正是使学生掌握使用计算机科学对问题进行求解的一种思维方法和能力。
3 在程序设计课程中应用任务驱动教学法的优势
任务驱动教学法使程序设计的理论知识任务化 传统的程序设计课程教学中,往往注重学生理论知识的教学,但学生很难将枯燥的理论与实践相结合。任务驱动教学将学生解决具体问题的能力的培养作为教学重点,在教学过程中将理论教学的知识点容纳在任务中,学生在完成任务前需要掌握一定的理论知识,在完成任务的过程中更深入地掌握所学理论知识,并能够在问题的解决过程中得到很好的利用。
任务驱动教学法促进程序设计课程的实践教学 国家教育部门提出引导一批普通本科高校向应用技术型高校转型,旨在培养高级应用型人才。应用型本科具有鲜明的技术应用性特征,需以应用型人才培养为核心设置课程,针对地方经济需要和学院特点,在学生学习理论知识的同时,还要掌握更多实践能力。在课程教学中,除了掌握一定了理论基础知识外,希望学生能得到更多“实战”机会,增强实践动手能力,将来更快适应工作岗位。
任务驱动教学法在学生给出任务解决方法后,学生积极动手去完成自己的任务,从而锻炼动手能力和实践能力,在学习了理论知识后能够在实践中得到验证,这正契合了应用型人才的培养要求。
任务驱动教学法培养学生的计算思维 在任务驱动教学中,教师的教和学生的学都以完成一个具体任务为主线。教师提出问题,以任务的形式发送给学生;学生在接收到任务后对问题进行分析,最后得出解决问题的办法,从而调动主动性和积极性,在问题解决中给出自己的看法,在同一个任务的不同解决方法中选择最佳方法。多次的问题解决的尝试,使学生具有了实际问题的解决的能力,培养了学生的创造性思维和程序设计的计算思维。
4 任务驱动教学法在C语言程序设计课程中的实践与应用
任务驱动教学法实施步骤 任务驱动教学是教师、学生、任务三者的积极互动过程。实施任务驱动教学法的第一步就是设计任务,这是此教学法得以实现的重要环节。任务的设计应遵循典型性、实践性、针对性和系统性原则。而启发引导工作是任务实施的关键,在任务实施过程中要引导并鼓励学生在掌握理论知识的前提下主动思考,大胆探索。最后需要教师和学生一起总结任务完成过程中的问题,采用互评和自评的方式来发现问题,从而提出改进策略,使任务驱动法的效果更好地体现。
任务驱动教学法在C语言程序设计课程教学中的应用
1)任务提出及涵盖知识点。
问题:将n个元素的无序序列调整为有序序列(使用简单选择排序算法)。
知识点:简单选择排序,循环程序嵌套。
解决此任务的方式:分组讨论,写出算法思想、撰写程序代码。
2)任务分析及实施
任务分析:
输入:待排序序列r[n]
功能:简单选择排序
输出:升序序列r[n]
简单选择排序的算法思想:假设将待排序元素进行升序排序,简单选择排序的基本思想是:将整个序列划分为有序区和无序区,初始时有序区为空,无序区含有n个元素;在无序区中找到值最小的元素,将它与无序区中的第一个元素交换;不断地重复上述过程,直到无序区只剩下一个元素。
给出一个简单选择排序的过程示例。
Source: (46 33 67 82 10 46 9)
Select Sort:
(9) 33 67 82 10 46 46
(9 10) 67 82 33 46 46
(9 10 33) 82 67 46 46
(9 10 33 46) 67 82 46
(9 10 33 46 46) 82 67
(9 10 33 46 46 67) 82
Result: (9 10 33 46 46 67 82)
程序代码:由于一维数组作为参数,形参数组和实参数组共用同一段内存单元,对形参数组的修改即是对实参数组的修改,因此为了观察排序的结果,在调用函数SelectSort之前和之后分别输出数组r[n]的值。程序如下:
#include
#de fine N 7
void SelectSort(int r[ ], int n);
int main()
{
int i, r[n] = {46,33,67 ,82 ,10 ,46, 9};
printf(“排序前的序列是:”);
for(i=0;i printf(“%5d”,r[i]); printf(“
”); SelectSort(r,N); printf(“排序后的序列是:”); for(i=0;i printf(“%5d”,r[i]); printf(“
”); return 0; } void SelectSort(int r[ ],int n) { int i, j, index, temp; for(i=0;i { index=i; for (j=i+1;j if (r[j] index=j; if (index !=i) { temp=r[i];r[i]=r[index];r[index]=temp; } } } 3)效果总结与评价。将任务驱动教学法运用于程序设计课程中,学生在任务解决的过程中学习了枯燥的理论知识,学习兴趣得以激发。同时,学生能将理论应用于问题的实现,在巩固理论知识的同时将其应用于实际问题的解决中,锻炼了实践能力。任务驱动教学法对构建教学情境、提高教学效率起到很好的作用。 实践证明,在向应用技术、技能型院校转型的驱动下,在程序设计课程中应用任务驱动教学法符合课程体系改革中注重实践教学的要求。有效地运用任务驱动教学法,能够使学生对理论知识更容易理解和掌握,并能将算法思想轻松地转换成程序设计语言,提高了C语言程序设计课程的学习效率。同时培养了学生的动手能力和实践能力,使学生更容易与社会接轨,从而达到应用技术、技能型人才培养的要求。■ [1]李占宣.任务驱动教学法在数据库教学中的应用[J].教育探索,2010,10(12):52-53. [2]刘向永,周以真.计算思维改变信息技术课程[J].中国信息技术教育,2013(6):5-12. [3]董荣胜.计算思维与计算机导论[J].计算机科学,2009,36(4):50-52.5 总结