coolsmilee 发表于 2013-3-25 17:01:57

HIT CS科班对计算机专业素养的理解(转帖)

原文出自一亩三分地论坛,作者分享了自己对计算机专业的理解和很多有用的信息,觉得挺不错就转过来了。

P.S. 要是早看到这么一篇文章就好了..


【题记】Great minds discuss ideas. Average minds discuss events. Small minds discuss people. -- Eleanor Roosevelt

【前面的话】本文可以随意转载,有任何建议、意见,都可以给我发邮件,hitzzy at gmail dot com。

作为计算机科班、系统方向,谈谈我对计算机专业素养的理解,希望对大家有所帮助。

所谓,知之者不如好之者,好之者不如乐之者,计算机专业也不例外。虽然本科是被选到计算机专业,但大一因为C语言老师的激励而喜欢这个专业,并在大三偶然参加国防科大“微处理器设计”研究生暑期学校后,我决定做系统领域研究。兴趣入门,比如《计算机文化》(第10版?)《编码的奥秘》(我觉得旧版比新版的小开本更好)《大话处理器》,以及传记类的《ACM图灵奖演讲集:前20年 (1966-1985)》《ACM图灵奖 (1966-2006):计算机发展史的缩影》(ACM网站1966-2009的演讲原稿)《IEEE计算机先驱奖:1980-2006》。更专业一些,推荐Prof. Patt的《计算机系统概论》(Introduction to Computing Systems:From Bits and Gates to C and Beyond)和Prof. Bryant合著的《深入理解计算机系统》(Computer Systems: A Programmer's Perspective)。CMU流传着这个段子:15-213,给CMU门牌的课程。这里的15-213,既是以CSAPP为课本的Introduction to Computer System课程编号,也是匹村的邮编。信不信由你,我就是因为这本书,喜欢上系统这个方向的;另一个原因是利用VHDL编写自定义RISC指令集的cpu和串口,并在带有FPGA的实验台上验证,使两者成功通信!

在谈具体课程前,插播三类文章,以培养专业(职业?)精神。
a) 专业科普
Utah AP的What every computer science major should know、我上届创业的师兄编辑的计算机新人入门任务,Eric Raymond的How To Become A Hacker、William Long的《写给新手程序员的一封信》,《给未来的你——李开复在2011级大学新生学习规划讲座上的演讲》。工欲善其事,必先利其器——程序员的文本编辑器简介;基于HTML5的VIM寓教于乐的在线游戏vim adventures。
b) 科研素养
前哈佛CS教授、现Google SE的Getting started as a PhD student,基于指导MIT和Berkerly学生总结而成的Advice for students starting into research work,CMU CS教授的On the Ph.D.,Wisc CS教授的Advice,Utah CS AP的10 easy ways to fail a Ph.D.和Reading for graduate students,HIT校友、Wisc Prof. Xinyu Zhang的外链。Princeton李凯教授关于职业生涯规划的报告。UW教授对Paper Award的观点。The Ph.D. grind也非常有参考价值。
c) 时间规划
李笑来老师的《把时间当作朋友》,MSRA员工Pongba的《暗时间》,Utah CS AP的Tips for work-lif balance,我上届百度师兄的《我是如何“管理时间”的》。

1)Programming Language
入门当然是C,否则都不好意思说自己是学cs。我当年用的是C Prime Plus,很基础。C之父写的C bible——The C Programming Language绝对是好书,是进阶和reference必备。C进阶还有各种C专家编程,C与指针,C陷阱了,可以提高。之后是C++,java,C#就看科研/项目需要了。我认识的一些MSRA实习生从C++转到C#(C++++),说什么编码效率高云云。反正我因为做llvm,就是C++一条道走到黑。人称“大牛”的师兄跟我说,按照某语言排名榜的说法 c++快挂了;anyway,大牛没给出出处。而在TAMU任教的C++之父还在弄STAPL,并行版的STL,我觉得C++肯定还不至于是五丈原的诸葛半仙。C++入门,我用的是C++ Prime(注意,不是C++ Prime Plus)。C++之父写的C++程序设计语言,其实比较难懂,入门之后可以翻一翻。C++的进阶书更多,各种Efficient C++,侯捷老师的STL源码剖析啊。boost是C++广泛应用的开源库。C++11也很有趣。(不好意思,我也只是知道,没怎么看。)而Java是不适合作为第一门语言的;CMU, "the home of object-oriented modular programming" by David Parnas,2010年3月末取消了大一的OOP,转而开设OOD,因为前者反模块化反并行化。当然,这点还在广泛争论中。

