浅谈哈佛CS50课程给我国高校计算机专业教育的启示

发表时间:2020/10/15   来源:《教育学文摘》2020年6月18期下   作者:卢虹羽
[导读] 如何培养出高质量高水平的专业化计算机人才是我国高校计算机专业教育教学需要关注的一个重点。
        卢虹羽
        北京理工大学计算机学院
        摘  要:如何培养出高质量高水平的专业化计算机人才是我国高校计算机专业教育教学需要关注的一个重点。本文以哈佛大学计算机专业的基础课程CS50课程为例进行研究,在对CS50的课程内容、教学形式以及考核形式进行了充分的了解之后,将其与国内高校本科计算机专业教育方式进行对比,并提出了一些国内高校可以进行改进的要点。
关键词:计算机;教育;美国高校;人才培养
0 引言
我国近些年来一直非常关注高校教育的发展与改革,2015年提出“世界一流大学和一流学科建设”的国家战略,2017年具体公布首批入选“双一流”建设规划的高校与专业。既然要建设世界一流大学与一流学科,就要向现在世界上在高等教育方面卓有成效的国家与学校借鉴经验。众所周知,现在最新兴、关注度最高并且在未来几十年世界发展中不可或缺的专业就是通信技术与计算机科学专业,而根据QS等权威教育组织所提供的全球范围内各高校计算机专业的排名来看,美国卡耐基梅隆大学、麻省理工学院、斯坦福大学、加州伯克利分校和哈佛大学的排名都是相当靠前的。所以本文以哈佛大学为例,通过对其计算机专业本科课程中非常著名的CS50一门课的分析,对比国内高校在计算机专业本科教育中的教学方式,总结出国内高校在计算机专业本科教育中可以改进的一些方面。
1 CS50课程介绍
CS50课程的全程是computer science 50,是哈佛大学计算机专业本科课程中的一门“概念通识性”基础课,有点类似于我们常说的“导论”课程,只不过CS50在课程内容上更加丰富,并且真正加入了一些在实际编程与应用开发的教学资料和作业。虽然该课程是哈佛大学开设的课程,授课教师也是哈佛大学的讲师David J.Malan,但CS50这门课的影响力可不仅限于哈佛大学计算机专业,甚至不仅在于哈佛大学内部,而是在全美、甚至全球各高校的本科计算机专业中都有着较大的影响力。
1.1 CS50课程内容
CS50课程所包括的内容非常丰富,绝不仅限于“计算机硬件”或者“计算机科学”的内容,反而从讲解重点来看,更偏重于网络编程或者软件开发,整个课程包含了基本算法、数据结构、编程语言和网页编程等相关内容。
CS50在课程内容的组织上也非常清晰,我们综合浏览近几年的CS50课程[1]之后基本能够知道其授课思路是这样的:第一周迅速的讲解了计算机科学领域中重要的一些基础名词的概念,如算法、代码与伪代码、编译、事件、进程、线程等等,让学生对于计算机专业有了一个最基本的了解;第二周开始介绍C语言和编译的内容,其实就是以C语言这个编程语言为载体,给学生搭建了一个明确的框架,让他们能够知道“程序是如何在计算机上运行起来的”与“实际编程时需要程序员做什么”;之后的三、四、五三周都将授课重点放在C语言编程与数据结构上,以保证学生能够掌握C语言并使用其进行编程解决老师布置的作业或者实际生活中的问题;六到十周的教学内容围绕着网页编程展开,依次介绍了网页编程所需要掌握的一系列知识,如网络协议、网页前端、后端、数据库、网页编程结构、编程语言等;最后一周介绍一些计算机科学相关的前沿热点知识,如人工智能等等。
1.2 CS50教学形式与考核要求
CS50课程是哈佛校内课,把哈佛剧院作为授课地点,课程时长不超过14周。

