之前看《逆袭大学》上面提到了ACM就查了一下,在网站上看到了这个文件,但没有下载下来自己阅读,只读了“计算机科学对数学知识的要求”这部分。
这回把主干部分都看了,没看附录因为我觉得这个内容详尽的附录主要是给教学者和高级学习者参考的,作为初学者对很多概念尚不了解?
感受第一个是与《逆袭大学》里提到的一样,编程语言及具体内容只是一小部分,更大更多的是整体素养和综合能力的培养。个人认为越是谈综合能力越要意识到合作式学习和理论实践结合的重要性,这点在教学体系中很欠缺,这是普遍现象。既然学校已经给不了或者不会主动提供这种学习机会,更要自己争取,比如重视同学间的探讨、积极参与实践项目。
第二个感觉是对知识领域的划分方面,当前情况已经与原作于13年的文件中有所差别。知识领域和子学科的划分常常与应用层面的广度紧密联系,大数据、人工智能、互联网金融/区块链的火热对以往的一些划分肯定会产生冲击,现在有些大学与CS并列的有DS(数据科学)专业。不确定推理方法、自然语言处理这些已经成为单独学科的内容都放在“智能系统”下面是否合适以及从学习者角度应该关注哪些方面都是问题。这个文件中提到的机器人、计算生物学目前所处的地位远不及许多传统和新流行的领域,实际上在当年这两个方向尤其是机器人被非常看好,但现在的局面是,IT很大程度上是自己内部发展和消化新热点,工业4.0、新医学并没有如期兴盛。“信息保障与安全”“信息系统”“智能系统”这三个并列而且学时都不多,在当前信息技术产生进一步整合情况下应有新考虑;“网络与通信”与“并行与分布式计算”在当前情况下恐怕不能非常完好地描述相关领域的情况,因为新的分支日益增加,原文“虽然我们认为计算机科学正在向这个方向发展,并最终会实现课程的集中,但是从2013年的情况看这个过程尚未明朗”。
第三个看法是文件呈现的知识学习模式(“元知识”管理方式)仍然是传统的知识清单,核心一级二级的划分增加了层次性但总体上仍是“理论——实践”的二分,而目前模块化、组合建构方兴未艾,前几天我看到一个新出的人工智能主题的书作者是微软的,内容有点广告色彩因为全是讲怎么在微软的.NET平台里用各种api制作出一个人工智能的产品,但足以反映现在的一个趋势,一方面非常底层和艰深的知识在一些新项目中非常重要(比如数学模型)但另一方面很多情况下造程序就像搭积木一样,不必重复造“轮子”,开发者的关注点集中在已有模块和解决方案的整合上。这点应该引起我们注意并在学习中加以考虑,利害都有因为搭积木总体上不难,“新轮子”肯定比之前人们做过的更难搞,同时创意和想法比拼更激烈了。
此外应注意到与计算机科学密切相关的硬件部分(在计算机工程中比例很大)没有以独立内容呈现,可能是对之前版本过于强调硬件知识矫枉过正的结果。从现在新一代通讯技术等硬件结合密切的热点来看软件和硬件都是武器库里的兵器,如何选择搭配本身也是高深学问。
作为初学者我所做的是,这回要把文件下载下来,在新版出现前时常翻翻。但对于个人学习方向考虑上,自己可能还倾向保守,先在软件特别是程序语言方面打好基础,不急着蹭热点因为变化太快追不上,但从这几年IT行业的风云变幻看,还得常问:“如何着眼于未来地学习?”