脚本语言,顾名思义,用于完成冗余繁琐的事情。把这些事情交给计算机,定时跑就行,什么python, shell, perl, awk, sed, ruby, ror等等。选一个顺手即可。记得豆瓣还是哪里的程序员自述,计算机科班教育不会开脚本语言课,但谁真正掌握了一门脚本语言,说明他是爱计算机的,所以我们会招聘他。(说到job-hiring,相信很多人看过《The Social Network》。Zack招来的人,和那个硅谷小子的,风格完全不一样;而前者才适合一起创业。大家可以体会一下。)书籍都不一一举例了,似乎是个脚本语言,O'Reilly都有从入门到精通的书。最后,要精通正则表达式哦。

浪漫的函数式语言,比如Haskell,lisp,ML等等,是另一种思维方式。有一个笑话,前苏联克克勃苦心偷到了美国NASA的核心代码,交给上峰后被训了一顿;他很莫名其妙,瞅了一眼代码,全是()的组合,当场崩溃。后面介绍Compiler时也会涉及FP。事实上,我觉得,这才是计算机学生应该掌握的语言,MIT大二就开了scheme(lisp的两种主要方言之一,另一种是Common Lisp)的课。法国“中科院”INRIA设计了Coq,被用于各种形式化证明,包括编译器生成代码的正确性验证。首届国家科学进步奖的两位获得者有吴文俊,主要贡献就是机器证明,而另一位是袁隆平,解决咱们的口粮。可见吴有多么重要!

最后,我很纳闷,居然有人推荐HTML/CSS/JS作为语言的入门?亲,这说的是计算机科学学生的第一门专业课。我讨论的是计算机科学,是科学,不是工程;是本科,不是大专技校。学C,是为了后面的OS——linux。学web,你跟得上市场潮流吗?HTML/CSS/JS,你咋不是HTML5呢。不好意思,我很保守,也不太懂web编程,但请各位想做web的看看HTML5的发布会视频,演讲者一上来给出各种设计哲学,包括了The Declaration Of Independence、Karl Marx的按需分配、George Orwell的Animal Farm,最后才给出了HTML5的。这才是精髓,或是说web设计的精髓。看到自己做的webpage很有成就感,修改linux内核代码的成就感怎样?先抑后扬的感觉不是更爽!本科学习的原则,在我看来,是不要被外界所打动,夯实基础,做自己有兴趣的事情。举个俗透了的例子,如乔布斯学书法,去印度礼佛!

兼听则明;推荐研究PL的王垠(11年及以前的状况)的《初学者程序语言的选择》。Indiana U in Bloomington教授、PL领域先驱Daniel Friedman(wikipedia;从王垠的叙述,怎么看怎么像CS领域的“周伯通”费曼)01年做了主题为The Role of the Study of Programming Languages in the Education of a Programmer的演讲(pdf原文,PPT slides,王垠的review)。

2)Data Structure & Algorithm
很多人推荐CLRS,我也不能免俗,但毕竟不是入门级别的。其实,学DS掌握基本概念就行,推荐清华大学严蔚敏老师的《数据结构》,网上也有视频。同时推荐MIT的Advanced Data Structures和Wisc的Introduction to Algorithms。之后也正如大家所言,ACM吧,不是为了WF,只为了不惧怕编程,体验成就感(再回到PL,web语言可以acm?)。一定题量后,需要加强算法,推荐Robert Sedgewick的算法书,Algorithm Design以及《算法学:计算精髓》。最后,拜一下高德纳的TAOCP,所谓家居编码旅行侃山必备利器。

