递进式项目教学法在C语言教学中的应用
2016-08-16兰丽
兰丽
摘 要: 通过分析项目驱动法教学模式的不足,根据C语言课程实践性强的特点,提出了递进式项目驱动教学法。该方法以若干个综合项目为载体,将项目分解为多个循序渐进的子项目,把教学内容的重点难点由浅入深地分解到各个子项目中,并进行详细的教学设计和实验设计,使教学环节据此递进式开展。将该方法应用于C语言教学实践,能够提高学生兴趣和应用能力,有效地提升C程序设计课程的教学质量。
关键词: 递进式项目教学法; C语言; 项目教学; 教学改革
中图分类号:G642 文献标志码:A 文章编号:1006-8228(2016)08-76-03
Abstract: By analyzing the shortcomings of project teaching mode, combining with the characteristic of strong practice of C language courses, this paper puts forward the gradually progressed project teaching method. The method makes some integrated projects as the teaching support, the projects are divided into some progressive sub-projects, and the difficulties and key points of teaching content is decomposed into each sub-project. At the same time, the detailed teaching design and experiment design are carried out. The teaching process is implemented from shallower to deeper. The teaching method is practiced on the C language teaching. The practice shows that the proposed teaching method can improve the students' interest and application ability, and effectively improve the teaching quality of C language course.
Key words: gradually progressed project teaching method; C language; project teaching; teaching reform
0 引言
项目驱动法,是师生通过实施一个完整的项目工作而进行的教学活动[1-2]。课程教学小组在2011级和2012级学生的C语言程序教学中尝试以项目驱动的方式来教授课程,通过设计项目驱动来引入新知识的学习,但在实际实施过程中,效果却是差强人意,究其原因有以下几点。
⑴ 项目按章节组织,无连贯性
以项目驱动的教学模式所选项目一般是按照章节来进行[3],但是各章节使用的项目实例缺乏联系,由于C语言概念、原理和规则繁多,若采用无内在逻辑联系的项目实例不断引入新的知识点和概念,会造成学生思维不连贯,导致“实例不实”。
⑵ 项目实例为语法而设计,与实际脱离
C语言语法多且细,为解释语法而设计的相互之间无任何逻辑联系的项目,并不能帮助学生理清知识脉络、形成知识完整结构,当然更不能提高思维能力及应用能力。
⑶ 项目实例分解粗糙,无内在逻辑关系
在运用项目驱动法时,一个项目实际上可分为多个子任务,但是子任务的分解往往仅考虑功能因素,而忽视这些子任务所涉及的知识点之间的内在联系。
因此,笔者在教学实践中采用递进式项目教学改进目前项目驱动法所存在的问题,该方法通过设计层层递进、不断深化的实际项目案例,逐步引出相关知识点,在任务驱动下,由浅入深,启发引导学生循序渐进地编写规模逐渐加大的程序,让学生在不知不觉中逐步加深对C程序设计方法的了解和掌握。
1 递进式项目教学法
“循序渐进”是递进式项目教学的核心思想,教师从实际问题出发,选取一个实际项目案例并将其分解成多个子任务,将重点和难点分散在各个子任务中,新知识点通过每一个子任务引入,每一个子任务都是前一个任务的深化,借助前后相关的任务驱动项目实例将相关知识点像珠链一样串联起来,形成逻辑清晰的脉络和主线,案例内容紧密结合实践,举一反三,融会贯通,在任务驱动下,由浅入深、启发引导学生循序渐进地编写规模逐渐加大的程序,这样做有利于让学生对各个知识点细嚼慢咽、温故知新,使学生在不知不觉中逐步加深对C程序设计方法的了解和掌握,避免教学“实例不实、为解释语法而设计”。
递进式项目教学法的关键是,章节之间所选项目要与内在联系,对于每一格项目实例还需分解为多个子任务,且这些子任务能够按照知识点难易程度逐步扩展。这样,由于所选择项目案例是紧密联系实际的,而每个子任务包含的知识点也是前一个子任务知识点的扩展,每一个项目的完成都是为下一个项目奠定基础。因此,学生总能从一个比较容易解决的已熟悉的内容进入到新知识点的学习,这样可以极大的提高学生学习新知识和解决问题的自信心,通过每个简单子任务的求解,不断体会到掌握新知识,以及知识为我所用的成就感,进而将这种成就感转化为源源不断的动力和源泉,进而形成一种良性循环的学习过程。
2 递进式项目教学法的教学设计
2.1 递进式项目的设计
C程序设计课程的教学中所设计的递进式项目如表1所示,项目的设计由浅入深,循序渐进,每个项目案例的设计所涵盖的知识点和难点不同,但又相互关联,层层递进。项目案例1主要为使学生掌握C语言语法基础及顺序结构而设计,项目案例2主要是针对选择结构程序及循环结构,项目案例3主要涵盖了数组、函数、结构体数组及指针的知识点。而第1和第2个项目案例所涉及的知识点及解决问题的方法,在项目案例3都将再次深入使用。这样,既化解了难点,又使前后知识点遥相呼应,各个击破,有利于学生“细嚼慢咽、温故知新”。
2.2 递进式项目的任务分解
项目子任务的分解是递进式项目法能否促进教学的关键,以判定学生成绩等级这个项目案例为例,这种循序渐进式的教学过程如下。
任务1:利用这个案例讲解多分支选择结构和条件语句。
编写程序,让用户输入一个学生的数学课程成绩(浮点数或整数),要求计算机判断并输出该成绩的等级:“优秀”、“良好”、“中等”、“及格”和“不及格”,其中90分以上为优秀,80~89分为良好,70~79分为中等,60~69分为及格,60分以下为不及格。
任务2:利用这个案例讲解循环结构和循环语句。
编写程序,先提示用户输入学生人数,然后依次输入所有学生的数学课程成绩(浮点数或整数),每输入一名学生的成绩,要求计算机判断并输出该成绩的等级:“优秀”、“良好”、“中等”、“及格”和“不及格”,其中90分以上为优秀,80~89分为良好,70~79分为中等,60~69分为及格,60分以下为不及格。
任务3:利用这个案例讲解嵌套的循环。
编写程序,先提示用户输入学生人数,然后依次输入所有学生的三门课程:数学、英语、C程序设计课程成绩(浮点数或整数),每输入一名学生的三门课程成绩,要求计算机判断并输出该成绩的等级:“优秀”、“良好”、“中等”、“及格”和“不及格”,其中90分以上为优秀,80~89分为良好,70~79分为中等,60~69分为及格,60分以下为不及格。
通过上面这个教学项目案例,将选择结构、循环结构、嵌套的循环结构这些相关的知识点串联起来,做到知识点之间环换相扣、融会贯通。
在课堂讲授完这个教学项目案例之后,让学生在实验课上再对其进行举一反三,用类似的方法,完成一个小学生计算机辅助教学系统。具体的设计是:
任务1—随机出一道乘法题,直到答对为止。
任务2—随机出一道乘法题,最多给3次机会。
任务3—随机出10道乘法题,计算总分和回答正确率。
任务4—随机出10道四则运算,计算总分和回答正确率。
任务5—随机出10道四则运算题,回答正确率不满足要求则重做。
任务6—随机出10道四则运算题,回答正确率不满足要求则重做,输出不同的个性化评价。
其他项目案例的分解思想与判定成绩等级案例相似,在此不一一赘述。
2.3 递进式项目课堂实施的设计
利用递进式项目授课时,课堂实施的步骤要逐层展开。
⑴ 提问引出任务。在授课过程中,采用现场编程的方法,不是直接讲授项目案例的正确答案,而是一个任务一个任务的解决,上一个任务完成,通过提出新问题的方式引入下一个任务,例如,在求学生成绩等级这个项目案例的第一个任务完成时,教师可提出问题“若现在需判定多名同学的数学成绩的等级”,引起同学思考,进而引入循环的概念及循环的实现方法。
⑵ 任务分析。在任务解决的过程中,不断从错误程序的分析入手,通过演示错误程序的分析和调试过程,带领学生一起分析查找程序中的错误,讲解程序设计的基本方法、程序测试方法以及程序调试和排错方法,启发引导学生发现错误发生的原因、实质、排错方法及解决对策,这样才能给学生留下更深刻的印象,不仅利于培养学生的分析、思考和解决实际问题的能力,而且还能充分调动学生课堂学习的积极性。
3 递进式课程实验设计
实践教学对于C语言的教学至关重要,直接关系到课程教学质量,为了配合递进式项目课堂教学,在实践教学过程中,我们设计了如下递进的实验项目表,来使学生循序渐进地掌握C语言语法及应用方法,巩固上课所学知识。
实验内容设计兼具趣味性和实用性,以巩固和综合运用主要知识点为主线,采用循序渐进、任务驱动方式,指导学生先从一个小规模的程序入手,通过逐渐增加任务的难度,来分步骤完成一个规模较的实验程序的设计。
4 结束语
本文探讨了将递进式项目教学法“循序渐进”的核心思想应用于C语言程序设计课堂和实践教学过程。由于该教学方法能够充分尊重学生学习和思维的特点,因此在2013和2014级学生教学改革实践中,取得了良好的教学效果,得到了学生的肯定,学生的考试成绩明显提高,参加计算机等级考试通过率均有较大提升。实践证明,递进式项目教学在提高学生学习兴趣、主动性及培养“计算思维”能力方面都大有裨益。下一步将在全课程组推广,并不断改进与完善。
参考文献(References):
[1] 张悦.项目驱动教学法在C语言课程中的应用[J].职业教育研究,2007.2:164
[2] 赵用熹,黄云峰.基于项目驱动法的单片机课程体系设计[J].中国电力教育,2013.4:55-56
[3] 赵宁. 基于递进式案例教学法的Java课程教学改革研究[J].计算机教育,2013.23:73-76