系统开发的基本流程 计算机信息系统的开发步骤

浅谈美国大学的计算机教育
美国纽约城市大学钟敬贤
【系统开发的基本流程 计算机信息系统的开发步骤】前言前几天收到《CSDN开发高手》杂志编辑的邮件草稿,主题是中外计算机教育比较 。由于学习和工作的关系,作者对美国大学的计算机教育体系有着深刻的理解 。同时和国内计算机系的教授有一些接触,对国内高校计算机教育的现状有了更好的了解 。国内计算机系的学生经常调侃自己,其中一条就是:‘计算机专业前途最差,因为计算机专业大致分为硬件、软件和网络三大类 。硬件不如电子,软件不如数学,网络不如通讯 。过去,大多数人都嘲笑这种嘲笑 。但是,谈及目前国内高校的计算机教育,尤其是国内高校扩招后的计算机教育,是很有感情的 。因为这种调侃得到了很多同学的认可 。第二个调侃:‘国外计算机系是计算机系,国内计算机系是CounterStriker’ 。这说明国内大部分计算机专业的学生沉迷于网络游戏,放松了对这个专业的学习 。这些令人心酸的笑话,反映了国内高校计算机教育的现状,也反映了国内高校计算机教育的滞后和缺乏创造性 。作为计算机专业,中国和美国的计算机教育在本科和研究生阶段有什么不同?哪种方法更适合中国学生?国内很多大学如何提高计算机专业学生的专业水平?如何设置课程?如何装备教师?如何评价一个教授的能力?是时候讨论如何改革这些问题了 。作者在美国完成了研究生学习 。毕业于纽约城市大学计算机科学系 。回顾留美学习、选课、选教授、上课讲课、团队合作的难忘经历 。现在,这些经验被汇编成文件,从作者个人的角度观察和分析美国大学计算机教育的特点 。本科教育是所有高等教育的基础 。为什么要在地基不牢固的情况下建高楼?本科学习的重要性不言而喻 。任何计算机学习都离不开硬件和软件 。美国大学在这方面为计算机本科生提供什么样的设备?硬件:1996年下半年开始接触BBS 。那就是当时著名的重庆蓝天论坛站 。第一封邮件,第一次下载软件,第一次实时聊天都是在BBS上完成的 。之后,电信局终于开通了拨号上网 。那是一个拨号设置非常复杂的时代,操作系统是Windows95 。昂贵的网费和慢如老牛的爬坡速度,至今记忆犹新 。当时最快的网络是T1,是世界上最快的网络 。多快,你只能从杂志和书上学点东西 。知道最霸道的T1网络位于北美,是互联网的骨干网络 。1997年,我来到了美国 。第一个震惊是看到美国大学的电脑室,全天对学生开放,但还是有空座位 。任何一个机房都至少配备一台或两台黑白激光打印机 。估计是最忙的电脑设备,不知道每天要消耗多少A4标准打印纸 。打印机免费提供给学生 。因为打印量巨大,为了方便学生,整盒打印纸都堆放在打印机下面的柜子里,学生可以随时添加 。最大的震撼是全校任何一台电脑都联网了,速度非常快 。记得我在中国的时候,想在网上展示一张图片,等几分钟是很正常的 。但当时的情况几乎是瞬间的 。这是1997年!我惊讶地问机房管理员,回答说‘我们学校的局域网属于北美大学的骨干网,是这条信息高速公路的一部分’ 。终于看到了T1网络的威力 。最快的时候下载速度可以达到每秒5兆,平时下载速度基本在100-400K 。
如果你是大学教师或全日制学生,学校会给每个人分配一个以@大学名结尾的电子邮件地址 。edu 。事实上,它不仅培养了学生对母校的认同感和自豪感,也展示了一所学校在网络技术方面的实力 。不难想象,要维护一个运行稳定可靠的复杂庞大的电子邮件系统并不容易 。即使学生离校多年,学校也不会注销该学生的账户 。学生仍然可以用这个账号登录母校的主机,查询自己感兴趣的信息 。对于住校的学生,大学还为每个宿舍提供10/100兆的免费宽带接入,只需填写申请表即可办理 。对于不住在学校的学生,学校提供一个电话号码,你可以通过输入这个号码登录互联网 。有些类似于中国目前的16300模式,只需要提供正确的用户名和密码 。以上服务每个正式注册的学生都可以享受 。计算机和电子工程专业的学生也有一些额外的服务,比如:l5万亿个人主页空间 。支持CGI、PERL(考虑网络安全后,停止支持CGI);甲骨文数据库的使用权 。学校主机上的Oracle可以用来方便课程的学习,比如数据库编程和数据库管理 。基本上每台电脑都安装了一些开发工具 。比如微软的VisualStudio系列,比如VB、VC、TC、JAVA等等 。如果是商业或有版权的开发工具,大部分都是作为免费版、个人版、学习版或共享版安装的 。在公共机房的电脑上,国内高校的机房几乎没有炫目的专业版和企业版 。从这个角度来看,国内大学生使用的开发工具比美国大学提供的要好 。一般来说,大多数美国大学都有类似的计算机配置 。但是如果是名牌大学,不管是公立还是私立,电脑配置都比普通大学好很多 。例如,纽约城市大学就是其中之一
。得益于纽约市政府的大力支持 。学校在教学质量,规模,硬件配备等方面在全美几个巨无霸型的公立大学中占据重要位置 。其它两个巨无霸型的公立大学是纽约州大和加州州大 。看来教育不下大本钱还是不行的 。由于政府的支持,这些大学普遍收取较低的学费 (本州学生最低,外州学生其次,外国留学生最昂贵),因此吸引了大量本国学生及外国留学生报考,竞争非常激烈 。批准入学后,更不同于国内大学的严进宽出,而是要认真对待所有的课程,否则无法保证顺利毕业 。软件篇前面谈了美国大学的基本硬件配备情况 。接下来,谈谈软件方面 。下面分别从课程设置,教学方式及教材的选用、成绩评估、和毕业要求等几方面加以阐述 。课程设置 目前国内高校的教学内容都是由国家教学大纲来制定,应该说还是带有很强的计划经济的色彩 。笔者认为大学或学院要创办出自己的特色,就应当由学校制定自己的教学大纲,由教授制定授课的内容 。教学大纲定死了,就不容易创办出自己的特色来 。在课程设置上,必须紧密结合市场的经济需求,克服脱离实际的现象,同时还要避免因迎合市场而盲目追求最新的理论 。从另一方面来说,国内的大学希望紧跟国际计算机科学发展的最新理念和技术,并将最新的信息传授给学生 。但就目前来看,国内大学还是有力不从心之感 。因为任何新的理论技术,要想掌握得比较好,没有一定的技术储备是很难办到的 。一方面教授的素质和能力要跟上,另一方面,学生要有强烈的学习欲望和钻研精神才行 。两者缺一不可 。这里以纽约市立大学(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渊博的知识 。通过这门课程的学习,可以扩展学生的思维,同时学生也更加深刻体会到交叉学科对本专业知识起到的一种补充和促进作用 。总结 笔者以自身的经历从个人的视角来观察分析美国大学计算机教育在本科和研究生阶段的一些特点 。如何尽快提高我国大学计算机的教育水平,以及如何提高大学计算机系学生的专业水平,需要你、我,大家的共同努力 。本文作者:钟京馗 美国纽约市立大学计算机科学系助教