据研究TCS的同学说,the power of randomness in computation是现代的计算复杂性理论最活跃也是最核心的一个部分,其目的在于fool any computationally bounded observer,而高德纳的伪随机卷似乎只是讨论ad hoc伪随机方法。他认为,伪随机是整个计算理论最核心也是最有影响力的理论,没有之一;现代的密码学正是植根于这套理论。他同时推荐了伪随机的教材,以及Harvard和Wisc的(伪)随机课程。他认为,Prof. Yao是现代密码学的founding father,并对其论文theoy and applications of trapdoor functions的评价是“完全的神作,一语洞穿宇宙的奥秘”。

TCS也是有qual的,这是UIUC版和Wisc版。

3)Operating System
与DS & Algo需要考虑实际的应用场合一样,操作系统也是门实践的学科。记得老师在课上说,当年他读书时,觉得银行家算法是这么优雅,为什么没有任何OS使用?原因就在于时间复杂度是O(n^3)。话不多说,熟悉类UNIX环境后,直接读linux的源码,比如0.11,一万行左右,市面上有代码剖析的书。我的建议是,以访客身份自学工大cms的OS课程,自己动手实验+智慧的提问。有了Bochs模拟器和0.11的基础,恐怕将来对任何OS部分都不会感到陌生(进一步可以读LDD;阅读代码的方法论可以参考《Code Reading: The Open Source Perspective》),此时读者可就不只是“牛人”了,而是“大牛”甚至“专家”了(参见《程序员的十层楼》)。这篇文章介绍了linux FS的进化史。MIT用于教学的类UNIX OS XV6是另一种选择。果然还是有推荐APUE,Unix编程艺术和UNP的。感兴趣的同学可以一起学习Wisc系统课程Introduction to OS、Advanced OS和Distributed Systems。前者可以参考Operating Systems: Three Easy Pieces,后两者直接读paper。而哈佛教授也在钻研OS课程教学创新。

当然,也可以拿实时操作系统练练手,比如uC/OS,代码短小精悍,和linux kernel一样,pure C。除了平时就使用linux发行版(比如我一直用的是ubuntu,但是因为LLVM的关系,现在考虑是不是有必要转到freeBSD;而Debian、arch、gentoo、Fedora、suse、Redhat、CentOS等等都各有特色)外,百尺竿头,还可以学习如何自定制Linux系统Linux From Scratch。

国内还有本“自己动手写操作系统”?

Win方面,好像有Window internals?虽然是牛书,但是用膝盖想想也知道,写出来的肯定还没深入到骨髓(那可是商业机密啊),不如读linux源码学得扎实。当然,我不太用win,也只是偶尔对win编程。Win API似乎设计得太诡异啦,一点也不具备正交性。以操作内存页面权限为例,为啥设置页面权限的同时还返回页面的初始权限;而获取页面权限时却是返回给定页面的所有信息,再从中找出权限信息。当然,想进入微软,还是要积累些Win系统编程和调试的阅读量的。

至此,还是要鄙视一下win——没有好用的终端(git的Win版都配有bash),只是以图形界面赢得普通市场,取得商业成功而已;当然win的内核技术事实上是比linux强大。君不见,哪个知名IT公司没有自己的集群?集群需要图形界面吗?在我看来,不用终端,似乎失去对整个计算机的控制;不爽,计算机是服务于人的,是被CSer控制的。顺便8g一下,"盖茨对'计算'这一概念的理解,是初中生水平;Google的Page,是本科生。"(引自《程序员的十层楼》)现在,我还不确定实现facemash的Zack是什么水平,但至少和Page是平手。再拜一下Amazon,这是因其云平台,才有Dropbox等一路风生水起;可叹中国,国家垄断。

