计算机专业大学本科课程设置分析

  • 格式:docx
  • 大小:21.11 KB
  • 文档页数:10

计算机专业大学本科课程设置分析

以计算机专业为例,我分析一下清华大学计算机专业的培养计划

数学大类:

高等数学(微积分):基本上如果你将来不作大规模科学计算方面的工作的话,这个根本就用不到。

线性代数:同上

抽象代数:这门课我没学过,看了一下维基百科“主要研究对象是代数结构,比如群、环、域、模、向量空间、格與域代数。”我不觉得这门课在计算机类的工作中会被广泛用到。

数值分析:不做有限元分析,流体力学等大量各种曲线的计算是没用的。

概率统计(不在课程中,我补充道):概率在一些计算机应用中仍然有相当大的应用。我觉得概率统计不是计算机基础课,但还是有一定重要性的。

离散数学(课程里没有,我补充了):我真的很纳闷,清华的计算机专业不学离散数学。这是计算机的数学基础。没有离散数学怎么学计算理论?计算机的数学基础是离散数学。

基本上来说,如果你有高中数学基础,应付99%以上的计算机行业内的工作,数学大类的这些东西在课表内的都用不上。而如果你真的要从事相关工作,恐怕都已经成为其它专业的专家了,例如力学。23个学分的课程对于招聘者来说,真的是一点都不关心。

物理大类:

大学物理:真不知道计算机专业学这个有什么用。电气部分可能对电子专业有用,但对计算机专业,我觉得纯属扯淡。

普通物理:同上。

近代物理:同上。

我真的不明白对于计算机专业居然要学两门物理课程干什么。计算机专业对物理的理解大多只需要了解到二极管、三极管工作原理就可以了。力学和流体力学的概念可能在硬盘生产领域发挥一些作用。除此之外这些物理知识没有一点作用。

学科基础课大类:

电路原理:可能教授考虑到计算机专业的学生将来可能从事半导体生产,那为什么不去电子系呢?好吧,终于有关联了。毕竟以后拿到电路板和集成电路应该还是可以的。

数字电子技术基础:终于到了有点计算机领域技术含量的东西了。这门课对于将来想从事计算机硬件/芯片生产的学生来说真的是基础课。那么计算机硬件生产对于整个目前计算机专业毕业生的就业方向来说有多少呢?10%?5%?1%?个人没有统计过的瞎猜数据是1%不到。但我仍然认为这是一个计算机专业的学生的必修课之一,我的建议是别讲那么多,那么难。我学这门课的时候感觉昏天黑地的。

编译原理:重磅基础课。编译就是把你写的人能读懂的程序变成机器能懂的代码的过程。如果你将来从事编译器编写工作,这门课真的很重要。好吧,穷尽我20年的职业生涯里面,终于在去年有幸见到了一个写编译器的工程师。好吧毕竟是基础的基础,但别学那么难好吗,99%的学生一辈子都不会用。

计算机组成与系统结构:重磅基础课。无论你干计算机哪个领域,你都应该对计算机组成与系统结构有一些基本的了解,实际上很多外专业的人也都大多对这一领域有一定的了解。CPU、内存、硬盘。但问题是,能不能对当前主流计算系统结构多一些介绍,少一些对那些纯理论研究领域的计算机系统结构进行深入的探讨。我学的时候是分两门课的,组成原理和系统结构,组成原理还好,系统结构简直是折磨,没有任何现实意义的内容让你凭空去想象。

数据结构(不在课表内,本人添加):在清华大学的培养计划里面我没有看到这门课,但我清楚的记得以前是有的。这门课对于计算机专业技术领域工作覆盖率来说可以说是100%。而且这门课的内容里面大概100%的内容都是真正重要并有价值的。难以想象这样一门课程没有被列入必修课。

学科基础课还是很必要的,但内容讲的过于复杂,如果90%以上的学生毕业后都不从事该领域的工作,为什么要讲的那么深呢?

专业核心课:

