计算机科学与技术学习心得的详细介绍

计算机科学与技术学习心得的详细介绍

计算机科学与技术学习心得

计算机科学与技术这一门科学深深的吸引着我们这些同学们,上计算机系已经有近三年了,自己也做了一些思考,零零星星的,今天先整理一部分,大家看看有没有用,我一直认为计算机科学与技术这门专业,在本科阶段是不可能切分成计算机科学和计算机技术的,因为计算机科学需要相当多的实践,而实践需要技术;每一个人(包括非计算机专业),掌握简单的计算机技术都很容易(包括程序设计),但计算机专业的优势就在于,我们掌握许多其他专业并不“深究”的东西,例如,算法,体系结构,等等。非计算机专业的人可以很容易地做一个芯片,写一段程序,但他们做不出计算机专业能够做出来的大型系统。今天我想专门谈一谈计算机科学,并将重点放在计算理论上。

记得当年大一,刚上本科的时候,每周六课时高等数学,天天作业不断(那时是六日工作制)。颇有些同学惊呼走错了门:咱们这到底念的是什么系?不错,你没走错门,这就是计算机科学与技术系。我们系里的传统是培养做学术研究,尤其是理论研究的人。而计算机的理论研究,说到底了就是数学,虽然也许是正统数学家眼里非主流的数学。

其实我们计算机系学数学光学高等数学是不够的,我们应该想数学系一样学一下数学分析,数学分析这个东东,咱们学计算机的人对它有很复杂的感情。在于它是偏向于证明型的数学课程,这对我们培养良好的分析能力极有帮助。当年出现的怪现象是:计算机系学生的高中数学基础在全校数一数二(希望没有冒犯其它系的同学),教学课时数也仅次于数学系,但学完之后的效果却几乎是倒数第一。其中原因何在,发人深思。

我个人的浅见是:计算机类的学生,对数学的要求固然跟数学系不同,跟物理类差别则更大。通常非数学专业的所谓“高等数学”,无非是把数学分析中较困难的理论部分删去,强调套用公式计算而已。而对计算机系来说,数学分析里用处最大的恰恰是被删去的理论部分。说得难听一点,对计算机系学生而言,追求算来算去的所谓“工科数学一”已经彻底地走进了魔道。记上一堆曲面积分的公式,难道就能算懂了数学分析?

中文的数学分析书,一般都认为以北大张筑生老师的“数学分析新讲”为最好。万一你的数学实在太好,那就去看菲赫金哥尔茨的“微积分学教程”好了--但我认为没什么必要,毕竟你不想转到数学系去。

吉米多维奇的“数学分析习题集”也基本上是计算型的东东。如果你打算去考那个什么“工科数学一”,可以做一做。否则,不做也罢。

中国的所谓高等代数,就等于线性代数加上一点多项式理论。我以为这有好的一面,因为可以让学生较早感觉到代数是一种结构,而非一堆矩阵翻来覆去。南京大学林成森,盛松柏两位老师编的“高等代数”,感觉相当舒服。此书相当全面地包含了关于多项式和线性代数的基本初等结果,同时还提供了一些有用的比较深的内容,如Sturm序列,Shermon-Morrison公式,广义逆矩阵等等。可以说,作为本科生如能吃透此书,就可以算高手。国内较好的高等代数教材还有清华计算机系用的那本,清华出版社出版,书店里多多,一看就知道。从抽象代数的观点来看,高等代数里的结果不过是代数系统性质的一些例子而已。莫宗坚先生的“代数学”里,对此进行了深刻的讨论。然而莫先生的书实在深得很,作为本科生恐怕难以接受,不妨等到自己以后成熟了一些再读。

正如上面所论述的,计算机系的学生学习高等数学:知其然更要知其所以然。你学习的目的应该是:将抽象的理论再应用于实践,不但要掌握题目的解题方法,更要掌握解题思想,对于定理的学习:不是简单的应用,而是掌握证明过程即掌握定理的由来,训练自己的推理能力。概率论与数理统计这门课很重要,可惜少了些东西。少了的东西是随机过程。到毕业还没有听说过Markov过程,此乃计算机系学生的耻辱。没有随机过程,你怎么分析网络和分布式系统?怎么设计随机化算法和协议?据说清华计算机系开有“随机数学”,早就是必修课。另外,离散概率对计算机系学生来说有特殊的重要性。现在,美国已经有些学校开设了单纯的“离散概率论”课程,干脆把连续概率删去,把离散概率讲深些。我们不一定要这么做,但应该更加强调离散概率是没有疑问的。

计算方法是最后一门由数学系给我们开的课。一般学生对这门课的重视程度有限,以为没什么用。其实,做图形图像可离不开它。而且,在很多科学工程中的应用计算,都以数值的为主。这门课有两个极端的讲法:一个是古典的“数值分析”,完全讲数学原理和算法;另一个是现在日趋流行的“科学与工程计算”,干脆教学生用软件包编程。我个人认为,计算机系的学生一定要认识清楚我们计算机系的学生为什么要学这门课,我是很偏向于学好理论后用计算机实现的,最好使用C语言或C+ +编程实现。

