前几天收到《CSDN开 发高手》杂志社编辑的约稿邮件,主题是关于中外计算机教育对比。笔者因学习和工作的关系对美国大学计算机教育体系有较深刻的了解和认识。同时与国内计算机 系的教授也有一定的联系,比较了解国内大学计算机教育的现状。国内计算机系的学生就经常拿自己调侃,调侃之一:“计算机专业最没前途了,因为计算机专业大 体分三类,硬件、软件和网络。硬件方面不如电子系,软件方面不如数学系,网络方面不如通信系…”。以往对这类的调侃,多是付之一笑。但谈及目前国内大学的计算机教育,尤其是国内大学扩招以后的状况,令人感慨万分。因为这类调侃竟然在很多学生心里得到了一定的认可。调侃之二:“国外计算机科学系是Computer Science, 国内计算机科学系是Counter Striker(反恐精英)”。这说明,国内计算机专业的学生大多都沉溺于网络游戏而放松了对本专业的学习。这些听后令人心酸的调侃,反映了国内大学计算机教育的现状,以及国内大学计算机教育的滞后性和缺乏创造性。
作为一名计算机专业的学生,中美两国的计算机教育在本科和研究生阶段究竟有何不同?哪种方式更适合中国学生?如何提高国内众多大学计算机系学生的专业水平?课程该如何设置?师资该如何配备?教授的能力该如何评估?这些问题实在是到了该探讨如何改革的时候了。
笔者研究生阶段的学习是在美国完成的。毕业于纽约市立大学 (City University of New York) 计算机科学系。回顾留美期间的读书,选择课程、挑选教授、课堂演讲、以及团队合作等种种难忘的经历。现将这些经历整理成文,以笔者个人的视角来观察分析美国大学计算机教育的特点。
大学本科阶段的教育是一切高等教育的基础。基础不坚实,何以建高楼?本科阶段学习的重要性是不言而喻的。任何计算机方面的学习都离不开硬件和软件两部分。美国大学在这方面为计算机本科学生都提供了什么样的设备呢?
笔者从1996年下半年开始接触BBS。那是当时全国都大名鼎鼎的重庆海阔天空BBS站。第一封电子邮件,第一次下载软件,第一次实时聊天,都是在BBS网上完成的。之后,电信局终于开通了拨号上网。那是一个连拨号设置都非常复杂的时代,操作系统是Windows 95。昂贵的网费以及慢得如同老牛爬坡的速度,至今回忆起来仍沥沥在目。
在那个年代,最快的网络是T1,是世界上最快的网络。到底有多快,就只能从杂志书籍上了解一些。知道这个最霸道的T1网络位于北美,是互联网的骨干网。1997年,来到了美国。最初的震撼就是见识了美国大学的计算机房,全天开放供学生使用,居然还有空位子。任何一间计算机房都配备了至少一到两台黑白激光打印机。估计那是工作最为繁忙的计算机设备,每天不知道要消耗多少A4标 准打印纸。打印机是免费提供给学生使用的。因打印数量庞大,为方便学生使用,于是整箱的打印纸就堆放在打印机下面的机柜里,学生可以随时自行添加。最大的 震撼是,全校的任何一台计算机都与互联网相联,速度很快。记得在国内的时候,如果要在网上显示一幅图片,等上几分钟是很正常的事情。可当时的情况几乎是即 点即现。这可是在1997年啊!惊喜之下,询问机房管理员,答曰:”本校的局域网隶属于北美大学骨干网,自身就是这个信息高速公路的一部分”。终于见识了T1网络的威力了。下载速度最快的时候可以达到5兆每秒,平时基本上是100-400K的下载速度。
如果是大学的教职工或者全日制学生,学校将会分配每人一个以@大学名称.edu结 尾的电子邮箱。其实这不仅培养了学生对母校的认同感和自豪感,同时也是展现一个学校在网络技术实力方面的一种手段。不难想象,要维护一个复杂而庞大,运行 稳定可靠的电子邮件系统不是件容易的事情。即使学生毕业离校多年,学校也不会注销学生的账号。学生仍然可以经常使用这个账号登录到母校的主机,查询自己感 兴趣的信息。
对于居住在校内的学生,大学还为每个宿舍提供了10/100兆免费的宽带接入,只要填张申请表即可办理。对于不住校的学生,学校另外提供电话号码,键入这个号码就可以登录互联网了。有些类似国内目前的16300方式,只不过需要提供正确的用户名和密码。以上服务是每个已经正式注册的学生都可以享用的。计算机以及电子工程专业的学生还有额外的一些服务,诸如:
l 5兆个人主页空间。支持CGI,PERL(之后考虑到网络安全,停止了对CGI的支持);
l Oracle数据库的使用权限。可以使用学校主机上的Oracle, 便于课程的学习,例如,数据库程序设计以及数据库管理。
基本上每台计算机都安装了一些开发工具。例如,微软的Visual Studio系列,如,VB,VC,另外还有TC,JAVA等等。如果是商业或者是有版权的开发工具,大部分安装的是免费版,个人版,学习版,或者是共享版。在公共计算机房的计算机上,几乎看不到国内大学计算机房里面令人眼花缭乱的专业版,企业版。从这个角度来说,国内大学生所使用的开发工具要比美国大学提供的好。
总的来讲,大多数的美国大学在计算机方面的配置是差不多的。但是,如果是名校,不论是公立的还是私立的,计算机的配置要比普通大学好得多。例如,纽约市立大学(CUNY)就是其中之一。得益于纽约市政府的大力支持。学校在教学质量,规模,硬件配备等方面在全美几个巨无霸型的公立大学中占据重要位置。其它两个巨无霸型的公立大学是纽约州大和加州州大。看来教育不下大本钱还是不行的。由于政府的支持,这些大学普遍收取较低的学费 (本州学生最低,外州学生其次,外国留学生最昂贵),因此吸引了大量本国学生及外国留学生报考,竞争非常激烈。批准入学后,更不同于国内大学的严进宽出,而是要认真对待所有的课程,否则无法保证顺利毕业。
前面谈了美国大学的基本硬件配备情况。接下来,谈谈软件方面。下面分别从课程设置,教学方式及教材的选用、成绩评估、和毕业要求等几方面加以阐述。
目 前国内高校的教学内容都是由国家教学大纲来制定,应该说还是带有很强的计划经济的色彩。笔者认为大学或学院要创办出自己的特色,就应当由学校制定自己的教 学大纲,由教授制定授课的内容。教学大纲定死了,就不容易创办出自己的特色来。在课程设置上,必须紧密结合市场的经济需求,克服脱离实际的现象,同时还要 避免因迎合市场而盲目追求最新的理论。从另一方面来说,国内的大学希望紧跟国际计算机科学发展的最新理念和技术,并将最新的信息传授给学生。但就目前来 看,国内大学还是有力不从心之感。因为任何新的理论技术,要想掌握得比较好,没有一定的技术储备是很难办到的。一方面教授的素质和能力要跟上,另一方面,学生要有强烈的学习欲望和钻研精神才行。两者缺一不可。
这里以纽约市立大学(CUNY)计算机科学系本科与Bridgeport大学计算机科学系本科学生2004年度课程设置为例。(课程名称笔者就不翻译了,相信国内大学生应该是相当熟悉的)。
纽约市立大学(CUNY)计算机科学系本科课程设置,见表一
表一 美国纽约市立大学(CUNY)计算机科学系本科课程设置表
课程代码 |
课程名称 |
学分时 |
CSCI 012 |
Understanding and Using Personal Computers |
3 |
CSCI 018 |
Computers with Business Applications |
3 |
CSCI 080 |
Problem Solving with Computers |
3 |
CSCI 081 |
HTML and WWW Programming |
3 |
CSCI 082 |
Multimedia Fundamentals and Applications |
3 |
CSCI 084 |
Models of Computation |
3 |
CSCI 085 |
Database Application Programming |
3 |
CSCI 086 |
Science Computing Tools and Instrumentation |
3 |
CSCI 090 |
Topics in Computing |
1-3 |
CSCI 111 |
Algorithmic Problem Solving I |
3 |
CSCI 211 |
Algorithmic Problem Solving II |
4 |
CSCI 220 |
Discrete Structures |
3 |
CSCI 240 |
Computer Organization and Assembly Language |
3 |
CSCI 280 |
Self-Study Programming |
1 |
CSCI 307 |
Compilers |
3 |
CSCI 310 |
WWW Programming |
1 |
CSCI 313 |
Data Structures |
4 |
CSCI 316 |
Principles of Programming Languages |
3 |
CSCI 315 |
Artificial Intelligence |
3 |
CSCI 320 |
Theory of Computation |
3 |
CSCI 323 |
Design and Analysis of Algorithms |
3 |
CSCI 331 |
Database Systems |
3 |
CSCI 332 |
Object-Oriented Databases |
3 |
CSCI 335 |
Information Organization & Retrieval |
3 |
CSCI 340 |
Operating Systems Principles |
3 |
CSCI 341 |
Computer Organization |
3 |
CSCI 342 |
Operating System Programming |
3 |
CSCI 343 |
Computer Architecture |
3 |
CSCI 344 |
Distributed Systems |
3 |
CSCI 345 |
Logic Design Lab |
3 |
CSCI 348 |
Data Communications |
3 |
CSCI 361 |
Numerical Methods |
3 |
CSCI 368 |
Computer Graphics |
3 |
CSCI 370 |
Software Engineering |
3 |
CSCI 381 |
Special Topics in Computer Science |
1-4 |
CSCI 391 |
Honors Problems in Computer Science |
1-3 |
CSCI 393 |
Honors Thesis |
3 |
CSCI 395 |
Research Projects |
1-3 |
CSCI 398 |
Internship |
1-3 |
CSCI 399 |
Honors Readings in Computer Science |
3 |
总计40门课程,不包含毕业论文。(注:附录一列出了上述课程内容的简要说明)。
美国大学的课程可以从其课程的编码就能了解到这门课的适用范围。所有课程都以某个系或某个专业为单位由浅入深地从100-999编号。100-499为本科生课程,500-699为高年级本科生选修课和低年级研究生课程。编号为700-799隶属于研究生的学习范围。800及其以后的课程则属于博士生及其以上学生的学习范围。而某些大学规定计算机专业的研究生,在攻读700以上的研究生课程前,必须先完成特定的一些500-699之间的课程。
下面看看Bridgeport大学计算机科学系本科课程设置,见表二
表二 美国Bridgeport大学计算机科学系本科课程设置以及学校建议各门课程学习计划表
课程代码 |
课程名称 |
学分时 |
|
|
|
第1学期(FIRST SEMESTER) |
||
Eng C101 |
Composition & Rhetoric |
3 |
Math 110 |
Calculus I |
4 |
CS 101/101a |
Introduction to Computing I / Lab. |
4 |
Hum C201 |
Humanities |
3 |
Phys 111 |
Principles of Physics I |
4 |
第2学期(SECOND SEMESTER) |
||
Math 112 |
Calculus II |
4 |
Phys 112 |
Principles of Physics II |
4 |
CS 102/102a |
Intro. to Computing II / Lab. (Data Structures & Algorithms) |
4 |
IntSt C101 |
Computer Ethics |
3 |
Hum |
Humanities Core |
3 |
第3学期(THIRD SEMESTER) |
||
CS 227 |
Discrete Structures |
3 |
Math 215 |
Calculus III |
4 |
CS 201 |
Advanced Data & File Structures |
3 |
SoSc C201 |
Social Sciences |
3 |
第4学期(FOURTH SEMESTER) |
||
Math 214 or 314 or 340 |
Linear Algebra or Numerical Methods or Queuing Theory |
3 |
CS 203 |
Second Programming Language |
3 |
SoSc |
Social Sciences Core |
3 |
Engl 204 |
Technical Writing for CS |
1 |
FA C101 |
Fine Arts |
3 |
CpE 210 |
Digital System Design I |
3 |
第5学期(FIFTH SEMESTER) |
||
CS 300 |
Economics & Management of Computer Projects |
3 |
Math 323 |
Probability and Statistics |
3 |
CS 301 |
Programming Languages |
3 |
CS 329 |
Fundamentals of Algorithms |
3 |
CpE 286 |
Microprocessor System Design |
3 |
CS 300 |
Economics & Management of Computer Projects |
3 |
第6学期(SIXTH SEMESTER) |
||
CpE 408 |
Operating Systems |
3 |
|
Humanities Elective I |
3 |
|
CS Elective I |
3 |
CS 311 |
Computer Architecture |
3 |
|
Tech Elective |
1 |
第7学期(SEVENTH SEMESTER) |
||
CS 450 |
Database Design |
3 |
CpE 489 |
Software Engineering |
3 |
CpE 471 |
Data and Computer Communications |
3 |
|
CS Elective II |
3 |
|
Technical Elective II |
3 |
CS 449a |
Senior Design Project |
1 |
第8学期(EIGHTH SEMESTER) |
||
Caps C390 |
Capstone Seminar |
3 |
|
Free Elective |
3 |
|
CS Elective III |
3 |
|
Humanities Elective II |
4 |
CS 449b |
Senior Design Project |
3 |
总计学分时 |
130 |
总计42门课,含毕业论文(Capstone)。
现在让我们对比研究这两所大学课程设置的特点:
纽约市立大学(CUNY)计算机科学系本科课程的设置很专业。全部都是与计算机直接相联系的科目。例如,数学和大量程序设计的课程,基本上不包含其它学科的课程。Bridgeport大学却与之相反。含盖了数学、物理、化学、工程、电子工程、计算机科学、计算机工程、社会科学、人文科学、英语、艺术等各个专业的课程。课程内容为Elective表示该门课程为选修课,Free Elective表示该门课程不受任何限制,可任意选择。两所大学除数学类的课程以及核心的计算机课程相同外,例如,数据结构,算法等,其它的课程设置可以说是差别很大。这充分体现了美国大学教育体制的一个特点,即自主性,多样性和灵活性。
同样的专业,却因为不同的教育传统和思路,则在课程设置上各有特点。CUNY是在美国享有很高声誉的公立大学。在课程设置上尽其所能地满足纽约的需求,纽约对计算机人才的要求是非常专业的。所以如此的课程设置也就不足为奇了。
Bridgeport大学是所私立大学。在师资和生源上都远不及CNUY。虽然Bridgeport离 纽约市很近,但却隶属于美国新英格兰地区的康奈提克州。该校比较注重本科生的综合能力,所以在课程上设置了一些看似与计算机毫不相关的课程。美国的高中毕 业生在选择大学的时候,就可以在网上查询到不同大学的课程设置。因而可以非常容易地挑选到最适合自己的大学。如果对计算机的课程感兴趣,而对其它的,褚 如:人文,社会和艺术类的课程没有兴趣,那么CUNY就是很好的选择。如果兴趣比较广泛,不仅仅是局限于计算机类,那么Bridgeport大学就是很好的选择。
美国大学在新学期开始前,各系都会在其主页上刊登出详尽的列表。例如:本学期开始及结束的日期,本学期开设的课程,授课教授的信息,授课教授的接待时间,授课教室,期中期末考试的日期及考试地点等等,都可以轻松查阅。
一 旦注册某门课程的学生比较多,将同时会有几个教授讲授同一门课。学生可以选择上哪一个教授的课。如果该教授招收的学生已经满员,则只能选择到其他教授门 下。不同的教授,授课风格也迥然不同,有严厉死板型的,也好好先生型的。总之,如果以前没有听过该教授的课,可以询问其他学生对该教授的评价就可以了。但 并不是说,某个教授招收的学生少,就说明该教授的水平差。
美国私立大学学费之昂贵,想必大家也有所耳闻。以Bridgeport大学为例,本科学生的学费是475美元(研究生550美元)每一学分时。每门课程通常是3或4个学分时,算下来,一门课程折合人民币12000—16000元的学费。而前面提到的公立大学,例如:市立纽约大学和私立大学相比,学费明显偏低。市立纽约大学本科学生的学费是360美元(研究生425美元)每一学分时。而且在美国大学没有补考的概念。如果某门课程,教授判定Failed -- 不及格,不仅成绩单上该门课程的成绩栏里会有一个难看的F,而且唯一的补救方法就是下学期重读这门课。当然,学费也要再缴一遍。即便重读过关,那个难看的F成绩同样会保留在学生成绩单上,那是永远也抹不到的记录。正是这种学分的管理制度,也起到了督促学生努力学习,完成学业的作用。
尽管学费昂贵,美国大学在学费管理上也有很人性化的一面。允许学生在一定的期限内注销(withdraw)所注册的课程。一般在该门课程开课的一个月之内。在此期限内,还有更详细的划分。比如,在开课一个星期之内注销课程,学校会退还此课程的全部学费给学生本人,而且在成绩单上不作任何记录。如果在两个星期后,最后期限之前做出注销决定,则退还此课程学费的50%给学生本人,或将这笔款转入学生名下,学生只能将这笔款用于支付学费。这个体制在美国大学中很普通,只是不同学校的具体政策不尽相同罢了。
一般来说,当学生确定了选修的课程及缴付所有的费用后,就会立即在大学的注册办公室(Register Office) 得到一张Timetable。上面明确列出了本学期课程的详细信息。例如:授课时间,授课教室等等。每门课程的第一节,教授会发给每个学生一份课程提纲 (Syllabus/Guideline),上面列出了该门课程所要求的教材及其它参考书目,必须完成的课后作业,多少次测验(Quiz)及课堂演讲(Presentation),有没有团队(Group)作业,期中和期末考试的安排,出勤率的考核,以及上述这些考核项目各占总成绩的比例,通过这门课程的最低标准等信息。通常,出勤率占总成绩的5%-10%,期中考试占总成绩的20%—25%,期末考试占30%-35%,其余部分就由平时作业(独立作业和团队作业),测验以及课堂演讲组成。美国大学的评分标准跟国内不一样。不采用100分制,而是采用A、B、C、D、F的等级制度。F就是前面提到过的Failed -- 不及格,A+,大致相当于国内的97-100分,A,93-96分。A-,90-92分。B、C、D的评分标准与此相似。
有些教授不指定教材,而是采用自己的讲义。有些教授虽然指定了教材,却很少使用。笔者在读《计算机分布计算与并行计算》课程时,Syllabus上 注明:教材一本,辅助教材三本。正在思考如何去读这些书的时候,教授轻轻说了句,“我相信你们的能力。教材嘛,自己看就可以了,我将着重讲解书上的重点和 难点,以及最新的发展趋势”。碰到这类教授,是一大幸事,因为可以学到很多这方面的知识。但要获得理想的成绩确实不易。
某些计算机课程,例如,《数据结构》、《高级数据结构》、《算法》、《高级算法》及《软件工程》等涉及到程序设计方面的课程,采用哪种计算机语言进行讲解,并没有明确的规定。基本上是由授课教授指定。目前上述核心课程采用的计算机语言最广泛的是Java其次是C++,也有一些大学采用C#。
这里简单说说教材的问题。因计算机语言频繁升级的缘故,美国大学计算机的教材更新速度很快,可能每年都会有新的版本出版。最典型的例子就是Java。教材的选定由授课教授决定,故此不同的教授即使教同一门课,教材也很难有统一的标准。但很多教授对以下两部教材的选择却是相当的认可。笔者也认同不论是初学者还是高手,仔细阅读这两部书,应该会有些斩获。这两部书都是由Deitel & Associates公司出版,分别是:
1. Java How to program
2. C++ How to program
在教学方面,大 部分教授都不建议学生使用可视化的开发工具。认为在学习基础理论的时候,不应过分借助于这些可视化的开发工具。不过,学生如果坚持使用,教授也不反对。但 是当教授拿着源程序提问时,学生要清晰理解源代码的设计思路,实现方式以及程序流程。否则即便源代码没有任何问题,成绩却会令人很失望。
关于团队作业(通常3人 一组),一般在商定后,每个人各自负责相应的部分,并规定好完成各自部分的最后期限。在团队作业的进行中,每个成员都会尽力完成自己的任务,都不希望因为 自己的工作而影响团队的最终成绩。但毕竟水平有差异,有时候不一定能顺利完成。在这个时候,所有的成员就会聚集在一起讨论解决的方案。此类的团队作业,一 般都要求在课堂上做演讲。每个人负责讲述自己所完成的那一部分。在演讲期间,教授及其他学生可以随时打断话题,提出他们的问题或观点。只要是与演讲内容有 关联的问题,都可以发问。所以,课堂演讲实际上是较难的学习内容。需要作出充分的准备。结构清晰,言简意明,口语流畅,制作精美(一般采用MS的PowerPoint制作,也有学生采用Flash制作)的演讲通常是可以获得高分的。在国内大学,类似这样的作业是比较少见的。其实国内大学在这方面应当大力加强,因为这不但可以锻炼学生的表达与组织能力,同时也是培养学生分工协作,增强团队精神的有效方法。
对于课后作业,教授通常规定了明确的最后期限 (Deadline/Due day),一旦超过这个期限,那么该次作业的成绩无效。一般同时以两种形式上交作业:
1. 标准的A4打印件
2. 电子邮件
教 授会很快给予评定。并占用一定的时间来讲评作业。如果发现学生存在普通的问题,教授会再次讲解。作业的成绩不会当众公布。例如,分发试卷的时候,是由教授 点名。被点名的学生走上讲台,由教授亲自分发试卷,标有分数的那一面试卷是朝下的。当然,教授也会向学生讲评考试结果。比如,分数的分布情况、最高分和最 低分等等。还有常见的方法是,将学生的分数打印或者在网上发布出来。但是不列出学生的姓名,取而代之的是学生的ID。
学生每门功课的最终成绩,是依据一学期的总体表现,由授课教授评定。一旦学生认为教授评定的分数过低,可以同教授商谈。但在没有误判的情况下话,是很难更改分数的。如果商谈后对教授的最终评定结果仍不满意,可以继续向系主任投诉。不过,大部分是维持原判,因为系主任也没有更改学生最终成绩的权力。
前面我们从表一及表二得知,要获得纽约市立大学计算机科学系学士学位,就必须得完成120个学分时,而要获得Bridgeport大学计算机科学系学士学位,则必须完成130个学分时。本科学生获得学位的要求不是很高,每科成绩不低于D即可。但如果希望本科毕业后继续进入研究生院学习,那么平均成绩不得低于C是最低要求。如果希望申请著名大学的研究生院,则平均成绩不应低于B+。当然,除了学习成绩外,学生的其它素质也是录取与否的因素,例如,是否具备独立思考,善于发现问题的能力?是否具有该学科的专业研究能力?等诸如此类的个人因素在录取中也占一定的比重。
众所周知,美国计算机的硬件软件水平执全球之牛耳。计算机最重要的三大部分,微处理器、操作系统和数据库几乎被美国产品所垄断。美国大学生在计算机的应用水平上也普遍高一些。国内大学生绝大部分熟悉的OS就是微软的系列产品。而美国大学生是普遍使用两种操作系统,Windows + Unix/Linux。
以笔者为例,以前只熟悉Windows,会用Novell。但在美国留学期间,意识到必须学习UNIX的操作,原因是:
1. 学校服务器是SUN OS 5.0,可以利用服务器强大的计算能力;
2. 服务器上安装了C、C++、Java、Perl、Python等编译环境;
3. 服务器运行非常稳定,可以被当作一个稳定的网络硬盘使用;
4. 因为是计算机专业的学生,开放了个人网页,可以实战HTML编程;
5. 除Oracle外,还可以学习MySQL、PostgreSQL等数据库;
6. UNIX的安全性是不用质疑的。源代码存放在上面,非常安全;
7. 避免有时把源代码或作业忘记在家里,通常可以复制一个备份存放在服务器上;
8. 服务器上可以快速的传输文件。
美国大学的主机基本上都是UNIX系统。要使用学校的资源就必须学会使用UNIX。在这种情况下,笔者先从Windows 最基本的telnet 登录开始学习,由于telnet是以明文的方式和服务器通讯,安全方面有很大的隐患,所以很快就放弃了telnet,改用ssh登录学校的UNIX主机。接着,学习如何使用PINE(UNIX上的邮件收发程序)、VI(文本编辑器)、如何管理文件及设置权限、如何编写脚本、如何运行脚本程序、如何在UNIX下实时交谈, 以及如何安装自己的应用程序。随着使用UNIX的日益频繁,笔者对UNIX的理解也越来越深,也越来越喜欢UNIX了。
总之,正是由于学习UNIX的这个经历,令笔者在以后接触Linux的时候,很快就上手了,并且能够顺利系统的学习并掌握了DNS、WWW、SENDMAIL、POP3/IMAP、IPCHAINS、ROUTE、IPCHAINS、DHCP等服务器的安装和配置。
目前国内大学计算机系的传统教学模式确实存在不少弊端。所幸的是已有越来越多的有识之士开始意识到这些问题,并积极探索改革的方向和出路。特别是针对计算机教育,国家已着手大力扶持,除强化计算机系的教学质量外,还批准开办了多所不同层次的示范性软件学院,一些高校也开始了改革教学的实际行动。
在学位制度方面,国内高校基本上没有严格的淘汰制。特别是对于研究生,能考进去基本上就可以获得学位。而美国大学对学位的评定则是层层筛选,而且学位越高,淘汰的比例越大。这种对人才质量严格把关的机制,尤其值得我们仿效。
研 究生的适应能力以及创新能力在很大程度上取决于坚实的理论基础和专业基础知识,这是高质量研究生教育的重要特征之一。在当今科学技术突飞猛进,专业知识日 新月异的时代,只有扎实掌握专业的理论基础和系统的专业知识,才有可能从事这个专业所进行的科研、教学和其他专业技术工作,才能打好进行创造性研究的基 础。因此课程的学习就显得尤为重要。如果没有合理的、科学的课程设置,没有切实可行的教学计划,课程教学就没有可靠的科学依据。如果课程教学不是立足于本 学科的前沿,不立足于提高研究生的学术水平和科研能力,那么课程的教学质量就得不到保证。由于课程学习是实现研究生的培养目标、保证研究生质量的重要环 节。课程设置将直接影响到研究生知识面的宽度和研究能力的高低,因此,研究生课程的设置是否合理、科学是非常重要的。
国 内大学的研究生教育,专业课设置过于专业,例如,过去的物理化学专业是一个博士点,博士生上的课程全是物理化学。四大力学全是物理化学的内容;有机化学, 学生修的全是有机化学,学术面过窄。而国外已经打破了二级学科的限制,甚至打破了一级学科。例如,国外化学系的博士生,有些课程是属于生物学,有生物仪器 分析、生物物理学等课程。这样培养出来的学生适应能力和研究能力就相对较强。可以在学科的发展中间迅速调整自己的学科方向,跟上学科发展的潮流。我们过去 培养的学生就非常专业,跳出自己的专业就一筹莫展。所以我们必须改变在很窄的专业学科范围内培养研究生的这种局面,要打破二级学科的限制,甚至要在一级学 科上做些交叉。
美国大学的研究生院、研究生教授协会和科系对研究生课程的设置极为重视。一般而言,本科生与研究生的根本区别在于研究生的“后劲”比本科生足。而后劲来源于宽厚、坚实的理论基础。基于这种认识,国外大学科系在硕士研究生新生入校后,要进行摸底考试。若考试成绩不理想,则建议新生补课,并且只能在课程编号为600-699的范围内确定相关的补课科目。倘若核心课程的成绩达不到“B”,则失去获得研究生学位的资格。目前在美国大学的研究生培养方案中,理工科研究生的数学和有关基础理论学科的总学时仍呈上升趋势。一些著名的学府,研究生新生在第一学年不学习本专业课程,而是学习数学、物理、化学或统计学等课程。在此基础之上,从事本专业课程的学习。
这里再顺便谈谈美国大学的博士生制度。美国大学博士生的培养尤其重视课程学习。其课程设置的范围较广,一般要求修16-20门课程,30-40个学分(文科要求修满45个学分以上的课程,理工科侧重实验,一般要求修满30个学分以上的课程)。基础课程的学习时间为1-2年。课程设置通常分为5个专业领域,其中一个领域还要跨一级学科。要求写大量的书评和课程论文。学习期间有多次考试,最后还要通过所修课程的全面性考核。各大学对博士生考试成绩的要求不尽相同。有的大学要求在B级以上;有的大学规定要有2门课程的成绩为A级,否则取消获得博士学位资格。例如,柏克莱加州大学工学院,要求博士生主修领域的课程成绩必须达到3.5,辅修领域的课程成绩也必须达到3.0。
现在看看美国大学计算机系研究生的课程设置及毕业要求。仍以纽约市立大学(CUNY) 为例:
被录取的研究生新生必须完成以下三门课程(不算学分)之后,才能真正开始攻读研究生的课程:
1. 数据结构(603. Data Structures) ;
2. 汇编语言与计算机结构(642. Assembly Language and Computer Organization);
3. 信息技术概览(615. Survey of Information Technology);
在完成上述三门课的前提下,必须完成30个学分时,编号不低于700的课程,这些课程包括:
1. 算法1 (700. Algorithms I);
2. 分布计算(715 Distributed Computing);
3. 可计算性与复杂性(722 Computability and Complexity),主要讲述计算模型,如图灵机,随机存取机器,时序电路等等;
4. 计算机体系结构与网络(744. Computer Architecture and Networks);
5. 软件类,必须完成以下课程中的一门:
l 软件设计 (701. Software Design );
l 编译器结构(707. Compiler Construction);
l 计算机图形(718. Computer Graphics)
6. 硬件类,必须完成以下课程中的一门:
l 开关理论 (745. Switching Theory):这部分主要同电子电路有关;
l 计算机系统(746. Computer Systems):主要是指并行计算机结构、RISC及CISC处理器,并行计算的程序设计等;
l 计算机网络(748. Computer Networks)
7. 应用数学及算法类;
l 算法2 (762 Algorithms II );
l 系统模拟(764. Topics in Systems Simulation);
l 计算机系统概率模型(766. Probabilistic Models in Computer Systems)
8. 在获得21个学分时后,每个学生还必须满足或完成以下几个毕业条件(Capstone Requirement)中的一种;
l 软件开发项目实习(731 Software Development Practicum);
l 研究项目实习(732 Research Practicum);
l 硕士论文(733 Master's Thesis)
(注:附录二列出了上述课程内容的简要介绍)。
前面提到美国大学研究生教育的一个明显特点就是多学科交叉。这里就以笔者研究生的课程为例,对此作进一步的阐述并以此结束本文。课程是关于手写数字字符的识别问题。这门课程应该属于电子工程、人工智能、智能识别、信号处理、自动化处理等学科的交叉学科。首先,这门课程没有教材。全部阅读材料由教授Dr.Ihsin Phillips提供。这些阅读材料大部分是发表在IEEE刊物上的论文。这些论文都是讲述如何进行手写数字字符的识别。每篇论文采用的识别算法都不一样,而且作者来自不同的国家。
教 学和考核的方法是,学生分成若干小组,每个小组负责自己的材料。小组成员将在课堂上讲述自己对数字识别算法的理解以及自己的观点。然后依据演讲的情况来评 定成绩。但期末考试则不同,阅读资料在期末演讲前一个月分发下来,并且要求每个学生必须独立完成所有的工作,例如:阅读、理解、算法分析、算法扩展,幻灯 片的制作、演讲内容的准备,以及对可能被提及的相关问题的准备等等。
下面列出教授提供的部分学习资料。这些是来自不同国家不同大学的研究成果。有国内的清华大学,还有来自美国纽约州立大学布法罗分校、英国Essex大学,韩国以及巴西的一些大学。
1. 一种新的分割手写的非规范数字字符串的方法 (A New Method for Segmenting Unconstrained Handwritten Numeral String)
作者:Bin Zhao, Hui Su and Shaowei Xia
Department of Automation
Tsinghua University, Beijing, 100084, P.R. China
2. 分割与识别完全非规范手写数字字符的系统(A System for Segmentation and Recognition of Totally Unconstrained Handwritten Numeral Strings)
作者:Z. Shi: S. N. Srihari, Y-C. Shin and V. Ramanaprasad
Center of Excellence for Document Analysis and Recognition
State University of New York at Buffalo: Buffalo, NY 14260, U.S.A.
3. 分割与识别手写数字字符的新的范例(New Paradigm for Segmentation and Recognition of Handwritten Numeral String)
作者:Sungsoo Yoon, Gyeonghwan Kim, Yeongwoo Choi, Yillbyung Lee
Dept. of Computer Science, Yonsei University, Seoul, Korea
Dept of Electronic Engineering, Sogang University, Seoul, Korea
Dept of Computer Science, Sookmyung Women’s University, Seoul Korea
4. 面向对象的表单描述语言与表单手写字符的处理方法(An object-oriented form description language and approach to handwritten form processing)
作者:C. Cracknell, A.C.Downton, and L. Du
Department of Electronic Systems Engineering
University of Essex, Wivenhoe Park, Colchester CO4 3SQ, U.K.
5. 分离手写数字字符图像的识别( Disconnected Handwritten Numeral Image Recognition)
作者:Luan Ling Lee and Natanael Rodrigues Gomes
Decom-Feec-Unicamp
Universidade Estadual de Campinas
此外还有其它一些相关的学习材料,但笔者印象最深的就是这五篇论文。从阅读资料的来源就可以看出教授Dr.Ihsin Phillips渊博的知识。通过这门课程的学习,可以扩展学生的思维,同时学生也更加深刻体会到交叉学科对本专业知识起到的一种补充和促进作用。
笔者以自身的经历从个人的视角来观察分析美国大学计算机教育在本科和研究生阶段的一些特点。如何尽快提高我国大学计算机的教育水平,以及如何提高大学计算机系学生的专业水平,需要你、我,大家的共同努力。
本文作者:钟京馗 美国纽约市立大学计算机科学系助教