计算机入门:其实这门课真的应该好好讲讲。个人觉得绝大多数对于本科阶段过于复杂的课程都应该压缩在这个里面,并且对计算机领域的各大方向进行详细介绍。这个应该是计算机学科最被重视的基础课。相反我没有看到该课程受到足够的重视。另外,这个不是专业基础课吗?

计算机应用数学:我没有学过这门课,从描述来看”在该课程中,数学技巧主要涵括代数、几何、概率理论,随机模型、信息理论等。这些技巧将应用于不同专题的问题和算法设计,包括互联网、无线传感网、密码学、分布式系统、算法设计和优化等“,这门课应该替代所有前面的数学课。一门课简单介绍一下各种数学基础内容在计算机领域的应用就好了。谁想深入就自己去深入,不要拖大家一起下水。

算法设计:对于绝大多数程序员来说,这个是重点课程。不客气的说,这门课覆盖了100%的程序员。对于非程序员的计算机工作来说,对算法设计有基础了解也是非常有必要的。

计算理论:我是研究生阶段才学这门课的,但我认为只有研究计算机灵魂的人才会需要学习这门课。

网络科学:没学过。定义:”网络科学(Network Science)是研究利用网络来描述物理、生物和社会现象,建立这些现象的预测模型的科学。这门课程从大型网络数学建模、海量数据集信息检索算法、算法博弈论、电子商务等视角探索互联网的各大要素,涵盖小世界现象、幂律分布、排序融合算法、网络爬行、枢纽节点与权威节点、集聚类大数据、流算法、网络路由、纳什均衡、市场出清、机制设计、拍卖理论、社会网络等专题。“ 坦率的说,我不明白这门课讲的是什么。Brain

storming类型的课程不懂为啥会被设置成核心课程。

密码学基础:很好的课程。现在不加密的网站大多会被浏览器标记为不安全网站。从这点就能看出这门课的重要性。同时信息安全作为当今计算机领域的重要话题,这门课是必要的。但能不能先把选修课的网络安全基础先拿进必修课再学这个

博弈论:这里应该讨论博弈论吗?如果你开发人工智能程序和股票投资程序,是的,你应该学习博弈论。但我真的不认为博弈论是专业核心课程。到目前为止,只有少部分程序与博弈论有关。作为选修课,可以;必修课不是必须的。运筹学没有被放入选修课,博弈论成了必修课 分布式计算:我没有学过分布式计算。我认为这是一门非常好的课程。集中式计算和分布式计算适用于不同类型的计算领域。但为什么只有分布式计算没有对应集中式计算的课程呢?现在全球所有的行业的核心应用大多数是集中式计算的。而且我不认为分布式计算可以独立成为一门课,要么太难没必要,要么内容太少不够讲的。如果把集中式计算和分布式计算合并起来讲,同时能够介绍应用部署架构,我觉得是值得开一门课的。分布式计算还是集中式计算很多的时候取决于计算内容变化的实时性。数据库都放到选修了,分布式计算居然放到必修

量子信息:这是奔着量子计算机去的。我不反对学生应该学习一些前瞻性的课程,但对于这种还在实验室里的玩意儿,是不是应该留给研究生去学习和研究更好一些?

机器学习:人工智能真的很热。为什么我不认识做人工智能的人如果有人工智能入门,对于本科生来说学习就够了。很奇怪,清华大学规划与机器学习的课程,应该是在人工智能引入之后才开始学习的,却没有这门课程。机器学习的方向有很多,我觉得这个课题还没有到足够成熟到本科教育的地步。

高等计算机图形学:计算机图形学绝对是一门好课程,而且对就业也有相当好的覆盖面。有没有初级计算机图形学先起个步?

大数据算法与模型:注意到课程列表中没有基础的数据分析课程,也就是是传统的BI和OLAP的课程然后直接进入大数据。不可否认大数据现在很火,但如果连最基础的OLAP都不懂,孩子们可能都不知道大数据能干什么用。如果开一门课程叫做数据分析,涵盖OLAP,BI,大数据作为核心课程,并开设各个分类的纵深课程作为选修课程,我觉得是合适的。 操作系统:重磅核心专业课,绝大多数计算机专业研究生入学考试都不会落下这门课,足见该课程的重要性。了解操作系统的基本运行原理对任何一个计算机类型的工作都是非常重要的。

专业选修课

计算机网络基础:我其实真的很不明白计算机网络基础这么重要的课程为什么会放在选修。当然我并不认为现行计算机网络的教材很好。基本上一本网络教材就是先介绍网络的类型,然后就开始对OSI7层协议进行详细刨析,告诉你每个层次这个部分是如何实现的,有多少种实现方法。首先为什么要分层这个概念,你没有实际工作经验就很难理解透彻,进而你对后面的所有学习都蒙上了一层阴影。目标都每明白怎么能明白,后面好多就都是死记硬背了。但将来工作中,就算你是专业搞网络的,你都不会用到这些东西。只有写协议的人才需要了解这些,而真正写协议的人一般顶多也就以一种实现方式写一层协议,所以你学的那么多,绝大多数都没有用,而且由于纸上谈兵,没太大可能学的明白。直到你将来对整个计算机体系有比较多的实践和理解的时候你才能慢慢明白。一个好的本科阶段教材应该压缩上面的这些内容,然后像CCNA认证教材那样介绍绝大多数网络的部署架构。

计算机生物学:我没学过这门课。看了课程介绍,就是计算机技术在生物学方面的应用。如果我们讲了计算机技术在生物学方面的应用,是不是也应该把计算机技术在工业的应用,农业也应用,科学研究领域的应用一并每一项开一个选修课呢?既然其它领域没有开,为什么要开生物学方面的选修课呢?可能为了照顾某个教授吧。

信息论与网络编码:脑子里有个疑问。计算机网络基础课程是什么?你不会说网络编码吗?那他在说什么? 机器学习与模式识别,人机语音交流:这两个题目安排在选修课中,非常适合当前计算机发展的趋势。

云计算与软件工程:这个话题有点怪。云计算仅仅是个热炒的名词而已,严谨的科学理论者应该剥去其外表,把其真正的面目拿出来给大家讲,而不应该在课程设置里面出现什么云计算这样不知所以的名字。云计算只是一种自动化IT能力交付方式而已,如果开一门课讨论IT的交付模型,并分析几种不同的IT交付方式,我觉得是有价值的,单纯只拿出一个云计算来讲,没什么太大意义。更有甚者,居然把软件工程和云计算放在一起,简直是乱弹琴。软件工程对于计算机专业的重要性是极高的,毫无疑问的应该放在必修课里面。

嵌入式系统:作为选修课是可以的。不过没什么营养,我个人认为选修课是为学生开拓思路的。

高性能计算导论:高性能计算是计算机应用领域的一个重要分支,如果这门课能在核心课程里面的分布式计算里面进行讨论就好了。

数字图像处理:和计算机图形学有什么不同呢?好像图形学一般研究三维,图像处理一般研究二维。这方面我不是很专业。作为选修课我觉得是合理的。但问题是我觉得它和图形学在计算机领域有相同的重要性,为什么图形学分配到了必修课而图像处理分配到了选修课呢?

信息检索:对于计算机应用最重要的组件之一的数据库没有在必修课里面,居然大数据在必修课,信息检索居然不需要学习数据库为前提。好吧,奇葩的课程安排。严格的说信息检索应该是数据库应用的一部分,完全没必要单独开课。

系统仿真与虚拟实现:这是个不错的课程设置,作为选修课也非常合适。 数据挖掘:这个就是之前说的BI(Business

Intelligence),本科阶段不适合对BI进行一门单独的课程进行探讨。数据相关的课程开设方式应该是数据库导论作为必修,OLAP/BI/大数据三者合并作为选修。

计算机网络安全技术:如果说密码学都被安排成必修课了,我不明白计算机网络安全技术为什么是一门选秀课。比起密码学来说,计算机网络安全技术无疑是更加基础和核心的内容。

机器学习导论:嗯,作为选修课,机器学习导论还可以。

通信原理课组:没明白什么叫课组。