系里,通常开一门离散数学,包括集合论,图论,和抽象代数,另外再单开一门数理逻辑。不过,这么多内容挤在离散数学一门课里,是否时间太紧了点?另外,计算机系学生不懂组合和数论,也是巨大的缺陷。要做理论,不懂组合或者数论吃亏可就太大了。

从理想的状态来看,最好分开六门课:集合,逻辑,图论,组合,代数,数论。这个当然不现实,因为没那么多课时。也许将来可以开三门课:集合与逻辑,图论与组合,代数与数论。不管课怎么开,学生总一样要学。下面分别谈谈上面的三组内容。

古典集合论,北师大出过一本“基础集合论”不错。

数理逻辑,南京大学陆钟万老师的“面向计算机科学的数理逻辑”就不错。总的来说,学集合/逻辑起手不难,但越往后越感觉深不可测。

学完以上各书之后,如果你还有精力兴趣进一步深究,那么可以试一下GTM系列中的"Introduction to Axiomatic Set Theory"和"A Course of Mathematical Logic"。这两本都有世界图书的引进版。你如果能搞定这两本,可以说在逻辑方面真正入了门,也就不用再浪费时间听我瞎侃了。
据说全中国最多只有三十个人懂图论。此言不虚。图论这东东,技巧性太强,几乎每题都有一个独特的方法,让人头痛。不过这也正是它魅力所在:只要你有创造性,它就能给你成就感。所以学图论没什么好说的,仔细分析题吧。内的图论书中,王树禾老师的“图论及其算法”非常成功。一方面,其内容在国内教材里算非常全面的。另一方面,其对算法的强调非常适合计算机系(本来就是科大计算机系教材)。有了这本书为主,再参考几本翻译的,如 Bondy&Murty的“图论及其应用”,邮电出版社翻译的“图论和电路网络”等等,就马马虎虎,对本科生足够了。再进一步,世界图书引进有GTM系列的"Modern Graph Theory"。此书确实经典!国内好象还有一家出版了个翻译版。不过,学到这个层次,还是读原版好。搞定这本书,也标志着图论入了门,呵呵。
离散数学方面我们北京工业大学实验学院有个世界级的专家,叫邵学才,复旦大学概率论毕业的,叫过高等数学,线性代数,概率论,最后转向离散数学,出版著作无数,论文集新加坡有一本,堪称经典,大家想学离散数学的真谛不妨找来看看。这老师的课我专门去听过,极为经典。不过你要从他的不经意的话中去挖掘精髓。

组合感觉没有太适合的国产书。还是读Graham和Knuth等人合著的经典“具体数学”吧,有翻译版,西电出的。

抽象代数,国内经典为莫宗坚先生的“代数学”。此书是北大数学系教材,深得好评。然而对本科生来说,此书未免太深。可以先学习一些其它的教材,然后再回头来看“代数学”。国际上的经典可就多了,GTM系列里就有一大堆。推荐一本谈不上经典,但却最简单的,最容易学的:http: //www.math.miami.edu/~ec/book/这本“Introduction to Linear and Abstract Algebra"非常通俗易懂,而且把抽象代数和线性代数结合起来,对初学者来说非常理想。不过请注意版权问题,不要违反法律噢。

数论方面,国内有经典而且以困难著称的”初等数论“(潘氏兄弟著,北大版)。再追溯一点,还有更加经典(可以算世界级)并且更加困难的”数论导引“(华罗庚先生的名著,科学版,九章书店重印)。把基础的几章搞定一个大概,对本科生来讲足够了。但这只是初等数论。本科毕业后要学计算数论,你必须看英文的书,如Bach的"Introduction to Algorithmic Number Theory"。

理论计算机的根本,在于算法。现在系里给本科生开设算法设计与分析,确实非常正确。环顾西方世界,大约没有一个三流以上计算机系不把算法作为必修的。算法教材目前公认以Corman等著的"Introduction
to Algorithms"为最优。对入门而言,这一本已经足够,不需要再参考其它书。

最后说说形式语言与自动机。我看过北邮的教材,应该说写的还清楚。但是,有一点要强调:形式语言和自动机的作用主要在作为计算模型,而不是用来做编译。事实上,编译前端已经是死领域,没有任何open
problems。如果为了这个,我们完全没必要去学形式语言--用用yacc什么的就完了。北邮的那本,在深度上,在跟可计算性的联系上都有较大的局限,现代感也不足。所以建议有兴趣的同学去读英文书,不过英文书中好的也不多,而且国内似乎没引进这方面的教材。入门以后,把形式语言与自动机中定义的模型,和数理逻辑中用递归函数定义的模型比较一番,可以说非常有趣。现在才知道,什么叫“宫室之美,百官之富”!

计算机科学和数学的关系有点奇怪。二三十年以前,计算机科学基本上还是数学的一个分支。而现在,计算机科学拥有广泛的研究领域和众多的研究人员,在很多方面反过来推动数学发展,从某种意义上可以说是孩子长得比妈妈还高了。

