摘要:面向对象程序设计是高等院校计算机专业教学体系中的一门主干课程,本文以校级教学改革为背景,针对目前该课程教学中存在的问题,探讨了如何在课程教学过程中促进学生的创新思维,培养学生的创新意识及提高学生的创新能力,并提出了一些个人想法。
关键词:面向对象;教学改革;创新
1. 引言
随着计算机技术的飞速发展,计算机融入到了生活与工作的各个方面,企业对计算机人才的需求越来越大;当前,普通高校计算机专业人才培养与社会需求存在着严重的不匹配,一方面许多毕业生因缺乏基本的实践能力找不到理想工作,另一方面很多企业招不到合适的人才,计算机专业毕业生就业率“屡创”新低。针对这一现象,很多高校提出了培养创新型计算机人才的目标。面向对象程序设计课程是计算机专业主干课程之一,在整个教学体系中占据非常重要的地位。面向对象程序设计课程要求学生理解面向对象的基本概念,掌握面向对象程序设计技术,以面向对象的思维方法去解决现实问题。课程需要学生以创新的思维去理解现实世界与面向对象空间的映射关系;对学生创新能力的培养也是课程的目标之一,只有这样才能使得学生具有设计实现综合大型程序的实践能力。该课程在实际教学过程中存在很多问题,一方面许多同学感觉课程概念太多,抽象难以理解,产生了厌学情绪,基本的知识点无法掌握,更谈不上创新能力的培养;另一方面学生没有建立好课程知识体系,缺乏实践环节,导致所学的知识点孤立、片面无法有效的组织应用在一起,从而产生课程无用的想法。本文分析了上述问题出现的原因,结合教学实践,提出了一些针对性的解决方法。
2. 目前教学中存在的问题
(一)不注重学生课程体系结构的建立
面向对象程序设计课程教材的第一章介绍课程的一些重要概念,通常概念部分的学习比较枯燥、抽象,“急功近利”的错误思想使得很多学生认为学习概念对实践能力的培养没有帮助。因此在教学过程中教师容易受到这些不利因素的影响,从而忽略概念的讲解,这样导致学生没有建立完整的课程结构体系,在后期的学习,不注重相关知识点之间的联系,孤立片面学习一些概念和语法规则,因而影响了整个课程的学习效率和效果。
(二)忽略学生个体背景,学生主体地位
在进行面向对象程序设计课程教学时,教师忽略学生已有的知识体系,孤立地提出新的概念,使得学生对于新概念的认知感觉困难。增加了课程学习的难度。
(三)课堂教学灌输内容多、启发少
由于面向对象程序设计课程比较抽象,存在课时少,概念多,知识体系复杂等问题,教师在教学过程中一味的按照设计好的进度教学,课堂以讲述为主,忽略学生主体地位,虽然讲述知识体系完整,但是学生真正理解的少,更谈不上创新思维的培养,创新能力的提高。
(四)学生实际编程能力没有提高。
学生学习的知识点片面,孤立,没有通过实践环节,无法将其有效的组合在一起,对于所学的知识不能有效地应用,容易遗忘,产生无用的想法。创新能力的提高必须加强课程实践环节。
3.以培养创新人才为目标的教学方法的探讨。
(一)建立学生完整的认知体系
面向对象程序设计概念的讲解很重要,通过讲述概念之间的联系可以在课程开始帮助学生建立一个整体的面向对象的思维体系,因此概念的讲述不能减少,更不能省略,但是讲述概念的时候,要注重实际与理论相结合,不能简单的重复书本上的概念知识。例如在讲述类的封装性时,我们可以以收音机为例。收音机是一个封装体,内部电路对于普通用户而言是封装隐藏起来的,这样对其内部电路起到一个保护作用,因此封装使得个体组合在一起,隐藏使其内部的元素更安全;然而收音机并非一个完全的封装体,它还留有对外的接口——外部按钮,否则它将没有用途。通过形象的类比,既不会使学生对于新的概念感到陌生,又能启发学生的创新思维,有助于后期学习掌握类的定义,类的封装性等。
对于类的多态性的概念,我们可以从学生熟知的环境出发,引入Person类,及基于Person类的两个派生类——学生类和老师类,在Person类中有一个work行为,同样学生类与教师类中都有work行为,对于Person类中的work行为没有办法给出具体的定义——可以提出纯虚函数的概念,而学生类中的work行为是学习,教师类中的work行为是教学,学生能很快理解多态性的概念。
(二)建构主义指导课程教学
建构主义认为,学生并不是空着脑袋走进教室的,在教学过程中要注重从学生已有的知识体系出发,在已有的知识体系基础上帮助他们建立新的知识体系,而不是直接把新的概念灌输给学生。一般学生是在学习完C之后,进行面向对象程序设计课程的学习,C语言中已经建立的知识体系,可以帮助学生进入C++面向对象程序设计的相关领域。例如在讲述面向对象的特性之一——封装性的时候,我们会引入类的概念,在C语言中有结构的概念,类和结构在定义形式非常类似,可以从C语言中结构的定义出发,引入到C++中对结构概念的扩充——结构内不仅可以包含数据成员,还可以包含函数成员,接下来用class关键字替代struct关键字,就可以引出类的定义;然后将针对结构的操作方法直接应用于类,提示学生思考操作方法的可行性,由于结构中的成员默认的属性都是公有的,而类中的成员默认的属性都是私有的,所以针对结构的操作不能直接照搬到类,通过这样从已知到未知,逐步深入,慢慢学生会掌握类的定义,理解类的封装性等一系列概念。
(三)课堂教学采用启发式,互动式教学。
培养学生的创新能力,要求教师在课堂上注重启发式教学,不要一味的对学生进行“填鸭式”的灌输。在教学过程中我们不能再仅仅教会学生如何套用语言的语法,照葫芦画瓢验证教材和课堂讲述的内容,而应该提高学生对面向对象思想,方法的理解,全面掌握面向对象技术,并熟练应用之。学习新的概念以后,教师可以针对新的概念列举一些相关的案例,设计一些问题,通过这种互动环节,不仅活跃了课堂的气氛,促使学生主动学习,同时也可以强化学生对于新概念的理解,使学生达到举一反三的程度;教师可以根据回答的情况,掌握学生学习的效果,更好的把握课程的教学效果和教学进度;同时可以提出深一层的问题,引导学生对新的未知知识的探索,培养学生的自学能力和创新能力。
(四)项目实践与课程教学同步
项目实践可以增强学生自学能力,促使学生从被动学习到主动求知,提高学生的创新能力。在2010年大学生就业报告中,09届大学毕业生认为高校教育中最应该改进的方面是实习实践不够。
项目实践是面向对象程序设计课程教学过程中不可缺少的一个环节,课堂中教师的讲述可以让学生牢牢掌握面向对象程学设计方法的基本概念,及其知识结构体系,项目实践可以帮助学生学以致用,建立完整的学科体系,而不是片面的,孤立的知识点;解决课程枯燥难学的问题,激发学生学习兴趣;将项目引入教学,让学生有更多的项目实践经历,学生不仅拥有扎实的理论基础,还具有较强的动手能力,只有动手能力的提高,才能真正提高学生的创新能力。