微积分,统计,概率论,离散结构,线性代数,逻辑和自动推理,机器人、视觉和图形学数学方法,力学,电磁学,程序设计抽象/方法学,电子学基础,程序设计范型,面向对象系统设计,自动机与复杂性理论,算法的设计与分析,数字系统或计算机体系结构,编译原理,计算机网络,操作系统,人工智能,数据库,图形学
2.加州大学伯克利分校
伯克利的课程设置也有很多独树一帜的地方,尤其是在专业基础课方面,除了有专业导引课程“计算机科学专题”之外,对于没有编程经验的学生,第一门编程课是符号编程入门,采用LISP语言。有一定编程经验或者有自学能力的学生,可以选择多种语言和环境的自主学习(Self-paced)课程,包括C、Fortran、C++、Java,以及UNIX的使用等,这种多元化与伯克利计算机科学与电子电气工程同系有关。但是所有学生在第二学期都要学习一组独特的基础课:61A“计算机程序的结构与解释”,采用MIT Abelson等编著的同名教材(中译本机械工业出版社出版,清华大学出版社出版了影印版);61B“数据结构”(教材采用自编讲义);61C“计算机结构”(Machine Structures),采用Hennessy的《计算机组织与设计》(中译本清华大学出版社出版,机械工业出版社出版了影印版)。这项规定就是转校生也不例外,可见其中蕴涵了伯克利多年的教学经验结晶。
伯克利其他比较有特点的课程还有:将离散数学和概率论结合讲授的CS70,主讲是名教授Christos Papadimitriou;CS98-1 编程练习课,以主要大学生编程竞赛中的赛题为授课素材;CS 169 软件工程直接用Kent Beck的《极限编程》(人民邮电出版社出版了中译本)作为教材,非常超前,但是既然连Pressman的《软件工程:实践者方法》新版中敏捷方法都已经成为重头戏,既然IEEE都已经开始制定敏捷方法相关标准,这种课程选材也就不显得那么骇世惊俗了。除了软件工程课程常见内容外,教学侧重实际,贯穿了极限编程的思想,涵盖UML、JUnit单元测试、软件架构、设计模式和反模式、重构、CVS版本控制、系统和集成测试,最后要求完成一个实际产品,并进行演示。
3.MIT(麻省理工学院)
MIT的课程设置,只能用其学生起点高来解释。该校没有典型意义上的计算机科学专业,偏软的只有理论计算机科学和人工智能及其应用两个专业。因此没有类似于其他学校的导论课程。
在MIT的电子电气工程与计算机科学系中,所有学生都要参加如下四门课程:6.001“计算机程序的结构与解释”,当然与伯克利相同,采用的是Abelson等编著的同名教材;6.002“电路与电子学”;6.003“信号与系统”(自编讲义);6.004 “计算结构”(Computation Structures),与伯克利的61C“计算机结构”对等(教材是自编课件)。此外有两门专业基础数学课:“概率系统分析”(教授自编教材)和“计算机科学数学”,后者的教材是国外院校普遍采用的Rosen所著《离散数学及其应用》(中文版由机械工业出版社出版)。
对MIT的学生而言,实验课程有多种选择:电气工程和计算机科学实验,模拟电子实验,数字系统实验,微机项目实验,半导体设备项目实验。此外,无论何种专业,都有软件工程实验课。值得注意的是,本科生各专业的必修课程中并没有软件工程课程。也就是说,软件工程的内容都在实践中完成了。带软件工程实验课的是因为提出Liskov替换原则而知名的女教授Barbara Liskov,她刚刚获得了2004年度的冯·诺依曼奖。作为美国工程院和艺术科学院的双院士,她几十年在软件开发研究方面的经验,将有力地保证这门实验课程的质量。
总的来说,各学校之间的共性还是主要的。归纳起来,有这么几个特点:
1. 硬件课程整体在减少
偏软类的三所院校中,CMU最为彻底,硬件课程只有一门课,而UIUC也只有两门必修(两门体系结构),斯坦福也是两门(电子学、体系结构或数字系统)。其中的原因,前面引述的Randal E. Bryant所言作出了解释,毕竟计算机科学需要关注的在计算机系统层次中已经越来越高,底层越来越变得透明了。事实上,CC2001中制定的硬件课程也只有一门。而我的专业计算机课程中有数字电路、模拟电路、电路、微机原理、计算机组成原理、计算机接口技术、计算机体系结构等硬件类课程。综观四年,在实际的应用中对于硬件知识的要求逐渐缩小,特别对于软件的设计,硬件知识的要求更加透明。所以可以在今后的课程设置中适当减少硬件课程设置的比例或者减少课堂讲述,增加实验课时以增加对计算机硬件的深刻具体的认识。
2. 程序设计日益重视
在CMU,UIUC和斯坦福,必修的程序设计类课程往往在四五门左右。伯克利加起来也有四门。MIT虽然没有大量前导性的编程课程,但是由于在后面计算机系统工程、计算机语言工程、软件工程实验、Web软件工程诸课程都有实际的项目要完成,所以实际学时也很多,UIUC的改革更说明了这一点。同时,还出现了强调提高程序设计技巧,与软件工程环境和工具相结合,提倡团队合作,高级程序设计课程与数据结构、算法课融合的趋势。这方面的代表有斯坦福。该校副系主任Eric Roberts曾执教入门类课程多年,总结了一套在语言教学中融入软件工程和现代程序设计观念,结合算法和数据结构教学的经验。其成果就是《C语言的科学和艺术》和《C程序设计的抽象思维》两本书(影印版已由机械工业出版社出版)。作为CC2001工作组两位主席之一,他在C语言教学中强调库与接口设计、编程风格的重要性,并进而介绍抽象、封装的概念,产生了很大影响。在我学习C语言课程的时候,课程内容仅仅局限在语言本身,而没有和程序设计的技巧方法等结合起来,应该是值得改进的地方。
无论如何,在借鉴国外高校成功教学经验的同时,我们的课程设置应该是因地制宜的,结合自己的特色。注重个性化发展,结合每个人自身的特点,给予按大类划分的课程选修模块。为今后的具体深入学习打下基础。避免单一的课程设置,以免造成所有人千篇一律的知识结构。不利于创造性的培养。
2.1.2 课堂教学
计算机是一个发展很快的行业,总有很多新技术不断出现。作为刚刚进入计算机这一领域的学生来讲,究竟是要紧跟时代的发展去学最新的技术,还是应该掌握好基础知识,为今后最好准备呢?这确实不是一个很好权衡的事情,诚然对于我现在在课堂上学到的大部分知识与企业里要求掌握的最新技术,有很大的差距。比如说现在比较流行的Java技术,软件工程中CMMI方法等,在我们的课堂上很少会接触到。尽管我已经保送了研究生,不需要考虑找工作的事情,可是如果真的光凭课堂上学到的知识去的,一定不会被企业所认同的。因为对于他们要求的东西,我一无所知。
是否是说课堂上学的东西都是过失的,都没有用处了呢?我并不这样认为,我曾经看过Google中国研究院院长李开复先生写给中国学生的一封信中关于学习基础知识的看法,我非常的赞同。
文中指出:“ 如果说大学是一个学习和进步的平台,那么,这个平台的地基就是大学里的基础课程。在大学期间,同学们一定要学好基础知识其中包括数学、英语、计算机和互联网的使用,以及本专业要求的基础课程(如商学院的财务、经济等课程)。在科技发展日新月异的今天,应用领域里很多看似高深的技术在几年后就会被新的技术或工具取代。只有对基础知识的学习才可以受用终身。另一方面,如果没有打下好的基础,大学生们也很难真正理解高深的应用技术。最后,在许多的中国大学里,教授对基础课程也比对最新技术有更丰富的教学经验。
数学是理工科学生必备的基础。很多学生在高中时认为数学是最难学的,到了大学里,一旦发现本专业对数学的要求不高,就会彻底放松对数学知识的学习,而且他们看不出数学知识有什么现实的应用或就业前景。但大家不要忘记,绝大多数理工科专业的知识体系都建立在数学的基石之上。例如,要想学好计算机工程专业,那至少要把离散数学(包括集合论、图论、数理逻辑等)、线性代数、概率统计和数学分析学好;要想进一步攻读计算机科学专业的硕士或博士学位,可能还需要更高的数学素养。同时,数学也是人类几千年积累的智慧结晶,学习数学知识可以培养和训练人的思维能力。通过对几何的学习,我们可以学会用演绎、推理来求证和思考的方法;通过学习概率统计,我们可以知道该如何避免钻进思维的死胡同,该如何让自己面前的机会最大化。所以,大家一定要用心把数学学好,不能敷衍了事。学习数学也不能仅仅局限于选修多门数学课程,而是要知道自己为什么学习数学,要从学习数学的过程中掌握认知和思考的方法。
……
最后,每个特定的专业也有它自己的基础课程。以计算机专业为例,许多大学生只热衷于学习最新的语言、技术、平台、标准和工具,因为很多公司在招聘时都会要求这些方面的基础或经验。这些新技术虽然应该学习,但计算机基础课程的学习更为重要,因为语言和平台的发展日新月异,但只要学好基础课程(如数据结构、算法、编译原理、计算机原理、数据库原理等)就可以万变不离其宗。有位同学生动地把这些基础课程比拟为计算机专业的内功,而把新的语言、技术、平台、标准和工具比拟为外功。那些只懂得追求时髦的学生最终只知道些招式的皮毛,而没有内功的积累,他们是不可能成为真正的高手的。
虽然我一向鼓励大家追寻自己的兴趣,但在这里仍需强调,生活中有些事情即便不感兴趣也是必须要做的。例如,打好基础,学好数学、英语和计算机的使用就是这一类必须做的事情。如果你对数学、英语和计算机有兴趣,那你是幸运儿,可以享受学习的乐趣;但就算你没有兴趣,你也必须把这些基础打好。打基础是苦功夫,不愿吃苦是不能修得正果的。”
2.1.3 课下的交流
在课堂之外,学生很少能有和老师接触的机会,这在很大程度上减少了学生学习的途径。希望能够增加学生和老师之间交流的空间,使我们更加的对计算机领域有深入了解。国外著名的大学通常都设有Coffee Room, 使学生能够和老师有一个交流的场所。我想对我们也是很有启示的。
2.2 “学”
2.2.1 关于兴趣
李开复先生曾经谈到:“最好的寻找兴趣点的方法是开拓自己的视野,接触众多的领域。唯有接触你才能尝试,唯有尝试你才能找到自己的最爱。而大学正是这样一个可以让你接触并尝试众多领域的独一无二的场所。因此,大学生应当更好地把握在校时间,充分利用学校的资源,通过使用图书馆资源、旁听课程、搜索网络、听讲座、打工、参加社团活动、与朋友交流、使用电子邮件和电子论坛等不同方式接触更多的领域、更多的工作类型和更多的专家学者。当年,如果我只是乖乖地到法律系上课,而不去尝试旁听计算机系的课程,我就不会去计算机中心打工,也不去找计算机系的助教切磋,就更不会发现自己对计算机的浓厚兴趣。
如果一点兴趣都没有是不可能在本专业做出成绩的。兴趣的积累靠广泛的接触和了解,从中发觉能驱使自己前进的动力,并在它的指引下去获取更多的知识,也从中享受快乐。我很感谢教我的人工智能的老师和我的班主任,她们对我兴趣的培养给予了很大的帮助。
2.2.2 竞赛
在大学里我参加了我参加过国际的,全国的,北京市的,学校的不同级别的比赛,主要是计算机程序设计竞赛和数学建模方面的竞赛。我非常庆幸我有机会参加这些比赛,比赛的目的不是为了去拿什么奖励,而是通过参加比赛,驱使了我的学习。在比赛中锻炼了我各种能力,比赛本身也许意义并不大,但比赛留给了我一种都享用不完的东西,它不经让我看清了自己的水平以及和别人的差距。更让我开阔了眼界,积累了很多课堂上难以学到的知识,并把它们应用到实际中,这正是我喜欢的。
2.2.3 动手能力
有一句古语说:“纸上得来终觉浅,绝知此事要躬行。”我一直都对知识的应用非常的重视,学习的知识不在于有多么的高深宽泛,而在于能把它们应用在实际中,并且时刻去想着把所学过的知识和实践联系起来。不管应用中用到任何的知识,都要把它应用到最好,能够发挥它最大的效力。
关于动手能力的培养,我首先引用李开复先生的一段话:
“有一句关于实践的谚语是这样说的:“我听到的会忘掉,我看到的能记住,我做过的才真正明白。
无论学习何种专业、何种课程,如果能在学习中努力实践,做到融会贯通,我们就可以更深入地理解知识体系,可以牢牢地记住学过的知识。因此,我建议同学们多选些与实践相关的专业课。实践时,最好是几个同学合作,这样,既可经过实践理解专业知识,也可以学会如何与人合作,培养团队精神。如果有机会在老师手下做些实际的项目,或者走出校门打工,只要不影响课业,这些做法都是值得鼓励的。外出打工或做项目时,不要只看重薪酬待遇(除非生活上确实有困难),有时候,即便待遇不满意,但有许多培训和实践的机会,我们也值得一试。
以计算机专业为例,实践经验对于软件开发来说更是必不可少的。微软公司希望应聘程序员的大学毕业生最好有十万行的编程经验。理由很简单:实践性的技术要在实践中提高。计算机归根结底是一门实践的学问,不动手是永远也学不会的。因此,最重要的不是在笔试中考高分,而是实践能力。但是,在与中国学生的交流过程中,我很惊讶地发现,中国某些学校计算机系的学生到了大三还不会编程。这些大学里的教学方法和课程的确需要更新。如果你不巧是在这样的学校中就读,那你就应该从打工、自学或上网的过程中寻求学习和实践的机会。”
对于计算机专业,无论是今后工作还是继续做研究,都需要有动手实践的能力,我在大学四年期间也许参与到实际的项目中的机会并不多,也远远没有达到像上文所说的10万行代码的编程经验。但我一直都在努力,不过我研究什么具体问题,都尽全力把它做好。发掘自己的创新之处,在自己的水平的基础上不断的完善它。
2.2.4 自学能力
有句话说:授之以鱼,不如授之以渔。学海无崖,大学四年的学习时光,在人的一生中毕竟是很有限的。我不可能在大学里学习到我一生里要用到的所有知识。所以学会怎样去学习,学会如何来获取知识才是大学教育所留给我的最宝贵的财富。
自学能力究竟有多重要,又怎样去锻炼这种自学能力。李开复先生在他的文章中给了我很好的答案:
“如果我们将学过的东西忘得一干二净时,最后剩下来的东西就是教育的本质了。”
这句话来自教育家B. F. Skinner的名言。所谓“剩下来的东西”,其实就是自学的能力,也就是举一反三或无师自通的能力。大学不是“职业培训班”,而是一个让学生适应社会,适应不同工作岗位的平台。在大学期间,学习专业知识固然重要,但更重要的还是要学习独立思考的方法,培养举一反三的能力,只有这样,大学毕业生才能适应瞬息万变的未来世界。我认识的不少在中国读完大学来美国念研究生的朋友。他们认为来美国后,不论是学习,工作还是生活他们最缺乏的是独立思考的能力因为在国内时他们很少独立思考和独立决策。
上中学时,老师会一次又一次重复每一课里的关键内容。但进了大学以后,老师只会充当引路人的角色,学生必须自主地学习、探索和实践。走上工作岗位后,自学能力就显得更为重要了。微软公司曾做过一个统计:在每一名微软员工所掌握的知识内容里,只有大约10%是员工在过去的学习和工作中积累得到的,其他知识都是在加入微软后重新学习的。这一数据充分表明,一个缺乏自学能力的人是难以在微软这样的现代企业中立足的。
自学能力必须在大学期间开始培养。许多同学总是抱怨老师教得不好,懂得不多,学校的课程安排也不合理。我通常会劝这些学生说:“与其诅咒黑暗,不如点亮蜡烛”。 大学生不应该只会跟在老师的身后亦步亦趋,而应当主动走在老师的前面。例如,大学老师在一个课时里通常要涵盖课本中几十页的信息内容,仅仅通过课堂听讲是无法把所有知识学通、学透的。最好的学习方法是在老师讲课之前就把课本中的相关问题琢磨清楚,然后在课堂上对照老师的讲解弥补自己在理解和认识上的不足之处。
中学生在学习知识时更多地是追求“记住”知识,而大学生就应当要求自己“理解”知识并善于提出问题。对每一个知识点,都应当多问几个“为什么”。一旦真正理解了理论或方法的来龙去脉,大家就能举一反三地学习其他知识,解决其他问题,甚至达到无师自通的境界。
事实上,很多问题都有不同的思路或观察角度。在学习知识或解决问题时,不要总是死守一种思维模式,不要让自己成为课本或经验的**。只有在学习中敢于创新,善于从全新的角度出发思考问题,学生潜在的思考能力、创造能力和学习能力才能被真正激发出来。
《礼记·学记》上讲:“独学而无友,则孤陋而寡闻”。也就是说,大学生应当充分利用学校里的人才资源,从各种渠道吸收知识和方法。如果遇到好的老师,你可以主动向他们请教,或者请他们推荐一些课外的参考读物。除了资深的教授以外,大学中的青年教师、博士生、硕士生乃至自己的同班同学都是最好的知识来源和学习伙伴。每个人对问题的理解和认识都不尽相同,只有互帮互学,大家才能共同进步。
有些同学曾告诉我说,他们很羡慕我在读书时能有一位获得过图灵奖的大师传道授业。其实,虽然我非常推崇我的老师,但他在大学期间并没有教给我多少专业知识。他只是给我指明了大方向,让我分享他的经验,给我提供研究的资源,并教我做人的方法。他没有时间也没有必要指导我学习具体的专业知识。我在大学期间积累的专业知识都是通过自学获得的。刚入门时,我曾多次红着脸向我的师兄请教最基本的知识内容,开会讨论时我曾问过不少肤浅的问题,课余时间我还主动与同学探讨、切磋。“三人行必有我师”,大学生的周围到处是良师益友。只要珍惜这些难得的机会,大胆发问,经常切磋,我们就能学到最有用的知识和方法。
大学生应该充分利用图书馆和互联网,培养独立学习和研究的本领,为适应今后的工作或进一步的深造做准备。首先,除了学习老师规定的课程以外,大学生一定要学会查找书籍和文献,以便接触更广泛的知识和研究成果。例如,当我们在一门课上发现了自己感兴趣的课题,就应当积极去图书馆查阅相关文献,了解这个课题的来龙去脉和目前的研究动态。熟练和充分地使用图书馆资源,这是大学生特别是那些有志于科学研究的大学生的必备技能之一。读书时,应尽量多读一些英文原版教材。有些原版教材写得深入浅出,附有大量实例,比中文教材还适于自学。其次,在书本之外,互联网也是一个巨大的资源库,大学生们可以借助搜索引擎在网上查找各类信息。“开复学生网”开通半年以来,我发现很多同学其实并没有很好地掌握互联网的搜索技巧,有时他们提出的问题只要在搜索引擎中简单检索一下,就能轻易找到答案。还有些同学很容易相信网上的谣言,而不会利用搜索引擎自己查考、求证。除了搜索引擎以外,网上还有许多网站和社区也是很好的学习园地。
自学时,不要因为达到了学校的要求就沾沾自喜,也不要认为自己在大学里功课好就足够了。在二十一世纪的今天,人才已经变成了一个国际化的概念。当你对自己的成绩感到满意时,我建议你开始自学一些国际一流大学的课程。例如,美国麻省理工学院(MIT)的开放式课程已经在网上无偿发布出来,大家不妨去看看MIT的网上课程,做做MIT的网上试题。当你可以自如地掌握MIT课程时,你就可以更加自信地面对国际化的挑战了。
总之,善于举一反三,学会无师自通,这是大学四年中你可以送给自己的最好的礼物。
2.3 课堂之外
2.3.1 实验室与文献资源
虽然计算机学科不像理化生那样需要大量的实验资源。但是对于无论学习计算机科学还是计算机工程都要进行计算机的操作,有时也要有对硬件和软件更高的要求。我很希望我们专业的实验室能够成为开放的实验室,一方面是提高资源的利用率,因为当实验室没有实验安排的时候,实验设备很长时间是闲置的。对于资源是一种浪费。另一方面也能给本科生提供一个很好的学习和实践的场所。平时对于我来讲只要教室和图书馆是可以看书的场所,有的时候经常会受到限制,感觉如果有一个固定的场所,会对研究和学习有很大帮助。
对于图书馆的文献数据库和一些专业的学术期刊都是一些最新的研究技术和成果。我以前对于他们的利用远远不够,在今后的研究工作中,应更好的利用这些宝贵的资源。
2.3.2 参与项目
我想本科生也可以尽早的进入老师的一些科研项目,这对于学生开阔视野,树立兴趣,特别是培养科学研究的素养是很有必要的。所以现在我逐渐去加入到科研项目之中,逐渐的去体会如何去做科研,为以后的进一步学习做好准备。
2.3.3 与外面的交流
任何的学习都不是静止的,应该为一个动态的不断更新,不断交互的过程。我希望对于我们的教材的选用可以多引进一些英文原版教材,这样可以和国际的教育方法相互借鉴,从中选取有益与我们的东西,引进到课堂上,能够一直保持知识的先进性。
我想在国内我们与北大,清华这样的学校确实存在着差距,其中一个原因就是他们那里会有很好的资源交流,经常听到有很多获得诺贝尔奖或图灵奖的大师去那里讲学,他们的学生能够有去世界知名的企业和研究机构实习和学习的机会。我觉得我们的学校也应该争取“走出去,请进来”的原则,让学生能够有去外面高水平的机构进行学习和实践的机会,并且多请一些外校的知名人士来到学校里进行讲座,让我们能够很该领域的成功人士有一个近距离接触的机会。另外,对于一些课程是否也可以考虑聘请一些外校的专家来进行讲授。这样也许更利于学术的进步。
3.研究计划与后期目标
目前我已经明确了我以后的研究方向:生物信息学。曾听到ACM图灵奖获得者John Edward Hopcroft说他希望他的学生去学习刚刚发展起来的有潜力的学科方向。他认为生物信息学和如何利用和发现信息是值得人们去关注的两个热点。
我很庆幸也许我的选择可能是一个很有潜力的学科,但我选择它更是因为我对它热爱,这里有生物,有计算机,有数学。这些都恰是我的兴趣所在。在今后的学习和研究中,我希望能够在这个领域有所贡献,我希望自己能够去解决这里面的问题,并把自己所学与他人分享。
4.结束语
经过了这样也许不算忙碌但却充实、也许不算幸福但却快乐、也许有些被动但自我选择、也许即将结束但却因它受益一生的四年大学时光,我即将进入新的起点。在走过的这四年里我一直在不断的改变着自我,完善着自我。如今自己掌握了自修之道、基础知识、实践贯通、兴趣培养、积极主动、掌控时间、为人处事这七项本领。也更加渴望去实现理想。
经过大学四年,我从思考中确立自我,从学习中寻求真理,从独立中体验自主,从计划中把握时间,从交流中锻炼表达,从交友中品味成熟,从实践中赢得价值,从兴趣中攫取快乐,从追求中获得力量。
我对于人生应该怎样度过的思考,我想借用保尔·柯察金的一句话:“每当回首自己往事的时候,不因自己虚度年华而悔恨,也不因自己碌碌无为而羞愧。” 我一直都喜欢一句话:机遇总是垂青于有准备的人。我想我会一直为着理想去准备,去努力。
我选择了这条人迹罕至的道路,这注定了我的人生!
文章评论(0条评论)
登录后参与讨论