当然,作为哈佛优秀课程中相当有影响力的“门面”,CS50除了有David J.Malan进行授课以外,还有一支相当专业的教学团队,不仅会将整个课堂的实况录下来制作成视频放到网上一些知名平台(如edx)供校内外的学生进行复习、观看,还会有助教老师向学生提供一些针对课程的补充视频,比如老师在课上提到却没有细讲的例子、或者课堂上留的一些题目,会由助教在这部分补充视频中进行讲解。
至于该门课的考核方式,是“平时成绩+考试成绩”的方式,且平时成绩占比非常高[2]。最近几年该课程的考核内容基本都是由几个个针对不同问题的编程作业(problem set)、1个编程大作业(网页编程或者移动应用开发)和1次考试组成,课程中间有可能会开放一到多个临时测验。
2 CS50带给中国高校计算机教育的启示
在对于CS50课程有了一定的了解之后,我们将其与国内高校计算机专业的相关课程进行对比,发现该课程主要有以下几个值得我国国内各高校进行学习的突出重点:
2.1 课程内容丰富,且十分注重实际应用能力
在最初浏览CS50课程的教学内容时,笔者其实是非常惊讶的,因为它涵盖的内容太多了,几乎是等同于国内高校的计算机专业本科课程中的“计算机导论课+编程语言+数据结构+网页设计”这四个部分的结合,甚至还涉及到了一点点计算机网络的原理,这在国内大多数高校的本科生培养计划中几乎是要用三至四个学期去完成这些内容的。而对于在哈佛校园内上线下课程的学生来讲,CS50这门课的课程时间只有14周左右,这无疑对于这些学生们的学习能力与实际应用能力都提出了较高的要求。
并且相对于国内高校来讲,CS50更重视培养学生的编程能力和解决实际问题的能力。CS50中的多个编程作业多为开放性作业,即确定主题,剩下的由学生自由构思与实现,这和国内高校是有明显区别的。国内大多数高校在教授编程语言课程时,都会给学生留非常具体的编程作业,连程序的输出格式都必须和标准答案一样,虽然这样有利于学生后期参加ACM等编程竞赛,但是并不能让学生体会到“自己编写程序解决生活中的实际问题”这一理念,并不能很好的激发学生对于编程的兴趣。而大作业就更是如此了:鼓励学生进行小组合作,简单的开发一个网站或者应用APP,虽然对于大一大二的本科学生来讲并不容易,但是这能提前让学生体会到以后再工作中如何与同事进行合作与协商。
这就是相比于“松散排课”的教育方式CS50课程所拥有的不可替代的优势:从二进制与ASCII码讲起,最终落足于编程技术的实际应用,即网页或移动应用的开发。在这不到一学期的时间内,学生们就完成了对于计算机专业的快速入门,不仅实现了“理论快速应用于实际”的要求,而且对于整个学科和整个本科阶段需要掌握的内容有了一个较为全面和理解与掌握,这对于学生们的后续学习与发展是非常有好处的。
2.2 主讲教师寓教于乐,课堂气氛良好
CS50的主讲教师是David J.Malan,他授课风格幽默有趣,课堂气氛一直非常好,在教学的时候也会经常性的会用一些具体鲜活的例子来解释课上讲授的知识:比如用电灯泡的亮与灭来代表二进制,再比如撕掉一本参考书来形象地阐述二分法,这些所谓的“名场面”正是我们国内高校教育中普遍缺失的。不是说我们的高校中没有授课有趣的老师,而是说这样“知行结合”进行知识传授的老师太少了,现在大多数高校教师还是以PPT为中心进行课堂教学。这样结果显而易见:如果两位老师讲的是相同的内容,其中一位能够生动形象地将知识与实际联系起来,而另一位则多数情况下都照本宣科,那么学生对于知识接受程度差距可想而知。
3 小结
总体来说,CS50这门课程为我们展现了一种全新的教育方式,即将导论课与专业课相结合、将多门专业课有重点有选择的综合起来、将实际应用能力作为考核重点来促进学生对于理论知识理解的这样一种本科教育方式,这在国内高校是并不常见的。且CS50用其自身的课程影响力与学生喜爱程度向我们证明了这种教育方式是有着极大优势的,也给我们国内高校的本科生教育带来了一些十分有用的启示,如要注重学生应用能力、教师应寓教于乐等,相信这些启示能够在国内高校教育改革中起到正面作用。

参考文献:
[1]唐大仕.哈佛大学计算机基础课CS50及其启示[J].教育教学论坛,2019(39):5-7.
投稿 打印文章 转寄朋友 留言编辑 收藏文章
  期刊推荐
1/1
转寄给朋友
朋友的昵称:
朋友的邮件地址:
您的昵称:
您的邮件地址:
邮件主题:
推荐理由:

写信给编辑
标题:
内容:
您的昵称:
您的邮件地址: