当前位置: 技术问答>java相关
一个Java教师兼程序员对学生学习Java的感触
来源: 互联网 发布时间:2017-04-10
本文导语: 我编程序已近10年了,学过汇编,Pascal/Object Pascal,C/C++,VB,Java等语言,也做过一些项目,现在教授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%左右罢,所以中国软件人才还是极度缺乏的。
呵呵,一点感触,写出来,供大家议议。
讲课时,我做了个尝试,对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%左右罢,所以中国软件人才还是极度缺乏的。
呵呵,一点感触,写出来,供大家议议。
|
楼主对教学的认真程度确实值得人敬仰
不过我对楼主的教学还是有点不敢苟同
人与人之间肯定存在差异,不管在哪一方面
所以你所说的现象是可以理解的,你不可能要求每个人都能达到你的要求
你将教学重点放在培养学生掌握面向对象的基本分析设计方法与思想上
从这一点上来说,你的出发点是好的
但事实上你并不能得到预期的效果
人占大部分都是平庸的,从你提到你的学生,多数应都是这样
你希望他们学到面向对象的基本分析设计方法与思想
这是抽象一级的东西,一般人对抽象的理解远要低于现实
这大大增加了学习难度,只有极少部分人能吸收
大部分人被填了入去没消化,部分人对此抗拒
这样就形成你你所说的现象了
这都正如你所说的学习从难处入手
我认为你作为一个老师对这个问题要折衷
你应尽可能使更多的学生学到他所需的知识
而不能盲目要求,牺牲了多数人
人对现实的接受程度比抽象要好很多
你应授予他们基本的东西后再提炼升级
如你先教他们学好运用JAVA语言,再从中深入面向对象思想
做到深入浅出,这样才能有好的较果
不过我对楼主的教学还是有点不敢苟同
人与人之间肯定存在差异,不管在哪一方面
所以你所说的现象是可以理解的,你不可能要求每个人都能达到你的要求
你将教学重点放在培养学生掌握面向对象的基本分析设计方法与思想上
从这一点上来说,你的出发点是好的
但事实上你并不能得到预期的效果
人占大部分都是平庸的,从你提到你的学生,多数应都是这样
你希望他们学到面向对象的基本分析设计方法与思想
这是抽象一级的东西,一般人对抽象的理解远要低于现实
这大大增加了学习难度,只有极少部分人能吸收
大部分人被填了入去没消化,部分人对此抗拒
这样就形成你你所说的现象了
这都正如你所说的学习从难处入手
我认为你作为一个老师对这个问题要折衷
你应尽可能使更多的学生学到他所需的知识
而不能盲目要求,牺牲了多数人
人对现实的接受程度比抽象要好很多
你应授予他们基本的东西后再提炼升级
如你先教他们学好运用JAVA语言,再从中深入面向对象思想
做到深入浅出,这样才能有好的较果
|
谢谢,学习。。。
|
不错啊,谢谢经验共享...学习中
|
没办法,学生就是这样的:
没实践,很多东西的确难以明白
另一方面可能学生没有这样一个环境!不知道从何着手!
|
你讲的很好,我会认真去做
|
有你这样的老师真好,我们系有20%能达到你的要求,不过,考的高的20%不是这20%,能考高分也能学到东西的只有10%,主要是老师是科班出身,又是个mm,没有你这么多经验
|
"对Java语法不作为重点,而将重点放在培养学生掌握面向对象的基本分析设计方法与思想上"
说的太好了, 你怎么没给我作老师。 :)
总之开发不应该只是模仿,应该有创造。
以后我们自己来个China EE
说的太好了, 你怎么没给我作老师。 :)
总之开发不应该只是模仿,应该有创造。
以后我们自己来个China EE
|
言之有理,重要的是教会学生的自已学习,给他指方向
总有一天学生要离开老师的,如果不会自学,教给他最多知识也总有一天会落后过时的.
总有一天学生要离开老师的,如果不会自学,教给他最多知识也总有一天会落后过时的.
|
在中国,很少老师能在讲课方面有创新。就大学教育而言,我这4年只碰到2位老师,他们首先让学生进入一种高度,然后才进行授课,思路很容易就理清了,这种深入浅出的教育,在中国真是少得可怜,大多数老师还是书上咋讲就咋说。“把操作系统教成了政治”。
|
thank you!!
|
要求太求,我读书没这样机会,要学,他们自己会一咬牙就学会,
我初学VC一样,这东西,怎么不懂,死抠,几个月的坚持后,好象突然找到入门的地方,量变质变?坚持,加实践,加时间。可惜我不是学计算机的.郁闷。
我初学VC一样,这东西,怎么不懂,死抠,几个月的坚持后,好象突然找到入门的地方,量变质变?坚持,加实践,加时间。可惜我不是学计算机的.郁闷。
|
其实java单就语言来说是非常简单了
当结合面向对象,以及一些巧妙的设计,就象件美丽的艺术品
当结合面向对象,以及一些巧妙的设计,就象件美丽的艺术品
|
其实,悟性是很重要的
|
我自学的,感觉比听课好,原因恐怕是因为有internet
|
受益非浅呀!
谢谢了
谢谢了
|
呵呵, 我真怀疑你是不是我老师耶?我也有一个像你这样的JAVA老师!真的,我很庆幸能碰到这么好的老师.但是很可惜,我现在还没有想过要好好的学JAVA,但是将来一定要学的.因为,我对他已经有浓厚的兴趣了.只是现在我还是要去学C++!
|
还有一点,我也感觉自学要比上课听得来得好!不过,我们的JAVA课我还是没得这感觉,我还是感觉我们的JAVA老师教了我们JAVA里最基本最扎实东西!