一、问题。
首先暴露一下,有些计算机专业学生的问题:
1.自学能力不强。表现在对于一些在开发中遇到的问题,不知道使用帮助工具,如MDSN(.NET方向),baidu等。甚至,在遇到一些问题的时候,只能等待,一点主动寻求解决方案的意识都没有。
2.逻辑思维能力不强。遇到问题,不主动思考。
举一个例子:Web网站的三层体系结构设计。有的学生,对中间业务逻辑层的业务实体的抽象特别吃力。原因可能有以下几个方面:可能在学习过程中,对OO和三层体系学的不够扎实,所以在对事务逻辑进行抽象时,感觉老虎吃天,无从下口,老感觉心里没有底(调查所得),或者说想到的东西不能形成系统。也就是多少抽象出一些类中的成员,但成员与成员之间的关系?哪个成员是必须的?哪个可以通过别的成员衍生而来?最终形成一个完整体现功能的系统感觉很吃力。
最主要的原因就是思考时得不到理论指导,思考也只能是零碎的,片断的。
3.灵活运用不够。表现在使用别人的代码,或者查到了相关资料,运用灵活度不够。这说明了自学能力欠缺,理论基础差。有东西,但无法理解其实质(即要表达的功能),只能生搬硬套,导致出现了各种问题。
最根本的原因:不理解算法,无法编程。如果学生对自己的系统功能很熟悉(起码有思路),可以去参考代码,做适当修改;同时如果学生对代码(别人的)要表达的功能很熟悉,同样可以在原来代码的基础上做一些更改,经过自己思维的加工成为自己的东西。体现了学生没有思考能力。
4.自己动手能力差。举个例子:连简单的word都要在老师的帮助下完成,自我动手能力有待加强。
5.无法和老师正常交流。有一些学生,对一些问题的理解不上去,认为老师的讲解太专业,听不懂。
当然,还有一些其它的问题。
二、对策
1、现状分析
问题暴露出来了,那就对症下药。在给出对策之前,先做一个简单的分析。
(1)有目共睹,四年制本科计算机人才很多编程能力不强,不适合企业要求。有人在网上就抱怨是:本科的人才培养方案出了问题。
我认为不是的。在我看来本科的课程体系设置还是比较科学的。有理论,有实践。(如:数据结构,操作系统,算法分析,软件工程,语言基础)。所以如果出问题,只能是实施过程出了问题(这在我的以前的一篇文章中提到过),着重于理论,就连实践性很强的课也被一大堆理论所代替。
出现这种现象的原因:一可能是条件不允许,没有实训基地。学生和计算机无法做到一对一。二可能就是老师引导不够,整个学软件开发的环境不好。据我了解,国外的一些著名大学,如麻省理工大学,斯坦福大学,开设的课程也都是这些。只是他们环境比较好,计算机应用比较普及。
所以我想说的是,如果硬件条件改善了,那就该找找实施过程的问题了。
(2)还有一个问题就是,学生到底能不能直接在学校的培养下成为程序员。答案当然是能!据我了解的一些在校外做java培训的学生,他们在学校时,学习成绩都是很一般的。但经过不到半年的培训,等到他们毕业答辩的时候,对于MVC架构,Hibernate等技术,虽然在介绍概念时有一点生硬,但能够听的出来,都理解了。
这就说明了一个问题:在学生想学(在某种刺激下),而且实践过程控制得当的情况下,学校是完全可以培养出适合企业要求的人才的。
2、真正的对策
通过我们的分析(学校和培训机构的比较,和对学生学习现有问题的分析),得到对策如下:
(1)调用学生的积极性。
学习积极性的提高,在于老师不断的鼓励,而且老师要一视同仁。尽量不要让学生有畏惧心理(不敢或者说不想问问题,因为听不懂,久而久之,也就不再问了)。其实,每一个学生都想学好,但最后没有坚持住。所以应该在教学过程中,抓住他们的软肋,激励和严格要求并存,并适时的与学生交流,而且在交流过程中要体现出来:老师很希望学生成才,同时也有信心学生能成才。哪怕是学生自己先失去了信息,在老师的激励下说不定会再次建立起学习成才的信心。当然,应该建立在水平沟通的基础上。
总之,首先要让学生想去学习,有信心去学习,才有可能学好习。上述暴露的问题4就是因为学生没有信心能干好。
(2)教会学生如何去学习。如果学生想去学习,有信心去学习,那么剩下的问题就是怎么样去学习了。这是本质!也就是让学生具备一定的自学能力,有一定的逻辑思维,能灵活运用。也就是解决问题1,2,3。
我认为:首先,老师要引导学生思考,而不是填鸭式灌输。在上课的时候,应该多类比,多启发.
举个例子,比如讲FCL中的某个类,就可以让学生打开MSDN和reflector,老师只要讲课堂内容牵涉到的成员,对于其它的成员就没有必要讲,也没有时间讲。可以留给学生课下去学习。在整个内容体系中,肯定不只一次使用MSDN,那么就可以多次告诉学生,可以通过MSDN哪个部分学习哪方面的知识。如类的命名空间,类的定义,继承以及成员的用法等等。
时间长了,就形成习惯了!
这就对老师提出了更高的要求:要多启发,多类比。我上课的经验告诉我,如果对某一个知识点熟悉,那么展开的就多一些,如果不是很熟悉,那么只能小心翼翼的展开。我判断“熟悉”与“不熟悉”的标准就是:对一个知识点的定义,使用范围,可能出现的问题,相应的替代方案,各自的优缺点,包括是否在以前的项目中使用过等都能说出来。
所以要求老师,只有熟悉了,才能写出来,讲出来。这就和我们写教案,然后讲教案,回头再总结教案是一个道理。所以要学无止境,海纳百川,方能做到艺高人胆大,才能对内容运用自如,才能更好的展开,介绍给学生。
其次,如果有可能,要让学生象老师一样去思考,建议学生多做总结,想到的东西要能写出来,那说明真正理解了,会了。现行的各种考试之所以有这么多弊端,但每年还在进行。就说明这一点。所以学习同样的书,同样的内容,想的多的学生能更好地去做,但做的多但不去想的学生进步不大。其实细想想,后一部分学生有很多不是想着去做的,而是模仿别人去做的。
所以对于案例教学方法中案例的作用,不是告诉学生代码是什么样的,而更重要的是介绍形成案例的思维方式,应该如何划分模块?为什么?应该如何抽象实体?为什么?实体间有什么样的联系?为什么?这样,以优秀案例的“点”让学生了解雷同的业务场景的“面”,扩大视野。
总之,学生自己有信心,老师在实践过程中讲究“引导”学生思考,在思考的基础上去“实践”。在实践的过程中,能够在老师的引导下去查资料,查帮助文档或者最终由老师指导着完成,而不是老师直接单纯地给代码,起码在给代码的同时,要告诉学生代码产生的思路。
(3)还有就是要保证学生的学习时间,这一点其实不太难,如果学生在老师的引导下,有足够的信心和兴趣去编程,那么只要老师下达任务就可以了,即所谓的“任务驱动”。一定要保证时间。
让学生去编程,才能发现问题,在师生建立水平沟通的前提下,老师给予指导(灌输思想),让其试着去解决问题(只要用心,问题总能解决),最终解决问题,形成自己的知识体系(经验)。
多次迭代上述过程,对老师而言,可以有更多的时间去充实自己,来积攒自己的那一桶水,以便更好地给学生那一杯水;对学生而言,锻炼了其独立做事的能力。
最后还有一个要注意的问题:如果学生的时间保证不了,那还不如填鸭式灌输。“自由”学习是一把双刃剑。所以,老师给学生留的作业要能够让学生完成,同时没有时间浪费。另外,对过程的监管和对学生的辅导,要求老师要付出更大的精力!
分享到:
相关推荐
从大学生到程序员 从大学生到程序员 从大学生到程序员
大学生如何从学生蜕变为职业软件工程师,快下载来看看吧~~
程序员第二步从程序员到项目经理 程序员第二步从程序员到项目经理 程序员第二步从程序员到项目经理
java程序员由菜鸟到笨鸟 作者:曹胜欢
Visual C#程序员面试基础问题和答案.doc
600个程序员常用的单词和词汇600个程序员常用的单词和词汇600个程序员常用的单词和词汇600个程序员常用的单词和词汇600个程序员常用的单词和词汇600个程序员常用的单词和词汇600个程序员常用的单词和词汇600个程序员...
程序员浏览器程序员浏览器程序员浏览器程序员浏览器程序员浏览器程序员浏览器程序员浏览器程序员浏览器
程序员工资程序员工资程序员工资程序员工资程序员工资程序员工资
程序员级试题和答案,好几年的都有啦 程序员级试题和答案程序员级试题和答案程序员级试题和答案程序员级试题和答案程序员级试题和答案
程序员考试程序员考试程序员考试程序员考试
程序员面试的经典必备书籍,不夸张,适合找工作的学生阅读,程序员面试宝典是这样一本满足学生这种需求的书籍。 书中介绍了许多面试例题,很实用,相信大部分人看后不会失望。高手请飘过。
程序员的酸甜苦辣程序员的酸甜苦辣程序员的酸甜苦辣程序员的酸甜苦辣
java程序员到架构师之路.pdf
《像程序员一样思考》适合初级到中级的程序员用来提升自己的问题解决能力和应用编程技能的能力,也适合计算机相关专业的学生作为参考书阅读。 《像程序员一样思考》教会读者如何系统化地解决问题,提供了众多的技术...
程序员面试经典问题及参考答案
初级程序员试题分析和解答,让你轻松通过程序员等级拷机
vc++程序员必读vcvc++程序员必读++程序员必读vc++程序员必读
EOS程序员教程 EOS程序员教程 EOS程序员教程