但不管怎么样,这个孩子身上始终流着母亲的血液。这血液是the mathematical underpinning of computer
science(计算机科学的数学基础),-- 也就是理论计算机科学。
现代计算机科学和数学的另一个交叉是计算数学/数值分析/科学计算,传统上不包含在理论计算机科学以内。所以本文对计算数学全部予以忽略。
最常和理论计算机科学放在一起的一个词是什么?答:离散数学。这两者的关系是如此密切,以至于它们在不少场合下成为同义词。传统上,数学是以分析为中心的。数学系的同学要学习三四个学期的数学分析,然后是复变函数,实变函数,泛函数等等。实变和泛函被很多人认为是现代数学的入门。在物理,化学,工程上应用的,也以分析为主。

随着计算机科学的出现,一些以前不太受到重视的数学分支突然重要起来。人们发现,这些分支处理的数学对象与传统的分析有明显的区别:分析研究的问题解决方案是连续的,因而微分,积分成为基本的运算;而这些分支研究的对象是离散的,因而很少有机会进行此类的计算。人们从而称这些分支为 “离散数学”。“离散数学”的名字越来越响亮,最后导致以分析为中心的传统数学分支被相对称为“连续数学”。

离散数学经过几十年发展,基本上稳定下来。一般认为,离散数学包含以下学科:

1) 集合论,数理逻辑与元数学。这是整个数学的基础,也是计算机科学的基矗
2) 图论,算法图论;组合数学,组合算法。计算机科学,尤其是理论计算机科学的核心是算法,而大量的算法建立在图和组合的基础上。
3) 抽象代数。代数是无所不在的,本来在数学中就非常重要。在计算机科学中,人们惊讶 地发现代数竟然有如此之多的应用。
但是,理论计算机科学仅仅就是在数学的上面加上“离散”的帽子这么简单吗?一直到大约十几年前,终于有一位大师告诉我们:不是。
D.E.Knuth(他有多伟大,我想不用我废话了)在Stanford开设了一门全新的课程Concrete
Mathematics。 Concrete这个词在这里有两层含义:
第一,针对abstract而言。Knuth认为,传统数学研究的对象过于抽象,导致对具体的问题关心不够。他抱怨说,在研究中他需要的数学往往并不存在,所以他只能自己去创造一些数学。为了直接面向应用的需要,他要提倡“具体”的数学。在这里我做一点简单的解释。例如在集合论中,数学家关心的都是最根本的问题--公理系统的各种性质之类。而一些具体集合的性质,各种常见集合,关系,映射都是什么样的,数学家觉得并不重要。然而,在计算机科学中应用的,恰恰就是这些具体的东西。Knuth能够首先看到这一点,不愧为当世计算机第一人。第二,Concrete是Continuous(连续)加上discrete(离散)。不管连续数学还是离散数学,都是有用的数学!

前面主要是从数学角度来看的。从计算机角度来看,理论计算机科学目前主要的研究领域包括:可计算性理论,算法设计与复杂性分析,密码学与信息安全,分布式计算理论,并行计算理论,网络理论,生物信息计算,计算几何学,程序语言理论等等。这些领域互相交叉,而且新的课题在不断提出,所以很难理出一个头绪来。

下面随便举一些例子.
由于应用需求的推动,密码学现在成为研究的热点。密码学建立在数论(尤其是计算数论),代数,信息论,概率论和随机过程的基础上,有时也用到图论和组合学等。很多人以为密码学就是加密解密,而加密就是用一个函数把数据打乱。这就大错特错了。

现代密码学至少包含以下层次的内容:

第一,密码学的基矗例如,分解一个大数真的很困难吗?能否有一般的工具证明协议正确?
第二,密码学的基本课题。例如,比以前更好的单向函数,签名协议等。

第三,密码学的高级问题。例如,零知识证明的长度,秘密分享的方法。
第四,密码学的新应用。例如,数字现金,叛徒追踪等。

在分布式系统中,也有很多重要的理论问题。例如,进程之间的同步,互斥协议。一个经典的结果是:在通信信道不可靠时,没有确定型算法能实现进程间协同。所以,改进TCP三次握手几乎没有意义。例如时序问题。常用的一种序是因果序,但因果序直到不久前才有一个理论上的结果....例如,死锁没有实用的方法能完美地对付。例如,......自己去举吧!

如果计算机只有理论,那么它不过是数学的一个分支,而不成为一门独立的科学。事实上,在理论之外,计算机科学还有更广阔的天空。我一直认为,4年根本不够学习
计算机的基础知识,因为面太宽了......

这方面我想先说说我们系在各校普遍开设的《计算机基捶。在高等学校开设《计算机基础课程》是我国高教司明文规定的各专业必修课程要求。主要内容是使学生初步掌握计算机的发展历史,学会简单的使用操作系统,文字处理,表格处理功能和初步的网络应用功能。但是在计算机科学系教授此门课程的目标决不能与此一致。在计算机系课程中目标应是:让学生较为全面的了解计算机学科的发展,清晰的把握计算机学科研究的方向,发展的前沿即每一个课程在整个学科体系中所处的地位。搞清各学科的学习目的,学习内容,应用领域。使学生在学科学习初期就对整个学科有一个整体的认识,以做到在今后的学习中清楚要学什么,怎么学。计算机基本应用技能的位置应当放在第二位。这一点很重要。推荐给大家一本书:机械工业出版社的《计算机文化》,看了这本书你才这正了解了什么是计算机科学。

