论文部分内容阅读
摘要:职业培训机构常用的项目教学方法逐渐被越来越多的高校接受,并被引入到高校常規教学当中。笔者根据多年教学经验把基于建构主义的任务驱动教学法应用到高职院校C语言程序设计项目教学中,让学生在学习课程的同时有一个完整项目的经历,获得了较好的教学效果。
关键词:项目教学;任务驱动;C语言程序;函数
中图分类号:G424 文献标识码:A 文章编号:1009-3044(2013)17-4040-02
1 概述
《C语言程序设计》是计算机专业学生的一门必修课程,也是学习者学习其它高级语言程序设计的入门课程,学好该门课程,不仅能给学习者打下良好的编程基础,同时也为学习者学习后续编程课程树立自信心。但该门课程不仅知识点多,需要学习和熟练掌握的语法结构多,更需要学习者熟练运用这些知识根据需求写出小程序,同时由于学习者大多为大一新生,从以往用笔解决问题改变为用计算机解决问题,这本身就是一个自我挑战和自我突破,所以导致学习者在学习过程中遇到种种障碍,更有甚者因困难放弃了后续课程学习。即使,有的学习者学习很勤奋也很有天赋,每到学期末学习者总会问,到底C语言能做什么?能否用C语言开发出一些常用的系统?笔者根据几年的教学经验,发现项目教学不仅能让学习者更好的理解和掌握知识点,也能够调动学习者的学习积极性和探索精神。
2 C程序设计项目教学适合采用“任务驱动”教学法
任务驱动式教学法以建构主义理论为基础,采用以学为中心的教学模式,以若干个具体任务为中心,强调知识和技能的传授应以完成典型“任务”为主。“任务驱动”教学使学习目标十分明确,使教与学生动有趣、易于接受。在整个教学过程中教师起组织者、指导者、帮助者和促进者的作用, 利用情境、协作、会话等学习环境要素充分发挥学生的主动性、 积极性和创造性,最终达到使学生有效地实现对当前所学知识的意义建构的目的[1]。由于C程序设计项目教学是学生运用所学知识,根据项目实际需要学习者独自编程、调试为主,项目指导老师仅是在架构、关键技术和核心代码处进行指导,同时每个小项目都有明确的需求和测评标准,因此C程序设计项目教学适合采用“任务驱动”教学法。
3 任务驱动教学法在C程序设计项目教学中的应用
笔者认为任务驱动教学法的整个教学过程可以细分为:创设问题情境、提出任务;小组讨论、分解任务;启发思维、自主操作应用;探讨总结、教学点拨等5个步骤。其中第1、4和5步由教师主导完成,教师在整个学习过程中起着主导作用,对学生学习过程中存在的问题进行点拨。第2、3步是学生通过小组合作自主完成的,在整个学习过程中,学生是学习活动的主体,学习者通过自主操作练习、测试逐个阶梯式攻破这些小任务,进而攻破整个学习任务。下面以成绩管理系统为例进行项目教学。
3.1 创设问题情境,提出任务
在以C语言为开发语言开发成绩管理系统之前,给学习者假设一个场景:计算机系要对学生成绩进行无纸化管理,要给学习者进行自我分组,根据任务要求借助网络开发出简易版的成绩管理系统,要求至少能够满足基本的成绩管理需要。
3.2 小组讨论,分解任务
在确定开发任务是“成绩管理系统”以后,让各小组展开讨论,逐步把大问题分解为各个小问题。通过小组内研讨和查询资料得出该简易系统至少满足3点:第一点,对用户的有效信息进行输入、排序等操作;第二点,能统计用户和全班成绩的总分和平均分;第三点,能够根据输入条件查看单个用户的各科成绩。
3.3 启发思维,自主操作应用
在学习小组分解完项目任务后,就要根据任务设计结构体student来存贮单个学生的信息,设计单链表结构node来和其他节点联系起来[2]。同时要规划整个项目的函数:1)printheader(格式化输出表头);2)printdata(格式化输出表中数据);3)stringinput(输入字符串);4)numberinput(输入分数);5)disp.(显示单链表中存储的用户记录);6)locate(定位链表中符合要求的结点);7)add(向系统增加新的用户记录);8)qur(按编号或姓名查询用户记录);9)del(删除系统中的用户记录信息);10)modify(修改用户记录);11)insert(插入记录);12)tongji(统计班级信息);13)sort(按降序排序);14)save(数据存盘处理);15)main(主函数前实现预处理,主函数内实现对各函数模块的声明和调用);main(主函数)模块、整个项目的函数规划(包含结构体和链表实现)由小组组长完成,其余模块由小组组长根据组员情况进行分工。
综上所述,学习者们在明确了自己的分工后,此时应留出充足的时间,启发和引导学生进行自主编程练习,让他们在开放的网络环境中尝试和探索,独自编写自己的函数模块。编程中遇到的问题,首先借助网络进行解决,其次指导老师应该予以鼓励和点拨,同时提出一些注意事项,比如关键词、全局变量、函数名和变量名的大小写、调用使用到的系统函数库以及必要的注释信息等。
3.4 探讨总结、教学点拨
各小组成员把自己的函数模块完成后,交给小组组长进行综合调试,解决调试过程中出现的问题,在规定时间内交由指导老师进行综合指导。如果系统能正常运行,通过各项测试能满足基本的成绩管理,就把该项目交给各成员,让小组成员去研究其他组员所写的代码,尤其是小组组长的主函数以及预处理那段代码。如果系统不能够正常运行,就要分析是全部不能运行和某个(些)模块不能运行,先从主程序着手看函数预处理、函数声明、函数包含、函数调用格式是否出现问题。其次在看各模块内部实现是否出现问题。尤其是解决学习者编程过程中遇到的通过网络又自身无法解决的核心代码和如何使用系统函数问题,通过代码修改调试使这个系统也能够正常运行,让学生有个完整项目的经历和小小的成就感。 3.5 延伸提高、知识拓展
在前4个阶段完成后,各小组的项目也基本都能够跑起,能实现基本的管理任务。这个时候,指导老师应该应引导学生思考,是否可以在原有项目基础上增加一些新的项目(模块)及如何实施?项目开发的核心是源代码,除了源代码是否需要注意界面,以让好的界面给客户带来好的视觉冲击?让学生思考团队协作和进度流程安排对整个项目开发有什么影响以及以后开发要注意什么?同时让学生思考链表和指针在C项目开发中的重要性以及如何灵活运用他们?将学习的任务或者是学习的兴趣延伸到课外,让学习者带着任务满怀激情的继续自主开发后继项目。
4 结束语
以往教学中,讲授完C語言程序设计的数据类型、数据流图、3种结构(顺序、选择和循环)、数组、指针、结构体、链表、文件之后,一般都是分章节设计一些小项目。学习者很难把各个知识点系统的联系起来,学完之后也没有整个系统的概念,以至于学习者不知道C语言是否能开发项目。以及项目开发的整个流程和团队协作都没有亲身体验[3]。笔者把职业培训机构的案例教学和基于建构主义的任务驱动教学法结合起来应用在C程序设计的项目教学中,不仅调动了学习者的学习积极性和主动性,还调动了他们的求知欲、探索精神和培养了他们的自学能力,让他们通过网络和互相探讨编写自己的函数模块,让学习者把C语言程序中的各个知识点联系起来,同时对项目开发有个初步的认识,揭开软件开发的神秘面纱。
参考文献:
[1] 曹学云.任务驱动法在高中信息技术基础课中的应用研究[D].内蒙古师范大学,2011.
[2] 薛小龙.深入体验C语言项目开发[M].北京:清华大学出版社,2011.
[3] 谭浩强.C程序设计[M].北京:清华大学出版社,2010.
[4] 王晓岩.任务驱动式教学法的设计与实现[J]. 中国校外教育,2009.
[5] 何克抗,郑永柏,谢幼如.教学系统设计[M].北京:北京师范大学出版社,2002.
[6] 李龙.教学设计[M].北京:高等教育出版社,2010.
[7] 徐英俊.教学设计[M].北京:教育科学出版社,2001.
[8] 曹学云. 任务驱动法在高中信息技术基础课中的应用研究[D].内蒙古师范大学,2011.
关键词:项目教学;任务驱动;C语言程序;函数
中图分类号:G424 文献标识码:A 文章编号:1009-3044(2013)17-4040-02
1 概述
《C语言程序设计》是计算机专业学生的一门必修课程,也是学习者学习其它高级语言程序设计的入门课程,学好该门课程,不仅能给学习者打下良好的编程基础,同时也为学习者学习后续编程课程树立自信心。但该门课程不仅知识点多,需要学习和熟练掌握的语法结构多,更需要学习者熟练运用这些知识根据需求写出小程序,同时由于学习者大多为大一新生,从以往用笔解决问题改变为用计算机解决问题,这本身就是一个自我挑战和自我突破,所以导致学习者在学习过程中遇到种种障碍,更有甚者因困难放弃了后续课程学习。即使,有的学习者学习很勤奋也很有天赋,每到学期末学习者总会问,到底C语言能做什么?能否用C语言开发出一些常用的系统?笔者根据几年的教学经验,发现项目教学不仅能让学习者更好的理解和掌握知识点,也能够调动学习者的学习积极性和探索精神。
2 C程序设计项目教学适合采用“任务驱动”教学法
任务驱动式教学法以建构主义理论为基础,采用以学为中心的教学模式,以若干个具体任务为中心,强调知识和技能的传授应以完成典型“任务”为主。“任务驱动”教学使学习目标十分明确,使教与学生动有趣、易于接受。在整个教学过程中教师起组织者、指导者、帮助者和促进者的作用, 利用情境、协作、会话等学习环境要素充分发挥学生的主动性、 积极性和创造性,最终达到使学生有效地实现对当前所学知识的意义建构的目的[1]。由于C程序设计项目教学是学生运用所学知识,根据项目实际需要学习者独自编程、调试为主,项目指导老师仅是在架构、关键技术和核心代码处进行指导,同时每个小项目都有明确的需求和测评标准,因此C程序设计项目教学适合采用“任务驱动”教学法。
3 任务驱动教学法在C程序设计项目教学中的应用
笔者认为任务驱动教学法的整个教学过程可以细分为:创设问题情境、提出任务;小组讨论、分解任务;启发思维、自主操作应用;探讨总结、教学点拨等5个步骤。其中第1、4和5步由教师主导完成,教师在整个学习过程中起着主导作用,对学生学习过程中存在的问题进行点拨。第2、3步是学生通过小组合作自主完成的,在整个学习过程中,学生是学习活动的主体,学习者通过自主操作练习、测试逐个阶梯式攻破这些小任务,进而攻破整个学习任务。下面以成绩管理系统为例进行项目教学。
3.1 创设问题情境,提出任务
在以C语言为开发语言开发成绩管理系统之前,给学习者假设一个场景:计算机系要对学生成绩进行无纸化管理,要给学习者进行自我分组,根据任务要求借助网络开发出简易版的成绩管理系统,要求至少能够满足基本的成绩管理需要。
3.2 小组讨论,分解任务
在确定开发任务是“成绩管理系统”以后,让各小组展开讨论,逐步把大问题分解为各个小问题。通过小组内研讨和查询资料得出该简易系统至少满足3点:第一点,对用户的有效信息进行输入、排序等操作;第二点,能统计用户和全班成绩的总分和平均分;第三点,能够根据输入条件查看单个用户的各科成绩。
3.3 启发思维,自主操作应用
在学习小组分解完项目任务后,就要根据任务设计结构体student来存贮单个学生的信息,设计单链表结构node来和其他节点联系起来[2]。同时要规划整个项目的函数:1)printheader(格式化输出表头);2)printdata(格式化输出表中数据);3)stringinput(输入字符串);4)numberinput(输入分数);5)disp.(显示单链表中存储的用户记录);6)locate(定位链表中符合要求的结点);7)add(向系统增加新的用户记录);8)qur(按编号或姓名查询用户记录);9)del(删除系统中的用户记录信息);10)modify(修改用户记录);11)insert(插入记录);12)tongji(统计班级信息);13)sort(按降序排序);14)save(数据存盘处理);15)main(主函数前实现预处理,主函数内实现对各函数模块的声明和调用);main(主函数)模块、整个项目的函数规划(包含结构体和链表实现)由小组组长完成,其余模块由小组组长根据组员情况进行分工。
综上所述,学习者们在明确了自己的分工后,此时应留出充足的时间,启发和引导学生进行自主编程练习,让他们在开放的网络环境中尝试和探索,独自编写自己的函数模块。编程中遇到的问题,首先借助网络进行解决,其次指导老师应该予以鼓励和点拨,同时提出一些注意事项,比如关键词、全局变量、函数名和变量名的大小写、调用使用到的系统函数库以及必要的注释信息等。
3.4 探讨总结、教学点拨
各小组成员把自己的函数模块完成后,交给小组组长进行综合调试,解决调试过程中出现的问题,在规定时间内交由指导老师进行综合指导。如果系统能正常运行,通过各项测试能满足基本的成绩管理,就把该项目交给各成员,让小组成员去研究其他组员所写的代码,尤其是小组组长的主函数以及预处理那段代码。如果系统不能够正常运行,就要分析是全部不能运行和某个(些)模块不能运行,先从主程序着手看函数预处理、函数声明、函数包含、函数调用格式是否出现问题。其次在看各模块内部实现是否出现问题。尤其是解决学习者编程过程中遇到的通过网络又自身无法解决的核心代码和如何使用系统函数问题,通过代码修改调试使这个系统也能够正常运行,让学生有个完整项目的经历和小小的成就感。 3.5 延伸提高、知识拓展
在前4个阶段完成后,各小组的项目也基本都能够跑起,能实现基本的管理任务。这个时候,指导老师应该应引导学生思考,是否可以在原有项目基础上增加一些新的项目(模块)及如何实施?项目开发的核心是源代码,除了源代码是否需要注意界面,以让好的界面给客户带来好的视觉冲击?让学生思考团队协作和进度流程安排对整个项目开发有什么影响以及以后开发要注意什么?同时让学生思考链表和指针在C项目开发中的重要性以及如何灵活运用他们?将学习的任务或者是学习的兴趣延伸到课外,让学习者带着任务满怀激情的继续自主开发后继项目。
4 结束语
以往教学中,讲授完C語言程序设计的数据类型、数据流图、3种结构(顺序、选择和循环)、数组、指针、结构体、链表、文件之后,一般都是分章节设计一些小项目。学习者很难把各个知识点系统的联系起来,学完之后也没有整个系统的概念,以至于学习者不知道C语言是否能开发项目。以及项目开发的整个流程和团队协作都没有亲身体验[3]。笔者把职业培训机构的案例教学和基于建构主义的任务驱动教学法结合起来应用在C程序设计的项目教学中,不仅调动了学习者的学习积极性和主动性,还调动了他们的求知欲、探索精神和培养了他们的自学能力,让他们通过网络和互相探讨编写自己的函数模块,让学习者把C语言程序中的各个知识点联系起来,同时对项目开发有个初步的认识,揭开软件开发的神秘面纱。
参考文献:
[1] 曹学云.任务驱动法在高中信息技术基础课中的应用研究[D].内蒙古师范大学,2011.
[2] 薛小龙.深入体验C语言项目开发[M].北京:清华大学出版社,2011.
[3] 谭浩强.C程序设计[M].北京:清华大学出版社,2010.
[4] 王晓岩.任务驱动式教学法的设计与实现[J]. 中国校外教育,2009.
[5] 何克抗,郑永柏,谢幼如.教学系统设计[M].北京:北京师范大学出版社,2002.
[6] 李龙.教学设计[M].北京:高等教育出版社,2010.
[7] 徐英俊.教学设计[M].北京:教育科学出版社,2001.
[8] 曹学云. 任务驱动法在高中信息技术基础课中的应用研究[D].内蒙古师范大学,2011.