计算机科学与技术学习心得doc.docx

上传人:b****5 文档编号:6512450 上传时间:2023-01-07 格式:DOCX 页数:15 大小:33.22KB
下载 相关 举报
计算机科学与技术学习心得doc.docx_第1页
第1页 / 共15页
计算机科学与技术学习心得doc.docx_第2页
第2页 / 共15页
计算机科学与技术学习心得doc.docx_第3页
第3页 / 共15页
计算机科学与技术学习心得doc.docx_第4页
第4页 / 共15页
计算机科学与技术学习心得doc.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

计算机科学与技术学习心得doc.docx

《计算机科学与技术学习心得doc.docx》由会员分享,可在线阅读,更多相关《计算机科学与技术学习心得doc.docx(15页珍藏版)》请在冰豆网上搜索。

计算机科学与技术学习心得doc.docx

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

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

计算机科学与技术学习心得发布计算机考研中心作者(摘至)--------------------------------------------------------------------------------计算机科学与技术这一门科学深深的吸引着我们这些同学们,上计算机系已经有近三年了,自己也做了一些思考,原先不管是国内还是国外都喜欢把这个系分为计算机软件理论、计算机系统、计算机技术与应用。

后来又合到一起,变成了现在的计算机科学与技术。

我一直认为计算机科学与技术这门专业,在本科阶段是不可能切分成计算机科学和计算机技术的,因为计算机科学需要相当多的实践,而实践需要技术;每一个人包括非计算机专业,掌握简单的计算机技术都很容易(包括原先Major们自以为得意的程序设计),但计算机专业的优势是我们掌握许多其他专业并不“深究“的东西,例如,算法,体系结构,等等。

非计算机专业的人可以很容易地做一个芯片,写一段程序,但他们做不出计算机专业能够做出来的大型系统。

今天我想专门谈一谈计算机科学,并将重点放在计算理论上。

1、计算机理论的一个核心问题--从数学谈起[1]高等数学Vs数学分析记得当年大一入学,每周四课时高等数学,天天作业不断那时是七天工作制。

颇有些同学惊呼走错了门咱们这到底念的是什么系不错,你没走错门,这就是计算机科学与技术系。

我国计算机科学系里的传统是培养做学术研究,尤其是理论研究的人(方向不见得有多大的问题,但是做得不是那么尽如人意)。

而计算机的理论研究,说到底了,如网络安全学,图形图像学,视频音频处理,哪个方向都与数学有着很大的关系,虽然也许是正统数学家眼里非主流的数学。

这里我还想阐明我的一个观点我们都知道,数学是从实际生活当中抽象出来的理论,人们之所以要将实际抽象成理论,目的就在于想用抽象出来的理论去更好的指导实践,有些数学研究工作者喜欢用一些现存的理论知识去推导若干条推论,殊不知其一问题考虑不全很可能是个错误的推论,其二他的推论在现实生活中找不到原型,不能指导实践。

严格的说,我并不是一个理想主义者,政治课上学的理论联系实际一直是指导我学习科学文化知识的航标(至少我认为搞计算机科学与技术的应当本着这个方向)。

其实我们计算机系学数学仅学习高等数学是不够的(典型的工科院校一般都开的是高等数学),我们应该像数学系一样学一下数学分析(清华计算机系开的好像就是数学分析,我们学校计算机学院开的也是,不过老师讲起来好像还是按照高等数学讲),数学分析这门科学,咱们学计算机的人对它有很复杂的感情。

在于它是偏向于证明型的数学课程,这对我们培养良好的分析能力和推理能力极有帮助。

我的软件工程学导师北工大数理学院的王仪华先生就曾经教导过我们,数学系的学生到软件企业中大多作软件设计与分析工作,而计算机系的学生做程序员的居多,原因就在于数学系的学生分析推理能力,从所受训练的角度上要远远在我们平均水平之上。

当年出现的怪现象是计算机系学生的高中数学基础在全校数一数二希望没有冒犯其它系的同学,教学课时数也仅次于数学系,但学完之后的效果却不尽如人意。

难道都是学生不努力吗,我看未见得,方向错了也说不一定,其中原因何在,发人深思。