一个一流计算机系的优秀学生决不该仅仅是一个编程高手,但他一定首先是一个编程高手。我上大学的时候,第一门专业课是C语言程序设计,念计算机的人从某种角度讲相当一部分人是靠写程序吃饭的。前年在我们北京工业大学实验学院计算机系里有过一场争论,关于第一程序设计语言该用哪一种。我个人认为,用哪种语言属于末节,关键在养成良好的编程习惯。当年老师对我们说,打好基础后学一门新语言只要一个星期。现在我觉得根本不用一个星期--前提是先把基础打好。

汇编语言和微机原理是两门特烦人的课。你的数学/理论基础再好,也占不到什么便宜。这两门课之间的次序也好比先有鸡还是先有蛋,无论你先学哪门,都会牵扯另一门课里的东西。所以,只能静下来慢慢琢磨。这就是典型的工程课,不需要太多的聪明和顿悟,却需要水滴石穿的渐悟。有关这两门课的书,计算机书店里不难找到。弄几本最新的,对照着看吧。组成原理推荐《计算机组成原理》清华大学的。汇编语言大家拿8086/8088入个门,之后一定要学80x86汇编语言实用价值大,不落后,结构又好,写写高效病毒,高级语言里嵌一点汇编,进行底层开发,总也离不开他,推荐清华大学沈美明的《IBM— PC汇编语言程序设计》。有些人说不想了解计算机体系结构,也不想制造计算机,所以诸如计算机原理,汇编语言,接口之类的课觉得没必要学,这样合理吗?显然不合理,这些东西迟早得掌握,肯定得接触,而且,这是计算机专业与其他专业学生相比的少有的几项优势。做项目的时候,了解这些是非常重要的,不可能说,仅仅为了技术而技术,只懂技术的人最多做一个编码工人,而永远不可能全面地了解整个系统的设计,而编码工人是越老越不值钱。

模拟电路这东东,如今不仅计算机系学生搞不定,电子系学生也多半害怕。如果你真想软硬件通吃,那么建议你先看看邱关源的“电路原理”,也许此后再看模拟电路底气会足些。教材:康华光的“电子技术基幢(高等教育出版社)还是不错的。有兴趣也可以参考童诗白的书。

数字电路比模拟电路要好懂得多。推荐大家看一看我们北工大刘英娴教授写的《数字逻辑》业绩人士都说这本书很有参考价值(机械工业出版社的)。清华大学阎石的书也算一本好教材,遗憾的一点是集成电路讲少了些。真有兴趣,看一看大规模数字系统设计吧。

计算机系统结构该怎么教,国际上还在争论。国内能找到的较好教材为Stallings的"Computer Organization and Architecture:Designing for Performance"(清华影印本)。国际上最流行的则是“Computer architecture: aquantitative approach", by Patterson & Hennessy。

操作系统可以随便选用Tanenbaum的"Operating System Design and Implementation"和"Modern
Operating System"两书之一。这两部都可以算经典,唯一缺点就是理论上不够严格。不过这领域属于Hardcore

System,所以在理论上马虎一点也情有可原。想看理论方面的就推荐清华大学出版社《操作系统》吧,高教司司长张尧学写的,我们教材用的是那本。
如果先把形式语言学好了,则编译原理中的前端我看只要学四个算法:最容易实现的递归下降;最好的自顶向下算法LL(k);最好的自底向上算法LR(k);LR(1)的简化SLR(也许还有另一简化LALR)。后端完全属于工程性质,自然又是another story。
推荐教材:Aho等人的著名的Dragon Book: "Compilers: Principles, Techniques and Tools".或者Appel的"Modern Compiler Implementation in C".
学数据库的第一意义是告诉你,会用VFP,VB, Power builder等不等于懂数据库。(这世界上自以为懂数据库的人太多了!)数据库设计既是科学又是艺术,数据库实现则是典型的工程。所以从某种意义上讲,数据库是最典型的一门计算机课--理工结合,互相渗透。另外推荐大家学完软件工程学后再翻过来看看数据库技术,又会是一番新感觉。
推荐教材:Silberschatz, et al., "Database System Concepts".作为知识的完整性,还推荐大家看一看机械工业出版社的《数据仓库》译本。

计算机网络的标准教材还是来自Tanenbaum的《Computer Networks》。不过,网络也属于Hardcore
System,所以光看书是不够的。建议多读RFC,从IP的读起。等到能掌握10种左右常用协议,就没有几个人敢小看你了。

关于人工智能,我觉得的也是非常值得大家仔细研究的,虽然不能算是刚刚兴起的学科了,但是绝对是非常有发展前途的一门学科。我国人工智能创始人之一,北京科技大学涂序彦教授(这老先生是我的导师李小坚博士的导师)对人工智能这样定义:人工智能是模仿、延伸和扩展人与自然的智能的技术科学。在美国人工智能官方教育网站上对人工智能作了如下定义:Artificial Intelligence, or AI for short, is a combination of computer science, physiology, and philosophy. AI is a broad topic, consisting of different fields, from machine vision to expert systems. The element that the fields of AI have in common is the creation of machines that can "think".
这门学科研究的问题大概说有:

