论文部分内容阅读
摘 要:本文阐述了当前程序设计课程教学中存在的问题,分析了程序设计课程的特点以及问题的成因,并就这些问题提出了一些针对性的解决方案和思路。
关键词:程序设计;教学方法;能力培养
程序设计基础课程,如C语言等,是高校计算机学科的基础课程,对学生后继课程的学习、以及整个专业课程体系的学习成果影响很大。目前的普遍情况是课程教学效果不佳、学生课程完成后对能力素质的提高很有限。
一、程序设计课程教学中存在的问题及成因
(1)学生学习积极性不高,缺乏动力。主要原因是学习者缺乏明确的目标。不少学生缺乏对所学知识的认识,不知道学习这门课程的目的是什么,或有什么用。其想法就是学校安排了什么课程我们就学什么,只是按照习惯,以通过考试为目的。这种情况下的学习自然是被动的,没有主观能动性,缺乏动力。
(2)学生缺乏兴趣。首先,兴趣的培养和形成主要还是决定于个人。个人的先天因素、擅长和不擅长的方面、个性特点、后天的成长和学习环境、个人际遇和圈子等都决定了其兴趣发展的方向。其次,这和学生专业的选择有关。目前,学生进入大学的专业选择普遍具有盲目性,不论是家长还是社会导向上,只强调专业是否热门、是否好就业、是否能拿高薪。须知专业冷热几年河东几年河西,进校热门毕业冷门、从前的所谓冷门变得炙手可热的情况并不少见。况且任何专业都一样,再冷门的专业如果能力够强、钻研精深,都能有一番作为;再热门的专业,如果学得不好,懂一点皮毛而能力不足,一样找不到工作、拿不到高薪。一方面家长和社会导向如此,另一方面很多学生本人没有形成兴趣爱好,对将来的学习方向和发展方向一片茫然,没有认真思考过这个问题,没有明确的目标。再次,和课程设置有关,目前许多高校存在课程设置大而全,缺乏重点和集中,没有专注和重点培养的方向,导致有些学生对所有的课程都一视同仁地忽视甚至抵制,缺乏求知欲和兴趣。最后,和任课老师的教学态度、教学方法和能力也有一定關系。
(3)课程本身学习难度较大。每门课程都有其自身的特点,程序设计课程对学习者的逻辑思维、抽象思维能力、严谨性要求很高,这是由其自身特点决定的。前两个因素是学习者学习的外在动力和内在动力,如果两者都缺乏,则学无所成是必然的结果。
(4)只掌握理论,实际动手能力差,课程完成后编程基础能力较弱。有部分同学在学习这门课程时,上课听讲比较认真,理论知识掌握的还不错,对书本内容还比较熟悉,考试也能取得不错的成绩。遗憾的是课程完成后缺乏独立编程能力,编程基本功没有打好,动手编程比较困难。
(5)教师教学方法不太合理,不得当,比如传统的填鸭式教学。原因可能是多方面的:第一、备课不足,准备不充分,教材没有吃透;第二、按大纲、教材墨守成规、照本宣科,形成习惯,体现之一是各种教材中都或多或少存在一些错误、漏洞、不准确、不合理之处,但许多老师却视而不见,没有想法;第三、教师对专业知识的理解综合纵深有限,教学准备以及讲课过程中缺乏灵感,无法融汇贯通,在教学上没有自己的想法和见地。个人认为,有自己的想法和见地,哪怕是错误的、幼稚的,也比没有强,至少证明这位老师在思考和探索。第四、能力所限,普遍现象是教编程的老师本身平时不编程,或缺乏编程能力,所以教学演示时缺乏自信,害怕出现bug,难以随心所欲,对学生编程出现的问题也难以有效应对。
二、解决方案和思路
(1)课程伊始,应让学生充分理解所学为何物?课程学习的意义和重要性,对后继学习、课程的影响。应介绍所学程序设计语言和工具的应用领域,这可以让学生明白学会了这门语言能做什么。在目前市场上的实际应用热门程度,比如教师可以通过展示上个月最新的TIOBE社区排名以及年度环比,这样学生对所学语言的实用性以及市场应用前景趋势有直观的了解。以C语言为例,通过老师的分析,学生会认识到C语言的生命力长久,应用领域广泛,相较其它语言的优势和不可替代性,对数据结构、算法、C++、JAVA及其它后继课程的影响,这样学生心中自然就会引起重视,从而获得了外在的动力。再比如以JAVA为例,如果学生了解了它在国内开发的热门程度,如果能力达到一定水平就可以直接找工作,这样学生怎么会不产生学习动力呢?老师还可以分析,即便将来不打算用这种语言,打算学其他语言,也绝不会是浪费时间。语言的学习是一通百通的,因为用程序解决问题的方法、思想是共通的,只不过用不同语言实现而已。
(2)帮助学生明确目标。程序设计课程的学习不能以考试为最终目的,而应当把它当成一种技能来学习,以专业技能的培养、形成基础编程能力为核心目标。不能像中学时那样,学习所有课程的目的就是通过考试或取得好成绩,因为大学是专业学习,应结合自己的兴趣、特长及早树立目标,明确方向,自己将来想从事什么领域,软件开发、网络、硬件等等,有更具体方向就更好。然后要做的就是向着自己的方向前进,在方向相关的课程学习上就要花更多的精力、更多的课余时间,下更多的功夫,在这个方向上,应该做到比别人更强,这才是核心竞争力。笔者第一次课时总会问学生一个问题,你们觉得将来就业时,去面对单位招聘人员,他们心里最关心的问题是什么?并不是你的成绩单中有多少及格、多少优秀,或其它方面。其实大学这几年里只要把这个问题想好,将来面对招聘人员能回答就可以了。这个问题就是——你能做什么?
(3)须使学生明确正确的学习方法。课前预习,认真听课,课后复习,虽是老生常谈,但在程序设计课程的学习中确实非常重要。因为课程难度较大,完全不熟悉的话很难理解和跟上老师的进度。课前提前学习,然后带着问题来听课,注意力和重点放在这些问题上,自然听课效果会好得多。另外,必须强调动手的重要性。编程课程是以编程为目的,理论当然需弄清楚,这是前提。但编程课学的是什么?学的就是怎么写程序,理论知识不能应用到编程中,有何用呢?所以,学好编程的唯一方法就是编程。
(4)从教师这一方面来说,首先应该有认真负责的教学态度,有教学的热情。其次,应增加知识储备,不断学习,深入钻研,才能做到上课不慌,心中有底,融汇贯通,言而有物。虽然老师因为工作原因可能没有太多空闲时间,但也应适当编些程序,加强编程实力,保持水平状态。 (5)运用有效手段,改进和运用先进的教学方法。根据程序设计课程本身的特点,可以尝试采用如案例教学法、项目教学法等与以往不同的方法,可以尝试以任务驱动来改变传统的讲授方式,以演示先行,等等。虽然一开始可能不太习惯,或者效果不好不成功,但有尝试就有机会找到更好、更适合的教学方法,从而提高教学水平和教学效果,而甘于现状、不尝试是永远不会有任何改进和提高的。当然,教学方法方面,老师讲授课程时还应多分析、综合,联系前后知识甚至不同课程、不同学科的知识,做到收放自如。
(6)增强上机实践效果。因程序设计课程上机时间有限,每次布置的题量任务应适中,因学生能当堂完成的实验任务有限,可另外布置一些实验题,由学生课后完成。教师应精选题目,选择最合适、最有训练价值、最能体现训练目标的习题,有的老师每次实验课简单罗列本章后面的大堆课后习题而不加筛选,而学生不能迅速准确地了解和判断这些题目用到的知识点、方法、侧重点以及当前进度下的重点训练目标,难以挑选出合适的实验题来做。因此这种做法是不可取的,这是偷懒的做法。
(7)强调课外时间的利用。现在很多高校程序设计课程上机课时安排不够,即使要形成基本的编程能力,仅靠课内上机时间也是远远不够的,需要花费大量的课外时间,如果想要达到更高的水平还要花费更多的时间。别无他法。这一点需要让學生明白,有付出才有回报。
(8)作为任课教师,应明确程序设计类课程的培养核心:第一、形成基础的编程能力、实践动手能力;第二、不光是语言基础知识,更重要的是应有意识地培养学生的算法能力、用程序解决问题的方法、思想,像程序员一样思考问题;第三、培养兴趣,有时比学习知识或提高能力本身更重要;第四、在编程方面,找到自学的方法,学会自学,并形成习惯。这几方面能够让学生在大学后面几年的学习中都受益,并且在走上社会、走入职场后继续受益,终身受益。明确了核心目标,教师在教学中才能做到有的放矢,朝目标前进。
总之,程序设计课程的教学存在很多可以探讨的问题,本文仅仅窥见一斑。要取得更好的教学效果,还需要在教学理念、教学方法上做更多的努力和反思。
参考文献:
[1]单林娜. 面向对象程序设计方法的系统哲学[J].科学咨询(决策管理). 2008(02)
[2]刘晓妍、胡彦玲. 基于C++的面向对象程序设计教学改革与研究[J].电脑知识与技术(学术交流). 2007(03)
[3]徐凯、宋麦玲、薛思清. 项目驱动式案例教学法在“C程序设计”课程中的应用[J]. 长春理工大学学报(社会科学版).2011(11)
作者简介:
李亮(1978~),湖北宜昌市人,中南财经政法大学武汉学院,讲师,硕士,研究方向:软件工程。
关键词:程序设计;教学方法;能力培养
程序设计基础课程,如C语言等,是高校计算机学科的基础课程,对学生后继课程的学习、以及整个专业课程体系的学习成果影响很大。目前的普遍情况是课程教学效果不佳、学生课程完成后对能力素质的提高很有限。
一、程序设计课程教学中存在的问题及成因
(1)学生学习积极性不高,缺乏动力。主要原因是学习者缺乏明确的目标。不少学生缺乏对所学知识的认识,不知道学习这门课程的目的是什么,或有什么用。其想法就是学校安排了什么课程我们就学什么,只是按照习惯,以通过考试为目的。这种情况下的学习自然是被动的,没有主观能动性,缺乏动力。
(2)学生缺乏兴趣。首先,兴趣的培养和形成主要还是决定于个人。个人的先天因素、擅长和不擅长的方面、个性特点、后天的成长和学习环境、个人际遇和圈子等都决定了其兴趣发展的方向。其次,这和学生专业的选择有关。目前,学生进入大学的专业选择普遍具有盲目性,不论是家长还是社会导向上,只强调专业是否热门、是否好就业、是否能拿高薪。须知专业冷热几年河东几年河西,进校热门毕业冷门、从前的所谓冷门变得炙手可热的情况并不少见。况且任何专业都一样,再冷门的专业如果能力够强、钻研精深,都能有一番作为;再热门的专业,如果学得不好,懂一点皮毛而能力不足,一样找不到工作、拿不到高薪。一方面家长和社会导向如此,另一方面很多学生本人没有形成兴趣爱好,对将来的学习方向和发展方向一片茫然,没有认真思考过这个问题,没有明确的目标。再次,和课程设置有关,目前许多高校存在课程设置大而全,缺乏重点和集中,没有专注和重点培养的方向,导致有些学生对所有的课程都一视同仁地忽视甚至抵制,缺乏求知欲和兴趣。最后,和任课老师的教学态度、教学方法和能力也有一定關系。
(3)课程本身学习难度较大。每门课程都有其自身的特点,程序设计课程对学习者的逻辑思维、抽象思维能力、严谨性要求很高,这是由其自身特点决定的。前两个因素是学习者学习的外在动力和内在动力,如果两者都缺乏,则学无所成是必然的结果。
(4)只掌握理论,实际动手能力差,课程完成后编程基础能力较弱。有部分同学在学习这门课程时,上课听讲比较认真,理论知识掌握的还不错,对书本内容还比较熟悉,考试也能取得不错的成绩。遗憾的是课程完成后缺乏独立编程能力,编程基本功没有打好,动手编程比较困难。
(5)教师教学方法不太合理,不得当,比如传统的填鸭式教学。原因可能是多方面的:第一、备课不足,准备不充分,教材没有吃透;第二、按大纲、教材墨守成规、照本宣科,形成习惯,体现之一是各种教材中都或多或少存在一些错误、漏洞、不准确、不合理之处,但许多老师却视而不见,没有想法;第三、教师对专业知识的理解综合纵深有限,教学准备以及讲课过程中缺乏灵感,无法融汇贯通,在教学上没有自己的想法和见地。个人认为,有自己的想法和见地,哪怕是错误的、幼稚的,也比没有强,至少证明这位老师在思考和探索。第四、能力所限,普遍现象是教编程的老师本身平时不编程,或缺乏编程能力,所以教学演示时缺乏自信,害怕出现bug,难以随心所欲,对学生编程出现的问题也难以有效应对。
二、解决方案和思路
(1)课程伊始,应让学生充分理解所学为何物?课程学习的意义和重要性,对后继学习、课程的影响。应介绍所学程序设计语言和工具的应用领域,这可以让学生明白学会了这门语言能做什么。在目前市场上的实际应用热门程度,比如教师可以通过展示上个月最新的TIOBE社区排名以及年度环比,这样学生对所学语言的实用性以及市场应用前景趋势有直观的了解。以C语言为例,通过老师的分析,学生会认识到C语言的生命力长久,应用领域广泛,相较其它语言的优势和不可替代性,对数据结构、算法、C++、JAVA及其它后继课程的影响,这样学生心中自然就会引起重视,从而获得了外在的动力。再比如以JAVA为例,如果学生了解了它在国内开发的热门程度,如果能力达到一定水平就可以直接找工作,这样学生怎么会不产生学习动力呢?老师还可以分析,即便将来不打算用这种语言,打算学其他语言,也绝不会是浪费时间。语言的学习是一通百通的,因为用程序解决问题的方法、思想是共通的,只不过用不同语言实现而已。
(2)帮助学生明确目标。程序设计课程的学习不能以考试为最终目的,而应当把它当成一种技能来学习,以专业技能的培养、形成基础编程能力为核心目标。不能像中学时那样,学习所有课程的目的就是通过考试或取得好成绩,因为大学是专业学习,应结合自己的兴趣、特长及早树立目标,明确方向,自己将来想从事什么领域,软件开发、网络、硬件等等,有更具体方向就更好。然后要做的就是向着自己的方向前进,在方向相关的课程学习上就要花更多的精力、更多的课余时间,下更多的功夫,在这个方向上,应该做到比别人更强,这才是核心竞争力。笔者第一次课时总会问学生一个问题,你们觉得将来就业时,去面对单位招聘人员,他们心里最关心的问题是什么?并不是你的成绩单中有多少及格、多少优秀,或其它方面。其实大学这几年里只要把这个问题想好,将来面对招聘人员能回答就可以了。这个问题就是——你能做什么?
(3)须使学生明确正确的学习方法。课前预习,认真听课,课后复习,虽是老生常谈,但在程序设计课程的学习中确实非常重要。因为课程难度较大,完全不熟悉的话很难理解和跟上老师的进度。课前提前学习,然后带着问题来听课,注意力和重点放在这些问题上,自然听课效果会好得多。另外,必须强调动手的重要性。编程课程是以编程为目的,理论当然需弄清楚,这是前提。但编程课学的是什么?学的就是怎么写程序,理论知识不能应用到编程中,有何用呢?所以,学好编程的唯一方法就是编程。
(4)从教师这一方面来说,首先应该有认真负责的教学态度,有教学的热情。其次,应增加知识储备,不断学习,深入钻研,才能做到上课不慌,心中有底,融汇贯通,言而有物。虽然老师因为工作原因可能没有太多空闲时间,但也应适当编些程序,加强编程实力,保持水平状态。 (5)运用有效手段,改进和运用先进的教学方法。根据程序设计课程本身的特点,可以尝试采用如案例教学法、项目教学法等与以往不同的方法,可以尝试以任务驱动来改变传统的讲授方式,以演示先行,等等。虽然一开始可能不太习惯,或者效果不好不成功,但有尝试就有机会找到更好、更适合的教学方法,从而提高教学水平和教学效果,而甘于现状、不尝试是永远不会有任何改进和提高的。当然,教学方法方面,老师讲授课程时还应多分析、综合,联系前后知识甚至不同课程、不同学科的知识,做到收放自如。
(6)增强上机实践效果。因程序设计课程上机时间有限,每次布置的题量任务应适中,因学生能当堂完成的实验任务有限,可另外布置一些实验题,由学生课后完成。教师应精选题目,选择最合适、最有训练价值、最能体现训练目标的习题,有的老师每次实验课简单罗列本章后面的大堆课后习题而不加筛选,而学生不能迅速准确地了解和判断这些题目用到的知识点、方法、侧重点以及当前进度下的重点训练目标,难以挑选出合适的实验题来做。因此这种做法是不可取的,这是偷懒的做法。
(7)强调课外时间的利用。现在很多高校程序设计课程上机课时安排不够,即使要形成基本的编程能力,仅靠课内上机时间也是远远不够的,需要花费大量的课外时间,如果想要达到更高的水平还要花费更多的时间。别无他法。这一点需要让學生明白,有付出才有回报。
(8)作为任课教师,应明确程序设计类课程的培养核心:第一、形成基础的编程能力、实践动手能力;第二、不光是语言基础知识,更重要的是应有意识地培养学生的算法能力、用程序解决问题的方法、思想,像程序员一样思考问题;第三、培养兴趣,有时比学习知识或提高能力本身更重要;第四、在编程方面,找到自学的方法,学会自学,并形成习惯。这几方面能够让学生在大学后面几年的学习中都受益,并且在走上社会、走入职场后继续受益,终身受益。明确了核心目标,教师在教学中才能做到有的放矢,朝目标前进。
总之,程序设计课程的教学存在很多可以探讨的问题,本文仅仅窥见一斑。要取得更好的教学效果,还需要在教学理念、教学方法上做更多的努力和反思。
参考文献:
[1]单林娜. 面向对象程序设计方法的系统哲学[J].科学咨询(决策管理). 2008(02)
[2]刘晓妍、胡彦玲. 基于C++的面向对象程序设计教学改革与研究[J].电脑知识与技术(学术交流). 2007(03)
[3]徐凯、宋麦玲、薛思清. 项目驱动式案例教学法在“C程序设计”课程中的应用[J]. 长春理工大学学报(社会科学版).2011(11)
作者简介:
李亮(1978~),湖北宜昌市人,中南财经政法大学武汉学院,讲师,硕士,研究方向:软件工程。