我个人的浅见是计算机系的学生,对数学的要求固然跟数学系不同,跟物理类差别则更大。

通常非数学专业的所quot;高等数学“,无非是把数学分析中较困难的理论部分删去,强调套用公式计算而已。

而对计算机系来说,数学分析里用处最大的恰恰是被删去的理论部分。

说得难听一点,对计算机系学生而言,追求算来算去的所谓“工程数学“已经彻底地走进了误区。

记上一堆曲面积分的公式,难道就能算懂了数学那倒不如现用现查,何必费事记呢再不然直接用Mathematica或是Matlab好了。

退一万步讲,即使是学高等数学我想大家看看华罗庚先生的高等数学导论也是比一般的教材好得多。

华罗庚在数学上的造诣不用我去多说,但是他这光辉的一生做得我认为对我们来说,最重要的几件事情首先是它筹建了中国科学院计算技术研究所,这是我们国家计算机科学的摇篮。

在有就是他把很多的高等数学理论都交给了做工业生产的技术人员,推动了中国工业的进步。

第三件就是他一生写过很多书,但是对高校师生价值更大的就是他在病期间在病床上和他的爱徒王元写了高等数学引论(王元与其说是他的爱徒不如说是他的同事,是中科院数学所的老一辈研究员,对歌德巴赫猜想的贡献全世界仅次于陈景润)这书在我们的图书馆里居然找得到,说实话,当时那个书上已经长了虫子,别人走到那里都会闪开,但我却格外感兴趣,上下两册看了个遍,我的最大收获并不在于理论的阐述,而是在于他的理论完全的实例化,在生活中去找模型。

这也是我为什么比较喜欢具体数学的原因,正如我在上文中提到的,理论脱离了实践就失去了它存在的意义。

正因为理论是从实践当中抽象出来的,所以理论的研究才能够更好的指导实践,不用于指导实践的理论可以说是毫无价值的。

我在系里最爱做的事情就是给学弟学妹们推荐参考书。

没有别的想法,只是希望他们少走弯路。

中文的数学分析书,一般都认为以北大张筑生老师的“数学分析新讲“为最好。

张筑生先生一生写的书并不太多,但是只要是写出来的每一本都是本领域内的杰作,这本当然更显突出些。

这种老书看起来不仅是在传授你知识,而是在让你体会科学的方法与对事物的认识方法。

万一你的数学实在太好,那就去看菲赫金哥尔茨quot;微积分学教程“好了--但我认为没什么必要,毕竟你不想转到数学系去。

吉米多维奇的“数学分析习题集“也基本上是计算型的书籍。

书的名气很大,倒不见得适合我们,还是那句话,重要的是数学思想的建立,生活在信息社会里我们求的是高效,计算这玩意还是留给计算机吧。

不过现在多用的似乎是复旦大学的数学分析,高等教育出版社的,也是很好的教材。

中国的所谓高等代数,就等于线性代数加上一点多项式理论。

我以为这有好的一面,因为可以让学生较早感觉到代数是一种结构,而非一堆矩阵翻来覆去。

这里不得不提南京大学林成森,盛松柏两位老师编的“高等代数“,感觉相当舒服。

此书相当全面地包含了关于多项式和线性代数的基本初等结果,同时还提供了一些有用的又比较深刻的内容,如Sturm序列,Shermon-Morrison公式,广义逆矩阵等等。

可以说,作为本科生如能吃透此书,就可以算是高手。

国内较好的高等代数教材还有清华计算机系用的那本,清华出版社出版,书店里多多,一看就知道。

从抽象代数的观点来看,高等代数里的结果不过是代数系统性质的一些例子而已。

莫宗坚先生的代数学里,对此进行了深刻的讨论。

然而莫先生的书实在深得很,作为本科生恐怕难以接受,不妨等到自己以后成熟了一些再读。

正如上面所论述的,计算机系的学生学习高等数学知其然更要知其所以然。

你学习的目的应该是将抽象的理论再应用于实践,不但要掌握题目的解题方法,更要掌握解题思想,对于定理的学习不是简单的应用,而是掌握证明过程即掌握定理的由来,训练自己的推理能力。

只有这样才达到了学习这门科学的目的,同时也缩小了我们与数学系的同学之间思维上的差距。