(1)符号主义: 符号计算与程序设计基础,知识表达方法
:知识与思维,产生式规则,语意网络,一阶谓词逻辑问题求解方法:搜索策略,启发式搜寻,搜寻算法,问题规约方法,谓词演算:归结原理,归结过程专家系统:建立专家系统的方法及工具

(2)联接主义(神经网络学派):1988年美国权威机构指出:数据库,网络发展呈直线上升,神经网络可能是解决人工智能的唯一途径。

关于网络安全我也想在这里说两句,随着计算机技术的发展,整个社会的信息化水平突飞猛进,计算机网络技术日新月异,网络成了当即社会各个工作领域不可缺少的组成部分,只要有网络存在,网络安全问题就是一个必须解决好的问题,学习网络安全不是简简单单的收集一些黑客工具黑一黑别人的网站,而是要学习他的数学原理,实现原理,搞清底层工作机制,这样才能解决大部分的现有问题和新出现的安全问题。

关于计算机科学的一些边缘科学这次我想谈一谈软件工程技术,对于一个企业,推出软件是不是就是几个程序员座在一起,你写一段程序,我写一段程序呢?显然不是。软件工程是典型的计算机科学和数学,管理科学,心理学,社会学等学科的综合。他是我们这些搞理论和技术的人进入了一个社会。这方面我还在学习阶段,以后这方面再写文章吧,先推荐给大家几本书:畅销20年不衰的《人月神话》(清华大学中文版,中国电力出版社影印版),《软件工程-实践者研究的方法》(机械工业出版社译本),《人件》以及微软公司的《软件开发的科学与艺术》和《软件企业的管理与文化》(研究软件企业的制胜之道当然要研究微软的成功经验了!)

我想是时候指出:学习每一个课程之前,都要先搞清这一课程的学习目的。这一学科的应用领域。据我自身所了解到的同龄同学和低年级的同学的学习状况:他们之中很少有人知道学一个学科的学习目的,期末考试结束了也不知道学这科做什么用。这就失去了读计算机科学的意义。

总的来说,我觉得国内学校的课程安排不是很合理,多数人4年下来既没有学习计算机科学的学术水平,也没有学习计算机技术的那种韧劲。在我刚上大一时,我的计算机科学入门导师,淮北煤炭师范学院王爱平教授曾经对我说过这样一番话:“当你选择了计算机这一门科学,就意味着你踏上了一条不归路,就意味着你一生都要为之奋斗……你的身后是悬崖,只有向前走,不能往后退。”

必须结束这篇“胡侃”了,再侃下去非我力所能及。其实计算机还有很多基础课都值得一侃,如程序设计语言原理,图形图像处理等等。怎奈我造诣有限,不敢再让内行耻笑。最后声明:这些只针对本科阶段的学习。即使把这些全弄通了,前面的路还长,计算机科学需要我们为之奋斗......

大家看完我的心得有什么感想写一写吧!为了我们共同的梦想。


---beck.lin J
回复(10):偶就是学计算机的,还好当年学数学分析的时候把所有bt的定理推导和证明都研究了一遍,感觉确实很有用,对学计算机的人来说,各人感觉学数学重点并不是算,那些东东书上都有,要用的时候抄一下就完了,重点是要知道结果是怎么出来的,在做一些东西的时候会出现一些原来没有想到的结果,这个时候才需要数学来帮忙

---stephan000 J

回复(11): 我是做软件设计的。
楼主的话有些地方有道理。有些我持保留意见。

我认为大学里很多东西学来还是没有什么用。譬如计算机应用专业的《普通物理》课程,我已经毕业工作7年了,那本书上的东西连一句话我都没用过,学来做什?有那些看书听课考试的功夫,多看看实用的技术,多打打计算机的基础不好嘛?
实际上,大学里头课本上的东西,我到现在用到的还不到10%。之所以我还能在这行混下去,全在于我的业余时间泡在那些老师们认为是闲书的专业书刊上。

个人认为对于毕业后准备做程序的人来说,《数据结构》《软件工程》这两本书是最重要的圣书。可是,这么重要的两门课,当初学校居然把它定为选修。
所谓选修我想大家都明白的,你学不学都一样的过。
现在想起来真的是误人子弟。
我认为,中国大学专业方向应该分得更细一些,更有针对性。毕竟人的精力是有限的,学生也一样。在某一方面突出的人才就能为国所用,什么都会一点,什么都不精恐怕在社会上找碗饭吃也困难吧?毕竟大而全的境界不是每个人都能达到的。

---chensir J
回复(12):所谓《数值分析》即《计算数学》也。

为什么要造计算机?
其实,手摇计算机早就有了,Pascal语言大家都知道的,其实这个"Pascal"就是当年我们学过的大气压强"帕",都是指同一个人,物理学家帕斯卡。这老兄就是用手摇的计算机来求解物理方程的鼻祖。

其实《计算方法》就是为了工程数学计算用的,即把连续的无限的数学方法变为离散的有限的近似数值解的方法,而电子计算机就是手摇计算机的进化版。可以说设计电子计算机的初衷就是为了计算《数值分析》里的东东。
---除了BT还可以做什么【程序员联盟高级成员】 J

