对美国软件工程硕士的一些纠偏:可能不是你想要的项目

字数 768阅读 169

学弟 / 学妹可能有一定误解,对于大多数人,想留美做 SDE 应该申请 Master 时候申请 CS 而不是 SE……当然对于本科阶段而言,你是来自我校软件工程专业还是计算机专业不重要。

美国大学的 Software Engineering 在研究生阶段的培养核心以软件开发方式、流程和分析为主,实际上反而不怎么学习一些实际技术如 Database Systems、Distributed Systems (Hadoop & Spark)、Web Development 等等。在实际找工作中,自己有一些运用实际技术的 hardcore project 是相比于学习软件开发这样的 abstract concept 更重要的一件事情。

以 CMU SCS 的 MSE / MSIT-SE 举例,核心课:( https://www.1point3acres.com/bbs/forum.php?mod=viewthread&tid=125180&ctid=6 )
Models of Software System:主要是通过集合论和逻辑来对软件系统建模以推演系统行为的正确性
Methods: Deciding What to Design:核心是需求工程,即如何应用课堂上学习的技术去收集客户对软件系统的需求
Software Development Management:软件开发管理,类似项目管理
Analysis of Software Artifact:核心是软件测试理论和技术
Architecture of Software System: 核心是讲解各种软件架构模式、架构开发方法和架构分析方法
Communication for Software Engineers:核心是讲软件项目开发过程中的沟通问题,即如何提高沟通效率
以上的课程很少编程。(以上内容感谢 14Fall MSE 的 Robin 学长)

CMU ECE 在 Silicon Valley 的 SE 也是:
Foundations of Software Engineering
Software Architecture and Design
Software Verification and Testing
Service Oriented Computing
Data Intensive Workflow Development for Software Engineers
Decision Analysis and Engineering Economics for Software Engineers
Software Analysis and Interactive Design
Software Engineering Methods
我不太了解 ECE,不过从课程名字上看也较少编程。

如果想上 Software Engineering,非常建议在 CS Masters 项目中选一两门这样的课,而不是上所有核心课都是 Software Engineering(学不到具体的技术)。

via https://www.1point3acres.com/bbs/forum.php?mod=viewthread&tid=509119&page=2#pid6324344


2019.4.8 补充:

说说软件工程这门课吧。

我本科就是软件工程专业,本校的课上过不少软件工程相关;在 UCSD 上过 CSE 112 Advanced Software Engineering,带团队;在 CMU 也要继续读软件工程。据我体验,这些课程没有一个是讲具体技术的。想直接学技术的不要碰。

不过,不学技术 != 水课。工业界解决问题的能力不是指自己学到了 cutting-edge 的技术栈,就能完全应用到工作中的。那太理想化了。实际上软件工程是技术、时间、人力资源三方角力的一种平衡,技术只是因素之一。软件工程的目的是让你知道怎样克服这些困难把技术落地于实际应用中。