[2]计算数学基础概率论与数理统计这门课很重要,可惜大多数院校讲授这门课都会少些东西。

少了的东西现在看至少有随机过程。

到毕业还没有听说过Markov过程,此乃计算机系学生的耻辱。

没有随机过程,你怎么分析网络和分布式系统怎么设计随机化算法和协议据说清华计算机系开有“随机数学“,早就是必修课。

另外,离散概率论对计算机系学生来说有特殊的重要性。

而我们国家工程数学讲的都是连续概率。

现在,美国已经有些学校开设了单纯的“离散概率论“课程,干脆把连续概率删去,把离散概率讲深些。

我们不一定要这么做,但应该更加强调离散概率是没有疑问的。

这个工作我看还是尽早的做为好。

计算方法学(有些学校也称为数学分析学)是最后一门由数理学院给我们开的课。

一般学生对这门课的重视程度有限,以为没什么用。

不就是照套公式嘛其实,做图形图像可离不开它,密码学搞深了也离不开它。

而且,在很多科学工程中的应用计算,都以数值的为主。

这门课有两个极端的讲法一个是古典的“数值分析“,完全讲数学原理和算法;另一个是现在日趋流行的“科学与工程计算“,干脆教学生用软件包编程。

我个人认为,计算机系的学生一定要认识清楚我们计算机系的学生为什么要学这门课,我是很偏向于学好理论后用计算机实现的,最好使用C语言或C编程实现。

向这个方向努力的书籍还是挺多的,这里推荐大家高等教育出版社(CHEP)和施普林格出版社Springer联合出版的计算方法(ComputationalMethods),华中理工大学数学系写的(现华中科技大学),这方面华科大做的工作在国内应算是比较多的,而个人认为以这本最好,至少程序设计方面涉及了任意数学函数的求值,方程求根,线性方程组求解,插值方法,数值积分,场微分方程数值求解。

李庆扬先生的那本则理论性过强,与实际应用结合得不太紧,可能比较适合纯搞理论的。

[3]也谈离散数学每个学校本系里都会开一门离散数学,涉及集合论,图论,和抽象代数,数理逻辑。

不过,这么多内容挤在离散数学一门课里,是否时间太紧了点另外,计算机系学生不懂组合和数论,也是巨大的缺陷。

要做理论,不懂组合或者数论吃亏可就太大了。

从理想的状态来看,最好分开六门课集合,逻辑,图论,组合,代数,数论。

这个当然不现实,因为没那么多课时。

也许将来可以开三门课集合与逻辑,图论与组合,代数与数论。

(这方面我们学校已经着手开始做了)不管课怎么开,学生总一样要学。

下面分别谈谈上面的三组内容。

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

数理逻辑,中科院软件所陆钟万教授的面向计算机科学的数理逻辑就不错。

现在可以找到陆钟万教授的讲课录像,putation。

但是,有一点要强调形式语言和自动机的作用主要在作为计算模型,而不是用来做编译。

事实上,编译前端已经是死领域,没有任何openproblems,北科大的班晓娟博士也曾经说过,编译的技术已相当成熟。

如果为了这个,我们完全没必要去学形式语言--用用yacc什么的就完了。

北邮的那本在国内还算比较好,但是在深度上,在跟可计算性的联系上都有较大的局限,现代感也不足。

所以建议有兴趣的同学去读英文书,不过国内似乎没引进这方面的教材。

可以去互动出版网上看一看。

入门以后,把形式语言与自动机中定义的模型,和数理逻辑中用递归函数定义的模型比较一番,可以说非常有趣。

现在才知道,什么叫“宫室之美,百官之富“计算机科学和数学的关系有点奇怪。

二三十年以前,计算机科学基本上还是数学的一个分支。

而现在,计算机科学拥有广泛的研究领域和众多的研究人员,在很多方面反过来推动数学发展,从某种意义上可以说是孩子长得比妈妈还高了。

但不管怎么样,这个孩子身上始终流着母亲的血液。

这血液是themathematicalunderpinningofcomputerscience计算机科学的数学基础,也就是理论计算机科学。

原来在东方大学城图书馆中曾经看过一本七十年代的译本(书皮都没了,可我就爱关注这种书),大概就叫计算机数学。

