论文部分内容阅读
摘要:本文通过分析信管专业学生在学习“C语言”与“数据结构”过程中存在的问题,提出了将两门课程进行整合的教学模式。
关键词:C语言;数据结构;课程整合;信息
中图分类号:G642
文献标识码:B
文章编号:1002-2422(2010)06-0090-03
1 课程整合的必要性
首先,从信息管理与信息系统专业的研究内容与构成分布特征来看,专业主要研究信息系统开发与设计的理论、原理、原则和方法。解决信息的获取、加工、检索、控制和利用等一系列重要问题,为科学研究和管理决策提供高质量的信息服务。专业是信息管理与计算机技术、系统科学、管理学、经济学等相结合的交叉学科专业,在课程设置方面突出信息管理与信息系统内容。同时,加大计算机技术和商务课程的力度,增加了市场营销、电子商务等方面的课程。可见,信管专业的学习任务十分繁重。
其次,从“C语言”与“数据结构”两门课程的学习情况来看,很多学生对这两门课程的掌握情况不理想。有如下原因:
(1)C语言是学生接触的第一门程序设计语言,学生的学习精力大多在基本概念及简单程序的编写上面,而对数组、函数、指针、结构体的学习深度不够,这使得学生对复杂问题的处理上缺乏相应的能力。而数据结构的学习必须以数组、指针、结构体等数据类型为基础,C语言学习环节的薄弱导致数据结构的学习上不能得心应手。
(2)由于C语言与数据结构被安排在两个学期学习,大多数同学在学习数据结构时,C语言的相关理论被忘记殆尽,学生在学习过程中不得不重新花费相当的精力去复习c语言的内容,这使得数据结构的学习效果大打折扣。
(3)在学习数据结构时,学生往往掌握了算法,但是最终不能将算法转换成程序,究其原因,是由于C语言的实践环节薄弱造成的。
最后,C语言中的程序相对来说比较简单,学生在编写时往往会觉得困惑:编写这样的程序有什么意义?这导致学生的学习热情不高。而数据结构所涉及的程序往往会解决一些复杂的现实问题,这样学生就可以亲身感受到这门课程的现实魅力,提高学习积极性。
2 课程整合的思路
2.1 课程内容整合设计
“C语言”与“数据结构”课程整合后,由于数据结构以C语言为基础,因此,对于初次接触程序设计语言的学生来说,学习的内容应以C语言为纲,将数据结构的内容穿插其中,在学习C语言语法基础的同时,融入一些复杂数据类型及其操作的实现方法。当然,由于课时的限制,数据结构的内容应以“必需、够用”为度,适当删减其中的章节,合理安排教学内容,做到“有理、有利、有节”。
主要的课程内容安排如下:
(1)C语言常用数据类型:包括常量、变量、运算符和表达式,以及变量的指针和指针变量的用法。
(2)顺序结构程序设计:预处理命令和常用输入输出函数的用法。
(3)选择结构程序设计:if语句与switch语句的用法。
(4)循环结构程序设计:while循环、do-while循环、for循环、break和continue语句的用法。
(5)模块化程序设计基础:函数的定义与调用、函数的嵌套与递归调用、变量的作用域与存储类型、函数与指针。
(6)结构体与共用体:结构体变量、结构体变量的指针、结构体数据作函数的参数、链表、共用体类型、枚举类型、typedef定义数据类型。
(7)数组与广义表:一维数组、二维数组、数组与指针、数组的压缩存储、顺序表的表示和实现、广义表的表示和实现。
(8)栈与队列:栈的表示和实现、队列的表示和实现。
(9)字符串:字符数组、字符串与指针、字符串处理函数、字符串的存储表示方法、模式匹配算法及程序实现。
(10)树与二叉树:二叉树的性质、存储、与遍历、树与森林、赫夫曼树以及现实问题的引入与求解。
(11)图:图的存储、遍历、图的连通性、拓扑排序、关键路径、最短路径的求解。
(12)查找与排序算法:静态查找、动态查找、哈希表、插入排序、快速排序、选择排序。
(13)文件:文件的打开与关闭、文件的读写等。
课程内容设计参考文献[2][3]进行设计,对以往C语言教程的结构进行重新组织,将指针糅合在各章节中,将数据结构的知识点与C语言基础有机结合,注重知识点前后衔接。经过课程的整合,使所有知识成一体系,学生的学习更加系统、全面。但是该课程也有一个典型的缺陷:知识覆盖面广。如果学生的学习积极性和主动性没有被充分调动起来,这门课的学习将会陷于混乱。因此,整合后的课程对授课教师与学生都将是一个新的挑战。
2.2 实验课程设计
“C语言”与“数据结构”都是实践性非常强的课程,在开展理论授课的同时,还必须安排合理的上机实践。实验课程的任务是使学生能使用所学的程序设计与数据结构的基本知识和算法解决一定的问题,使学生在程序设计中能构造各种数据结构和综合使用各种算法,提高学生解决实际问题的能力。
为了提高实验教学的效果,实验课程的设置应与理论授课配套,且必须有充足的课时,具体课时的分配也是参考课程的重点难点来制定的,实践的内容与理论课保持同步,使理论教学与实验教学紧密结合,内容的安排也应该做到循序渐进、由浅入深。这样利于学生巩固所学知识。
根据整合后的课程教学目标、课程的特色及学生的认知过程,对实验课程采用“分层次思想”来设置实验内容:
(1)知识的认知,理解C程序语法知识。
(2)知识的运用,能解决简单的问题。
(3)应用知识解决实际问题。
因此,实验的形式可以分为四类:认知型实验、知识应用型实验、程序设计型实验、综合案例型实验。认知型实验,主要用于加深基础知识的理解,包括c程序的结构、基本语法、语句以及c程序的调试方法等,通过给出现有程序进行调试的方式来展开;知识应用型实验是在认知实验的基础上,提高学生阅读程序、调试程序的能力,主要形式是对现有程序进行阅读,理解语句的功能,并设置一些错误以待学生调试解决;程序设计型实验是用于培养学生编程的能力,通过给出一些题目,让学生自己编程并在计算机上实现;综合案例型实验是提高学生应用C语言与数据结构的知识解决实际问题的能力,例如可选择学生感兴趣的游戏来实现:比如俄罗斯方块、贪吃蛇、走迷宫、五子棋,或者是与信管专业相关的管理信息系统的设计:仓储管理系统、通讯录系统等。
3 教学方法设计
“C语言”与“数据结构”的整合设计以C语言为主线,将各种类型的数据结构糅合其中,将C语言与数据结构有机地结合在一起。“学生能更好地掌握最常用的数据结构,理解数据结构内在的逻辑关系,理解数据与关系在计算 机中的存储表示以及用C语言描述这些数据结构的运算和实际的执行算法”。
3.1 激发学生兴趣
兴趣是最好的老师,该课程的教学过程中应时刻重视学生兴趣的培养。为了不让学生从一开始就产生畏难情绪,第一堂课就变得非常关键。因此,第一节课的授课重点应在于告诉学生现实中的问题用C语言与数据结构解决的实例,比如对弈问题、迷宫游戏、俄罗斯方块等,以此来激发学生的好奇心理。同时,还应该从后续课程和考研的角度来介绍该课程的重要性。在授课过程中,教师应时刻关注学生的学习激情,实时插入一些用已学知识解决现实问题的案例,并引导学生解决。
3.2 案例教学
案例教学的目的是为了启发学生的思维,拓宽知识领域,激发学生的学习兴趣。课程中可设计以下案例来充实课堂教学内容:
(1)将C程序的三种基本结构结合起来,以举例的形式讲解三种基本结构在字符处理、多项式求和、选数、迭代、随机数处理等多方面的具体应用。
(2)引入经典问题来研究算法,比如汉诺塔问题采用递归算法,二维幻方问题采用蛮力法,棋盘覆盖问题采用分治法,n皇后问题用回溯法,背包问题用贪心法等。
(3)通过引入约瑟夫环、一元多项式求和、走迷宫等案例来加深对链表与栈的理解,树的应用可引入赫夫曼编IN/译码的应用实例,图中引入求最短路径的实用程序。
3.3 引导式教学
“C语言与数据结构”课程的难点在于算法的最终实现,在授课过程中,对于每个问题通常采用五个步骤来解决:引入问题→分析问题→框架构造→算法设计→程序设计。首先通过问题引入让学生明确研究的任务:然后让学生讨论问题的解决思路,制定具体的实现策略;第三,为程序划分模块,构造程序的框架;第四,对程序实现的关键步骤设计算法,要求在教师的引导下,与学生共同完成;最后,在前面的框架中将算法转换成C程序。实践证明,采用该五步引导法能很好地吸引学生的注意力,教学效果良好。
3.4 网络辅助教学
借助已有的网络教学平台、BBS等进行网络互动交流,在教师的指导下,根据学习的要点利用网络调用信息资料,或者探讨某一问题。教师应在网络上提供丰富的实例供学生参考,学生也可将自己的成果上传共享。网络辅助教学为提高学生创新能力、实践能力、学习积极性提供可能。
4 结束语
整合之后的课程以C语言程序设计为主线,将数据结构及算法实现糅合在其中,根据需要对课程内容进行调整,使得各知识点前后自然衔接。整合后的课程注重理论与实践的有机结合,注重学生编程能力的培养。通过培养学生的兴趣,提高了学生学习积极性和主动性。
参考文献
[1]谢莉莉,李勤,傅春,等.“C语言与数据结构”课程的教学改革实践[J].北京:计算机教育,2009(7).
[3]顾元刚.C语言程序设计教程[M].北京:机械工业出版社,2004-06.
[4]严蔚敏,吴伟民.数据结构(C语言版)[M].北京:清华大学出版社,2008-03.
[5]罗宪,王家伟,周建丽.“高级语言程序设计”、“面向对象程序设计”精品课程教学改革与实践[J].重庆:重庆交通大学学报,2009(2).
关键词:C语言;数据结构;课程整合;信息
中图分类号:G642
文献标识码:B
文章编号:1002-2422(2010)06-0090-03
1 课程整合的必要性
首先,从信息管理与信息系统专业的研究内容与构成分布特征来看,专业主要研究信息系统开发与设计的理论、原理、原则和方法。解决信息的获取、加工、检索、控制和利用等一系列重要问题,为科学研究和管理决策提供高质量的信息服务。专业是信息管理与计算机技术、系统科学、管理学、经济学等相结合的交叉学科专业,在课程设置方面突出信息管理与信息系统内容。同时,加大计算机技术和商务课程的力度,增加了市场营销、电子商务等方面的课程。可见,信管专业的学习任务十分繁重。
其次,从“C语言”与“数据结构”两门课程的学习情况来看,很多学生对这两门课程的掌握情况不理想。有如下原因:
(1)C语言是学生接触的第一门程序设计语言,学生的学习精力大多在基本概念及简单程序的编写上面,而对数组、函数、指针、结构体的学习深度不够,这使得学生对复杂问题的处理上缺乏相应的能力。而数据结构的学习必须以数组、指针、结构体等数据类型为基础,C语言学习环节的薄弱导致数据结构的学习上不能得心应手。
(2)由于C语言与数据结构被安排在两个学期学习,大多数同学在学习数据结构时,C语言的相关理论被忘记殆尽,学生在学习过程中不得不重新花费相当的精力去复习c语言的内容,这使得数据结构的学习效果大打折扣。
(3)在学习数据结构时,学生往往掌握了算法,但是最终不能将算法转换成程序,究其原因,是由于C语言的实践环节薄弱造成的。
最后,C语言中的程序相对来说比较简单,学生在编写时往往会觉得困惑:编写这样的程序有什么意义?这导致学生的学习热情不高。而数据结构所涉及的程序往往会解决一些复杂的现实问题,这样学生就可以亲身感受到这门课程的现实魅力,提高学习积极性。
2 课程整合的思路
2.1 课程内容整合设计
“C语言”与“数据结构”课程整合后,由于数据结构以C语言为基础,因此,对于初次接触程序设计语言的学生来说,学习的内容应以C语言为纲,将数据结构的内容穿插其中,在学习C语言语法基础的同时,融入一些复杂数据类型及其操作的实现方法。当然,由于课时的限制,数据结构的内容应以“必需、够用”为度,适当删减其中的章节,合理安排教学内容,做到“有理、有利、有节”。
主要的课程内容安排如下:
(1)C语言常用数据类型:包括常量、变量、运算符和表达式,以及变量的指针和指针变量的用法。
(2)顺序结构程序设计:预处理命令和常用输入输出函数的用法。
(3)选择结构程序设计:if语句与switch语句的用法。
(4)循环结构程序设计:while循环、do-while循环、for循环、break和continue语句的用法。
(5)模块化程序设计基础:函数的定义与调用、函数的嵌套与递归调用、变量的作用域与存储类型、函数与指针。
(6)结构体与共用体:结构体变量、结构体变量的指针、结构体数据作函数的参数、链表、共用体类型、枚举类型、typedef定义数据类型。
(7)数组与广义表:一维数组、二维数组、数组与指针、数组的压缩存储、顺序表的表示和实现、广义表的表示和实现。
(8)栈与队列:栈的表示和实现、队列的表示和实现。
(9)字符串:字符数组、字符串与指针、字符串处理函数、字符串的存储表示方法、模式匹配算法及程序实现。
(10)树与二叉树:二叉树的性质、存储、与遍历、树与森林、赫夫曼树以及现实问题的引入与求解。
(11)图:图的存储、遍历、图的连通性、拓扑排序、关键路径、最短路径的求解。
(12)查找与排序算法:静态查找、动态查找、哈希表、插入排序、快速排序、选择排序。
(13)文件:文件的打开与关闭、文件的读写等。
课程内容设计参考文献[2][3]进行设计,对以往C语言教程的结构进行重新组织,将指针糅合在各章节中,将数据结构的知识点与C语言基础有机结合,注重知识点前后衔接。经过课程的整合,使所有知识成一体系,学生的学习更加系统、全面。但是该课程也有一个典型的缺陷:知识覆盖面广。如果学生的学习积极性和主动性没有被充分调动起来,这门课的学习将会陷于混乱。因此,整合后的课程对授课教师与学生都将是一个新的挑战。
2.2 实验课程设计
“C语言”与“数据结构”都是实践性非常强的课程,在开展理论授课的同时,还必须安排合理的上机实践。实验课程的任务是使学生能使用所学的程序设计与数据结构的基本知识和算法解决一定的问题,使学生在程序设计中能构造各种数据结构和综合使用各种算法,提高学生解决实际问题的能力。
为了提高实验教学的效果,实验课程的设置应与理论授课配套,且必须有充足的课时,具体课时的分配也是参考课程的重点难点来制定的,实践的内容与理论课保持同步,使理论教学与实验教学紧密结合,内容的安排也应该做到循序渐进、由浅入深。这样利于学生巩固所学知识。
根据整合后的课程教学目标、课程的特色及学生的认知过程,对实验课程采用“分层次思想”来设置实验内容:
(1)知识的认知,理解C程序语法知识。
(2)知识的运用,能解决简单的问题。
(3)应用知识解决实际问题。
因此,实验的形式可以分为四类:认知型实验、知识应用型实验、程序设计型实验、综合案例型实验。认知型实验,主要用于加深基础知识的理解,包括c程序的结构、基本语法、语句以及c程序的调试方法等,通过给出现有程序进行调试的方式来展开;知识应用型实验是在认知实验的基础上,提高学生阅读程序、调试程序的能力,主要形式是对现有程序进行阅读,理解语句的功能,并设置一些错误以待学生调试解决;程序设计型实验是用于培养学生编程的能力,通过给出一些题目,让学生自己编程并在计算机上实现;综合案例型实验是提高学生应用C语言与数据结构的知识解决实际问题的能力,例如可选择学生感兴趣的游戏来实现:比如俄罗斯方块、贪吃蛇、走迷宫、五子棋,或者是与信管专业相关的管理信息系统的设计:仓储管理系统、通讯录系统等。
3 教学方法设计
“C语言”与“数据结构”的整合设计以C语言为主线,将各种类型的数据结构糅合其中,将C语言与数据结构有机地结合在一起。“学生能更好地掌握最常用的数据结构,理解数据结构内在的逻辑关系,理解数据与关系在计算 机中的存储表示以及用C语言描述这些数据结构的运算和实际的执行算法”。
3.1 激发学生兴趣
兴趣是最好的老师,该课程的教学过程中应时刻重视学生兴趣的培养。为了不让学生从一开始就产生畏难情绪,第一堂课就变得非常关键。因此,第一节课的授课重点应在于告诉学生现实中的问题用C语言与数据结构解决的实例,比如对弈问题、迷宫游戏、俄罗斯方块等,以此来激发学生的好奇心理。同时,还应该从后续课程和考研的角度来介绍该课程的重要性。在授课过程中,教师应时刻关注学生的学习激情,实时插入一些用已学知识解决现实问题的案例,并引导学生解决。
3.2 案例教学
案例教学的目的是为了启发学生的思维,拓宽知识领域,激发学生的学习兴趣。课程中可设计以下案例来充实课堂教学内容:
(1)将C程序的三种基本结构结合起来,以举例的形式讲解三种基本结构在字符处理、多项式求和、选数、迭代、随机数处理等多方面的具体应用。
(2)引入经典问题来研究算法,比如汉诺塔问题采用递归算法,二维幻方问题采用蛮力法,棋盘覆盖问题采用分治法,n皇后问题用回溯法,背包问题用贪心法等。
(3)通过引入约瑟夫环、一元多项式求和、走迷宫等案例来加深对链表与栈的理解,树的应用可引入赫夫曼编IN/译码的应用实例,图中引入求最短路径的实用程序。
3.3 引导式教学
“C语言与数据结构”课程的难点在于算法的最终实现,在授课过程中,对于每个问题通常采用五个步骤来解决:引入问题→分析问题→框架构造→算法设计→程序设计。首先通过问题引入让学生明确研究的任务:然后让学生讨论问题的解决思路,制定具体的实现策略;第三,为程序划分模块,构造程序的框架;第四,对程序实现的关键步骤设计算法,要求在教师的引导下,与学生共同完成;最后,在前面的框架中将算法转换成C程序。实践证明,采用该五步引导法能很好地吸引学生的注意力,教学效果良好。
3.4 网络辅助教学
借助已有的网络教学平台、BBS等进行网络互动交流,在教师的指导下,根据学习的要点利用网络调用信息资料,或者探讨某一问题。教师应在网络上提供丰富的实例供学生参考,学生也可将自己的成果上传共享。网络辅助教学为提高学生创新能力、实践能力、学习积极性提供可能。
4 结束语
整合之后的课程以C语言程序设计为主线,将数据结构及算法实现糅合在其中,根据需要对课程内容进行调整,使得各知识点前后自然衔接。整合后的课程注重理论与实践的有机结合,注重学生编程能力的培养。通过培养学生的兴趣,提高了学生学习积极性和主动性。
参考文献
[1]谢莉莉,李勤,傅春,等.“C语言与数据结构”课程的教学改革实践[J].北京:计算机教育,2009(7).
[3]顾元刚.C语言程序设计教程[M].北京:机械工业出版社,2004-06.
[4]严蔚敏,吴伟民.数据结构(C语言版)[M].北京:清华大学出版社,2008-03.
[5]罗宪,王家伟,周建丽.“高级语言程序设计”、“面向对象程序设计”精品课程教学改革与实践[J].重庆:重庆交通大学学报,2009(2).