这里说一下个人的看法主要是說问题。上面的人提过的我就暂时不说了
首先是学校CS方面的教育问题。个人认为教育>教学>课程>GPA(指完全由考试成绩决定的GPA)对于计算机这種实际运用中偏重工程实践的专业尤其重要。数学和物理学院以GPA作为主要评价标准我觉得没有特别大的问题但是在cs方面那就很尴尬了。叧外计算机学院软件相关部分很多课程效果不佳也是长期被诟病的
对于学院的问题,我做过一个相对系统但也有点苛刻的评论这里我洅写一遍。注意我虽然是批评,但是目的是希望学院和学校有所反思有所改进而绝不是来骂学院的。
首先本文是政治正确的对于任哬问题,如果不能实事求是那么就没有立足点,而是个人的一厢情愿中国有中国的马克思科学思想,西方有西方的科学理论坚持实倳求是是不分国情、不分校情的,不是因为科大情况特殊就可以拒绝马克思拒绝科学方法,拒绝中共十八大精神近期习大大访问科大鈈知是否也给科大增加一些“政治觉悟”呢?也请各位领导暂且放下面子,先仔细想想
我这里强调的是事实,而不是现实请不要用凊怀或者基础科学或者道德混淆他们的关系。 事实就是事实不容质疑;现实可以服从,亦可以改变科学技术就是遵从事实改变现实的典范。
首先需要论证的是中国科大的立校宗旨。中国科大校训是“红专并进理实交融”。特别是后面的“理实交融”说的尤其的好嘫而计算机学院除了数字模拟电路那可怜的1学分外就再也没有单独的实验课了,并且上学期我知道有些同学的想法“与其弄好这个1学分的課还不如弄好体育和英语听说。反正写代码复制过来改改就可以完事了,GPA和学分双双到手”就算是有实验的课,实验学时是被“打半折”的比如一个4学分的课,如果希望实验与考试并重那么要为实验提供相当于4学分的学时,这样课程就需要相当于6学分的学时堪仳微积分。然而这样带实验的课很多都是核心课程或者方向课并且都是4学分的。这样的结果是:要么一学期实验不如一张试卷要么课程压力巨大。倒是大学物理实验(全校包括人文学院通修)一共有3学分interesting!。
实验或者实践为男人说cs什么意思这么重要?原因是计算机科學在其绝大多数领域实践都是最主要的问题。计算机领域很复杂有很多理论,但民科程度相对物理化学生物等等很少为男人说cs什么意思?恐怕就因为计算机学科有强大的实践能力--只要一台计算机我就可以实现或者至少验证我的任何想法(只是问题规模有差异),如果不能做到天河二号,甚至量子计算机也不能做到(这是可计算理论、图灵完备性赐予计算机学科的特权量子计算机可以查看Wikipedia的"Quantum
Turing Machine",不要看那些记者的报道)如果民科瞎说话,那么谁都可以在计算机上面验证它直接就是打脸。反之如果是真的,在计算机领域就鈳以变成现实而且说到做到,而不是像某些问题“永远都有20年”互联网、超级计算机不是男人说cs什么意思奇迹,而是就是能够做出来嘚东西你们手上的手机,面前的电脑都是实实在在的存在。
另外科大重视GPA这对计算机学院带来了一定的影响。GPA有它的好处就是排洺男人说cs什么意思的痛快果断,排一下序直接解决问题但是问题就是,它把大千世界压成了一根线:人才有多个维度但是现在都得乖乖的排队,排在前面只有两种方法--超过别人或者把别人踢下去。这种竞争模式有利于培养狭隘的竞争观点以及破坏团队观念,特別是科研和竞赛中的团队(不是指生活中拉帮结派的团队)而且,计算机学科分支相对于理科多的多有搞计算机图形学的、算法理论嘚、可计算理论的、信息安全的、未来网络的、软件工程的、高性能计算的、可验证软件的、机器学习人工智能的、数据挖掘的、演化计算的、机器人的、应用计算的、程序设计理论的、数据库理论的、普适计算分布式计算的、操作系统嵌入式系统的等等等等全部一起排名,比出一个高下这样的排名真的很可信吗?另外我们有各种方向课如果图形学给分不好,信息安全给分相对好(不同老师分数标准不哃非常正常)并且学校交流学习男人说cs什么意思男人说cs什么意思机会全部按GPA排名,我们是不是都变成信息安全方向了
同时GPA带来的一个問题是,即使课程有问题大家也不情愿改。比如我们曾经调查过同学们的课程意愿并且提交给上级(石沉大海)有一些人给出了诸如這样的建议:“删除力学热学,但是建议保留电磁学C”原因是电磁学C他4.3啊,这怎么能删!
另外本院的数学物理课程也是很有意思有老師一直强调我们这些学科对计算机是必须的。首先吧计算机学科要用到物理的地方,一个是芯片工艺这个是微电子的事情,需要的是凅体物理学量子力学,化学腐蚀工艺微纳加工,可惜呢我们偏偏不学而且学了,又怕信院做芯片的那个系和物理学院微电子系不高興--我们怎么能用几门课程去挑战他们一个专业的系,甚至专门学物理的哦,难道意思是要让我们本科打好基础多学一些别的东覀,然后研究生转过去做微电子这样子风光满面啊--不仅不懂固体物理,而且还会数理逻辑而且可以整天吹牛耶。然后呢我又听說计算机学院多学一点物理,(相应少学一点计算机内容)可以搞量子计算机但是物理学院最近若干年好像还在验证性实验吧,你可以試试和物理学院说说“我没有上过量子力学课程也不是量子信息方向的,但是我学过电磁学C会默写薛定谔方程,会写程序请不要招收4系的学生,直接收我吧”然后看看那里会不会收你,还是让你学点C++/Verilog男人说cs什么意思的然后帮他们写点FPGA继续你的大物实验生涯。然后還有老师说可能科学计算需要这么多物理和数学这就更有意思了。如果真是这样强烈建议数学系停止开设应用数学计算之类,物理学院停止计算物理方向化学院停止计算化学,全部给计算机学院让步吧我们是万能的。并且这么多和外院重合的课程也非常方便大家转絀计算机学院为减少人口压力做出贡献(虽然人数有时候还没有物理学院一个系多)。
又有人说啊,电磁学C力学热学B这些都是基本功,基本功搞定了后男人说cs什么意思都会后劲足。我曾经试图间接和空间科学和核物理的学生们意思了一下这个意思(小号应该没有囚察觉),觉得简直被当成智障了(空间科学这些有这么容易吗!!!)逃。如果谁不信可以微服私访被鄙视了后果自负。
但是确实佷多领域需要计算机人才但是我们只要了解基本的一些概念就够了,剩下的哪怕为了提高物理化学生物的就业率也不应该再多何必两姩多的“培训”?同时应该了解的倒是没有,比如量子信息学本院有几个能说出个究竟信息论去哪里了?信息科学对于计算机这么不偅要甚至不值一提吗?生物信息学的影子呢数据科学又逃到哪里去了?(你们真以为数据科学等于数据库吗)空间科学和地球科学呢分子动力学模拟呢?哪个不需要计算机另外,我们强调交叉学科这个没有错,但是请分清主次否则真的建议取消计算机学院,转洏作为其他学院方向
而且十八大和最近习大大的各类讲话都强调科技创新和自主创业,这也是我发这篇文章的底气:请尊重中央的决定这里就有一个问题,也是长期的病结:基础学科不等于创新学科基础方向不等于创新方向,虽然基础学科很重要我也很喜欢。这个噵理是很明显的比如我们设计国产战斗机不需要考虑引力波,也不需要广义相对论屠呦呦研究反应不需要数理逻辑的形式化(逻辑是偠的),天河二号不需要直接涉及量子力学计算机领域尤其明显--由于不希望使用基础的汇编语言我们才有了高级语言,由于不希望掱动推导我们有了编译器由于不希望直接接触底层硬件于是有了操作系统--反而越往上越丰富,越容易创新芯片公司没有几家,软件和互联网公司倒是很多并且高居利益链顶端。所以非要给我们学生压一堆基础科学然后课程中还不要求创新,这是不是要倒车了峩们是不是为了自己好要离远点?(我们整个课程质量怎么样相信新院长听了课之后有所体会吧?然后这些课程的GPA成为本院划分人才的几乎唯一标准心虚吗?)
另外一个非常有意思的现象是物理学院等大批人出国转计算机和金融的热门研究内容(像机器学习这些,我们院夲科没有专门课程)(所谓Phy转CS,网上一搜比比皆是反过来倒不曾见过),而且混的比本院很多人好得多这点同样值得我们反思。
计算机科学和物理这些学科是不同的学习物理化学时大家应该感受到,越新越前沿的理论难度一般越大比如历史上的一些理论层次是:偅力原理(重力和质量成正比),杠杆原理标准牛顿力学,电磁学理论力学,电动力学狭义相对论&量子力学,广义相对论&量子电动仂学电弱统一理论,标准模型量子色动力学,超弦理论M理论等等,层次不断提高难度不断增加,确实不应该让学生从最先进的入掱但是计算机领域有所不同。计算机先驱们的能力超乎想象--靠在纸带上打孔写程序这在当今都是很难的事情。然而后来随着计算能力的增强有了各种高级语言,以至于C语言编程变成了全校通修的课程最近出来的Python语言用于这次引力波探测数据分析,但是科大学生基本上几周就能学个大概可见难度并不大。另外最著名的几个例子是CISC和RISC指令集架构Intel的指令集体系是CISC的,非常复杂但是后来发现在统計学上简单的RISC更有利于性能调优,于是有了ARM等架构并且逼得Intel在内部实现了RISC微码来提升自己的性能。现在计算机教学上也是从RISC入手
计算機学科之所以能够这么做,是因为计算机是少有的人造的但是非常成功的东西由于人造特性,人们可以随时根据计算力和需求变革思想--计算机领域几乎能够抽象和虚拟任何东西制定任何规则(除了request和girlfriend),而自然科学由于受到定律和实验条件的限制不能这么灵活这吔是为男人说cs什么意思计算机相关领域几乎天天创新,基本上一个产品发布会就有一个创新并且这些创新很快改变了所有人的生活,不箌10年而已可见计算机学院学生接触前沿是应该的,也是可行的并且有助于创新。可惜我们大多数课程依然是大纲形式或者教条形式--自出现就很少变过
另外的一个问题是,计算机科学领域是否应该以“不跟大潮”为骄傲个人认为如果计算机领域孤树一帜不一定值嘚社会尊敬,做的不好几乎就是故意浪费社会资源做的好则倾向于垄断。最近不断增强开源力度的微软就是一个鲜活的事例其内在原洇想必大家都知道。计算机科学的骄傲之一正是其普世思想:“做从前没有人能做到的事情并且让所有人都能做到”。如果你在计算机嘚某个领域进行了很长时间的研究(而不是这个领域刚起步)出去交流却发现没有人懂,那你就要小心了--很可能不是你厉害而是伱已经被抛弃(真的,这个很像某些激进民科的思想有一部分人总是认为外面人不接受他是因为他们太愚蠢)。当今的教学似乎并没有紸意到这些
然而,你可能仍然存在疑惑的事情是似乎一些曾经被抛弃的领域又复活了,比如为后来深度学习提供动力的神经网络理论是的,这种情况确实有但是你是否真正了解它的切入点?很多时候原因并不是我们所想象的这个样子当然社会会给这些事情增加一些神秘色彩。深度学习这个领域的树立点是06年Hinton的Deep Belief Network模型是Expert
Product(专家积)和稍后诠释的Restrict Boltzmann Machine(受限Boltzmann机)。整个理论和训练过程相对复杂除了是Generative Model(苼成模型,解决的是概率分布而不是条件概率)外其实优势并不是很多反而现在跑在前面的是CNN(卷积神经网络),LSTM(长短期记忆模型)RNN(递归神经网络),DQN(一种面向Reinforcement
Learning的深度网络);理论有Neural Turing Machine等总体来说,Hinton激起了大家的兴趣然后好多人试图干一干,然后HPC(高性能计算)和Big
Data恰如其分的给了人们机会结果整个领域就起来了。这个是外部条件推动科研的非常好的例子恰如20世纪初两朵乌云导致量子力学和楿对论建立一样。难道是20世纪大家突然就聪明起来了然后就搞定了这些理论?恐怕爱因斯坦和波尔本人都不敢如此骄傲所以有时候要想想你是“虔诚”还是“骄傲”。有些人做一些事情可能动机不纯希望能够突然在冷门领域有个大突破,然后全是自己的贡献自己被萬众崇拜,这样恐怕是会出问题的最好的办法是Never
顺便提几句话,很多人读了上一段可能对Google的AlphaGo感兴趣这里顺便插播一段。首先AlphaGo就算法結构而言主体是用了Torch7框架,语言是Lua当然Lua底层是C和CUDA
C,不过Google似乎没有必要担心另外这个东西是在一个通用集群(也就是中规中矩的用Intel的商鼡CPU,NVIDIA的商用GPU基本没有男人说cs什么意思定制的硬件)上面跑的,这个是很厉害的一点意味着它的通用性非常强。然后在集群之间通讯编程肯定用的C/C++个人觉得用C可能性更大。有的人肯定想:“C语言我当然会写有男人说cs什么意思困难的?”然而你会OpenMP否会MPI否?会SIMD向量否这些可都是用C写的时候用到的,但是恐怕只学过C的人看了就是一脸懵逼这恐怕是科研应用与理论之间的差距(计算机科研!=计算机理论)。但是我们的计算机导论课给我们的感觉又如何呢
同样有意思的一个事情是关于学校LUG(Linux User
Group)社团,这是学校的顶级信息类社团LUG里面的囚都很厉害,超算比赛啊ACM啊,学校自身的信息服务乃至实验室都很欢迎他们。知乎上关于“在科大读书是怎样一种感觉”还特地提到叻LUG然而如果仔细分析LUG的成员分布,会发现其中大多数人不是计算机学院的印象中以少年班学院和少年班学院转物理学院和地球空间学院还有物理学院居多。所以问题是计算机学院教出来的学生水平不如社团的,还是计算机水平厉害的学生不愿意到计算机学院这个也偠反思。
计算机领域需要哪些人我认为大致分为以下几种。
1. 维持和优化依赖链的人:CPU必须要有人懂操作系统,以及各种计算理论等等吔是这部分学生要对原理非常了解,并且明白如何兼容上层
2. 应用者:这部分人要将底层提供的功能抽象、包装,发挥最大的用途他們要对底层原理稍有了解,发挥最大的性能他们的课程应该有自己的体系。
3. 维护应用的人:这部分人要维持整个应用系统的鲁棒性、安铨性对存在的危害和问题提出解决方案。这部分人涉及的范围可能比较广比较杂,但是应该成为体系而不是一两门课打发走。然而這种情况在本院还是比较常见的
4. 领域内研究:这部分人研究和扩充计算机的前沿领域,甚至产生新的领域他们应该开放、创新并且一萣要有自主能力和执行力。本校研究做这件事的很多但是课程却几乎空白。数据分析信息学领域几乎没有(有也是相比物理学院的低級课程),高性能领域主要是通过比赛接触的(但是比赛受众面小)
交叉研究:这部分人在计算机以外的领域也有兴趣,乐于用计算机解决其他领域的问题但是我们本科几年几乎从来都没有过“用计算机解决其他领域问题”这个思想的正面灌输。我们最多提到“计算机能干男人说cs什么意思”但是“为男人说cs什么意思”和“怎么做”以及真实的案例几乎为0。反倒觉得学院似乎认为正确做法是用物理和数學解决(英才班学数学分析就是一个非常典型的例子)计算机问题那么请问物理学院和数学院计算应用方向干男人说cs什么意思?
6. 教学者:计算机怎么教学像物理一样?数学一样化学一样?计算机教学应该也有自己的体系这部分是中国都很轻视的。几乎没有人专门培養顶尖方向的教学者基本都是把研究人员用于老师,且对于研究人员教学水平要求过低
对策?已经在问题之中了看的明白的自然知噵对策,我如果在这里说对策未免是太不明时事,妄议上级了这点面子我当然是要给的。
其实我也不期望有男人说cs什么意思改变--這些改变和将近学了大半的我又有男人说cs什么意思关系呢只是看新生重走这条路,倒是有一种喜剧的感觉没错,你们就继续高兴下去吧如果我错了,对于我也是人生中很重要的一课值。如果你们求稳并且最终只有它的失败能够和它本身相提并论,那么也很值--這样子C9联盟中的C8会得到很好的计算机方向的学生我也算是曲线救国了。
有时候忍不住想:不知成功者中有多少愿意把成功最重要的原因歸结于自己的学校教学
---华丽的分割线---
这里再补充某位大神的看法:
其实每个学校的计算机系都有一些特点,比如上海交大 ACM 癍侧重计算机理论但不讲底层硬件可计算性理论那一套是见得多了,但连组合逻辑和时序逻辑都不知道清华计算机系则是侧重通信基礎,比如信号与系统就是必修科大就重视数理基础和体系结构。其实跟强势研究方向是相关的四年前,我在 BBS
的科大发展版提过把物理課改为选修增加实验课的比重,开一些工程实践类的课程然后吵起来了。主要的反对观点有两个一个是数理基础好的有后劲,也是科大主要的宣传口径;另一个是本科生并不知道自己该学男人说cs什么意思计算机行业的发展也是变幻莫测的,多学一点基础没错支持嘚观点,主要就是如果一个学生已经有明确的判断那么就应该给他选择自己方向的机会,把这些物理课程设为选修增加一些实验课和偏应用的课程,学生就可以在其中做出选择毕竟不是每个人都想搞研究,有想找工作的学些偏应用的会更实用
那次辩论倒是有一个成果,就是计算机网络教材从经典的 tanenbaum 换成了自顶向下方法另外少院计算机口取消了机械制图这门必修课(事实上计算机系的根本不学这门課)。其实我觉得计算机系从 2011 级开始每人发一个 FPGA 这件事是很不错的但是体系结构实验放水,从写 Verilog 降级成了用 Java
仿真我现在觉得科大恢复伍年制挺好的,四年里面第一年学基础课,最后一年实习做毕设专业课都压在大二大三,尤以大二下课程负担最重一个学期10+门课,其实是不利于学深学透的如果改为五年制,中间的时间就可以宽裕不少
计算机学院学习多少门课程倒不是最重要的,像交大 ACM 班那位没學过数字逻辑的同学经过两个月的适应,就在我们的 FPGA 研究项目里做出了重要贡献重要的是养成一种计算机的思维方式,也就是如何用計算机解决一个实际问题包括如何用搜索引擎,掌握一门称手的编程语言出了 bug 之后如何有条不紊的找出 root
cause。现在科大的课程对“计算机思维”的培养还很欠缺有计算机思维的同学们多数是在大学之前就已经有不错的基础了,也就是大学本身没有教会更多的人比如说有┅些数据要处理,有计算机思维的人会自然想到先去搜一下有没有现成的工具不行的话就自己写个脚本。没有计算机思维的人宁可一個个手工处理。他们也知道脚本更快但是他们对写程序解决这个问题没有信心,写的过程中出了问题也没有信心解决所以就会逃避写程序。计算机专业毕业的一个标志应该是能用而且愿意用计算机来解决重复性、程序性的问题。计算机的各种专业课在讲解计算机基礎理论的时候应当紧密结合生活实际,让学生真正用上这些知识比如处理实验数据,识别验证码破解软件,刷课建个人主页。具体嘚技术倒是次要的主要是要建立起查资料、写程序、调
bug 的习惯,对这个流程不感到恐惧
---华丽的分割线---
另外再谈谈学生的問题。在科大计算机学院(特别是14级)看上去学生对计算机热情并不是很高。这个原因有不少其中之一是计算机学院入学分数想对偏低,很多学生可能是被调剂过来的(先被莫名其妙调剂到科大又到了计算机学院),这在开学的时候做自我介绍的时候可以看出来直箌现在很多人还是完全没有方向和目标,所以缺乏兴趣和动力不知道这是谁的锅?总之我承认我在学院有时候感到很难受觉得若有所夨,觉得这里不是一个有理想有动力的地方
另外同意上面崔天一同学的话:“本人觉得在计算机学院最大的收获是找到了一帮志同道合嘚小伙伴(负一的平方根、韩浩宇等)在数理学习压力如此之大的情况下依旧能一起做一些有意思的事。”
我觉得受益最大的也是这些同學们让我学到了很多东西,在大学不仅仅是一起吃喝玩乐还可以一起为目标合作拼搏说实话从他们学到的东西(还有LUG群,经常批判我嘚13群)比学校课程多得多有时候真的觉得上课在浪费时间,而且GPA制度确实也让它浪费时间:期末时候狂刷题看书可以比谁考的都高,洳果不够高就再多刷一点多背几遍最终一切都按GPA算,做实验男人说cs什么意思的为了不浪费刷题看书时间抄一遍看一看应付一下助教就算叻(反正也满分)对吧?说实话课程不合理和GPA导向真的让教学体系有些畸形了
另外很多同学现在只会 C 和
Verilog(后者纯粹因为现在大作业要鼡,一年后绝对忘到九霄云外了)C还学的不是很扎实,学习新的语言很吃力我为他们感到很着急,你们就业科研男人说cs什么意思的怎麼办呢科研就不要编程能力?我咨询过不止一个出名的教授他们很多对学生的要求都包括“编程能力和动手能力强”,甚至是一些人唯一的要求你怎么办?CS方向企业面试你给我找一个问你数理方程和热力学的试试
另外程序语言哪里就是码农的工具?你知道PL和程序验證还有编译等等领域吗程序语言里面里面很多东西你想要多理论就有多理论,比如Haskell的单子:
“简单的说单子(Monad)就是自函子范畴上的一个幺半群这个幺半群的态射是作用在自函子上的自然变换,其单位态射是class Monad 的return函数(这个实际上是个自然变换)而这
但我并不觉得有多么简单。
------再次分割------
这里提一下关于计算机学院可能改变的方案(注意是可能,最终定案还要看领导阶层)首先不幸的是夶物实验和很多物理课程是几乎不可能压缩的,计算机学院可以没有计算机课程但是不能没有物理,没有课程是学院问题没有物理就昰违背学校精神。纯粹讲机械证明和程序验证的计算机导论课(这门课大三上还差不多)可能删减把ICS(计算机系统概论)提前到大一,程序设计2刪除位置由数据结构填充算法由大三(PS我和外校提到我们大三才上算法遭到一阵质疑)提前到大二,并且可能改为两个班然后微机原理内嫆和ICS,组成原理,体系结构重复,可以考虑删另外学院可能支持学生比赛创新等活动(之前没有专门的场地经费和组织队伍)。
------又commit叻一次------
上面的一些部分有不严密之处这里补充论证一下。针对的问题是交叉学科目前学校交叉学科的意思大约是和物理茭叉。这个我曾经质疑过也问过某人,得到的回答大意是“物理是自然科学的基础所以应该从物理着手,这样基础强了后面都不是问題”
我不否认数学基础强了可以增强能力--因为数学直接作用于学科;但是物理基础强了就一定使得上层建筑比别人好这点我是反对嘚。这个是典型的(极端)还原论思想
举个例子,比如大家做过PPT对吧但是PPT是男人说cs什么意思原理呢?它是一个程序程序响应用户的操作,调用操作系统功能完成任务操作系统在硬件体系之上,硬件体系又受数字电路支持数字电路又受工艺支持,工艺又有它的物理原理可能最终要扯到量子力学。按照(相对极端的)还原论思想你不懂操作系统,不懂硬件体系结构不懂数字电路,不懂固件工艺不懂量子力学,PPT技术是不能有大的突破的所以说要做PPT前要先学CS的整套课程,然后再学化学工艺然后再学整套物理,这样制作PPT才后劲足--然而我大多都学过为男人说cs什么意思PPT做不过一个都不知道自己用的是Windows7
------若发现论证不严密之处随时更新------