论文部分内容阅读
[摘要]本文以提高软件类专业学生的实践能力和创新意识为目的,首先分析了当前程序设计教学中存在的问题,介绍了建构主义的核心内容;然后,探讨了在程序设计教学中运用建构主义学习的方法;最后,讨论了在当前的条件下,如何基于建构主义改进和完善程序设计能力培养的实践教学体系。
[关键词]建构主义 程序设计教学 实践教学改革
一、引言
近年来,高校毕业生就业难已成为一个很受关注的社会现象,特别是软件类专业的就业形势就更加严峻;与此形成鲜明对比的是,软件行业对人才的渴求却难以满足[1]。出现这一问题的原因虽然和高等教育理论教学体系有一定关系,但问题的根源还是在现行的实践教学体系上。IT人才的培养以传统学科体系下的专业教育为主,过度强调理论,轻视实践,过度注重知识的传授,而对能力、素质的培养还没有完整、有效的方法。在IT教育中,主动探索、主动学习的能力尤为重要,在现行的培养模式下很难培养出具有创造性的能力型人才。所以要改变传统的“以教师为中心”教学模式,革新实践教学体系,为学生主动探索知识、自主锻炼能力提供丰富的资源,促使学生从被动学习向主动学习转化[2],这正是现代教学理论——建构主义学习理论所倡导的。
二、程序设计教学存在的问题
1.课程内容重语法、轻算法
由于当前的程序设计类课程教学是以讲授语法体系的主线,普遍采用的是“理论课上讲语法、实践课上试例题”的教学模式。在这种模式下,教师把教学重点放在语法规则的解释上,没有放在程序设计的思想和方法上,其后果是把程序设计课讲成了程序语言课,学生也不能区分程序语言和程序设计这两者之间有何不同。由于教师缺少对分析问题和解决问题的方法的传授,学生只掌握到一些语法规则和基本的程序设计方法,直接导致学生普遍反映课程枯燥难懂、不知学为何用。
2.实验内容重验证、轻设计
各学校在以《C程序设计》、《数据结构》和《算法分析》为代表的程序设计类课程中一般都有相当数量的实践教学学时,为了加深学生对理论教学获得知识的理解,这些实践环节安排的往往都是对基础性理论知识进行验证的内容,学生的实验课普遍成为以验证为目的工作,没有把学到的编程知识与实际应用紧密地联系起来,造成理论学习和实践环节的脱节。如何在比较有限的课内实践教学环节中适当开展设计性、综合性教学内容,是高校教师普遍觉得很难解决的问题。
3.实践教学方法过于被动
在当前的程序设计类实践教学中普遍采用的是传统的教学模式,即教师布置实验习题,学生上机编程并调试通过;这实质上是一种被动的教学方法,因为学生只是参照书上的例题来编程序,遇到问题自己想办法解决的很少。
4.没有激发学生的编程兴趣
任何以理论知识体系为教学路线的教学方法,都不能充分的激发学生解决实际问题的冲动,也就不能很好地完成培养学生分析问题和解决问题能力这一目标。如果在实践教学中能够将理论内容与实际应用结合起来就会收到很好的效果。
三、建构主义学习的思想原则
1.建构主义学习理论
瑞士学者皮亚杰等人以认知学习理论为基础建立了建构主义学习理论,其基本观点是: 人是在与周围环境的交互中逐步建构起关于外部世界的知识,从而使自身认知结构得到发展的[3]。建构主义理论的内容很丰富,不仅形成了重要的学习方法,对新的教学理论的发展也有重要的指导作用。
2.建构主义理论的基本思想
1)倡导以学生为中心
建构主义是一种“以学生为中心”的理论,不仅强调学生要由知识的灌输对象和被动接受者转变为学习意义的主动建构者、知识获取的主体,而且要求任课教师的日常教学行为要从灌输、传授知识转变为帮助、促进学生主动获取和构建知识。所以,建构主义既强调学生的认知主体地位,又重视发挥教师的指导作用。这种师生关系突出强调的是二者的平等地位,学生必须得到足够多的机会来表达自己学习过程中的情感和思想。
2)通过情境体验知识
要通过建构适当的情境来帮助学生对所学的知识内容进行主动建构,创设合适的情境是建构主义学习的最重要内容之一,因为建构主义认为学习活动的最终目的不是让学生死记硬背“知识”,而是促进学生主动思考和理解所学知识,并能真正运用它们解决实际问题。
3)新形态的学习能力
建构主义的教学过程必需要摒弃聆听、练习等单向的“传授”,而要采用“谈中学、做中懂、练中通”等多元交互的教学方式。学生获得知识的快慢、多少,不是由其理解和记忆教师授课内容的能力决定的,而是受制于其根据自身已有知识去建构待学知识的能力,因此,教师只有帮助学生掌握新形态的学习能力,才能指导他们顺利地进行知识建构。
4)充分调动各种资源支持知识的建构
教师可以通过CAI课件、网络等新的技术手段来构建与学生所学知识背景相符合的真实环境,学生可以在这个环境中利用各种资源和工具开展各种知识建构的活动,以便达到主动学习中最理想的效果。
5)依靠协作促进知识的建构
以师生的平等关系为基础,学习的过程成为讨论、协商并最终达成共识的过程,最大限度地发挥学生的主动性来完成规定的学习任务。
四、基于建构主义的程序设计教学过程
在程序设计能力培养的教学活动中引入建构主义理论,可以真正提高学生的应用能力,也非常有助于培养他们的创造性思维,从根本上提高教学质量。
1.程序设计能力培养的新型教学模式
基于建构主义的程序设计教学过程就是要坚持以学生为中心,在教学过程的每一个环节都考虑学生当前阶段的认知规律和特点,激发其学习兴趣,帮助学生形成主动学习的动机。教师通过创设情境,帮助学生把当前的学习内容和自己已经掌握的知识相联系,推进学生理解当前知识建构的意义;教师要监督学习的整个过程,控制知识建构的方向发展,引导学生实现主动地、创造性地学习。教学内容的安排以任务驱动的方式突出动手实践,程序设计的基本概念和方法通过实例讲授,授课重点放问题分析上,突出模型构建和算法设计,强化学生分析、解决问题的能力,培养学生的创新能力,激发学生的创新精神[4]。
2.培养理性思维,进行理性实践
程序设计就是把人们解决问题的思路用计算机能够理解的语法形式(程序)表现出来,并通过程序的运行来寻找问题的答案。因此,在教学中,我们将程序设计的算法与人的解题思路进行对比,引导学生进行理性思维,寻找两者间的联系,进而主动总结和建构出程序设计的理论和规律,并在具体的实践中能够举一反三。学生们都明白:理论很重要,但实践更重要,要在理论指导下进行理性实践。在理性思维和理性实践的指导下,学生成功地解决了实际问题,掌握了算法的方法和技巧,容易培养出成就感,进而对编程产生更浓厚的兴趣,有利于克服畏难情绪,学习过程就会更加自信和从容。
3.强化动手实践
程序设计是技巧性很高的脑力劳动,因此,在教学过程中,必须让学生能够主动思考、积极动手,鼓励他们在自己的实践中发现问题、解决问题,引导他们理顺新旧知识之间的线索,并认真思考这种联系的意义,最终建构出自己的知识体系。教师每次课都拿出一半以上的时间鼓励和支持学生动手实践,教师不会直接回答学生遇到的问题,而是启发他们自己寻找答案,让学生自己进行个性化的学习,主动对所学知识进行建构,这样可以显著提高他们的学习效率。为了因材施教,教师还可以将有兴趣和有潜力的学生组织起来,引导他们进行“协作式”、“探究式”的学习,开拓学生的创新性思维,进一步提高知识建构的效率和质量。
4.利用网络培养自主学习能力
比尔盖茨说过:“Internet将成为最好的大学。”网络不仅是最大的图书馆,还为学生进行自主学习提供了一个很好的平台。利用网络可以培养学生获取信息、交流信息和处理信息的能力,还有助于培养学生进行批判性思维的习惯。因此,教师可以设计一些能够调动学生学习积极性的问题,指导他们通过网络获取知识、提高能力。
综上所述,在基于建构主义的程序设计教学过程中,教师是教学的组织者、知识建构的促进者;学生则在积极、主动、快乐中的完成知识的获取,并具备了很强的应用知识的能力。
五、基于建构主义的程序设计能力培养实践体系
IT类专业学生程序设计能力可分为三个层次,即初级层次、中级层次和高级层次。初级层次一般可以通过一门程序设计语言(如C语言)来培养,学习基本的程序设计方法、调试和测试方法等;中级层次则重点进行数据结构等方面的学习,对常见数据存储方式和组织方式以及常见的算法进行研究,培养出一定的系统分析能力和算法实现能力;高级层次则重点在算法策略的学习上,以经典的算法理论和思想为依据,通过对实际问题的分析,培养算法设计能力,训练复杂问题的解决能力。这三个层次之间是具有明显延续性的递进关系,而每个层次的培养过程又可以分成“入门”、“提高”、“创新”三个阶段。
由于各个阶段培养的目标不同,需要采用不同的教学方法和实践方法来支撑。针对程序设计能力培养具有层次化和阶段化的特点,我们基于建构主义设计了程序设计能力培养实践体系(如表1所示),除了课内实验之外,重点在于建构特定的课外环境,促进学生自主的学习。
表1:程序设计能力培养实践教学体系
学生在刚进入大一的时候,学习目的、方法、意愿都比较模糊,这个阶段的关键是要建立起学习兴趣。从教育心理学的角度来说,兴趣是一个人倾向于认识、研究获得某种知识的心理特征,是可以推动人们求知的一种内在力量。为此,我们在程序设计教学开始阶段,安排一些有趣的实例(五子棋、黑白棋、梅花棋、贪吃蛇等七种游戏教学案例)。通过这些实例的有效引入,以任务驱动方式让学生了解程序的实用性,培养学生的学习主动性和积极性。在学生具有一定程序设计基础之后,创设情境,引导学生组成课外小组设计一些简单的游戏,锻炼学生编程的基本技能。
学生在二、三年级的时候进入到能力培养的中级层次,可以鼓励学生在游戏编写的道路上更进一步,创设新的情境:进行“游戏对战”。即为学生提供一个网络平台,让学生编写的游戏程序在上面一较高下——自己的程序打败别人的程序!我们的实践表明,这种方式可以极大地激发学生的编程兴趣,甚至可将一些曾经沉迷于玩游戏的学生转变为沉迷于编游戏。在这个阶段,我们也鼓励学生适当进入科研和学科竞赛领域。
学生进入高年级后,经过前面基础学习和训练,已具备较强的学习能力和软件开发能力,此时可以创设更多的情境,鼓励他们积极参加各种综合应用性的软件设计与开发工作,如参与学校的科研项目,承担其中的部分工作,也可到相关软件开发公司进行专业实践,参与公司的软件开发工作,以此来提高实践能力,还可由学生自己组成团队,在专业教师的指导下,承接有关单位的软件项目,进行实战训练。我们也组织实践能力强的学生积极参加各类学科竞赛活动,学科竞赛对学生的自学能力、应变能力、良好的心理素质、求真务实的科学态度、使命感和责任感的形成上都有很大帮助[5]。通过适当地应用竞赛平台,可以使我们的专业教学更趋科学化、规范化,可以开拓学生视野,促进创新型人才的培养,提高学生的就业竞争力。学科竞赛成绩能最直接地体现学生培养的效果,我校IT类专业学生近两年在程序类竞赛中获得了可喜的成绩,在2010年获得省级奖励27次、国家级奖励6次;2011年获得省级奖励45次、国家级奖励8次,这些成绩的取得从一个侧面验证了我们建立的实践教学体系的有效性。
六、结束语
经过几年教学实践证明,我们基于构建主义设计的这种实践教学体系收到了良好的效果,使得学生的程序设计能力、创新意识和自信心都得到了很大的提高,为其毕业后迅速进入软件企业奠定了坚实基础。该体系既是提高学生软件开发能力的有效方法,同时也为专业教学管理人员提供了一种强化实践教学的新思路。
[参考文献]
[1]任自然,赵雪.软件产业人才需求与软件专业大学生就业[J].辽宁工程技术大学学报(社会科学版),2008,(10): 107-109.
[2]庞维国.自主学习—学与教的原理和策略[M].华东师范大学出版社, 2004.
[3]何克抗.建构主义革新传统教学的理论基础[J].电化教育研究,1997,(3):28-33.
[4]张莲春,尹敬勉.任务驱动教学法在教学中的应用探讨[J].中国校外教育,2009,(7):56-58.
[5]孙大烈,车万翔.ACM竞赛与学生综合实践能力培养[J].计算机教育, 2009,(19):12-14.
(作者单位:东北石油大学 黑龙江大庆)
[关键词]建构主义 程序设计教学 实践教学改革
一、引言
近年来,高校毕业生就业难已成为一个很受关注的社会现象,特别是软件类专业的就业形势就更加严峻;与此形成鲜明对比的是,软件行业对人才的渴求却难以满足[1]。出现这一问题的原因虽然和高等教育理论教学体系有一定关系,但问题的根源还是在现行的实践教学体系上。IT人才的培养以传统学科体系下的专业教育为主,过度强调理论,轻视实践,过度注重知识的传授,而对能力、素质的培养还没有完整、有效的方法。在IT教育中,主动探索、主动学习的能力尤为重要,在现行的培养模式下很难培养出具有创造性的能力型人才。所以要改变传统的“以教师为中心”教学模式,革新实践教学体系,为学生主动探索知识、自主锻炼能力提供丰富的资源,促使学生从被动学习向主动学习转化[2],这正是现代教学理论——建构主义学习理论所倡导的。
二、程序设计教学存在的问题
1.课程内容重语法、轻算法
由于当前的程序设计类课程教学是以讲授语法体系的主线,普遍采用的是“理论课上讲语法、实践课上试例题”的教学模式。在这种模式下,教师把教学重点放在语法规则的解释上,没有放在程序设计的思想和方法上,其后果是把程序设计课讲成了程序语言课,学生也不能区分程序语言和程序设计这两者之间有何不同。由于教师缺少对分析问题和解决问题的方法的传授,学生只掌握到一些语法规则和基本的程序设计方法,直接导致学生普遍反映课程枯燥难懂、不知学为何用。
2.实验内容重验证、轻设计
各学校在以《C程序设计》、《数据结构》和《算法分析》为代表的程序设计类课程中一般都有相当数量的实践教学学时,为了加深学生对理论教学获得知识的理解,这些实践环节安排的往往都是对基础性理论知识进行验证的内容,学生的实验课普遍成为以验证为目的工作,没有把学到的编程知识与实际应用紧密地联系起来,造成理论学习和实践环节的脱节。如何在比较有限的课内实践教学环节中适当开展设计性、综合性教学内容,是高校教师普遍觉得很难解决的问题。
3.实践教学方法过于被动
在当前的程序设计类实践教学中普遍采用的是传统的教学模式,即教师布置实验习题,学生上机编程并调试通过;这实质上是一种被动的教学方法,因为学生只是参照书上的例题来编程序,遇到问题自己想办法解决的很少。
4.没有激发学生的编程兴趣
任何以理论知识体系为教学路线的教学方法,都不能充分的激发学生解决实际问题的冲动,也就不能很好地完成培养学生分析问题和解决问题能力这一目标。如果在实践教学中能够将理论内容与实际应用结合起来就会收到很好的效果。
三、建构主义学习的思想原则
1.建构主义学习理论
瑞士学者皮亚杰等人以认知学习理论为基础建立了建构主义学习理论,其基本观点是: 人是在与周围环境的交互中逐步建构起关于外部世界的知识,从而使自身认知结构得到发展的[3]。建构主义理论的内容很丰富,不仅形成了重要的学习方法,对新的教学理论的发展也有重要的指导作用。
2.建构主义理论的基本思想
1)倡导以学生为中心
建构主义是一种“以学生为中心”的理论,不仅强调学生要由知识的灌输对象和被动接受者转变为学习意义的主动建构者、知识获取的主体,而且要求任课教师的日常教学行为要从灌输、传授知识转变为帮助、促进学生主动获取和构建知识。所以,建构主义既强调学生的认知主体地位,又重视发挥教师的指导作用。这种师生关系突出强调的是二者的平等地位,学生必须得到足够多的机会来表达自己学习过程中的情感和思想。
2)通过情境体验知识
要通过建构适当的情境来帮助学生对所学的知识内容进行主动建构,创设合适的情境是建构主义学习的最重要内容之一,因为建构主义认为学习活动的最终目的不是让学生死记硬背“知识”,而是促进学生主动思考和理解所学知识,并能真正运用它们解决实际问题。
3)新形态的学习能力
建构主义的教学过程必需要摒弃聆听、练习等单向的“传授”,而要采用“谈中学、做中懂、练中通”等多元交互的教学方式。学生获得知识的快慢、多少,不是由其理解和记忆教师授课内容的能力决定的,而是受制于其根据自身已有知识去建构待学知识的能力,因此,教师只有帮助学生掌握新形态的学习能力,才能指导他们顺利地进行知识建构。
4)充分调动各种资源支持知识的建构
教师可以通过CAI课件、网络等新的技术手段来构建与学生所学知识背景相符合的真实环境,学生可以在这个环境中利用各种资源和工具开展各种知识建构的活动,以便达到主动学习中最理想的效果。
5)依靠协作促进知识的建构
以师生的平等关系为基础,学习的过程成为讨论、协商并最终达成共识的过程,最大限度地发挥学生的主动性来完成规定的学习任务。
四、基于建构主义的程序设计教学过程
在程序设计能力培养的教学活动中引入建构主义理论,可以真正提高学生的应用能力,也非常有助于培养他们的创造性思维,从根本上提高教学质量。
1.程序设计能力培养的新型教学模式
基于建构主义的程序设计教学过程就是要坚持以学生为中心,在教学过程的每一个环节都考虑学生当前阶段的认知规律和特点,激发其学习兴趣,帮助学生形成主动学习的动机。教师通过创设情境,帮助学生把当前的学习内容和自己已经掌握的知识相联系,推进学生理解当前知识建构的意义;教师要监督学习的整个过程,控制知识建构的方向发展,引导学生实现主动地、创造性地学习。教学内容的安排以任务驱动的方式突出动手实践,程序设计的基本概念和方法通过实例讲授,授课重点放问题分析上,突出模型构建和算法设计,强化学生分析、解决问题的能力,培养学生的创新能力,激发学生的创新精神[4]。
2.培养理性思维,进行理性实践
程序设计就是把人们解决问题的思路用计算机能够理解的语法形式(程序)表现出来,并通过程序的运行来寻找问题的答案。因此,在教学中,我们将程序设计的算法与人的解题思路进行对比,引导学生进行理性思维,寻找两者间的联系,进而主动总结和建构出程序设计的理论和规律,并在具体的实践中能够举一反三。学生们都明白:理论很重要,但实践更重要,要在理论指导下进行理性实践。在理性思维和理性实践的指导下,学生成功地解决了实际问题,掌握了算法的方法和技巧,容易培养出成就感,进而对编程产生更浓厚的兴趣,有利于克服畏难情绪,学习过程就会更加自信和从容。
3.强化动手实践
程序设计是技巧性很高的脑力劳动,因此,在教学过程中,必须让学生能够主动思考、积极动手,鼓励他们在自己的实践中发现问题、解决问题,引导他们理顺新旧知识之间的线索,并认真思考这种联系的意义,最终建构出自己的知识体系。教师每次课都拿出一半以上的时间鼓励和支持学生动手实践,教师不会直接回答学生遇到的问题,而是启发他们自己寻找答案,让学生自己进行个性化的学习,主动对所学知识进行建构,这样可以显著提高他们的学习效率。为了因材施教,教师还可以将有兴趣和有潜力的学生组织起来,引导他们进行“协作式”、“探究式”的学习,开拓学生的创新性思维,进一步提高知识建构的效率和质量。
4.利用网络培养自主学习能力
比尔盖茨说过:“Internet将成为最好的大学。”网络不仅是最大的图书馆,还为学生进行自主学习提供了一个很好的平台。利用网络可以培养学生获取信息、交流信息和处理信息的能力,还有助于培养学生进行批判性思维的习惯。因此,教师可以设计一些能够调动学生学习积极性的问题,指导他们通过网络获取知识、提高能力。
综上所述,在基于建构主义的程序设计教学过程中,教师是教学的组织者、知识建构的促进者;学生则在积极、主动、快乐中的完成知识的获取,并具备了很强的应用知识的能力。
五、基于建构主义的程序设计能力培养实践体系
IT类专业学生程序设计能力可分为三个层次,即初级层次、中级层次和高级层次。初级层次一般可以通过一门程序设计语言(如C语言)来培养,学习基本的程序设计方法、调试和测试方法等;中级层次则重点进行数据结构等方面的学习,对常见数据存储方式和组织方式以及常见的算法进行研究,培养出一定的系统分析能力和算法实现能力;高级层次则重点在算法策略的学习上,以经典的算法理论和思想为依据,通过对实际问题的分析,培养算法设计能力,训练复杂问题的解决能力。这三个层次之间是具有明显延续性的递进关系,而每个层次的培养过程又可以分成“入门”、“提高”、“创新”三个阶段。
由于各个阶段培养的目标不同,需要采用不同的教学方法和实践方法来支撑。针对程序设计能力培养具有层次化和阶段化的特点,我们基于建构主义设计了程序设计能力培养实践体系(如表1所示),除了课内实验之外,重点在于建构特定的课外环境,促进学生自主的学习。
表1:程序设计能力培养实践教学体系
学生在刚进入大一的时候,学习目的、方法、意愿都比较模糊,这个阶段的关键是要建立起学习兴趣。从教育心理学的角度来说,兴趣是一个人倾向于认识、研究获得某种知识的心理特征,是可以推动人们求知的一种内在力量。为此,我们在程序设计教学开始阶段,安排一些有趣的实例(五子棋、黑白棋、梅花棋、贪吃蛇等七种游戏教学案例)。通过这些实例的有效引入,以任务驱动方式让学生了解程序的实用性,培养学生的学习主动性和积极性。在学生具有一定程序设计基础之后,创设情境,引导学生组成课外小组设计一些简单的游戏,锻炼学生编程的基本技能。
学生在二、三年级的时候进入到能力培养的中级层次,可以鼓励学生在游戏编写的道路上更进一步,创设新的情境:进行“游戏对战”。即为学生提供一个网络平台,让学生编写的游戏程序在上面一较高下——自己的程序打败别人的程序!我们的实践表明,这种方式可以极大地激发学生的编程兴趣,甚至可将一些曾经沉迷于玩游戏的学生转变为沉迷于编游戏。在这个阶段,我们也鼓励学生适当进入科研和学科竞赛领域。
学生进入高年级后,经过前面基础学习和训练,已具备较强的学习能力和软件开发能力,此时可以创设更多的情境,鼓励他们积极参加各种综合应用性的软件设计与开发工作,如参与学校的科研项目,承担其中的部分工作,也可到相关软件开发公司进行专业实践,参与公司的软件开发工作,以此来提高实践能力,还可由学生自己组成团队,在专业教师的指导下,承接有关单位的软件项目,进行实战训练。我们也组织实践能力强的学生积极参加各类学科竞赛活动,学科竞赛对学生的自学能力、应变能力、良好的心理素质、求真务实的科学态度、使命感和责任感的形成上都有很大帮助[5]。通过适当地应用竞赛平台,可以使我们的专业教学更趋科学化、规范化,可以开拓学生视野,促进创新型人才的培养,提高学生的就业竞争力。学科竞赛成绩能最直接地体现学生培养的效果,我校IT类专业学生近两年在程序类竞赛中获得了可喜的成绩,在2010年获得省级奖励27次、国家级奖励6次;2011年获得省级奖励45次、国家级奖励8次,这些成绩的取得从一个侧面验证了我们建立的实践教学体系的有效性。
六、结束语
经过几年教学实践证明,我们基于构建主义设计的这种实践教学体系收到了良好的效果,使得学生的程序设计能力、创新意识和自信心都得到了很大的提高,为其毕业后迅速进入软件企业奠定了坚实基础。该体系既是提高学生软件开发能力的有效方法,同时也为专业教学管理人员提供了一种强化实践教学的新思路。
[参考文献]
[1]任自然,赵雪.软件产业人才需求与软件专业大学生就业[J].辽宁工程技术大学学报(社会科学版),2008,(10): 107-109.
[2]庞维国.自主学习—学与教的原理和策略[M].华东师范大学出版社, 2004.
[3]何克抗.建构主义革新传统教学的理论基础[J].电化教育研究,1997,(3):28-33.
[4]张莲春,尹敬勉.任务驱动教学法在教学中的应用探讨[J].中国校外教育,2009,(7):56-58.
[5]孙大烈,车万翔.ACM竞赛与学生综合实践能力培养[J].计算机教育, 2009,(19):12-14.
(作者单位:东北石油大学 黑龙江大庆)