至于选择日常使用的OS,王垠04年写过《完全用 GNU/Linux 工作》和《写给支持和反对<完全用Linux工作>的人们》(两文合集下载)。正如之后有工大师弟向我介绍Windows的优势一样,事后也有人批驳王垠。在我看来,萝卜青菜,各有所爱嘛;凡事都有各自的因缘,保持和而不同的姿态,不是更体现多样化之美嘛。

还有,移动设备的OS有自己的研究特点。固态硬盘也有其市场化的局限。

既然来地里的大都是出国的,那么清华学生写的《OSDI, SOSP与美国著名计算机系的调查》自然不能错过;虽然有些信息已经过时,比如Prof Zhou已转到UCSD了;OSDI、SOSP已经“沦陷”了。文中以这两大OS领域顶级会议为基础,介绍了MIT、Princeton、UW-seattle、Stanford、Berkeley和CMU的OS牛教授。我相信,包括我在内的大多非牛牛们,对这些学校大都只是dream而已(给写推荐信的教授直接灭了我Stanford, berkeley的念想,各种they are top云云),那么大家可以关注下这些牛教授的学生们,都去哪些地方任教了,比如Utah,OSU都是很不错的,可以尝试。另一方面,从ASPLOS、HPCA、MICRO、PACT、PLDI、FAST、SC、ICS和CGO等会议发表的论文,可以大致了解系统方向的牛校。

4)Database
不好意思,我db没学好。但其实db是相当成熟也很有意思的领域,可惜mysql已死。入门我就不推荐了,直接进阶吧——《数据库系统实现》。Prof. Anhai Doan recommends the Cow Book, or the Complete Book.

Wisc的DB据说比较强势:
i)CS 564 (Database Management Systems: Design And Implementation) is "everything you should know so that you can get an industrial job working with relational databases".
ii)CS 764 (Topics In Database Management Systems) is "all the gory details you may (or may not) want to know about relational data management systems"
iii)CS 784 (Data Models And Languages) is "all the stuff beyond relational data (e.g., Web, text, data mining, data integration, data extraction) that you should know to broaden your data management knowledge or to work in the field as an advanced developer/researcher". 而其课程项目列表足以成立若干创业公司。同时推荐Principles of Data Integration。CMU就有应用DI技术于建筑设计领域的startup Schema Fusion。

5)Software Engineering
这简直是个人文学科,集计算机科学、管理学、心理学、社会工程学于一身。在此我不展开,可以参考UW教授的讲座Software evolution then and now: the research of David Notkin。经典书籍也有很多分类,比如编码类(Write solid code, refactor, 各类design pattern,《代码大全》第二版,《程序员修炼之道》,《编程卓越之道》,O‘Reilly“xx之美”系列,《编程珠玑》,各种“UML,XP编程、敏捷、需求,测试”书籍),故事类(dreaming code),管理类(各种Joel on software,美国“创新工场”YC创始人Graham的《黑客与画家》,peopleware,37single的好书,甚至时间管理GTD的书籍)。同时敬礼图灵奖获得者、北卡教堂山教授、《人月神话》作者Brooks,但我推荐的是他另一本书《设计原本》。

The co-author (and UW alumnus) of lmbench, a system performance benchmark, is proud of his Sourceware Operating System proposal considered as the peer to Raymond's Cathedral and Bazaar paper. He also recommends this to everyone who was annoyed at countless bugs.

搭车说一下,我不是鄙视web。如果想学web,也应该学习CSS,Ruby的framework,再不济也得HTML5。在我看来,后端架构更为重要,包括apache,linux sever管理(鸟哥的linux私房菜馆)之类的。但如果真想学web,推荐UIUC课程,我上届创业师兄建立的pureweber及其搭档的关于前后端开发的博客。

(接楼下 )

coolsmilee 发表于 2013-3-25 17:03:18

