论文部分内容阅读
[摘要]文章根据软件学院 “数据结构”课程的特点以及学生学习的状况,分析了“数据结构”课程在教学实践中存在的相关问题,提出了一系列教学改革措施,探索了课程建设、教学过程管理、提高教学质量的方法。
[关键词]软件学院 数据结构 项目导向
[作者简介]王峰(1970- ),男,河南汤阴人,华北水利水电学院,副教授,硕士,研究方向为软件工程、数据库。(河南 郑州 450011)魏秀然(1975- ),女,河南郑州人,河南农业大学,实验师,硕士,研究方向为软件工程。(河南 郑州 450002)
[中图分类号]G642.3 [文献标识码]A [文章编号]1004-3985(2013)27-0140-02
河南省自2004年开始启动示范性软件职业技术学院建设工作,到现在共批准郑州大学等43所院校立项建设。软件学院的办学目标,是为快速发展的软件行业培养急需的一线工程师,培养层次一般为两年制专科或四年制第三批本科,专业大多是软件技术、信息管理等软件开发类专业。课程设置充分考虑企业需要,聘请具有丰富软件开发经验的优秀教师和软件企业资深工程师任教,较注重培养学生的实践动手能力。
本文针对软件学院“数据结构”课程教学的现状及课程建设中存在的相关问题进行分析,并结合多年的数据结构课程教学的经验,给出软件学院“数据结构”课程建设的思路。
一、软件学院“数据结构”课程建设中存在的问题
一是课程学习难度大。软件学院学生录取分数较低,基础相对较差,因此理论性课程的教学难度较大。而“数据结构”是一门理论性较强的课程,其概念抽象且算法复杂,导致在教学过程中,理论教学和实践教学不能很好地结合起来, 加上学生的基础薄弱,学习起来难度特别大。
二是学生的前导课程基础不牢。按照教学要求,学生学习数据结构前,必须学习一门程序设计语言,程序设计语言如果掌握不好,就无法理解和学习“数据结构”课程中的诸多算法,直接影响了学生的学习能力和信心。
三是理论和实践联系不够。数据结构理论性强,主要介绍常用数据结构和相关算法。教材中一般只给出了算法的关键代码,不包含相关的宏定义和结构体定义,学生无法直接上机验证算法,学习的积极性不高。而且因为算法的理论性较强,离实际开发项目较远,学生代入感差,理解算法较困难。
四是教师的教学方法单调。目前河南省的软件学院均是由本科院校依托原有的计算机等院系进行建设,大多数教师以前并没有职业教育的经历和实践工作经验,如果照搬本科院系的办学模式和课程建设方式,就会导致学生觉得“吃不消”。
五是实践环节教学时间少。因受总学时限制等,大多数学校“数据结构”实验课课时所占比重偏低,学生实践机会少。
二、软件学院数据结构课程建设目标
与本科高等教育不同,软件学院主要强调工程实践与理论基础并重,以能力培养为核心,着力培养具有高水平实践能力的应用型计算机人才,以满足社会的需求。在课程学习过程上,应当以“必需、够用”的原则,设置课程教学目标。通过近几年的教学实践,笔者认为软件学院的“数据结构”课程应当这样建设:基于职业教育的特点、用人单位的需求及后续课程的需要,设置相应的教学计划;采用现代化的教学手段和教学方法,深入浅出,使学生理解“数据结构”课程的基本知识;要考虑到学生参差不齐的水平,课程教学应当能够满足不同程度学生的需求;简单和常用算法要求学生理解掌握,复杂算法要求应知即可。利用多媒体等各种手段来改善课堂教学的过程,加强课外辅导和实践环节;利用动画、FLASH等手段帮助学生理解和掌握相关算法。
三、改革方式
1.调整教学计划。(1)加强前导课程学习。学习是环环相扣的,数据结构的学习也是一样。如果没有学好数据结构的前导课程,可能就无法较好地学习数据结构。C语言程序设计是数据结构的关键前导课程。“数据结构”课程教材多数选用C语言描述算法,算法中大量使用C语言中的数组、结构体、宏定义、指针和函数体这些编程知识,学生对它们的熟悉掌握程度,直接关系到数据结构课程的教学效果。仅通过一学期的课程学习,学生的程序设计水平还不是很强,这时直接开始复杂算法的学习与设计,难免会有畏难情绪产生。如何来解决这个问题呢? 通过对省内软件学院的调研,提出以下建议:首先,增加C语言程序设计课程的学时,多数学校设置的64学时应增加到80学时,同时实践教学应由原来的16学时增加到30学时;其次,不能照搬本科的教学大纲,应按照“必需、够用”的原则修订教学大纲,同时加强实践能力训练;最后,在“数据结构”这门课开始,可以利用一两次课的时间来复习C 语言的相关知识(主要是指针、链表),并将这些学时纳入到教学进度表中。(2)调整数据结构课程计划。应增加数据结构课程的学时,由原来的64学时增加到80学时,同时实践教学由20学时增加到30学时。目的是放慢讲授速度,多上习题课,给学生留出充分消化吸收的时间。(3)增加C语言实训。建议在开设数据结构的学期初或前一学期末,增加1~2周的C语言实训,通过设计3~4个小型C语言程序来巩固复习C语言的相关知识。
2.教材建设。目前,市场上有大量的数据结构课程教材,大多比较注重理论上的探讨。对于软件学院,需要根据学生实际情况,选择难易程度相当,教学内容分量适中的教材。教材选择上,我们调研了大量的面向职业教育的教材,但发现大多是对清华大学严蔚敏编写的数据结构教材的删减,并没有增加更多的实用性或引导性内容,反而使内容变得不易理解。因此建议软件学院仍选用严蔚敏编写的“数据结构”为主教材,再参照其他一些实用性教材为辅助教材。同时,河南省各软件学院已经开始联合编写适合软件学院教学的“数据结构”教材。
3.分层次教学方式。软件学院的学生入学成绩有差异,理解能力有差异,因此更适合采取分层次教学方式。分层次教学方式的目的是让每个学生都能在学习过程中一步步学到知识,有所收获并赢得自己的成就感,最大程度地调动学生学习的积极性。 对于“数据结构”课程中的一些基本理论和算法,要求所有同学必须掌握,如线性表、排序、查找等,这些内容要放慢讲课节奏,不断重复强调重点,多讲解习题,并充分利用多媒体技术,采取直观形象的教学方式,动态演示算法过程等,加深学生对算法的理解。并尽量对照现实生活中的例子来引入知识点,如排队、插队、压箱底(堆栈)等。
而对一些像找最短路径这样的复杂算法,要求多数同学明白算法目的和基本原理即可。对于个别成绩较好的同学,利用答疑时间、实验时间对他们进行额外辅导,单独布置作业,要求他们充分理解算法,并最好能把算法转化为程序运行,还能根据教师要求对代码进行改进。
4.项目导向。数据结构课程中的多数知识理论性较强,在教学过程中应注意引导分析,还应提供一些有代表性的案例或小项目让学生讨论,如长整数相加问题、迷宫问题、马跳棋盘问题、八皇后问题等,由学生分组讨论完成。讨论前允许学生利用网络等手段搜索相关资料,开始可以把问题简化,逐步加大难度,最终把完整程序提供给学生学习。对学习基础好的学生要求逐步完成程序设计,对学习基础差的学生要求明白思路即可。这样一方面锻炼了学生的动手能力,促进了学生间的交流与团结协作;另一方面确实能将理论与实践相结合,学以致用,从而大大激发学生的学习热情,培养创新思维。
对于课程中的排序和搜索部分,可以设计一个简单的信息管理系统,让学生完成按人名搜索、按电话搜索等项目,并比赛谁的搜索速度快,从而练习相关算法。因为C语言操作数据库比较烦琐,可以使用结构体数组存放学生信息,把相关信息存放在文件中,并由教师把数据的输入输出部分实现,把一些搜索、排序函数留出让学生去实现。这样,学生既能享受到编程的乐趣,又不至于陷于烦琐的数据输入输出处理部分。
5.丰富教学手段。目前,大多数高校的教室里都配备了计算机和投影设备,在“数据结构”的教学过程中,应充分利用多媒体设备和多媒体技术进行教学。
可以将数据结构课程中的大多数算法制作成FLASH动画,FLASH不仅可动动态演示算法执行过程,还可以直接看到每一句代码的单步执行效果,非常有利于学生对算法的掌握。例如,把堆排序的过程用动画来进行演示,就可以很清楚地明白堆排序建堆、输出堆顶、堆调整、完成排序的全过程。
这些FLASH动画可以嵌入到PPT课件中,也可以放到课程网站上供同学们查看。通过这些课件和动画的使用,教学效率和教学效果比传统的教学方法有很明显的提高,对学生的科研开发能力有直接的启发作用,同时,在适当的引导和浓厚的兴趣驱使下,学生会跃跃欲试,进行模仿设计。
除此以外,还应该建立数据结构课程网站,网站内容包括:教学课件、习题与测试、实验项目、在线学习、动画演示、课堂视频、作业上传等。
“数据结构”课程学生难学,教师也难教,但我们并不是束手无策,通过以上各种方法可以大大改善数据结构的教学效果。教学改革不是一蹴而就的,这是一项长期的任务,在以后的教学过程中,我们仍会通过不断探索、不断总结,让学生在掌握知识的基础上,举一反三,能分析问题、解决问题,这样才能较好地体现软件学院培养应用型人才的目标。
[参考文献]
[1]董春波.高职院校数据结构课程的教学探索与体会[J].黑龙江科技信息,2010(11).
[2]李政.高职高专《数据结构》课程建设的探讨[J].科技信息,2009(28).
[关键词]软件学院 数据结构 项目导向
[作者简介]王峰(1970- ),男,河南汤阴人,华北水利水电学院,副教授,硕士,研究方向为软件工程、数据库。(河南 郑州 450011)魏秀然(1975- ),女,河南郑州人,河南农业大学,实验师,硕士,研究方向为软件工程。(河南 郑州 450002)
[中图分类号]G642.3 [文献标识码]A [文章编号]1004-3985(2013)27-0140-02
河南省自2004年开始启动示范性软件职业技术学院建设工作,到现在共批准郑州大学等43所院校立项建设。软件学院的办学目标,是为快速发展的软件行业培养急需的一线工程师,培养层次一般为两年制专科或四年制第三批本科,专业大多是软件技术、信息管理等软件开发类专业。课程设置充分考虑企业需要,聘请具有丰富软件开发经验的优秀教师和软件企业资深工程师任教,较注重培养学生的实践动手能力。
本文针对软件学院“数据结构”课程教学的现状及课程建设中存在的相关问题进行分析,并结合多年的数据结构课程教学的经验,给出软件学院“数据结构”课程建设的思路。
一、软件学院“数据结构”课程建设中存在的问题
一是课程学习难度大。软件学院学生录取分数较低,基础相对较差,因此理论性课程的教学难度较大。而“数据结构”是一门理论性较强的课程,其概念抽象且算法复杂,导致在教学过程中,理论教学和实践教学不能很好地结合起来, 加上学生的基础薄弱,学习起来难度特别大。
二是学生的前导课程基础不牢。按照教学要求,学生学习数据结构前,必须学习一门程序设计语言,程序设计语言如果掌握不好,就无法理解和学习“数据结构”课程中的诸多算法,直接影响了学生的学习能力和信心。
三是理论和实践联系不够。数据结构理论性强,主要介绍常用数据结构和相关算法。教材中一般只给出了算法的关键代码,不包含相关的宏定义和结构体定义,学生无法直接上机验证算法,学习的积极性不高。而且因为算法的理论性较强,离实际开发项目较远,学生代入感差,理解算法较困难。
四是教师的教学方法单调。目前河南省的软件学院均是由本科院校依托原有的计算机等院系进行建设,大多数教师以前并没有职业教育的经历和实践工作经验,如果照搬本科院系的办学模式和课程建设方式,就会导致学生觉得“吃不消”。
五是实践环节教学时间少。因受总学时限制等,大多数学校“数据结构”实验课课时所占比重偏低,学生实践机会少。
二、软件学院数据结构课程建设目标
与本科高等教育不同,软件学院主要强调工程实践与理论基础并重,以能力培养为核心,着力培养具有高水平实践能力的应用型计算机人才,以满足社会的需求。在课程学习过程上,应当以“必需、够用”的原则,设置课程教学目标。通过近几年的教学实践,笔者认为软件学院的“数据结构”课程应当这样建设:基于职业教育的特点、用人单位的需求及后续课程的需要,设置相应的教学计划;采用现代化的教学手段和教学方法,深入浅出,使学生理解“数据结构”课程的基本知识;要考虑到学生参差不齐的水平,课程教学应当能够满足不同程度学生的需求;简单和常用算法要求学生理解掌握,复杂算法要求应知即可。利用多媒体等各种手段来改善课堂教学的过程,加强课外辅导和实践环节;利用动画、FLASH等手段帮助学生理解和掌握相关算法。
三、改革方式
1.调整教学计划。(1)加强前导课程学习。学习是环环相扣的,数据结构的学习也是一样。如果没有学好数据结构的前导课程,可能就无法较好地学习数据结构。C语言程序设计是数据结构的关键前导课程。“数据结构”课程教材多数选用C语言描述算法,算法中大量使用C语言中的数组、结构体、宏定义、指针和函数体这些编程知识,学生对它们的熟悉掌握程度,直接关系到数据结构课程的教学效果。仅通过一学期的课程学习,学生的程序设计水平还不是很强,这时直接开始复杂算法的学习与设计,难免会有畏难情绪产生。如何来解决这个问题呢? 通过对省内软件学院的调研,提出以下建议:首先,增加C语言程序设计课程的学时,多数学校设置的64学时应增加到80学时,同时实践教学应由原来的16学时增加到30学时;其次,不能照搬本科的教学大纲,应按照“必需、够用”的原则修订教学大纲,同时加强实践能力训练;最后,在“数据结构”这门课开始,可以利用一两次课的时间来复习C 语言的相关知识(主要是指针、链表),并将这些学时纳入到教学进度表中。(2)调整数据结构课程计划。应增加数据结构课程的学时,由原来的64学时增加到80学时,同时实践教学由20学时增加到30学时。目的是放慢讲授速度,多上习题课,给学生留出充分消化吸收的时间。(3)增加C语言实训。建议在开设数据结构的学期初或前一学期末,增加1~2周的C语言实训,通过设计3~4个小型C语言程序来巩固复习C语言的相关知识。
2.教材建设。目前,市场上有大量的数据结构课程教材,大多比较注重理论上的探讨。对于软件学院,需要根据学生实际情况,选择难易程度相当,教学内容分量适中的教材。教材选择上,我们调研了大量的面向职业教育的教材,但发现大多是对清华大学严蔚敏编写的数据结构教材的删减,并没有增加更多的实用性或引导性内容,反而使内容变得不易理解。因此建议软件学院仍选用严蔚敏编写的“数据结构”为主教材,再参照其他一些实用性教材为辅助教材。同时,河南省各软件学院已经开始联合编写适合软件学院教学的“数据结构”教材。
3.分层次教学方式。软件学院的学生入学成绩有差异,理解能力有差异,因此更适合采取分层次教学方式。分层次教学方式的目的是让每个学生都能在学习过程中一步步学到知识,有所收获并赢得自己的成就感,最大程度地调动学生学习的积极性。 对于“数据结构”课程中的一些基本理论和算法,要求所有同学必须掌握,如线性表、排序、查找等,这些内容要放慢讲课节奏,不断重复强调重点,多讲解习题,并充分利用多媒体技术,采取直观形象的教学方式,动态演示算法过程等,加深学生对算法的理解。并尽量对照现实生活中的例子来引入知识点,如排队、插队、压箱底(堆栈)等。
而对一些像找最短路径这样的复杂算法,要求多数同学明白算法目的和基本原理即可。对于个别成绩较好的同学,利用答疑时间、实验时间对他们进行额外辅导,单独布置作业,要求他们充分理解算法,并最好能把算法转化为程序运行,还能根据教师要求对代码进行改进。
4.项目导向。数据结构课程中的多数知识理论性较强,在教学过程中应注意引导分析,还应提供一些有代表性的案例或小项目让学生讨论,如长整数相加问题、迷宫问题、马跳棋盘问题、八皇后问题等,由学生分组讨论完成。讨论前允许学生利用网络等手段搜索相关资料,开始可以把问题简化,逐步加大难度,最终把完整程序提供给学生学习。对学习基础好的学生要求逐步完成程序设计,对学习基础差的学生要求明白思路即可。这样一方面锻炼了学生的动手能力,促进了学生间的交流与团结协作;另一方面确实能将理论与实践相结合,学以致用,从而大大激发学生的学习热情,培养创新思维。
对于课程中的排序和搜索部分,可以设计一个简单的信息管理系统,让学生完成按人名搜索、按电话搜索等项目,并比赛谁的搜索速度快,从而练习相关算法。因为C语言操作数据库比较烦琐,可以使用结构体数组存放学生信息,把相关信息存放在文件中,并由教师把数据的输入输出部分实现,把一些搜索、排序函数留出让学生去实现。这样,学生既能享受到编程的乐趣,又不至于陷于烦琐的数据输入输出处理部分。
5.丰富教学手段。目前,大多数高校的教室里都配备了计算机和投影设备,在“数据结构”的教学过程中,应充分利用多媒体设备和多媒体技术进行教学。
可以将数据结构课程中的大多数算法制作成FLASH动画,FLASH不仅可动动态演示算法执行过程,还可以直接看到每一句代码的单步执行效果,非常有利于学生对算法的掌握。例如,把堆排序的过程用动画来进行演示,就可以很清楚地明白堆排序建堆、输出堆顶、堆调整、完成排序的全过程。
这些FLASH动画可以嵌入到PPT课件中,也可以放到课程网站上供同学们查看。通过这些课件和动画的使用,教学效率和教学效果比传统的教学方法有很明显的提高,对学生的科研开发能力有直接的启发作用,同时,在适当的引导和浓厚的兴趣驱使下,学生会跃跃欲试,进行模仿设计。
除此以外,还应该建立数据结构课程网站,网站内容包括:教学课件、习题与测试、实验项目、在线学习、动画演示、课堂视频、作业上传等。
“数据结构”课程学生难学,教师也难教,但我们并不是束手无策,通过以上各种方法可以大大改善数据结构的教学效果。教学改革不是一蹴而就的,这是一项长期的任务,在以后的教学过程中,我们仍会通过不断探索、不断总结,让学生在掌握知识的基础上,举一反三,能分析问题、解决问题,这样才能较好地体现软件学院培养应用型人才的目标。
[参考文献]
[1]董春波.高职院校数据结构课程的教学探索与体会[J].黑龙江科技信息,2010(11).
[2]李政.高职高专《数据结构》课程建设的探讨[J].科技信息,2009(28).