那本书若是放在当时来讲决是一本好书,但现在看来,涵盖的范围还算广,深度则差了许多,不过推荐大一的学生倒可以看一看,至少可以使你的计算数学入入门,也就是说至少可以搞清数学到底在计算机科学什么地方使用。

最常和理论计算机科学放在一起的一个词是什么答离散数学。

这两者的关系是如此密切,以至于它们在不少场合下成为同义词。

(这一点在前面的那本书中也有体现)传统上,数学是以分析为中心的。

数学系的同学要学习三四个学期的数学分析,然后是复变函数,实变函数,泛函数等等。

实变和泛函被很多人认为是现代数学的入门。

在物理,化学,工程上应用的,也以分析为主。

随着计算机科学的出现,一些以前不太受到重视的数学分支突然重要起来。

人们发现,这些分支处理的数学对象与传统的分析有明显的区别分析研究的问题解决方案是连续的,因而微分,积分成为基本的运算;而这些分支研究的对象是离散的,因而很少有机会进行此类的计算。

人们从而称这些分支为“离散数学“。

“离散数学“的名字越来越响亮,最后导致以分析为中心的传统数学分支被相对称为“连续数学“。

离散数学经过几十年发展,基本上稳定下来。

一般认为,离散数学包含以下学科1集合论,数理逻辑与元数学。

这是整个数学的基础,也是计算机科学的基础。

2图论,算法图论;组合数学,组合算法。

计算机科学,尤其是理论计算机科学的核心是算法,而大量的算法建立在图和组合的基础上。

3抽象代数。

代数是无所不在的,本来在数学中就非常重要。

在计算机科学中,人们惊讶地发现代数竟然有如此之多的应用。

但是,理论计算机科学仅仅就是在数学的上面加上“离散“的帽子这么简单吗一直到大约十几年前,终于有一位大师告诉我们不是。

D.E.Knuth他有多伟大,我想不用我再说了在Stanford开设了一门全新的课程ConcreteMathematics。

Concrete这个词在这里有两层含义首先对abstract而言。

Knuth认为,传统数学研究的对象过于抽象,导致对具体的问题关心不够。

他抱怨说,在研究中他需要的数学往往并不存在,所以他只能自己去创造一些数学。

为了直接面向应用的需要,他要提倡“具体“的数学。

在这里我做一点简单的解释。

例如在集合论中,数学家关心的都是最根本的问题--公理系统的各种性质之类。

而一些具体集合的性质,各种常见集合,关系,映射都是什么样的,数学家觉得并不重要。

然而,在计算机科学中应用的,恰恰就是这些具体的东西。

Knuth能够首先看到这一点,不愧为当世计算机第一人。

其次,Concrete是Continuous连续加上discrete离散。

不管连续数学还是离散数学,只要是能与我们研究的内容挂上钩的都是有用的数学2、理论与实际的结合--计算机科学技术研究的范畴与学习方法前面主要是从数学角度来看的。

从计算机角度来看,理论计算机科学目前主要的研究领域包括可计算性理论,算法设计与复杂性分析,密码学与信息安全,分布式计算理论,并行计算理论,网络理论,生物信息计算,计算几何学,程序语言理论等等。

这些领域互相交叉,而且新的课题在不断提出,所以很难理出一个头绪来。

想搞搞这方面的工作,推荐看中国计算机学会的一系列书籍,至少代表了我国的权威。

下面随便举一些例子。

由于应用需求的推动,密码学现在成为研究的热点。

密码学建立在数论尤其是计算数论,代数,信息论,概率论和随机过程的基础上,有时也用到图论和组合学等。

很多人以为密码学就是加密解密,而加密就是用一个函数把数据打乱。

这样的理解太浅显了。

现代密码学至少包含以下层次的内容第一,密码学的基础。

例如,分解一个大数真的很困难吗能否有一般的工具证明协议正确第二,密码学的基本课题。

例如,比以前更好的单向函数,签名协议等。

第三,密码学的高级问题。

例如,零知识证明的长度,秘密分享的方法。

第四,密码学的新应用。

例如,数字现金,叛徒追踪等。