本帖最后由 coolsmilee 于 2013-3-25 17:05 编辑

(接楼上)

6) Compiler及PL设计哲学
出来混,早晚都要还的。我本科学的最差的就是编译;一个字,混。结果研究生做的都是编译器,即LLVM。那些用iDevice的同学为什么觉得系统很流畅,闭源版本的llvm功不可没;当然还有基于freeBSD(B是伯克利的哦,他们有做工具、开源的传统。8g一下,现在Berkeley的工程系主任Sastry教授,就是受不了Harvard的理论派作风,于1994年跳过来白手起家做系统的)的Mac OS X及其简化版iOS的功劳。北京intel研究院实习的师兄跟我说,intel之所以牛,是在于其编译器优化。所以说,学好OS和compiler,走遍天下都不怕。

可惜学到这门课,大家应该大三了。很多人如梦方醒,要面对出国保研考研工作公务员等等了,无心恋战。但从这门课(包括以前的汇编语言,工大是大一下在C之后开设的)起,才能真正体现CSer与其它非计算机的区别。CSer应有的境界就是,写高级语言的时候能想到对应的汇编;这应该要花10年功夫,或至少10,000小时吧?

《程序设计方法》《计算机程序的构造和解释》《程序设计语言概念》《程序设计语言原理》,甚至《自动机理论、语言和计算导论》《计算理论导引》才应是计算机专业学生应该具有的理论素养。优秀的程序员应是理解程序设计语言原理的,包括Relational operator,lazy evaluation等概念;即使不理解语言原理,也能围观各种编程语言的特色。Wisc有介绍程序语言原理的课程,使用OCaml(这是其标准库实现;阅读STL是学习语言的最好方式)。编译点滴blog也给出了Compiler书目的点评。Utah Prof. John Regehr科研之余写blog。Utah另一位研究PL、编译的AP Matt Might也有关于PL、Compilers、static analysis的推荐;更重要的是,其blog营养价值之高,让我惊叹!

当然,不能少了龙书虎书和鲸书。Wisc的程序语言和编译方向的qual自然不可错过。对于the life of Binaries,程序员又知多少。编译也是注重实践的一门学科;基于SSA形式中间表示的LLVM从UIUC发芽,经过10多年的发展,成我的简短飞跃总结为apple主力支持的用于iOS的商业编译器,且大有替代gcc之势(FreeBSD已经完成了这一步),不可谓不是个奇迹。

关于编译的牛校,Rice肯定有一席之地,历史上就完成了多个高性能编译器设计的研究,现存的有Habanero。

Facebook从10年起开发、华人始创的HHVM旨在优化PHP,技术细节是PHP2C++以及Dynamic Binary Translation & Optimization。

7) Computer Architecture
海纳百川,系统结构就是这样一门学科——把低层的指令集/汇编、中间的OS、高层的PL熔于一炉。君不见,因为银河机,国防科大永远是中国计算机系的翘楚,虽然现在也开始浮躁了,但清华华科上交(以及南大某并行实验室)还是难以望其项背。

系统结构可大可小。小的指指令集,大的可以包括计算机组成原理、编译(每个指令集都需要自己的编译器)。所以,我把帕特森和轩尼诗的两本扛鼎之作和盘托出——《计算机组成和设计:软硬件接口》和《计算机系统结构:量化的研究方法》(caaqa)。读不懂没关系,书读百遍,其意自现。还有《Parallel Computer Organization and Design》,ASOA以及《21世纪计算机体系结构——计算机体系结构共同体白皮书》。同时,推荐陈首席及其弯曲评论,保罗万象,从系统结构到IT史话,从千人计划到复兴中国,特别推荐“弯曲推荐”。至于国内做编译/系统结构的blog roll,有IBM员工的并行实验室,中科院博士的编译点滴,HelloGCC,台湾研究员陳韋任、特别是他的wiki。

