一、何为软件工程
软件工程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和菱诎逭幂方法来开发和维护计算机软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术和方法结合起来,以经济地开发出高质量的软件并有效地维护它。它旨在开发满足用户需求、及时交付、不超过预算和无故障的软件,以质量保证为基础,包括过程、方法和工具三个要素。
现在软件工程里面大家主要是对软件的正确性感兴趣。简单点讲,软件不正确,有错误,容易导致各种问题,造成各种经济损失。比如说,现在比较热门的计算机安全问题。安全问题和软件中的错误是成比例的。如果软件没有错误,我们可能没有100%的安全,但是最起码MS不必经常发布补丁,针对windows的攻击也会变得很困难,各种因软件所导致的损失也会大大减少。每一种攻击的方法或者工具,背后基本都是一个或者数个软件错误,有的是实现中的错误,有的甚至是设计上的。软件工程不是单纯的开发或者测试,而是围绕着用户需求的一系列的activity以及资源的分配和利用。软件工程,就是要提高productivity and reliability of software development。
二、软件工程申请趋势和未来发展方向
软件工程申请是很激烈的。简单点讲,IT行业的发展造就了无数的程序员,尽管大家开发的软件应用于不同的领域,但是大家都是程序员,好听一点,叫软件工程师。所以申请的时候,写过程序的,都可以说有这方面的实际经验,都可以往这条船上挤。因此,软件工程,除了学校的学生们,公司里工作的人也很喜欢申请,申请人数就特别多,而拿offer也就显得比较难了!一清二白的学生们拿什么跟有数年工作经验的软件工程师pk?但是软件工程不仅仅是工作经验这么简单,不是单纯的比谁会写编码,谁的编码写的好。
软件工程是一个很好的方向,很适合将来在美国就业立足。比如说,如果你作一个关于测试理论或者开发方法的论文,接触一些软件开发和测试过程中的问题,找工作面试的时候,你可以拿你的论文项目当成经验来说,容易跟别人谈的来。而且,由于很多软件工程的研究项目适用于各个领域,找工作局限性小。所以不管是 EMC这样的存储公司,还是CISCO这样的网络公司,或者是ORACLE这样的数据库软件开发商,你都可以兜售自己的项目,都可以说你自己是如何在开发的过程中用什么样的方法开发,问题何在,用什么样的方法测试,coverage如何。但如果你是CS的其他方向,比方说AI研究 intelligent tutoring system的,尽管你写过几行程序来验证自己的idea,但是公司可能想,这是个AI的项目,我们是网络公司,不需要,没门。对于硕士生找工作来说,软件工程方向局限性小一些,更容易找到工作。博士就有所不同,但是很多博士也得放下身价,到公司里写程序作高尚的软件工程师。
三、申请注意事项
1.论文>重要的荣誉/奖项/经历>出身>GPA>推荐信>TOEFL/GRE>陶瓷>PS(SoP)>GRE,这是永恒的不等式
①论文
由于CS软件工程方向的特点,当前本学科几乎所有重要的论文基本都(至少是先)发表在国际会议上,主要是各领域的顶尖会议.当然我们不能指望我们国内的CS软件工程申请者能在这些顶尖会议上发表论文,但至少在一些比较正规的会议上有文章(如果审查委员会知道这些会议的话)绝对会大大增加你的录取机会!至于期刊的话,除非在JCST,软件学报,计算机学报之类的有文章你可以强调一下难度,其他的中文期刊,有也只是廖胜于无。
②重要的荣誉/奖项/经历
国外教授最青睐的荣誉/奖项就是数模竞赛和数学竞赛了,当然是全国级的,世界级的更好,(local的话,有也只是寥胜于无)。其它比较重要的经历如MSR等的研究经历也还不错。此外可能一些重要奖学金,大公司的研究实习经历也会起到一些作用。至于学生干部/其它特长(除非很重要很突出)之类的经历,forget it.
③出身
④GPA
虽然前十名的学校中大多数宣称在4.0中获得3.0以上的GPA就足以申请,但根据历年的实际经验,成功申请TOP10计算机专业的GPA一般都在3.6以上,个别学校的入学新生平均GPA可达3.8。
⑤推荐信/PS(SoP)
推荐信其实国外教授还是看的,如果有比较强的support的话(看你的推荐人,以及里面的写法)还是很重要的。从某种程度上来说,其实大家应该更重视推荐信甚于ps!当然由于国内众所周知的原因,可靠性会打一定折扣,但如果你的推荐人牛,或推荐老师很负责或你的内容组织的好的话,还是比较重要的。
⑥TOEFL/GRE
国际学生申请美国大学的TOEFL成绩底线为600分(老TOEFL),实际经验是前十名的计算机专业往往要达到630-650分。
由于计算机专业应用广泛,大多数美国本土申请者往往选择硕士,而学术型的博士学位申请一般在国际学生之间进行竞争,因此优异的TOEFL成绩是必不可少的。而GRE,除了要参加GRE General Test以外,建议申请者尽量参加GRE计算机专项考试(GRE Subject Test),以体现自己的专业实力,获得学校的青睐。
⑦陶瓷
其实,陶瓷的重要系数是可变的,陶瓷得法的话是很重要的,但是这个建立在一定的基础上:你的实力确实很强,你的背景与方向很合老板意思(或老板准备转的方向)!所以陶瓷一定要找准方向,找准老板,不要盲目,一些重要的原则如:一个系不要同时套2个或以上,AssisProf比Asso/Pro更急切需要人手(如果他的fund够的话)等等。
⑧个人陈述
除了其它专业的共性要求外,最好能够通过个人陈述凸显自己在计算机领域内的科研能力,向校方展现自己的研究潜力。
2.选校VS选教授
如果你可以选,建议你找个好老板.完全放弃国内培养出来的那种'名校情节'.特别牛的学校,或者你有什么另类想法例外.美国的体制,是以教授为单位,为中心的.他们要自己找钱,向外界推销自己.
3.硕士VS博士
如果各位家里小康的话,可以考虑申请一些MSC的program,MSC是不容易拿奖的,所以比有奖的PhD容易很多。如果你申软件工程的offer,错误的申请了职业培训类型的SE master,你拿offer得难度至少会像MBA一样大。
申请硕士优势有三:
1,可以硕士毕业就在美国工作。
2,在美国再申请PhD的话比在国内方便不止一倍。
3,美国有无数CS的工作岗位,报酬优厚。
但鉴于奖学金的问题,中国多数同学申请的是博士,相对于硕士而言,博士容易获得奖学金。然而,目前的实际情况是,很多同学在拿到硕士学位后,即退学找工作去了,美国多数学校允许在博士的课程阶段,修够一定学分以后,可以拿到一个硕士学位。在不允许这种情况的学校里,中国学生往往也会设法换成硕士 PROGRAM,然后毕业。目前许多教授对此意见很大,估计今后对申请上也会有不利影响。能否提前毕业或换成硕士毕业,主要看奖学金的来源。因为一般助教 TA的奖学金来自于学校,而非系里,所以相对要容易成功一些。而助研RA的钱多与老板或系里密切挂钩,因此你的提前离去,会对项目有影响,所以往往不易,视老板关系,时机而定。