孙力红 林志英
摘 要: 本文分析了程序设计教学对提升学生主动思维素质、 培养学生创新思维能力的作用, 阐述了通过课堂教学、 学科竞赛等多种途径加强对学生创新思维能力的培养。
关键词: 程序设计, 创新思维, 应用性
一、 引言
如何适应经济发展培养创新型、 应用型人才已经成为我国高等教育面临的严峻问题之一。 传统的教学模式造成学生被动学习, 缺乏主动思维的能力, 学习效果较差并影响到后续课程的学习。 改变理论与实践脱节的教学现状, 注重应用和创新能力的培养, 提高学生学以致用的能力, 是要研究与实践的一个重要课题。
高校是培养具有创新思维的年轻人的基地, 而程序设计课又是我校一年级各专业学生的通识教育必修课, 是一门集理论性与实践性于一体的计算机基础课程, 其目的是帮助学生掌握程序设计的基本方法和过程, 建立程序设计的思维方式, 初步具备运用计算机技术解决实际问题的能力。
培养学生创新思维能力是程序设计课程的教学目标之一。 在程序设计课程的教学中, 重视思维能力的培养, 使我们的学生具有一定的开拓性与创造性, 是摆在基础课教师面前的重要任务。
二、 程序设计教学与创新思维能力
传授知识与培养能力涉及能力结构的问题, 其中思维能力是基础的能力, 无论提高创造能力或加强实践能力,都取决于思维能力的有效发掘与训练。[1]程序设计是一门理论与实践紧密结合的课程, 具有很强的逻辑性与抽象性, 对培养学生创造性思维能力具有积极的作用, 主要表现在以下几个方面。
1. 有利于培养学生的思维能力
思维是人脑对客观事物本质特征和内在联系的反映, 思维能力是各种能力的核心。程序设计通过对问题的分析、 推理、 归纳、 验证, 总结抽象出规律, 从而培养学生的抽象思维能力和逻辑思维能力。
2. 有利于拓展学生的思维空间
在程序设计中, 解决同一个问题往往有多种不同的解决思路和方法, 有意识地引导学生开展多视角、多方位的思考,会使他们的思维能力得到拓展和提高,[2]程序设计中算法的多样性和程序的优化, 是培养学生发散思维的一种行之有效的方法。 比如求解斐波那契数列, 我们既可以用迭代法, 也可通过递归的方式求解, 这样在讲授知识的同时引导学生分析讨论不同解题方法的异同, 有助于促进学生的思维。
在教学过程中, 有意识地强调思维的逆向性、 灵活性、 发散性、 独创性和敏锐性,[3]能有效提升课堂教学效果,开阔学生的视野,激发学生的学习兴趣,拓展他们的思维空间, 这样在教与学的过程中潜移默化地培养了学生的创新思维能力。
3. 有利于培养学生的创新思维能力
创新思维是指具有独特的、 有创见性的思维, 它的显著特点是能够提供新颖独创而又有价值的思维成果。 在程序设计教学中, 引导学生分析问题、 确定算法、 编写程序、 分析程序运行过程及验证运行结果, 能够激发学生的求知欲望和探索未知的兴趣,学生在不断的探索和实践中, 其创新思维能力得到增强。
三、 多途径培养学生的创新能力
1. 通过灵活有效的课堂教学, 启发学生的创新思维能力
用计算机程序求解实际问题, 通常要先从问题中抽象出数学模型, 根据数学模型设计求解问题的算法, 根据算法编写程序, 经过调试、 编译、 连接、 运行, 从而完成问题的求解。
在程序设计课程的教学中, 枚举法是一个很重要的算法, 也称为暴力破解, 就是利用计算机运行速度快的特点, 按照问题本身的性质, 列出解决该问题的所有可能解,并根据问题的条件对可能的解进行逐个校验, 从中挑选出符合条件的解, 舍弃不符合条件的解。 传统的题目有百钱买百鸡、 水仙花数等。 这些题目相对来讲比较直接, 好理解。 为了更好地培养学生分析问题、 解决问题的能力, 让学生了解什么样的问题适合用枚举算法, 我们再以一道简单的竞赛题为例进行讲解, 如图1所示。
图1 枚举法的应用
引入这个题目的目的在于告诉学生, 有些问题虽然解题方法不难, 但需要我们分析问题的需求, 抽象出问题的本质。
首先引导学生建立数学模型。
设甲卖出鸡蛋a个, 出售价格为x元; 乙卖出鸡蛋b个, 出售价格为y元, 则:
·a×x=b×y且a+b=150
·x×b=32
·y×a=24.5
在建立数学模型后, 让学生建立概念, 凡是同类型的问题——多元不定方程均可用程序设计中的枚举法解决。 枚举法解题的基本步骤是:
·确定列举范围
·明确检验正确解的条件
·确定循环方式和列举方式
再进一步分析, 本题中的三要素分别是:
·确定列举范围
甲所卖鸡蛋数a的范围是1~149
乙所卖鸡蛋数b的范围是150~a
·明确检验正确解的条件, 即所建数学模型(www.daowen.com)
·确定循环方式和列举方式
甲所卖的鸡蛋数a由小到大, 逐一递增。
由此编写程序代码如下:
#include〈stdio.h〉
main()
{
inta,b; //数目
double x,y; //价格
for(a=1;a〈150;a++){
b=150-a;
x=32.0/b;
y=24.5/a;
if(fabs(a*x-b*y)〈1e-7) //判断ax=by
printf("%d,%d\n",a,b);
}
}
通过这种方式, 锻炼学生从复杂叙述中抽象问题本质的能力, 同时学会使用枚举法分析解决此类问题。
2. 将学科竞赛与课堂教学有机结合, 激发学生的创新思维能力
将学科竞赛作为课堂教学的有效延伸和必要补充, 统筹安排全校的计算机基础与程序设计学科竞赛, 将科技活动、 学科竞赛与课内教学相结合, 激发学生的学习兴趣和学习热情, 提高学生实际应用能力和创新思维能力, 促进计算机基础类课程教学水平的不断提高; 同时鼓励学生组成小规模创新团队进行创新实验活动, 为参加学科知识竞赛锻炼队伍、 积累素材; 在校级竞赛的基础上, 注重对学生培养的连续性, 组织学生参加市级和全国竞赛, 培养学生的竞争意识和创新能力。
目前我校已经举办了两届校级程序设计竞赛, 以C语言程序设计竞赛为例, 两届共有近260名学生进入了决赛, 占学生总人数的10%。 校级竞赛的目的是巩固课堂知识, 培养学生对程序设计课程的兴趣, 以鼓励为主。 教师在对学生的指导过程和竞赛的组织中, 注意收集问题, 形成一个对教学内容的反馈, 以便改进教学方式。 同时,在校级竞赛中发现那些对程序设计具有浓厚兴趣、 具有较强思维能力和一定编程水平的学生, 对他们进行持续培养, 将这些学生作为参加市级和全国竞赛的预备队员。
经过几年的努力和积累, 参加市级和全国竞赛的学生人数越来越多, 从最初仅参加个人赛发展到现在既参加个人赛又参加团队赛。 表1是我们指导的学生在2012年和2013年两届 “蓝桥杯” 全国软件设计与创业大赛中取得的成绩。
表1 “蓝桥杯” 获奖情况
3. 通过产学研合作与本科生科研训练计划, 提升学生科学研究素养
建立有效的本科生科研训练机制, 制定切实可行的制度措施, 促进我校学生科研能力的提高。 依托我校院士团队的智能车项目和部门在研项目, 组织有一定基础且动手能力较强的学生进入实验室参加科研项目, 从基础工作起步, 使其由 “学” 变“研”, 由被动 “接受” 变主动 “创新”, 有效利用实验室资源开展科学研究与科技创新活动, 以科研活动带动教学水平的整体提升。
通过参与科研项目, 学生的创新思维能力和实际应用能力有了明显的提高。 目前有两名学生参加了智能车无人驾驶项目, 其中一名学生参加了导航组的工作, 通过实际工程问题的锻炼, 对所学的程序设计课的内容进行了补充完善以及实际的锻炼, 课堂中未涉及的串口通信、 进程通信、 线程通信等比较抽象的内容均通过解决实际问题变得生动易懂, 同时也在KML格式的地图的制作、 地图数据的动态加载等问题的解决过程中, 对工程中跨学科的协同作战有了一定了解。
4. 提高创新教育师资队伍的综合水平, 建设高水平教学队伍
学生创新能力的提高离不开教师的引导, 同时也与教师的科研水平有着密切的联系, 因此, 提高学生的创新能力首先要提高教师的创新能力。 基础课教师长年埋头于一线教学, 参加科研的机会较少, 与新技术的联系也不够紧密。 为了能更好地组织教学, 提高教学水平, 有效指导学生, 通过组织教师参加有针对性的行业师资培训, 提升教师的整体水平; 鼓励教师参与企业实践, 鼓励更多的教师成为校企结合的 “双师型” 认证教师; 同时将校内外具有企业成功经验的师资力量整合起来, 形成跨学科、跨专业的创新教育师资队伍。
四、 结束语
本文针对培养应用型创新人才的角度, 从课堂教学、 学科竞赛、 产学研合作及教师队伍水平的提高等方面进行了分析, 并通过多年的实践验证, 提出了应用型人才创新能力培养的几点有效途径, 如图2所示。 通过这些方式激发了学生学习的积极性和主动性, 开阔了学生的视野, 培养了学生的实践能力和创新思维能力, 取得了很好的成效。
图2 多途径培养学生的创新能力
[1] 江丕权, 李越. 教学改革与思维能力培养的思考 [J]. 清华大学教育研究, 2000 (3).
[2] 吕俊白. 改革程序设计教学加强思维能力培养 [J]. 高等理科教育, 2007 (3).
[3] 蔡海尼, 文俊浩. 软件工程硕士专业课教学中科学思维与创新思维能力的培养 [J]. 现代教育技术,2008 (3).
[1] 本文系北京联合大学教育教学研究与改革项目 “应用型人才创新能力的培养与研究” 研究成果; 北京市属高等学校人才强教计划资助项目。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。