还是那句话,计算机专业是很practical的,Dr. Brooks是因为领导IBM 360而成就的图灵奖;系统结构领域也是很活跃的——传统的处理器设计(包括cache一致性、互联网络等)、软件层级的并行编程模型(如TAMU的STAPL、UCLA的CDSC、Intel的TBB等等)、多核众核,以及利用GPU/FPGA加速的可重构计算等等,甚至还包括系统平台相关的编译支持。Mr. Esmaeilzadeh关于系统结构的进化,特别是多核芯片功耗的研究,非常具有前瞻性;Prof. Dave Patterson和Dr. Pradip Bose分别阐述了自己的观点。

Prof. Mark Hill shared PBS American Experience: Silicon Valley and pointed out that "This excellent documentary is mostly about how discrete transistors and then integrated circuits became commercially successful at Fairchild Semiconductor, which then in turn spawned many companies. At one time NASA bought over half the transistors sold, accelerating computer development (and IMHO allowing you to have a smartphone now and not in decade)."

Wisc维护的World-Wide Computer Architecture Information以及Computer Architecture Research at Wisconsin提供了很多信息。ISCA是系统结构的顶级会议;有些国人分享了他们在ISCA的经历:计算所研究生的《ISCA和中国》,计算所系统组副教授的《ISCA08见闻》,Prof. Kevin Skadron学生记录ISCA 2011的《ISCA归》。

原复旦大学副教授、现上交软件学院教授陈海波,于11年在中国计算机学会通讯专栏发表的《一名系统研究者的攀登之路》(pdf),很适合作为Statement of Purpose的第一部分,即Why computer architecture。按我导师的话说,与其说是此人的攀登之路,不如说是本来很牛、思维很活跃的人(从04年大四到11年投中若干重要甚至顶级会议SOSP,只花了7年时间),通过明师(注意,是明白的明,不是名气的名)指点,在转换若干方向(包括VLIW的GCC后端移植和可重构计算)后,选定系统虚拟化这个三年后国内很火的领域后,一路顺风顺水,并从此处在系统虚拟化研究的浪潮之巅,无论是从科研经历(在MSRA和MIT鼎鼎大名的PDOS组和大牛人Frans Kaashoek共事),还是发表的论文(包括ISCA'08、MICRO 2009、PACT 2010、SOSP 2011、PPoPP 2011等)的角度。《ISCA08见闻》谈及的Harford Xiaoyao Liang,也很幸运——“他的老板是David Brooks,给他指导了一个很好的方向,避开了功耗这个热点,选择Process Variation这个突破口,在Top Conference上发表了一系列文章。”事实上,每个博士都有自己进入某一领域的独特因缘,否则真应该思考一下Why Ph.D.——6年的commitment(特指美国)。来自台湾的MIT CS博士对为什么读博士也有他的观点(需翻墙)。以上故事能有所借鉴最好,实在不行,当成茶余饭后的一个段子,也能博得一笑,十年少!

而从我的偶像,LLVM首席architect Chris Lattner自述的简短生平中,能从中了解他的成长轨迹;更重要的是,他和咱的差距也就是十年!不过,系统结构方向更务实的马拉松目标,可以定为Wisc的09届本科、11届硕士,UIUC 11年入学的博士Matt Sinclair。

最后,推荐威斯康馨系统结构课程Advanced Arch I和II(Prof. Mark Hill或Prof. Mikko Lipasti版),以及Qual的备考资料和历年真题,让想做CA研究的感受一下!话说,我当年本科时苦于没人指导如何研究系统结构,就下载《微处理器设计》、caaqa等经典书籍每章后面感兴趣的论文,陷于浩瀚paper海而没有灯塔指引。希望后来者不要重蹈我的覆辙!

上面推荐了一些书,但是对于《最常被程序员们谎称读过的计算机书籍》,不知是不是有人躺枪了;反正,我是中了。

8) Systems
CS科研,尤其是系统领域的研究,不是一门课的知识就能涵盖的。比如,此文介绍了垂直搜索引擎Duckduckgo的架构。
虚拟化也是系统领域研究的热点之一,比如Virtual Machine Moniter应用于smartphone平台方面,哥大比较前沿。

