计算机软件系统教案-哈佛大学计算机科学正课:教算法思维以及解决问题
之所以写这么一篇稿子,是思忖了多年的想法被昨天看到的一个视频激发了出来。前端框架Vue.js的作者尤雨溪说:“编程在很大的程度上和数学的交集并不是很大,编程需要更多的是逻辑,数学的逻辑如果不从根源上讲,在比较实际的应用层面编程和数学的交集已经很浅了。”
先介绍一下尤雨溪,对不是接触编程的人来说可能不是很熟悉。尤雨溪毕业于上海复旦附中,在美国完成大学学业,本科毕业于Colgate University,后在Parsons设计学院获得Design & Technology艺术硕士学位,任职于纽约Google Creative Lab。尤雨溪大学专业并非是计算机专业,在大学期间他学习的专业是室内艺术和艺术史,后来读了美术设计和技术的硕士,正是在读硕士期间,他偶然接触到了JavaScript ,从此被这门编程语言深深吸引,开启了自己的前端生涯。2014年2月,开发了一个前端开发库Vue.js。Vue.js 是构建 Web 界面的JavaScript库,是一个通过简洁的API提供高效的数据绑定和灵活的组件系统。
大家看到亮点了吗?他刚开始并不是计算机专业出身,但是后面接触到JavaScript就一发不可收拾。后来他是否深入研究数学不知道,但是可以肯定的是刚开始是没有的计算机软件系统教案,这并不影响他成为在编程界具有突出贡献的人。
咱们先不讨论他说得对与不对,先看一下中外计算机专业课程的对比。
哈佛大学计算机科学
正课主要是教算法思维以及解决问题的能力,涉及的议题包括抽象、算法、数据结构、封装、资源管理、安全以及软件工程,要上8周的课,第1周概论(进制、数字系统)、第2周C语言、第3周数组、第4周算法、第5周内存、第6周数据结构、第7周Python、第8周SQL,最后两周则会让你自由选择三个方向:Python全栈(HTML、CSS、JavaScript、Python、SQL)、移动应用开发(Java、Swift)、Lua游戏开发。当学完这些以后计算机软件系统教案,就可以继续学习一些进阶分支课,比如Web程序开发、人工智能、游戏开发、移动应用开发、针对法学院学生的Python分析等。
其他的大学比如斯坦福、加州大学等,课程也是类似的。我展示这些想表达的是,并不是只学专业课就是个码农、技工,因为很多人就是这样理解的,他们觉得只有学习高深莫测的数学才是大学生。
再来看一下咱们国内计算机专业有哪些课程。我就简述一下我当年在大学的课程安排吧!我是2014年上的本科,学过的必修课有高等数学、离散数学、线性代数、概率论、计算方法、Java基础、Java高级、数据结构、大学物理、思修、计算机网络、SSH、SSM、Android开发等,那些乱七八糟的选修课就不必提了,比如大学物理实验、电路实验等等。
同济大学的高等数学这本书是数学专业使用的课本,也是很多其他专业可能用到的,我们计算机专业很荣幸的用到了。一学期学一本,学了好几本。但凡学过这本书的都知道有一定的难度,跟高中数学天壤之别,就这么一门课程会占用多少学生的学习精力不言而喻。大一的学习生活基本被它控制着,反而Java基础更像是可有可无。计算机编程这东西并不是很难,难的是入门,一旦入了门就一马平川,可就是因为高等数学这门课程让很多大一新生怀疑人生,厌学情绪随着时间逐渐扩大到最后有不少放弃的。
上面这本书就是我们当时的计算方法老师自己编写的,他自己曾在课上大方地说:“上课一定要好好听,课本上很多错误,你自己看不一定看明白”。是的,我后来自己看就没看明白,不仅错漏百出,还严重跑题,一门应该理论结合实践的书硬是变成了数学理论课。有的人可能好奇为什么错漏百出还要用这么一本书,学生用了不是有出版费的嘛!大学物理老师教的一门选修课也是用了他自己出的书,开卷考试,照着抄就行,不买书你就过不了。
很多公司对于应届生,甚至更喜欢经过培训的学生,前几天看到一个头条说他们大学计算机专业除了学那些数学课程,毕业了连HelloWorld都输出不了。
总结一下吧!国内外对于计算机编程课程的理解有一定的差距,国内可能是由于教学经验和师资力量的影响,课程安排得不如国外那么务实,但是在某些人眼里更加的科学、神圣不可侵犯。我相信,再过十年,这种情况会有变化,希望能培养出更多的优秀人才。