论文部分内容阅读
摘要:以在本科教学评估中C语言程序设计课程存在的问题为出发点,分析了各种问题产生的原因,阐述了C语言教学改革的思想和方法。
关键词:C语言;教学评估;教学改革
中图分类号:G640文献标识码:A文章编号:1009-3044(2007)12-21761-02
Study on Higher Education Evaluation and the Reformation in C Language Teaching
XIONG Ying, LI Hao
(School of Computer Science, Hubei Univ. of Technology, Wuhan 430068, China)
Abstract:The paper describes the present situation of C language teaching during the higher education evaluation; subsequently, several kinds of reasons are mentioned in detail; finally, the guide principle, key point and several measures of the reformation in C language teaching are discussed.
Key words:C Language; Higher Education Evaluation; Teaching Reformation
C語言程序设计课程是理工类非计算机专业的必修程序设计课,是知识性、技能性和实践性很强的课程。其教学内容一般不针对某一专业领域,主要培养学生利用计算机处理问题的思维方式和程序设计的基本方法,使学生能够掌握C语言的基本语法,利用C语言进行基本的程序设计。它在学校各院系培养计划中是一个不可缺少的教学环节,能激发和培养学生学习计算机的兴趣,培养学生的创新精神,拓展视野,使学生树立自信心,养成良好的学习习惯和形成有效的学习策略,发展自主学习的能力和团队协作精神,为他们的终身学习和发展打下良好的基础,为解决实际应用问题提供支持。在C语言教学过程中,从客观上讲,不同专业对计算机应用的特点和要求是不一样的,而且教师的授课方法和学生的学习方法的差异,对教学效果都会产生直接的影响。本文以在本科教学评估中C语言程序设计课程存在的问题为出发点,分析了各种问题产生的原因,提出了C语言教学改革的思想和方法。
1 计算机双基测试情况
2006年,在校评建专家组的指导下,学院认真组织了4次全校范围的计算机基础知识及基本技能考试,测试的试卷综合了中英文打字、Word排版、Excel电子表格制作、网上信息搜索内容组织、邮件收发等基础知识和C语言程序设计,和以往考试相比,试题量及试题难度适中。就C语言编程一题而言,基本上得分较少,究其原因,由于整套题量较大,时间紧迫使得学生放弃该题,另外,由于该课程内容较深,学习周期间隔太长,因此大部分学生面对程序设计题目不知从何下手,很多学生只凭记忆去套用书上例题,因此失分较严重。近几年的C语言考试情况表明学生的水平也只达到了基本要求(见图1),距离全国计算机等级考试二级还有一定的距离,这方面还需要在教学和考试中逐步提高,以进一步提高我们的教学水平和考试水平。
2 教学中突现的问题与解决办法
就目前而言,C语言程序设计课程要求学生闭卷笔试,统一制卷,统一阅卷,教考分离。试题内容体现了课程教学大纲的基本要求,强调了对基本概念、基本公式、基本理论和实际应用等方面的考核。
图1 近三年C语言程序设计课程考试成绩分析图
2.1存在的问题与原因分析
因C语言运算符、数据结构丰富,并且语法限制不太严格,程序设计自由度大等特点,使学生掌握该学科的难度增大。由于采用统一的笔试试卷对学生进行衡量和评价,特别是为了应付等级考试,使得学生疲于题海战术,明显倾向应试教育,不利于学生创新能力的培养和素质教育的开展。所以在教学过程中除引导学生掌握基础知识外,重要的是让学生学会各类技巧,灵活运用,以培养学生能力为切入点,以案例教学为手段,以提高应用能力为目标,帮助学生突破影响C语言知识掌握的瓶颈。
教学中存在的问题有:
(1)由于课时有限,教师需要在有限的课堂教学中教授大量的知识点,传统的教育方式采用“满堂灌”,使得学生不能充分理解概念,对于基本语法不能熟练掌握,在学生真正动手编写完整的程序之前,有4-6课时的基础语法学习阶段,而且很多语法规则需要在理解的基础上加深记忆,学生往往急于求成,失去耐心,语法教学会让学生感觉比较枯燥,造成基本功不扎实,导致以后编程出错机会增多,兴趣下降。
(2)在教学安排上,理论课和实验课是前后分开的,中间可能会间隔一段时间,而集中授课和上机实践是计算机教学中的两个主要环节,由于这些因素的影响造成理论和实践之间存在脱节现象,因此使得学习不能及时跟进,造成学习效果降低。特别是面对TURBOC 2.0英文的编译环境,大部分学生不懂如何排除程序错误。在教学中,往往有这种情况,尽管对一些常见错误反复讲解后,到学生真正自己编程的时候,又会束手无策,使得学习积极性大打折扣。
(3)学生基本工不扎实,很多学生在考试之前会死记硬背书上典型例题,对题目稍加进行改编,便不知从何着手。诚然,对于一些经典算法确实需要学生记忆,但是重要的是培养学生的独立思考灵活变通的能力,从改变学生的编程思维模式入手。另外,教材中都附有课后习题的配套答案,学生上机时主要是照搬答案,缺少没有主动思考,甚至对于一些很明显的印刷错误都不能独立解决。
2.2教学思想和教学方法的改革
(1)前期知识的准备
在讲授C语言程序设计时,往往从设计算法讲起,整个过程显得抽象复杂,让入门变得困难。在整个教学过程中应该把算法,特别是模块化的程序设计思想作为教学重点,从而让学生明白如何分析并解决实际问题,逐渐培养学生进行程序设计的正确思维模式。算法+数据结构=程序设计,算法是教学重点和难点,有了正确的算法,再用数据结构表示出来,形成程序。因此,在教学中,应先介绍如何分析问题、设计算法并将算法正确表示出来,以保证更好地进行后面的教学。对于C语言所涉及到的经典算法,更应进行精讲多练。
在计算机内部,数据用二进制表示,学生在学习时往往不清楚ASCII,二进制,数据存储等问题,特别是教材前几章涉及到数据类型和运算时,学生总是不知所然。因此,对于这些前期知识应做相应的补充。而不同数据类型所占字节位数随机器硬件不同,因此数的表示范围有别。所以在最初入门时,对于每一条语句的执行过程要讲授清楚,结合实例进行讲解。比如:在0-127范围之内,字符与整数在存储器中表示形式一样,因此在这个范围之内,字符与整数是可以通用的。当不同数据类型数据相互赋值时同样要考虑它们在存储器中的表示问题。
(2) “多媒体教学”与“粉笔教学”相结合
在教学方法上,从早期的“粉笔+黑板”发展到“计算机+大屏幕投影”,应该说是教学手段的一次重大改革,多媒体课件辅助教学具有耳目一新的特点。“多媒体教学”的核心是电子教案,电子教案的制作与合理运用是影响教学效果的关键。运用多媒体计算机进行教学可以把多种教学方法紧密结合起来,把动态的图像与抽象思维活动相结合,如汉诺塔问题,八皇后等问题,通过动画可以使教师重点突出讲解程序关键部分,教师的精讲与启发,再结合学生的质疑和讨论,从而达到启发学生主动思考,开发学生智力,有效地激发了学生的学习兴趣,提高学生多方面能力的教学目的。
当然,在教学中也不能一味地追求多媒体教学,适当的“粉笔教学”可以充分展示教师的授课思路,使得学生有做笔记和思考的时间。多种教学手段相结合,可以各取所长,扬长避短,达到事半功倍的效果。
(3) 深入浅出,循序渐进,采用多变的教学方法
C语言教学学时64学时,其中理论课时40学时,上机实践24学时,如何在有限的时间内更好的让学生理解更多的内容?“深入浅出,精讲多练”,在课堂教学过程中,对核心教学内容进行精讲,进行归纳,突出难点,深化课堂训练,引导学生在课后主动自学,巩固所学知识点。在上机时间,可以引导学生进行不同形式的练习,进行一题多变、一题多解的训练,及时反馈信息,发展思维,使学生增强信心。比如,两两交换数据问题,在很多算法中都会遇到,对于这个问题,可以结合生活中的实例:如何交换两个杯子中的水?通过引入第三个空杯可以很容易实现交换操作。因此,引入第三个变量,3条赋值语句即可完成该问题,进一步,除了赋值运算外,启发学生思考还可以用到其它的什么运算?
在讲到循环时,教材上都会以1+2+3+……+n为例,用for,while,do while等不同语句对其分别进行表示,对循环条件及循环体等要素进行充分讲解,在此基础上可进一步提出1*2*3*……*n的问题,继而可解决奇数和,偶数和,等差数列,等比数列的问题。另外,使用循环操作字符可以实现对字符串的处理,达到等同效果。在讲到循环的嵌套时,提出1!+2!+3!+ ……+n!和九九乘法表问题,使学生举一反三,融会贯通。在授课时,尽量采用启发式,激发学生的主动性,让学生自己找出答案。
(4)小组综合进行课程设计大作业
普通的上机实践只能保证学生练习课堂上新吸收的知识,掌握基本的语法,完成基础的程序设计。为了提高学生的综合编程能力,将所学的知识融会贯通,需要组织学生进行综合的课程设计,以大作业的形式培养学生的综合能力。将大作业作为学习目标,利用不同功能模块分别实现,如将图书管理系统,学生成绩管理系统等等作为课程设计题目等等,可以结合结构体数组,输入输出函数,排序算法等等,甚至指针,做到“任务分解,责任到人”,使学生可以各个击破,将复杂的系统程序设计问题迎刃而解。
(5) 通过等级考试激励策略,提高积极性
全国计算机等级考试及全国计算机水平和资格考试或程序员考试在学生中影响力比较广,可以鼓励学生参加相关的资格认证考试,不仅可以提高他们的学习兴趣,也可以让学生有的放矢,深入学习,同时提高就业的竞争力。
(6) 开放教学平台
我校计算机公共基础课部推出了基于PHP技术的计算机公共基础网上教学系统。该系统具有功能如:最新信息发布;在线学习;网上答疑;课后练习;作业提交;评分管理;期末在线考试等。该教学系统提供了交互的教学环境,资源丰富,通过网络技术,给学习者提供全方位的自主学习环境,改变了学生被动学习的局面,减少了对时间和空间的依赖性,利用计算机因材施教,对不同的学生进行不同难度和不同题量的训练,而且可以让学生自我控制練习进度,做到每类学生都达到各自的教学目标,充分体现了“以学生和学习为中心”的思想,达到培养造就科学人才的目的。
3 结束语
C语言教学方法一直是计算机公共基础课程的教学改革热点,如何提高教学的质量和效果,一直是众所瞩目的问题。借这次评估的东风,我校积极推进课程建设,C语言程序设计课程从教材的选材、授课方案的制定、电子教案的开发等各方面注重内容更新,紧密结合计算机等级考试,注重课程内容的基础性与先进性、经典与现代的关系,同时强化教学管理,深化教学改革,注重学生实践能力的培养,融知识传授,能力培养,素质教育于一体,全面提高教学质量,取得了明显的成效。
参考文献:
[1]谭浩强.C语言程序设计[M].北京:清华大学出版社.2005.
[2]中国高等院校计算机基础教育改革课题研究组,中国高等院校计算机基础教育课程体系2006[M]. 北京:清华大学出版社.2006.
“本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。”
关键词:C语言;教学评估;教学改革
中图分类号:G640文献标识码:A文章编号:1009-3044(2007)12-21761-02
Study on Higher Education Evaluation and the Reformation in C Language Teaching
XIONG Ying, LI Hao
(School of Computer Science, Hubei Univ. of Technology, Wuhan 430068, China)
Abstract:The paper describes the present situation of C language teaching during the higher education evaluation; subsequently, several kinds of reasons are mentioned in detail; finally, the guide principle, key point and several measures of the reformation in C language teaching are discussed.
Key words:C Language; Higher Education Evaluation; Teaching Reformation
C語言程序设计课程是理工类非计算机专业的必修程序设计课,是知识性、技能性和实践性很强的课程。其教学内容一般不针对某一专业领域,主要培养学生利用计算机处理问题的思维方式和程序设计的基本方法,使学生能够掌握C语言的基本语法,利用C语言进行基本的程序设计。它在学校各院系培养计划中是一个不可缺少的教学环节,能激发和培养学生学习计算机的兴趣,培养学生的创新精神,拓展视野,使学生树立自信心,养成良好的学习习惯和形成有效的学习策略,发展自主学习的能力和团队协作精神,为他们的终身学习和发展打下良好的基础,为解决实际应用问题提供支持。在C语言教学过程中,从客观上讲,不同专业对计算机应用的特点和要求是不一样的,而且教师的授课方法和学生的学习方法的差异,对教学效果都会产生直接的影响。本文以在本科教学评估中C语言程序设计课程存在的问题为出发点,分析了各种问题产生的原因,提出了C语言教学改革的思想和方法。
1 计算机双基测试情况
2006年,在校评建专家组的指导下,学院认真组织了4次全校范围的计算机基础知识及基本技能考试,测试的试卷综合了中英文打字、Word排版、Excel电子表格制作、网上信息搜索内容组织、邮件收发等基础知识和C语言程序设计,和以往考试相比,试题量及试题难度适中。就C语言编程一题而言,基本上得分较少,究其原因,由于整套题量较大,时间紧迫使得学生放弃该题,另外,由于该课程内容较深,学习周期间隔太长,因此大部分学生面对程序设计题目不知从何下手,很多学生只凭记忆去套用书上例题,因此失分较严重。近几年的C语言考试情况表明学生的水平也只达到了基本要求(见图1),距离全国计算机等级考试二级还有一定的距离,这方面还需要在教学和考试中逐步提高,以进一步提高我们的教学水平和考试水平。
2 教学中突现的问题与解决办法
就目前而言,C语言程序设计课程要求学生闭卷笔试,统一制卷,统一阅卷,教考分离。试题内容体现了课程教学大纲的基本要求,强调了对基本概念、基本公式、基本理论和实际应用等方面的考核。
图1 近三年C语言程序设计课程考试成绩分析图
2.1存在的问题与原因分析
因C语言运算符、数据结构丰富,并且语法限制不太严格,程序设计自由度大等特点,使学生掌握该学科的难度增大。由于采用统一的笔试试卷对学生进行衡量和评价,特别是为了应付等级考试,使得学生疲于题海战术,明显倾向应试教育,不利于学生创新能力的培养和素质教育的开展。所以在教学过程中除引导学生掌握基础知识外,重要的是让学生学会各类技巧,灵活运用,以培养学生能力为切入点,以案例教学为手段,以提高应用能力为目标,帮助学生突破影响C语言知识掌握的瓶颈。
教学中存在的问题有:
(1)由于课时有限,教师需要在有限的课堂教学中教授大量的知识点,传统的教育方式采用“满堂灌”,使得学生不能充分理解概念,对于基本语法不能熟练掌握,在学生真正动手编写完整的程序之前,有4-6课时的基础语法学习阶段,而且很多语法规则需要在理解的基础上加深记忆,学生往往急于求成,失去耐心,语法教学会让学生感觉比较枯燥,造成基本功不扎实,导致以后编程出错机会增多,兴趣下降。
(2)在教学安排上,理论课和实验课是前后分开的,中间可能会间隔一段时间,而集中授课和上机实践是计算机教学中的两个主要环节,由于这些因素的影响造成理论和实践之间存在脱节现象,因此使得学习不能及时跟进,造成学习效果降低。特别是面对TURBOC 2.0英文的编译环境,大部分学生不懂如何排除程序错误。在教学中,往往有这种情况,尽管对一些常见错误反复讲解后,到学生真正自己编程的时候,又会束手无策,使得学习积极性大打折扣。
(3)学生基本工不扎实,很多学生在考试之前会死记硬背书上典型例题,对题目稍加进行改编,便不知从何着手。诚然,对于一些经典算法确实需要学生记忆,但是重要的是培养学生的独立思考灵活变通的能力,从改变学生的编程思维模式入手。另外,教材中都附有课后习题的配套答案,学生上机时主要是照搬答案,缺少没有主动思考,甚至对于一些很明显的印刷错误都不能独立解决。
2.2教学思想和教学方法的改革
(1)前期知识的准备
在讲授C语言程序设计时,往往从设计算法讲起,整个过程显得抽象复杂,让入门变得困难。在整个教学过程中应该把算法,特别是模块化的程序设计思想作为教学重点,从而让学生明白如何分析并解决实际问题,逐渐培养学生进行程序设计的正确思维模式。算法+数据结构=程序设计,算法是教学重点和难点,有了正确的算法,再用数据结构表示出来,形成程序。因此,在教学中,应先介绍如何分析问题、设计算法并将算法正确表示出来,以保证更好地进行后面的教学。对于C语言所涉及到的经典算法,更应进行精讲多练。
在计算机内部,数据用二进制表示,学生在学习时往往不清楚ASCII,二进制,数据存储等问题,特别是教材前几章涉及到数据类型和运算时,学生总是不知所然。因此,对于这些前期知识应做相应的补充。而不同数据类型所占字节位数随机器硬件不同,因此数的表示范围有别。所以在最初入门时,对于每一条语句的执行过程要讲授清楚,结合实例进行讲解。比如:在0-127范围之内,字符与整数在存储器中表示形式一样,因此在这个范围之内,字符与整数是可以通用的。当不同数据类型数据相互赋值时同样要考虑它们在存储器中的表示问题。
(2) “多媒体教学”与“粉笔教学”相结合
在教学方法上,从早期的“粉笔+黑板”发展到“计算机+大屏幕投影”,应该说是教学手段的一次重大改革,多媒体课件辅助教学具有耳目一新的特点。“多媒体教学”的核心是电子教案,电子教案的制作与合理运用是影响教学效果的关键。运用多媒体计算机进行教学可以把多种教学方法紧密结合起来,把动态的图像与抽象思维活动相结合,如汉诺塔问题,八皇后等问题,通过动画可以使教师重点突出讲解程序关键部分,教师的精讲与启发,再结合学生的质疑和讨论,从而达到启发学生主动思考,开发学生智力,有效地激发了学生的学习兴趣,提高学生多方面能力的教学目的。
当然,在教学中也不能一味地追求多媒体教学,适当的“粉笔教学”可以充分展示教师的授课思路,使得学生有做笔记和思考的时间。多种教学手段相结合,可以各取所长,扬长避短,达到事半功倍的效果。
(3) 深入浅出,循序渐进,采用多变的教学方法
C语言教学学时64学时,其中理论课时40学时,上机实践24学时,如何在有限的时间内更好的让学生理解更多的内容?“深入浅出,精讲多练”,在课堂教学过程中,对核心教学内容进行精讲,进行归纳,突出难点,深化课堂训练,引导学生在课后主动自学,巩固所学知识点。在上机时间,可以引导学生进行不同形式的练习,进行一题多变、一题多解的训练,及时反馈信息,发展思维,使学生增强信心。比如,两两交换数据问题,在很多算法中都会遇到,对于这个问题,可以结合生活中的实例:如何交换两个杯子中的水?通过引入第三个空杯可以很容易实现交换操作。因此,引入第三个变量,3条赋值语句即可完成该问题,进一步,除了赋值运算外,启发学生思考还可以用到其它的什么运算?
在讲到循环时,教材上都会以1+2+3+……+n为例,用for,while,do while等不同语句对其分别进行表示,对循环条件及循环体等要素进行充分讲解,在此基础上可进一步提出1*2*3*……*n的问题,继而可解决奇数和,偶数和,等差数列,等比数列的问题。另外,使用循环操作字符可以实现对字符串的处理,达到等同效果。在讲到循环的嵌套时,提出1!+2!+3!+ ……+n!和九九乘法表问题,使学生举一反三,融会贯通。在授课时,尽量采用启发式,激发学生的主动性,让学生自己找出答案。
(4)小组综合进行课程设计大作业
普通的上机实践只能保证学生练习课堂上新吸收的知识,掌握基本的语法,完成基础的程序设计。为了提高学生的综合编程能力,将所学的知识融会贯通,需要组织学生进行综合的课程设计,以大作业的形式培养学生的综合能力。将大作业作为学习目标,利用不同功能模块分别实现,如将图书管理系统,学生成绩管理系统等等作为课程设计题目等等,可以结合结构体数组,输入输出函数,排序算法等等,甚至指针,做到“任务分解,责任到人”,使学生可以各个击破,将复杂的系统程序设计问题迎刃而解。
(5) 通过等级考试激励策略,提高积极性
全国计算机等级考试及全国计算机水平和资格考试或程序员考试在学生中影响力比较广,可以鼓励学生参加相关的资格认证考试,不仅可以提高他们的学习兴趣,也可以让学生有的放矢,深入学习,同时提高就业的竞争力。
(6) 开放教学平台
我校计算机公共基础课部推出了基于PHP技术的计算机公共基础网上教学系统。该系统具有功能如:最新信息发布;在线学习;网上答疑;课后练习;作业提交;评分管理;期末在线考试等。该教学系统提供了交互的教学环境,资源丰富,通过网络技术,给学习者提供全方位的自主学习环境,改变了学生被动学习的局面,减少了对时间和空间的依赖性,利用计算机因材施教,对不同的学生进行不同难度和不同题量的训练,而且可以让学生自我控制練习进度,做到每类学生都达到各自的教学目标,充分体现了“以学生和学习为中心”的思想,达到培养造就科学人才的目的。
3 结束语
C语言教学方法一直是计算机公共基础课程的教学改革热点,如何提高教学的质量和效果,一直是众所瞩目的问题。借这次评估的东风,我校积极推进课程建设,C语言程序设计课程从教材的选材、授课方案的制定、电子教案的开发等各方面注重内容更新,紧密结合计算机等级考试,注重课程内容的基础性与先进性、经典与现代的关系,同时强化教学管理,深化教学改革,注重学生实践能力的培养,融知识传授,能力培养,素质教育于一体,全面提高教学质量,取得了明显的成效。
参考文献:
[1]谭浩强.C语言程序设计[M].北京:清华大学出版社.2005.
[2]中国高等院校计算机基础教育改革课题研究组,中国高等院校计算机基础教育课程体系2006[M]. 北京:清华大学出版社.2006.
“本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。”