一个Java教师兼程序员对学生学习Java的感触
我编程序已近10年了,学过汇编,Pascal/Object Pascal,C/C++,VB,Java等语言,也做过一些项目,现在教授Java课程。
讲课时,我做了个尝试,对Java语法不作为重点,而将重点放在培养学生掌握面向对象的基本分析设计方法与思想上,并扩充介绍了UML等东西,努力想向学生传授一些我认为有用的内容。一学期下来,通过笔试与上机考试相结合的方式,我发现了一些问题,也有一些想法,写出来,供大家讨论讨论:
1.学生们对Java语法普遍掌握得很好,有关语法的题目普遍都是高分;
2.考试在机房进行,除了不能相互抄袭,可以利用电子的和书本等各种资料来解决问题,一些学生很会寻找资料,他们懂得利用JDK帮助去查资料,而另一些只会翻课本和书,书上没有的就不会做了,就寻捷径抄别人的;就是查书也不一样,有的人一查就找到了,有的人考试了才在考场上去看书;
3.上机考试采用现场编程现场给分的方式,我发现学生们的差异程度太大了,一共三个小时的笔试和机考时间,最优秀的学生机考题(包括算法,GUI设计,OOP三大类)拿了满分,说明他们平时编程实践经验多,收集整理的可复用的代码也多,最差的就不说了,只会拿软盘将别人的程序COPY过来应付。
4.普遍对面向对象理论掌握很差。比如有一道问答题:请写出你对“对象一向对象二发消息”这一句话的理解”,但全班没有一个学生答出了“这句话的含义是对象一调用了对象二接口中的某个方法(或函数)”,上机题中有一个UML类图,一共有三个类,模拟出一个最简单的图书借阅系统,已有详细的接口说明,让学生现场上机编程,但最终只有一个学生正确地理解了整个系统并编出了实际代码。这说明大家平时不注意自己去学习有关面向对象的书籍,仅依赖于课堂上教师所讲的那部分内容,这是无法适应真正的软件开发工作的。
5.抽象思维的能力较弱。有一问答题:请写出你对Java中布局管理器功能的理解,并总结出用Java编写图形用户界面的基本步骤.
第一问好说,书上有。但第二问的回答就五花八门,有直接从书上抄一段代码的,也有将程序注释抄给我的,没有一个能从一个更高的角度与层次总结出基本的代码框架:
1)生成GUI组件
2)获取GUI容器对象引用
3)设置布局管理器
4)将组件加入容器中
不具备这种抽象概括的能力,看再多的程序也很难从这些程序代码中总结出共性的东西,也根本没办法理解那么多的程序设计理论到底是怎么回事,其实质是什么。
通过一学期的讲课,我感触很多。
1.难的会了,容易的就不难了。我原来专研于C++,后来转入Java,由于一直应用C++进行面向对象的分析设计和开发(OOA,OOD,OOP),所以对面向对象技术还是有一定把握的,语法上C++比Java复杂得多,而OO理论则两者相同,在学Java这门语言时我几乎没有遇到过大的困难,很少有不理解的地方。
所以,我建议大家学计算机时要从难处入手,才更能得到锻炼,再学其它容易的东西,就有一种轻松的感觉。
2.教学相长。不讲课不知道,虽然自己至少也写过十几万行代码了,但其实对好多东西还是没弄明白的,就希里糊涂地这么用了。另外,如何将自己会的东西讲出来,讲明白并让学生会用还真不容易,我几乎每节课必讲OO,但最后大家还是没掌握;都反映难理解,不会用,这真是个难题,我个人学OO,基本上是编程中结合书本再自己悟出来的,不是靠老师都的,我讲出来的思想和方法大家都听得懂,可给出一个具体的课题,学生就不知道如何应用了。
3.不要追太多的新技术。算法,按规范编程,面向对象的基础理论,基本软件设计方法,用计算机的思路来寻找一个实际问题可能的解决方案的思维方法都是最重要的,这些东西在学校学习中是应该扎扎实实花力气掌握的。热衷于学什么J2EE,.net之类新技术,而不重视培养做为一名软件工程师的基本功,就象在浮沙上盖高楼。
4.重视基本功。一个程序员的基本功包括按规范编程的能力,一定的设计能力,寻找资料的能力,还有一个更重要的调试程序找BUG的能力。有的学生给他一个20行的程序,他就是找不出错误所在,面对着一批出错信息眼花缭乱,更别提更正了。
5.学习主动性,创造性不强,不习惯自己去探索,老要老师分配任务。试想想,最早Linux是学校老师布置的任务吗?我自已觉得真正有用的东西都是自学来的,而且感到我过去被中国教育体制培养了多年,头脑都僵化了,缺乏创新精神与能力,一时变不过来了。我感到悲哀的是现在的学生再重复我的道路,这样下去,中国软件会有领先世界的一天吗?
高校的程序设计课程有很多毛病,学校、教师和学生都存在不足之处,其结果是教育产品不合格,学生毕业不能适应软件公司的基本要求,教师也是从学生中来的,这是个怪圈。今年学生毕业很多,工作难找,好象人才过剩,但事实上,真正能达到可以马上进入真实软件开发基本水平的,我估计也就5%到10%左右罢,所以中国软件人才还是极度缺乏的。
呵呵,一点感触,写出来,供大家议议。