回复(14):先up!楼主转载的很有道理,但是更同意11楼。偶学计算机,现在大四了,觉得当初学了很多东西是没有什么用处。现在作毕业设计,最有用的还是数据结构和算法设计。
---finux J

回复(23):我也是计算机科学与技术专业的学生,我们中国的计算机教育开始了几十年了,但是监狱体系没有什么变化,过于死板,没有创意。比如我们学校大一上的《计算机导论》用的是十几年前发的破书,还有离散什么的很破。
还有我觉的高等数学等数学课程很是重要的一般可以说高等数学读不好的同学计算机不会学得很精,因为软件开发要有结构,精湛的算法,缜密的逻辑思维,这些都是离不开数学的。但是有写课程比较难,比如《汇编语言》,刚开始简直觉的是一本天书。。现在才刚刚好一点,有点眉目。你们说计算机要掌握什么一些基本的东西,才可以上社会工作啊??

---cklong1984 J

回复(27):呵呵,本科生嘛,可以多读一些书,把知识面拉开。但是上面所提的每一门其实都是一个专门的技术/科学领域,想要每门都精通,谈何容易!特别是后面提到的“项目管理”,难道是光看书可以学来的吗?
---movzx J

回复(35):作为普通人完全没有必要这么读书
真地在工作中用到的绝对只有1%

重点在于,你能学得比别人快,有一个特别的专项
其它都是假的

---多情只恐累美人 J

回复(36):看完了,UP先。
我也是埃但是觉得楼主理论的东西懂得不少,不知道结合了实际的情况下,还能不能保持清醒的头脑。毕竟做学问和干计算机这行还是有区别的。我个人感觉要想在计算机这行有点出息,必须动手能力和再学习能力要很强才行地!!!

---best_jovi J
回复(38):up完CSDN UP MOP

强烈同意楼猪,有了基础学什么都快
说什么程序员是吃青春饭的,那些被淘汰的都是基础不良混进这行来的

---pisces_Danny J

回复(40):真把这些都啃下来,你离入土也不远了,我也是这专业的,这些东东太理论了,学会之后你可以象楼主一样吹得天花乱坠,但没一点实际用处,我觉得学好数据结构与软件工程就行了如果学编程的话,如果要学别的就不能选这个专业。害人!

---deej J
回复(41):To 12楼的,<数值分析>只是计算数学的一个部分

---huskarl J

回复(45):看来回这贴的80%都是计算机系的,既然路过我也来感慨感慨。楼主转的文章不错,可能是从“学”计算机专业比较牛的文章了,分析的很透彻。但是在现实中“学”和“用”是有很大区别的,现在的计算机科学已经发展的非常庞大,几乎涵盖自然科学的任何领域,而计算机本身也逐渐由80年代的WPS个人英雄主义向现在的OFFICE 2003的大规模模块化的编程转变,就是从计算机硬件来讲,硬件层出不穷,天天都有新东西,我想要一个人从8086开始学,一直了解到现在的安腾处理器和其他所有相关的硬件、电路是不太可能的,即使有个人做到了,我相信他也没有时间做点实际工作了。实际上现实中的工作不要求我们对计算机全部精通,只要在某个地方有特别的专长就OK了。我想即使在Microsoft也不会有从机器码一直精通到WinXP界面设计的牛人,计算机就是大家合作吗,你搞一点你擅长的,我搞一点我擅长的,这样做出的东西肯定要比一个牛人做出的东西好,三个臭皮匠顶个诸葛亮吗,哈哈。

---W91RMB J

回复(49):楼主的文章涉及的范围太广了,只适用于本科。

11楼的,物理应用主要在robotics和Computer Graphics(动画), Computer Vision 上。
14楼的,看你要学什么。如果只是当个破程序员,那是足够了。有很多东西你现在不能领会它的用处,但日后会受益匪浅。

23楼,确实。中文教材好烂。最好看英文原版。
30楼,网上名气大只能说明他灌水牛。

35楼,你要学,不还是得读书?
40楼的,就你说的那点东西,不是计算机系的人,给他1,2个月时间照样学会。太小瞧Computer Science了吧。

45楼,真是如此。所以说楼主的只适用于本科生。但要打基础,大部分还是不可少的。
---wanghmin1981 J

回复(50):40楼的,计算机科学等于编程吗?
说到“实用”,最“实用”还是不要搞技术,你水平再高,赚的钱比盖茨多吗?但盖茨只是一个二流程序员。

---waveman J
回复(51):说句公道话,大学里教授的课程是什么并不重要,重要的是我们要掌握一种学习的方法和学习的能力,从高中的死板的填鸭的教学中解脱出来。个人认为。大学并不可能深究每一门课,所有的课程都是蜻蜓点水的,他的作用就是帮你起倒一块敲门砖。帮你打开井的盖子,然后就是你的自学能力的体现。的确大学里的课程有可能你一辈子都用不到,但谁能保证某一天忽然会用上,比如物理,在现实情况下无法获得的环境,我们就可以通过计算机模拟。所以,师傅领进门,修行在自身。

---eciwang J

