螺旋上升式任务驱动模式在大学程序设计类课程中的教学研究

2016-11-22 09:09马燕李顺宝徐晓钟李鲁群张玉萍
教育教学论坛 2016年43期
关键词:任务驱动程序设计

马燕 李顺宝 徐晓钟 李鲁群 张玉萍

摘要:本文提出一种螺旋上升式任务驱动模式,并将其应用于大学程序设计类课程的教学,分析了该模式与传统的任务驱动法的区别。为配合该教学法的具体实施,以C语言为例,对程序设计类课程的教学内容作了详细分析,给出了在设计递进式任务时所遵循的若干原则,并要求做到理论教学与实践教学的一体化,同时,对任课教师需要具备的理论素养和实践技能作了分析。

关键词:螺旋上升式;任务驱动;递进式任务;程序设计

中图分类号:G642.0     文献标志码:A     文章编号:1674-9324(2016)43-0162-04

一、引言

《C语言程序设计》、《Java语言程序设计》等是高校计算机专业的基础课程,在讲授程序设计语言语法、程序设计基本方法等之外,应注重培养学生利用计算机语言求解实际问题的计算思维能力,而该能力的培养正是在实际教学环节中所欠缺的。传统的教学往往过度强调语法知识的掌握,而忽视对于学生实际编程能力和计算思维能力的培养,学生即使掌握了语法知识,在遇到实际编程问题时也会无从下手。另外,学生自身素养、理解能力的个性差异也较大,大部分学生在纷繁复杂的语法、枯燥的编程语言面前往往失去信心与兴趣,从而对计算机语言产生畏惧心理。因此,本文以C语言程序设计课程为例,针对其教学内容,提出一种螺旋式任务驱动模式来实施程序设计语言类课程的教学,使学生真正掌握编程的精髓和实质,从而提高计算思维能力。

二、螺旋上升式任务驱动模式

“任务驱动法”是一种建立在建构主义理论基础上的教学法,即在教学过程中,老师根据教学内容、教学目标、学生特点等综合因素来组织、设计教学任务,要求学生通过独立探究完成任务。该方法的特点是:学生的学习过程必须与所给的任务或者问题相结合,学生的学习动机是在强烈的问题驱动下,通过问题的探究进行自主探索和互动协作,使学生带着真实的任务在探索中学习。

在C语言中采用“任务驱动”教学法,就是将C语言中的教学内容转化为需要学生完成的编程“任务”,在这些“任务”驱动下,由教师引导学生由易到难、循序渐进地完成各项“任务”,从而完成教学任务,并且在“任务”的完成过程中,不断地培养学生分析问题、解决问题的能力,从而提高学生的独立思考能力和计算思维能力,并且不断激发学生学习编程语言解决实际问题的兴趣,逐步形成学习—思考—进步—再学习—再思考—再进步的良性循环。在任务的设计中,可以结合C语言自身特点,对教学内容进行重组,并从重组后的教学内容出发,重新设计各项任务,使前续任务是后继任务的基础、引导,后继任务又是前续任务的扩充、提高,使任务之间层层递进,环环相扣,由此,本文提出螺旋上升式任务驱动模式来完成大学程序设计类课程的教学。

三、程序设计类课程教学内容的分析

为配合螺旋上升式任务驱动教学法,课程内容的分析与组织是关键之一。以C语言为例,可以把教学内容简化为以下两大阶段。

第一阶段包括C语言的基础内容,如基本数据类型、运算符、三大结构(顺序结构,选择结构,循环结构)。这一阶段的教学任务设计中,应淡化语法细节,强调三大结构的理解与掌握,而顺序、选择和循环这三大结构教学环节的设计可以由螺旋上升式任务方式完成教学内容,以实例分析深入展开,通过由浅入深的任务,将程序的三种基本结构的执行过程和特点一一呈现。通过任务的完成,让学生理解并掌握三种基本结构的执行过程,在三大结构的学习中,贯穿基本数据类型、运算符、输入、输出、条件、循环和转移语句等相关语法知识的学习。经过第一阶段的学习,学生具备基本的程序设计能力,并初步具有计算思维能力,能独立编写具有初等难度、几十行的程序,并能够较顺利地完成程序调试与测试。