密码学方面值得推荐的有一本应用密码学还有就是平时多看看年会的论文集,感觉这种材料实用性比较强,会提高很快。

在分布式系统中,也有很多重要的理论问题。

例如,进程之间的同步,互斥协议。

一个经典的结果是在通信信道不可靠时,没有确定型算法能实现进程间协同。

所以,改进TCP三次握手几乎没有意义。

例如时序问题。

常用的一种序是因果序,但因果序直到不久前才有一个理论上的结果....例如,死锁没有实用的方法能完美地对付。

例如,......操作系统研究过就自己去举吧如果计算机只有理论,那么它不过是数学的一个分支,而不成为一门独立的科学。

事实上,在理论之外,计算机科学还有更广阔的天空。

我一直认为,4年根本不够学习计算机的基础知识,因为面太宽了,要是真学的话,我想至少8年的学习能使你具有一定的科学素养......这方面我想先说说我们系在各校普遍开设的计算机基础。

在高等学校开设计算机基础课程是我国高教司明文规定的各专业必修课程要求。

主要内容是使学生初步掌握计算机的发展历史,学会简单的使用操作系统,文字处理,表格处理功能和初步的网络应用功能。

但是在计算机科学系教授此门课程的目标决不能与此一致。

在计算机系课程中目标应是让学生较为全面的了解计算机学科的发展,清晰的把握计算机学科研究的方向,发展的前沿即每一个课程在整个学科体系中所处的地位。

搞清各学科的学习目的,学习内容,应用领域。

使学生在学科学习初期就对整个学科有一个整体的认识,以做到在今后的学习中清楚要学什么,怎么学。

计算机基本应用技能的位置应当放在第二位或更靠后,因为这一点对于本系的学生应当有这个摸索能力。

这一点很重要。

推荐给大家一本书机械工业出版社的计算机文化(NewPerspectiveofComputerScience),看了这本书我才深刻的体会到自己还是个计算机科学初学者,才比较透彻的了解了什么是计算机科学。

科学出版社的计算科学导论(赵致琢先生的著作)可以说是在高校计算机教育改革上作了很多的尝试,也是这方面我受益很大的一本书。

一个一流计算机系的优秀学生决不该仅仅是一个编程高手,但他一定首先是一个编程高手。

我上大学的时候,第一门专业课是C语言程序设计,念计算机的人从某种角度讲相当一部分人是靠写程序吃饭的。

在我们北京工业大学实验学院计算机系里一直有这样的争论(时至今日CSDN上也有),关于第一程序设计语言该用哪一种。

我个人认为,用哪种语言属于末节,关键在养成良好的编程习惯。

当年老师对我们说,打好基础后学一门新语言只要一个星期。

现在我觉得根本不用一个星期,前提是先把基础打好。

不要再犹豫了,学了再说,等你抉择好了,别人已经会了几门语言了。

[1]专谈计算机系统的学习汇编语言和微机原理是两门特烦人的课。

你的数学/理论基础再好,也占不到什么便宜。

这两门课之间的次序也好比先有鸡还是先有蛋,无论你先学哪门,都会牵扯另一门课里的东西。

所以,只能静下来慢慢琢磨。

这就是典型的工程课,不需要太多的聪明和顿悟,却需要水滴石穿的渐悟。

有关这两门课的书,计算机书店里不难找到。

弄几本最新的,对照着看吧。

组成原理推荐计算机组成与结构清华大学王爱英教授写的。

汇编语言大家拿8086/8088入个门,之后一定要学80x86汇编语言。

实用价值大,不落后,结构又好,写写高效病毒,高级语言里嵌一点汇编,进行底层开发,总也离不开他,推荐清华大学沈美明的IBM-PC汇编语言程序设计。

有些人说不想了解计算机体系结构,也不想制造计算机,所以诸如计算机原理,汇编语言,接口之类的课觉得没必要学,这样合理吗显然不合理,这些东西迟早得掌握,肯定得接触,而且,这是计算机专业与其他专业学生相比的少有的几项优势。

做项目的时候,了解这些是非常重要的,不可能说,仅仅为了技术而技术,只懂技术的人最多做一个编码工人,而永远不可能全面地了解整个系统的设计,而编码工人是越老越不值钱。