回复(56):PS:补充。我也科学系毕业4年了。还在做他妈的程序员。中国现在有种误区,认为计算机系就是培养程序员的,印度程序员都是高中毕业的,那我们国家为什么要花费4个农民一年的收入培养一个大学生呢?不得不承认,这是目前中国的公司对计算机的毕业生使用的问题,他们只沉湎于做什么界面,做数据库,而忽视了利用计算机去做国家的基础应用研究。整个计算机科学就变成了代码科学,可悲埃
---eciwang J

回复(61):整个帖子里只有49楼的wanghmin1981说得在理。把楼上所有的回帖都看完并且耐心地一一回复,不简单。

TO 23楼的:如果你觉得汇编指令都象天书一样,那你真的不该去学CS。因为以后的学习对你来说恐怕会是令你加速老化的罪魁祸首。

TO
50楼的:比尔可不是个二流程序员,他早在高中的时候就是UNIX的高手了。DOS的基础架构就是他本人亲自撰写,BASIC语言也是他独立制定,第一个BASIC解释器也是他自己编写的。COM的核心思想他也参与了很大一部分。

---那一枪的风情 J

回复(65):这篇文章讲得太泛了,倒是可以做个方向性的东西看看,相信大部分人不可能有这个精力都一一涉及,当然天才除外。还是一句话术业有专攻,结合自己的专业方向选择性的学习数学,搞好本领域的,在向外围发展。还要知道计算机科学不紧紧只有数学这一项,数学是基础,还有很多领域需要大家去研究。
大学只是打个架子,真正的学习还是在毕业了,有了工作方向以后。我看了这篇文章,现在是一头雾水。

---movax J
回复(66):49楼wanghmin1981

拜一个,楼主说的没错,楼上的大家只是从实用的角度出发当然觉得这个没用那个没用,但恐怕你真的学到后面来说就发现有些基础的东西不是靠一两个月可以学到的。很多非计算机专业的确实程序写的好,工具用的熟(在这里我没有否定他们的意思),但是在一些对计算机基本的理解方面有的时候确实不是学计算机出生的(当然学计算机烂人也很多),比如学过编译的就知道很多不同的语言就是这么回事,仔细学过数据库原理的能够很容易掌握一些新的数据库。至于那些对于操作系统,网络原理非常熟的(不是那些死啃书本的),恐怕这些人都要到了无招胜有招的地步了吧。

---xworms J

回复(70):我是数学系的,程序写得不好,但是如果说到看数学方面的书,我还是有点心得。先说数学分析,前后不下看过20多本。比较下来,国内的有北师大的数学分析教程最好。国外的主要分前苏联派和美国派的。前苏联出版的书特点是内容丰富,证明严谨,但是有点陈旧的感觉。反观美国出版的几本数学分析的书,大多内容新颖,简练,实用性极强。以科学出版社出版的G。波利亚和R.柯朗的书为的代表。接下去是代数学。包括了古典代数(矩阵论)和近代代数(群,环,域)。推荐非常非常经典的由B.L.范德瓦尔登写的《近世代数学》。还有法国布尔巴基学派的书也推荐看一点。这些基础的书看完后,接下再看什么实变函数,泛函分析,数论,图论。组合数学,概率论等书就会有相对有点感觉。数学系毕业都已经8年了,直到现在看到上面的一些名词的时候还倍感亲切。对数学敢兴趣的同学应该再去看些数学史方面的书,首推《古今数学思想》。读过后你就会发现,原来我们教科书上的证明过程,原来都不是这样的,经过了后人不断地改进才成为了我们现在看到的这样。任何一门学科,如果要学好,就一定要学习好这门学科的历史一样。就向中文好的人古文一定好,
小学时候老师一定要我们背古诗一样。对于计算机科学,由于这门学科历史还很短(相对数学来说),那么可以去看看《控制论》,《人工智能》。这些书都代表了计算机的发展历程。还有《编程的艺术》,《算法+数据结构=程序》这样的书也是每个有志与学好计算机的同学必看的。不需要全部看懂,哪怕只看一两页,都会授意菲浅。

偶尔路过,发此感想。
---xiaoma J

回复(75):很矛盾阿,楼主贴的文章好像在csdn上也是褒贬不一,我是半个计算机科班出身(功课都是一门一门考过来的),工作的环境里,有很多和我一样的,也有部分计算机或者数学系的同事。个人感觉,确实要有深厚的基础,尤其是大学里打下的那些基础,才能在技术上说比较过硬,可是现在的很多这个专业的同学在大学里没有体会到,或者是学校的计算机教学也偏向于应用,造成一种学计算机的人没有优势可言的现象。说编程技术,实践不多肯定不行,说架构设计,算法分析,也看不出有多少有创意的东西。计算机专业的学生在大学里相对的比其他专业的同学接触电脑要多,可是大部分精力恐怕都在 game和chat 上了,多努力吧。

---charge J

//--------------------------------
揭露北京工业大学硕士研究生曾毅的剽窃行径

醉里挑灯看剑