第二阶段包括C语言的高层次内容,如数组、指针、函数。这三部分分别进行单独学习的话,较容易被学生理解和使用,真正的难点是如何将这三部分内容灵活组合成具有通用性的程序,而要达到这一目标,首先要对数组、指针和函数这三部分的区别与联系作一分析,如果这三者存在密切的关系,则可以利用螺旋式任务驱动教学法来设计前后贯通、不断提升的各项任务。图1对数组、指针和函数三者的关系作了说明,首先,数组是定义了一块连续的内存区域,这一连续的内存区域中的首地址可以利用指针引用,而数组和指针最终是为模块化程序设计服务,最终,又可以通过函数来完成。图1说明了在第二阶段的C语言学习中,是可以利用螺旋式任务驱动教学法来完成的。经过第二阶段的学习,学生可以独立编写数百行以上、功能较为复杂、具有一定可读性和可扩展性的程序。

上述两个阶段教学内容中包含需要学生了解、掌握的知识点,对于这些知识点,要进行全面分析与统筹,需要对知识点间的相互关系做出分析:知识点是独立的还是并行关系,以及对于掌握某一知识点的支撑知识点,所有这些关系可以通过绘制知识点的结构图来完整表示出来。图2和图3分别列出顺序结构和分支结构的知识点结构图,其中,箭头表示概念的走向。

四、螺旋上升式任务的设计原则

螺旋上升式任务驱动模式的关键在于任务的设计,而在教学任务设计时所遵循的原则决定着整个教学任务的成败,下面就螺旋上升式任务驱动模式的任务设计所遵循的几条原则进行探讨。

1.按教学内容设计,要求覆盖尽可能多的知识点。任务的设计可以紧扣知识点的结构图来设计,做到尽可能多地涵盖教学内容的绝大多数知识点。例如,在分支结构程序设计任务中,可以设计两个数比较大小的任务,由学生输入两个10以内的自然数,计算机根据两个输入数的大小,输出“大于”、“等于”或“小于”。在该任务中,需要学生掌握输入输出语句、分支语句以及逻辑运算符和逻辑表达式等知识点。

2.递进式任务的设计。对于一些较大的知识点,比如函数和模块设计,可以被认为大任务,通过大任务的完成,可以形成对函数比较系统与全面的认识,如果要求学生直接完成大任務,由于学生的个体差异,则较难顺利完成。我们可以按照大任务涉及到的知识点,将其分解成二级甚至三级、四级子任务来完成,同时,二级、三级和四级子任务间呈递进式关系,并注意新旧知识的联系,子任务之间通过知识点加以贯穿,在完成新的子任务的同时不断复习巩固旧知识点。图4列出了5个递进式子任务的设计,任务1与上述例子一致,任务2则在任务1中两个数的基础上,修改为三个数比大小,要完成该项任务,则需用到多分支嵌套结构。任务3进一步将三个数改为100个数,这时,向学生抛出一个新的问题,即100个数是无法再通过键盘输入的,而学生要解决该问题,只能采用for循环语句来实现,并且还需掌握随机数生成函数。在任务3的基础上,进一步产生了任务4,要求对这100个数排序,这时,学生仅掌握上述知识点显然已捉襟见肘,待解决的问题变成了变量存储的问题,可以顺理成章地引入一维数组的定义,同时,也可以让学生了解冒泡排序法。在学生掌握了任务4以后,又面临任务5,要求对4个班级学生的五门课程成绩分别排序,学生如果还是延用上述方法的话,则分别要进行20次的冒泡排序法,这显然是行不通的,而模块化设计正好可以解决该问题,由此,引入了函数的知识点。

3.任務尽量贴近生活。程序类课程的学习本质上是较枯燥的,可以通过设计与学生日常生活贴近的任务,激起学生的好奇心,积极探索,主动学习,通过自主探索解决实际问题,这样就能给学生带来成就感,并激发他们投入更大的热情完成程序设计任务。

例如,图4(见下页)中的任务4可以改为以下实例:乔伊是一位远近闻名的大胃王,这天他参加一项国际竞吃比赛,竞吃食品包括烧饼、热狗、龙虾、冰淇淋、烤鸡等共10种,每种食品价格各不相同,比赛规定按10种食品价格从低到高依次品尝,请您替乔伊列出按食品价格排序后的食品清单。通过这个实例可以看出,数的排序问题被转化为鲜活的实际生活问题,巧妙的将枯燥的冒泡排序法等知识点融合在了需要学生解决的问题中,从而让学生体悟到编程的终极目标不是为了掌握语法,而是为了解决实际问题。

五、螺旋上升式任务驱动模式的实施

在大学程序设计类课程的教学实践中,要将螺旋上升式任务驱动模式付诸实现,需要对理论教学和实践教学等各个环节进行改革,并且也对教师提出了新的要求。