关于组成原理还有个讲授的问题,在我学这门课程时老师讲授时把CPU工作原理誉微程序设计这一块略掉了,理由是我们国家搞CPU技术不如别的国家,搞了这么长时间好不容易出了个龙芯比Intel的还差个十万八千里,所以建议我们不要学了。

我看这在各校也未见得不是个问题吧若真是如他所说,那中国的计算机科学哪个方向都可以停了,软硬件,应用,有几项搞得过美国,搞不过别人就不搞了,那我们坐在这里干什么教学的观念需要转变的。

我们学校现在有一个学弟就专攻CPU设计,平时交流不少,发现他能够将软件的设计思想应用到芯片设计上,我看真的是不错的,比起那些望而生畏的恐怕要强上百倍。

模拟电路这个学科,如今不仅计算机系学生搞不定,电子系学生也多半害怕。

如果你真想软硬件通吃,那么建议你先看看邱关源的“电路原理“,也许此后再看模拟电路底气会足些。

教材康华光的“电子技术基础“(高等教育出版社)还是不错的(我校电子系在用)。

有兴趣也可以参考童诗白的书。

数字电路比模拟电路要好懂得多。

推荐大家看一看北京工业大学刘英娴教授写的数字逻辑。

业绩人士都说这本书很有参考价值(机械工业出版社的)。

原因很明了,实用价值高,能听听她讲授的课程更是有一种“享受科学“的感觉。

清华大学阎石的书也算一本好教材,遗憾的一点是集成电路讲少了些。

真有兴趣,看一看大规模数字系统设计吧(北航那本用的还比较多)。

计算机系统结构该怎么教,国际上还在争论。

国内能找到的较好教材为Stallings的ComputerOrganizationandArchitectureesigningforPerformance清华影印本。

国际上最流行的则是Computerarchitectureaquantitativeapproach,byPatterson如果没见过,那么考虑以下问题1.问题是否是建立在某种已知的熟悉的数据结构例如,二叉树上如果不是,则要自己设计数据结构。

2.问题所要求编写的算法属于以下哪种类型建立数据结构,修改数据结构,遍历,查找,排序...3.分析问题所要求编写的算法的数学性质.是否具备递归特征对于递归程序设计,只要设计出合理的参数表以及递归结束的条件,则基本上大功告成.4.继续分析问题的数学本质.根据你以前的编程经验,设想一种可能是可行的解决办法,并证明这种解决办法的正确性.如果题目对算法有时空方面的要求,证明你的设想满足其要求.一般的,时间效率和空间效率难以兼得.有时必须通过建立辅助存储的方法来节省时间.5.通过一段时间的分析,你对解决这个问题已经有了自己的一些思路.或者说,你已经可以用自然语言把你的算法简单描述出来.继续验证其正确性,努力发现其中的错误并找出解决办法.在必要的时候发现了无法解决的矛盾,推翻自己的思路,从头开始构思.6.确认你的思路可行以后,开始编写程序.在编写代码的过程中,尽可能把各种问题考虑得详细,周密.程序应该具有良好的结构,并且在关键的地方配有注释.7.举一个例子,然后在纸上用笔执行你的程序,进一步验证其正确性.当遇到与你的设想不符的情况时,分析问题产生的原因是编程方面的问题还是算法思想本身有问题.8.如果程序通过了上述正确性验证,那么在将其进一步优化或简化。

9.撰写思路分析,注释.对于具体的算法思路,只能靠你自己通过自己的知识和经验来加以获得,没有什么特定的规律否则程序员全部可以下岗了,用机器自动生成代码就可以了.要有丰富的想象力,就是说当一条路走不通时,不要钻牛角尖,要敢于推翻自己的想法.我也只不过是初学者,说出上面的一些经验,仅供大家参考和讨论。

关于人工智能,我觉得的也是非常值得大家仔细研究的,虽然不能算是刚刚兴起的学科了,但是绝对是非常有发展前途的一门学科。

我国人工智能创始人之一,北京科技大学涂序彦教授(这老先生是我的导师李小坚博士的导师)对人工智能这样定义人工智能是模仿、延伸和扩展人与自然的智能的技术科学。

在美国人工智能官方教育网站上对人工

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1