研究生的课程,根本目的还是系统的传授理论知识给学生,而不是教学生如何使用某项具体技术,所以到了研究生这个层次,就没有什么很应用的课程比如说C++/Java了。开设的程序语言设计(programming language design)这种课程,也是从底层告诉你如何设计一个程序语言,而不是教你指针数组怎么用,类怎么设计。整体上,学校里轻视成熟技术,学校的老师不会很excited陪你整天玩j2ee,.NET这些东西,尽管他们在工业界用途广泛。
相比之下,公司决大部分职位需要的是能熟练使用某些具体技术的人,公司基本不需要你卓越的研究能力和超群的理论水平。. From 1point 3acres bbs
也许你会说,我还有解决问题的能力啊,但是公司的人会说,我们花钱招你来是让你干活,解决实际问题的,不是让你来发论文的。我们用的就是SQL的数据库,你说你懂数据库?ok,那我出SQL和Oracle的题目考你,回答的不好,我们不要。SQL的确不难,但是作为成熟的技术,不是novel idea,一些研究DB的研究生可能几年没碰过,万一人家出了个古怪或者复杂的问题,你被问倒了,没拿到job offer,那你不是要哭死?至于oracle这种大型软件,里面的东西就更多了,有些研究数据库的同学,可能用的是实验室自己开发的xml or data stream processing的prototype系统,根本不碰oracle。. 1point3acres
读研究生,学校希望能教给你领域知识和设计新方法解决问题的能力,瞄准high level的教育,提高你的理论水平;但是公司希望你能有解决具体问题的skills,懂得low level,down to the earth的具体技术细节,这些东西,最多是你研究生学习时获得的副产品而不是学习目的。这是根本原因。学校的做法没有错,学校就应该教给你理论知识,这样不管外面流行什么技术,你都可以很快理解学会,但是工业界急功近利,希望你来了就能熟练使用各种工具干活。深刻理解这种mismatch,在二者之间找个平衡,是你的责任。. From 1point 3acres bbs
追究讲谁对谁错没什么意义,这个问题也不是美国学校特有的。学校里当然要教给研究生理论知识,提倡学术研究,否则改成开java认证学习班算了。. 1point3acres
. check 1point3acres for more.
美国有些学校注重工程应用,上课期间布置比较多的projects,学生需要动手解决问题,进行大量的编程工作,很培养能力;有的学校,设置一些很实用的基础课程给硕士生选。这些对于着眼于工业界就业的同学来说,比较有利;如果一门课,老师布置你读无数新发表的paper,那你从这些paper里获得的知识,将来去公司工作,很可能用不上。
可能有人说我的观点只注重眼前,不考虑长远发展,但是问题是不管是在中国还是在美国,我们的第一目标是先找到第一份工作再说,没工作,啥都免谈。找到工作以后,公司需要什么,我们就学习什么;有了工作,有了工资,啥有用啥流行咱学啥,而且很可能是公司出钱让你学,因为员工的培训(training)本来就是公司支持的。. 1point 3 acres
.google и
关于选课学习更具体更丰富的内容,敬请关注下篇