网络方面本人水平有限,暂归此类。这是网络方向会议统计。

纷繁复杂的分布式系统永远是系统领域研究的皇冠之一。Google FellowJeff Dean必然是其中翘楚。MapReduce其实是FP的两个higher-order functions map和reduce;对于科研来说,是旧瓶装新酒,但工程方面实际意义比较大。此博客主要讨论分布式领域技术。这是高级CS课程合辑。

有人的地方就有江湖,也有隐私和安全。计算机安全领域的会议统计有很多人维护:TAMU版、新加坡版、英国版、沙特版。加拿大Carleton大学汇编了一些资料。而TAMU的华人AP也收集了一些信息。

9)课程之外
回首这些年,很高兴学计算机,不仅是因为与人相比,计算机其实很“简单”,照着程序执行,出现了意外也是可评估可能恢复并规避的——每个程序员都是折翼的天使,在计算机世界里构建属于自己的理想国,没有尔虞我诈;更是因为通过计算机专业的学习(推荐MIT CS五年本硕、海南中学07届师弟给08级高中生介绍学习经验的视频),更懂得如何获得更多的信息,以更开放的心态接受新鲜事物,而不是成为完全执着保守的左派。事实上,很多学计算机的人喜欢科幻,喜欢哲学,比如冯大师的《计算机和人脑》、《万里任禅游》,喜欢讨论技术背后体现的价值观,如《我们的防火墙:网络时代的表达与监管》。

计算机的博士研究,需要扎实的数学基础,更需要人文素养。在介绍SE时,其实更多的书目是偏人文的。是的,我认为中国缺少安贫乐道、少欲知足的精神,这与缺乏真正Ph.D.教育——五到六年时间在一个方向钻研(Prof. Mike Gleicher给出了很多建议)——有关。以计算机专业而言,本科学位是B.E.,工科学士;研究生或是M.S.,科学大拿;博士是Ph.D.,哲学博士。Ph.D.毕业后,追求的不应该是过分的物质生活,反而应是研究领域精神上的快乐!

这也与传统文化的缺失有关,包括我在内,没几人读过千字文、三字经、弟子规、四书五经、春秋左传。另外,学计算机技术也是要读计算机发展史、参观硅谷的计算机历史博物馆的,什么《数学之美和浪潮之巅》《激荡三十年》《沸腾十五年》《IT史记》《IT通史》《IT大败局》,以及《信息技术文化史》豆列,了解什么技术方兴未艾,什么如日中天,什么日薄西山。同时推荐这个ted视频,how inspired leader inspire others,里面有描述创新的源泉和从新兴到衰亡的市场趋势分析。桑德尔的《公正》,讨论的就是很贴近生活实际的道德标准评判。而《细读美国大学》则是让国人了解米国大学的细节,以及如何在米国读大学,特别是本科Liberal Art教育(通识教育、素质教育都不是恰当的翻译)。子曰从心所欲而不逾矩,庄子说逍遥游,佛家的观自在(即大悲观世音菩萨的别称),让我向往,让我思考,让我自由!

跑远了,期待一下量子计算机吧。那时的计算机基础课,可能完全不是上面这一套了。1)应该是量子力学了吧?

总之,祝福所有CSer,这是门最好的学科。祝福所有飞友,并附上我的简短飞跃总结,心安处,即是家。南无阿弥陀佛!

不好意思,知者不言,言者不知。喷了一地口水,与我头像不符,常惭愧。

(EOF)








hslx111 发表于 2013-3-25 20:05:30

果断收藏了,里面提到不少好书

Castelo 发表于 2013-3-31 10:34:07

感觉就是一句话。
页: [1]
查看完整版本: HIT CS科班对计算机专业素养的理解(转帖)