1.做到理论教学与实践教学的一体化。螺旋上升式任务驱动教学与一般的任务驱动教学的最大区别是,教师围绕任务展开理论教学,学生在理解与掌握任务中涉及的知识点后,接受新的任务,任务间层层递进,学生学习的知识点循序渐进,螺旋式上升。为完成这一目标,需要对任务作一分类,有的任务是由教师通过讲授来完成的,而有的任务则是由学生通过实践自主完成,不同任务之间有可能是相互嵌套、互有关联,这时就要求在课堂教学中,做到理论教学与实践教学的一体化。教师可以根据学生的实际情况和教学目标,或实施理论教学,或安排学生自主实践,灵活安排各项任务。比如,图4中的任务1相对简单,实例较短,教师可边讲解学生边操作;而任务2,相对任务1更易出错,教师可先不给提示,让学生独立完成,针对学生中出现的普遍问题,可以出示反面样例,从而起到事半功倍的作用。

2.教师应具备较高的理论素养和实践技能。要在大学程序设计类课程中运用好螺旋上升式任务教学法,其核心在于具备较高理论素养和实践技能的教师,理论教学不再是按传统模式先讲语法再举例,而是由课前精心设计的任务自然引入新的知识点,学生则是从一个较易解决的熟悉的内容渐渐进入到新知识点的学习。在课堂教学中,往往会出现教师无法预知的情况,比如,学生在完成任务过程中,会出现各种错误,面对林林总总的错误,需要教师迅速分析出带有共性的错误,并通过变例(包括正例和反例)的演示来加深学生对知识点的理解,学会独立探究的方法。

六、结论

笔者针对大学程序设计类课程教学中面临的实际问题和特点,提出螺旋上升式任务驱动模式,将其用于大学程序设计类课程的教学中,如能较好地运用这一方法,则可以使枯燥的计算机语言语法的“填鸭式”的传授转变为学生对实际问题的探究,而在完成递进式任务的同时,了解计算机语言语法,最终使学生由被动接受知识转变为主动获取知识,提高学生解决实际问题的能力和计算思维能力。

参考文献:

[1]陈莲君,朱晴婷.培养能力为主线的C语言程序设计教学研究[J].计算机教育,2011,(14):102-105.

[2]刘金月,杨永,倪红梅,时贵英.任务驱动法在《程序设计》课程中的应用[J].长江大学学报(自然科学版)理工,2012,9(8):183-185.

[3]徐新海,林宇斐.注重计算思维的启发式C语言语法教学[J].计算机教育,2014,(17):1-4.

[4]郭绍青.任务驱动教学法的内涵[J].中国电化教育,2006,(7):57.

[5]李薇,王磊.螺旋上升式教学模式的探讨[J].高等理科教育,2009,(2):56-60.

[6]赵大伟.螺旋式项目教学法在《C语言程序设计》教学中的应用[J].教育探索,2009,(11):80.

[7]左永文.案例教学法在《C语言程序设计》课程中的应用[J].科技创新导报,2012,(18):175.

[8]王伟勤.基于任务的螺旋上升式教学模式探究[J].产业与科技论坛,2012,11(7):169-170.

[9]张世民,李琳琳.任务驱动教学法在程序设计课程中的应用[J].现代计算机,2008,(3):65-69.

[10]李军.基于任务驱动的《电工技术基础》课程教学设计过程[J].计算机光盘软件与应用,2013,(16):241-242.

The Teaching Research of Programming Design Course in the University Based on Spiral Type Task-driven

MA Yan1, LI Shun-bao2,XU Xiao-zhong1, LI Lu-qun1,ZHANG Yu-ping1

(1.College of Information, Mechanical and Electrical Engineer,Shanghai Normal University,Shanghai200234 ,China;2.Mathematical Institute of Shanghai Normal University,Shanghai 200234,China)

Abstract:This paper presents that spiral type task-driven mode can be applied to the teaching of programming design course in the university. The difference between this mode and traditional task-driven has been analyzed. With the implementation of the proposed teaching method,C language is taken as example. The paper analyzes the teaching content of programming design course in detail,puts forward several rules to be followed in the design of progressive task. It is required to achieve the integration of theoretical teaching and practical teaching. This paper also analyzes the theoretical knowledge and practical skills for the teachers.

Key words:spiral mode;task-driven;progressive task;programming design

猜你喜欢
任务驱动程序设计
基于Visual Studio Code的C语言程序设计实践教学探索
从细节入手,谈PLC程序设计技巧
高职高专院校C语言程序设计教学改革探索
浅谈任务驱动教学法在计算机教学中的运用
基于任务驱动的实验报告及其在电路分析基础实验教学中的应用
任务驱动式教学模式在电子技术课程中的应用
任务驱动教学法在《网络应用服务管理》教学中的应用
任务驱动, 启发学生自学
任务驱动教学法在中职信息技术教学中的运用
OBE理念下基于Greenfoot的Java程序设计课程教学改革