北京工业大学硕士研究生曾毅,系北京工业大学放飞技术网站长(http://www.frontfree.com)曾毅还是微软公司的MVP,(个人专栏:http://www.microsoft.com/china/community/Column/Zengyi.mspx)自2003年以来,其在网络上表表了一篇声称是“原创”的《计算机科学与技术学习反思录》。原文地址:http://www.frontfree.net/view/article_746.html及http: //www.ccafc.net/articles/campus/2004/0714/90.htm。当时,曾毅还是计算机专业大三的学生。一个大三的学生,其见解之深刻让计算机博士看了也只有扯根头发悬梁自尽的份。作者对众多门类的高深数学知识如数家珍,让众多计算机专业的同学疑以为是图灵转世。一时间网络上好评如潮。在原文的读者评论处,曾毅赢得了众多新学计算机的同学的无限崇拜,不过很多网友很快就识破了他的抄袭行为,但是质疑其抄袭的评论在他的网站上一概被过滤!

这篇文章的绝大部分内容是抄袭剪贴南京大学小百合BBS里Sir博士的帖子,而且连口气都没有变。Sir是南京大学的毕业生,现在是耶鲁的副教授,写文章是给师弟师侄们指路,如何学习计算机理论,所以有指教后辈的口吻。曾毅将其全面抄袭过来,并添上几句自己的话以及与北京工业大学有关的话,来冒充专家高手,不但在北京工业大学的大学新生迎新会上故作高深的以这篇文章作为演讲稿,而且完全说成是自己的学习心得体会(仔细看一下文章就可以发现,它刻意要让人家相信这篇文章是北京工业大学计算机系一个大三的学生曾毅写的,完全隐瞒了这篇文章的原创作者)。当曾毅的文章发表出来的时候,无数的网友指出其抄袭,于是在曾毅文章后面添加了一段“致谢”。Sir大人有大量,没有和曾毅计较。但曾毅恬不知耻,还到处转贴,并以此作为学校在Sars中的科研成果。文章中的口气引起了网友们的不满,当网友们深究其文章来源,再次指出其抄袭的问题,他用最后一段“致谢”来搪塞,并拼命抵赖。

尽管曾毅抄袭的是发表在BBS上的文章,并不是正规出版物上的文章,但是,我逐渐发现他在利用这种抄袭来谋取个人在计算机界和IT出版界的个人荣誉。曾毅现在是硕士研究生,好歹也算是学术界的人,所以我觉得必须要揭露这种明目张胆且死不认账的抄袭。我通过Google来撕下这个北京工业大学的败类的画皮:

曾毅的原文出处:(发送日期:2003年5月13日)
1、http://www.frontfree.net/view/article_746.html (注意他是http://www.frontfree.net的站长)
2、http://www.ccafc.net/articles/campus/2004/0714/90.htm

南京大学Sir博士的文章出处:(发表于南京大学小百合BBS论坛)
第一部分:理论计算机科学漫谈(发送日期:2000年11月30日)
http://bbs.nju.edu.cn/vd306802/bbscon?board=Mathematics&file=M.975553688.A&num=1793
http://bbs.nju.edu.cn/vd306802/bbscon?board=Mathematics&file=M.975553688.A&num=1794
http://bbs.nju.edu.cn/vd306802/bbscon?board=Mathematics&file=M.975553688.A&num=1795
http://bbs.nju.edu.cn/vd306802/bbscon?board=Mathematics&file=M.975553688.A&num=1796
http://bbs.nju.edu.cn/vd306802/bbscon?board=Mathematics&file=M.975553688.A&num=1797
http://bbs.nju.edu.cn/vd306802/bbscon?board=Mathematics&file=M.975553688.A&num=1798

第二部分:胡侃学习(理论)计算机(发送日期:2001年10月8日)
http://bbs.nju.edu.cn/vd306802/bbscon?board=Mathematics&file=M.1002484634.A&num=2412
http://bbs.nju.edu.cn/vd306802/bbscon?board=Mathematics&file=M.1002484634.A&num=2413
http://bbs.nju.edu.cn/vd306802/bbscon?board=Mathematics&file=M.1002484634.A&num=2414
http://bbs.nju.edu.cn/vd306802/bbscon?board=Mathematics&file=M.1002484634.A&num=2415
http://bbs.nju.edu.cn/vd306802/bbscon?board=Mathematics&file=M.1002484634.A&num=2416
http://bbs.nju.edu.cn/vd306802/bbscon?board=Mathematics&file=M.1002484634.A&num=2417
http://bbs.nju.edu.cn/vd306802/bbscon?board=Mathematics&file=M.1002484634.A&num=2418
http://bbs.nju.edu.cn/vd306802/bbscon?board=Mathematics&file=M.1002484634.A&num=2419
http://bbs.nju.edu.cn/vd306802/bbscon?board=Mathematics&file=M.1002484634.A&num=2420
http://bbs.nju.edu.cn/vd306802/bbscon?board=Mathematics&file=M.1002484634.A&num=2421
http://bbs.nju.edu.cn/vd306802/bbscon?board=Mathematics&file=M.1002484634.A&num=2422
http://bbs.nju.edu.cn/vd306802/bbscon?board=Mathematics&file=M.1002508203.A&num=2423

在我们第一次阅读曾毅的文章的时候,我们会感觉到Sir这个真正的高手的存在吗?我们能够感觉到的只是北京工业大学大学3年级的一个超级牛人在大谈学习心得。呵呵,这就是曾毅想要追求的效果!!!