尽管学费昂贵,美国大学在学费管理上也有很人性化的一面。允许学生在一定的期限内注销(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渊博的知识。通过这门课程的学习,可以扩展学生的思维,同时学生也更加深刻体会到交叉学科对本专业知识起到的一种补充和促进作用。
总结
笔者以自身的经历从个人的视角来观察分析美国大学计算机教育在本科和研究生阶段的一些特点。如何尽快提高我国大学计算机的教育水平,以及如何提高大学计算机系学生的专业水平,需要你、我,大家的共同努力。
本文作者:钟京馗 美国纽约市立大学计算机科学系助教 |