斯坦福大学计算机专业培养方案剖析

建于1891年的斯坦福大学位于旧金山以南30英里,面积3313公顷,相当于清华大学校园面积的9.3倍。现有本科生6654人,研究生7800人,教师1396人。它蕴育了享誉全球的高技术产业中心——硅谷,在IT界如日中天的SUN、HP、Cisco、Google、SGI等企业都是由斯坦福大学学生和教授一手创立起来的。1984年后,斯坦福大学连续四年被《美国新闻与世界报道》列为全美最佳综合大学榜首。1994年,设在瑞士日内瓦的国际教师协会根据各大学的学术业绩、科研成就、学生与系的综合实力,评出世界十佳高等学校,斯坦福大学名列榜首。长年以来,创建于1965年的计算机学科在全美排名始终居于前三位。建校不过百余年历史的斯坦福大学和建系不足40年的计算机系,取得如此骄人成绩,实在耐人寻味。

  为学习国外一流大学的计算机教学和实验室管理经验,笔者受学校委派于去年对美国斯坦福大学等院校进行了为期半年的访问学习。重点考察了斯坦福大学计算机教学情况,包括培养方案、课程设置、实验教学以及实验室管理,并通过选修几门课程了解其教学全过程。

  此次考察总的感觉是,斯坦福大学在计算机人才培养方面,体现了拓宽知识、突出个性、注重能力、面向应用的特点。下面通过剖析斯坦福大学计算机专业培养方案,试图从中找到值得我们借鉴的因素。

  一、 培养方案

  本科毕业必须修满180学分,其中专业学位课程(Program Requirements for CS Major)95学分(见表1),由工程学院负责审核。其余课程包括通识教育课(General Education Requirements,简称GER)、写作课和外语课,由校学位办负责审核。

  本科学制4年,计算机系本科生四年1修课约45门,课程分布如图1所示。斯坦福大学为学季制,全年共分4个学季,所有课程基本在秋、冬、春学季完成。

  二、 课程特点

  1.开阔眼界的通识教育课(GER)

  GER课程在斯坦福大学本科教学中占有很大的比例。为了拓宽学生视野,学校开设了700多门GER相关课程,涵盖人文科学、自然科学、应用科学与技术、人类和社会学等各个领域,学生必须从四个领域选修10门课程。

  与国内通识教育课程可轻松过关的情形不同,斯坦福的GER课程常常伴随着大量阅读,学生需要读很多书,写论文,作报告。一位曾就读清华的中国留学生感叹到,斯坦福的人文课真不容易过关。然而,正是这一门门通识教育课开阔了学生的视野,潜移默化地培养了学生的写作和语言表达能力。

  在教育学生做人方面,通识教育课起了不可替代的作用。以人文科学导论子领域为例,开设了公民、认识自我、阅读与个性形成、传统与变革、生死观、爱情与谎言、大自然思考、高雅艺术与大众文化的变迁等课程,通过这些课程,学生认识自我、了解社会、思考人生,学习如何做一名合格公民。培养方案规定学生在入学第一学季必须选修其中一门课程,体现了为学先为人的教学理念。

  2. 启迪思维的计算机公共基础课

  国内高校的计算机入门课主要以技能性操作练习为主,辅以基础知识介绍,比如众多高校开设的全校选修课“计算机文化基础”中,Windows操作、Office练习占了很大比重。斯坦福大学的计算机公共基础课以启迪思维、拓宽视野为主,开设了一系列新生研讨课,如“计算机系统结构的未来”,通过此课程介绍典型的计算机体系结构、技术发展以及局限性,探讨未来计算机一些可供选择的组织结构及程序系统;又如“计算机与信息安全”,介绍******、计算机系统常见漏洞,防范***的技术措施、密码技术与计算机安全有关的法律问题;再如“计算机领域的重大突破”(Great Ideas in Computer Science),介绍计算机发展史上的主要成就,考查计算机理论与实践的相互影响,涉及的问题有计算能力的局限性、算法效率、密码技术、语言翻译、人工智能、计算机网络等。此外还有“计算机系统灾难”(The Downside of Computer System),同时还讨论计算机系统如何失效,计算机系统崩溃对社会造成的影响,并介绍了计算机崩溃导致灾难的一些实例,讨论计算机安全、容差结构等问题。

  可见,国外一流大学的公共基础课是以计算机导论形式多角度地介绍计算机核心基础知识。不仅从正面介绍计算机技术成就、给社会带来的巨变,也从反面介绍计算机的局限性和教训,提出学习计算机需要思考的问题。同时引入新生研讨课的教学形式,这种课程模式对激发学生的求知欲有很大帮助。

  3. 体系完整的编程及编程语言课

  在程序设计方面,国内计算机专业只开设C、Java等少数几门编程课。而斯坦福大学计算机系开设的程序设计及编程语言课多达15门,既有讲解C、C+ +、C#、Java的专门的程序设计课,也有强调面向对象为特征的“C++与面向对象的编程”、“面向对象的系统设计”等编程课,还有讲解 javaxxxx、HTML、CSS、XML的网络客户端编程课;既有横向比较各语言难点和精髓的高级编程课,也有突出训练程序设计能力的软件实践类课,还有编程语言基础理论课。

  程序设计入门课因分快慢班有三个课号,分别为CS106A、CS106B和CS106X。其中CS106A使用C,为初级编程,CS106B是CS106A的后续课,使用C++。CS106X面向有编程基础的学生,涵盖CS106A和CS106B的内容,在一学季完成。CS106是全校的公共基础课,也是绝大多数专业的必修课,每学季选课人数众多。为此,学校配备了大量助教,通常由修过此课的高年级本科生承担,称为Section Leader(SL)。学生每十余人分为一个小组,由一名SL负责辅导,并经常组织讨论。

  最值得推荐的编程课有 “程序设计范式”(CS107 Programming Paradiams),这是一门计算机专业的必修课,重点分析比较C、C++、Java、LISP的特点及难点,比如内存管理、系统资源利用、输入、输出等。讲解实现一种算法的过程中各语言的设计步骤和注意点。每1~2周有一个大作业,针对不同的任务,要求学生用不同的语言实现,使学生加深了解各类编程语言的应用场合。

  与国内相比,必修的计算机专业课门数并不多,但几乎每门课程都有编程大作业,负担很重。虽然未设软件工程课,但通过一些大作业训练了学生的软件工程思想。

  4. 重视培养表达能力的专业写作课

  在培养方案中,设置专门的写作要求是斯坦福大学本科培养方案的一大特色。写作训练分为两个阶段。首先是基础写作,重点培养学生一般的写作能力和修辞技巧;其次是专业写作,学生需从含有较高写作要求的三门课程中选择一门,完成专业写作训练。

  培养方案中没有综合论文训练环节,但有一门实践类课程“软件项目设计”(Software Project)使学生不仅受到了一次真正的软件设计训练,同时也受到了一次综合论文写作训练。在为期10周的课程中,学生1~4人分为一组,以Team Work形式完成一个有实用价值的软件项目,要求实现从设计立项、任务描述、编程到测试的软件开发全过程。除编写每阶段设计文档外,还要求学生撰写用户使用手册。这里没有抄书的余地,因为一切文档都与自己开发的软件相关。

  斯坦福大学非常注意培养学生的表达能力,为此设立了专门的指导机构 Stanford Writing Center。该中心开设了十多门写作课程,并时常举办写作系列讲座。工程学院也开设了一些旨在提高学生写作和演讲能力的课程。如写作实践课,帮助学生提高学术论文和学位论文写作水平;又如公众演讲课,内容涵盖正式演讲、即兴发言等与口语表达相关的方方面面。此外还设立了演讲与写作答疑室,配备了录像和播放设备,使前来答疑的学生可以看到自己的试讲录像,对提高学生的演讲能力帮助极大。

  三、 教学管理

  在教学管理上,斯坦福大学给学生提供了非常宽松的自由发展空间。新生入校后不分专业,不分学院。除了医学院和法学院需要经过一定的选拔程序之外,本科生可以在入学后的前11个学季的适当时候随意选择专业。并且选择专业之后,允许更改,只要毕业时满足专业培养方案即可。

  学生选课的自由度也很大,由于选定专业方向的时间不同,即使同年入校的计算机专业的学生,选课次序和内容也有不少差别。培养方案规定必须完成180学分,除图1限定的各类课程外,还剩几门课程学生可以任选。本科生与研究生的课程没有明确的界线,可以互选。一些较早立志攻读计算机专业研究生的学生,可能会多选一些专业课,甚至研究生课程;而打算毕业后到IT企业做管理工作的学生,可能会多选择一些管理类课程。

  随着计算机应用的普及,计算机学生的就业面越来越广。正如斯坦福大学计算机培养方案序言中所述,越来越多的计算机专业学生,就业兴趣可能在其他行业,比如成为高技术企业的经理、专攻软件保护的律师、通晓计算机的医学专家,他们计算机本科毕业后,可能转攻MBA、法学博士或医学博士。这正是斯坦福大学在培养方案和教学管理上,尊重学生个性发展,提供宽松发展空间的内在原因。

  四、 几点体会

  与国际一流大学相比较,我们在课程设置、培养方案、教学管理等方面均存在不小差距,下面谈几点体会和建议:

  (1) 加强课程建设,满足新世纪计算机人才培养需要

  一方面要加强通识教育课程建设,增加人文社会科学课程的数量,扩大学生视野;另一方面,要加强专业基础和专业课建设,加强和完善编程类课程,提高学生的程序设计能力。注意更新教材,改进教学内容,借鉴国外一流大学的经验,保证重点专业课程,尤其是系统类课程的教学质量。斯坦福大学面向计算机专业的四门本科核心课程,如CS107编程范例、EE108B数字系统Ⅱ(原名计算机组成与设计)、CS140操作系统、CS143编译原理,均由名师执教,其教学方法、内容组织、作业设计很有特色,值得国内高校同行借鉴。

  此外,还需要大力改进我们的计算机公共基础课,使其逐步从技能训练课程过渡到计算机基础知识和科学导论上来,加强课程广度以及对计算机核心基础知识的介绍。

  (2) 重新制订培养方案,扩大学生自由发展空间

  目前我们的培养方案必修环节太多,学生自由选择余地很小,限制了学生的发展空间。建议大量增加选修课,并适当增加一些人文必修课,提高学生在经济学、中西方哲学、中西方文学等方面的素养。

  同时减少必修课,精简思想政治课。对于一些必修的平台课注意控制学时,宁可平台搭得低一些,再辅以不同的台阶让学生根据自身发展需要进行选修。建议将一些学时较长的技术基础课拆分为多门,一部分转为选修。

  (3) 加强学生写作训练和演讲能力训练

  语言表达能力是学生立足社会的最基本能力,受现行教学方法影响,学生在课堂上常常被动听讲,缺乏写作和演讲训练,学生的语言表达能力普遍较差,极大地影响了学生今后的发展。为此,建议开设全校性写作训练必修课,并且在综合论文训练环节,增加写作指导环节,增加和明确写作要求,提高学生学术论文和学位论文写作水平。

  建议有条件的学校,建立交流培训中心,全面提高学生的写作和演讲能力。