在最近的一份调查中显示,美国top高校中,Python已经成为教授计算机科学入门课程方面最受欢迎的语言。其中Top10 CS系中有8所使用Python,Top39 CS系中有24所,在入门课程中教授Python,可见其实用性的认可度很高。

在我写下这篇文章的时候,在美国top高校中,Python已经成为教授计算机科学入门课程方面最受欢迎的语言。Top10的CS 系中有8所,Top39的CS系中有24所,在入门课程中教授Python。

Python成为最受欢迎语言的动机

Python逐渐成为教授初学者编程的第一选择。三年前,Mark Guzdial通过博客预测Python作为一门教学语言将会越来越受欢迎。MIT和UC Berkeley的计算机系最近将他们入门课程的教授语言改成了Python。最大的三个MOOC(Massive Open Online Courses)提供商edX,Coursera和Udacity也全都提供了Python语言的入门课程。并且,不同子领域的教授们(比如说Lorena Barba)在也致力于教授初学者Python。

在过去四年中,我开发了一些教学工具,在这些工具中Online Python Tutor (www.pythontutor.com)在使用人数上取得了突飞猛进的增长,这得益于越来越多的人使用Python。

尽管各方面都在说Python越来越受欢迎,但是我并没有看到一个数字上的确切统计。所以我决定统计在美国Top高校的计算机系中有多少使用Python来教授他们的入门课程,由此得出Python是不是越来越受欢迎。在统计过程中,其他受欢迎的教学语言也被一同列出。

为什么我要做这个研究?这是因为选择不同的语言不仅反映了不同学校计算机系的教育哲学,更为重要的是,它影响了许多学生对计算机科学的第一印象。被这些Top高校选择的语言暗示着计算机科学教育的发展趋势,要知道,这些Top高校实际上就是趋势的制定者。


利用方法论进行研究

在研究中,根据U.S. News 在2014年给出的排名,我选取了Top39高校中的计算机系作为研究对象。有8所学校的计算机系排名并列第40名,这就是为什么我选择Top39作为研究对象的原因。不管谁给出的排名都有瑕疵,并且排名会随着时间不断发生变化。我采用的这份排名中,只考虑了那些能够授予博士学位的大学,还有很多我尊敬的大学没有包含在这39所之内,包括我的母校。

对每一所大学,我挑选出CS、CSE、EECS这三个专业的CS0和CS1课程。在我的研究中,CS1代表CS专业的学生最需要学习的课程,CS0代表一门入门的编程课,上这门课的可能是还没有定专业的学生或者是在上CS1前需要额外准备的学生。学习CS0和CS1都不需要其他任何CS方面的预备知识。要不然他们也不会是学生选择的第一门CS课程(学习CS1之前也不一定要学CS0)。请注意对于CS0和CS1并没有一个严格的官方定义,所以我必须使用一些个人的看法,当然,我会尽量遵守每个系关于课程的官方描述。

尽管一些老师认为CS1指的就是入门编程课程,在我的研究中,我特意将CS1和CS0放在一起,因为对许多学生来说,是在大学学习的第一门编程语言。鉴于美国K-12(相当于国内的小学到高中)教育在计算机科学教育方面的不幸状态,这些大学课程可能是许多学生,特别是女性和少数民族,第一次接触到编程语言。即使学生事先有编程经验,编程语言第一次正式出现在大学课程中仍然具有很大的影响力。我认为CS0和CS1同样重要,因为随着编程在科学领域变得无孔不入,越来越多的非专业人士也开始学习CS0课程。再者,少部分CS专业的学生在学习CS1之前会先学习CS0,特别是那些之前没有任何编程经验的学生。所以,对学生来说,CS0课程作为通往计算世界的大门起着极其重要的作用,没有这门课程,他们可能都不会知道自己在这方面有着如此巨大的热情。


研究结果

下面这张表展示了七种最受欢迎的语言在Top39高校中的使用情况。将每个柱形代表的数字加起来和大于39,这是因为许多学校同时提供了CS0和CS1的课程。


继续探讨

尽管我是一个Python语言的拥护者,但我会尽我最大的努力去不带评价地陈述事实。在这个表格中,Python是最受欢迎的语言,Java排第二。Java语言在过去的十年中在入门课程教学中一直占有主宰地位。但是现在,一些学校完全摒弃了Java,全部使用Python,还有一些学校采取了一个混合的方法,在CS0中使用Python,而在CS1的教学中使用Java。在高中,AP(Advanced Placement)课程中使用的仍然是Java语言。

排在Python和Java之后的语言是MATLAB,MATLAB经常在CS0课程中使用。跟在MATLAB之后是C++,在过去十年中,C++的重要地位被Java完全取代。在2003年,高中的AP课程甚至都用Java取代了C++。从这个表格来看,C语言和C++语言受欢迎的程度一致。一些学校在使用C语言教授入门课程的时候,将C语言和其他的语言结合起来使用,比如说哈佛大学。

Scheme-based 语言在一部分教育工作者和编程语言研究者中相当受欢迎。最引人注意的是,两个哲学校园SICP 和 HtDP已经围绕Scheme生态系统建立了广受好评的教科书和相应课程。但是最近几年,比如在MIT和UC Berkeley,Python已经取代了Scheme的地位。表格显示,Scheme仅仅只在四所学校中使用。

表格中列出来的七种语言中,Scratch是唯一的一种可视化的、基于块的编程语言,Scratch是这种类型的语言中最受欢迎的一种,使用Scratch完成的项目有Alice、App Inventor、Etoys、Kodu、StarLogo 和 TouchDevelop 等等。这种类型语言的创造者将精力主要放在K-12教育上,这或许能够解释为什么这种类型的语言没有在大学中获得广泛的使用。


写在最后

最后, 注意到三个有趣的语言集合没有出现在这个表中,因为这些语言仅仅只被一所学校选用,或者根本没有学校选用:

  • 静态类型的功能性语言,比如说 Haskell 和 OCaml,这些语言在PL研究者中非常受欢迎。
  • 动态类型的语言,比如说JavaScript,Ruby和PHP,这些语言在网络编程者中非常受欢迎。
  • 广泛使用的工业语言,这些语言一般和特定的平台相关联,包括苹果的 Objective-C和微软的C#/Visual Basic。

如果我们在五年,十年或者二十年以后再回顾这篇文章,届时,哪一种语言会是时代的宠儿?


(英文来自: ACM,本文由 moqiguzhu编译,项目地址 CODE。

Python已成美国顶尖高校中最受欢迎的入门编程语言相关推荐

  1. Python,美国顶尖大学里最受欢迎的编程入门语言

    摘要 截止到目前,Python 已经成为目前美国顶尖大学里最受欢迎的计算机编程入门语言.计算机排名前 10 的学校里,有 8 所学校(80%)使用 Python 作为编程入门语言.在计算机排名前 39 ...

  2. 26岁的他,任中国科大特任教授!2年前已在美国顶尖大学担任博士生导师!

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 来源:澎湃新闻 编辑:双一流高校 1994年出生,今年26岁的威斯康星大学麦迪逊分校原助理教授陈杲,已 ...

  3. python怎么写判断语句_Python中的if判断语句入门

    前言 学习一门语言最好的办法,就是教懂别人.在这里,我会从 Python 最基础的教程写起,慢慢一步步进阶.Python 基础比较好的欢迎在本博客的文章里看看爬虫实战项目,欢迎指教. 人在选择时会做出 ...

  4. 终于【北京大学】也成立【人工智能研究院】!盘点近20所顶尖高校的AI布局!...

    转载于 软科 2019年4月27日下午,北京大学在英杰交流中心阳光厅召开科技创新大会.会上,北京大学宣布成立人工智能研究院.科技部副部长黄卫,国家自然科学基金委副主任谢心澄,教育部科技司司长雷朝滋,北 ...

  5. python 对比matlab_全面对比 MATLAB、Julia、Python,谁在科学计算中更胜一筹?

    原标题:全面对比 MATLAB.Julia.Python,谁在科学计算中更胜一筹? 数百种编程语言,各有优劣,各自也都有自己最为适用的场景.那么就科学计算领域而言,主流的 MATLAB.Julia.P ...

  6. python office365_Python在Office 365 开发中的应用

    我在昨天发布的文章 -- 简明 Python 教程:人生苦短,快用Python -- 中提到了Python已经在Office 365开发中全面受支持,有不同朋友留言或私信说想了解更加详细的说明,所以特 ...

  7. 区块链开发中使用的最流行的编程语言

    我们目前正处于一个新兴的区块链开发行业中.区块链技术处于初期阶段,然而这种颠覆性技术已经成功地风靡全球,并且最近经历了一场与众不同的繁荣.由于许多资金充足的项目现在急于建立区块链网络并在其上部署分散的 ...

  8. 区块链开发语言python_区块链开发中使用的最流行的编程语言

    我们目前正处于一个新兴的区块链开发行业中.区块链技术处于初期阶段,然而这种颠覆性技术已经成功地风靡全球,并且最近经历了一场与众不同的繁荣.由于许多资金充足的项目现在急于建立区块链网络并在其上部署分散的 ...

  9. 【Python 基础教程 20】全面掌握Python3输入输出:从入门到高级的实用指南(文件读写,Excel读写,Markdowm文件读写)

    目录标题 1. 简介 1.1 Python3 输入输出的定义 1.2 输入输出的重要性和常见应用场景 2. 标准输入输出 2.1 介绍标准输入(stdin) 2.2 介绍标准输出(stdout) 2. ...

最新文章

  1. SAP Variant Conditions in Purchasing using reference characteristics【中英文双语版】
  2. scrapy 分布式爬虫- RedisSpider
  3. 1-1、作用域深入和面向对象
  4. springMVC 相对于 Structs 的优势
  5. rcp rapido_Rapido使用数据改善乘车调度
  6. Oracle订单号就是授权号码,oracle多单号的说明
  7. mac中一一些常用的命令
  8. 剑指offer 面试题61. 扑克牌中的顺子
  9. 数学建模之规划模型(一)
  10. c语言程序设计医院排队功能,C语言-医院挂号排队系统.doc
  11. mem leak debug
  12. mac系统下查看端口占用问题的解决方案
  13. Mixly 二次开发 自定义库
  14. 使用Python rembg库进行抠图:一行命令就搞定
  15. WPS无法关闭excel表格,提示:关闭窗口前请先退出编辑单元格内容或格式
  16. 地理加权回归 | 模型如何应用于新数据的预测?
  17. 前端三件套系例之CSS——CSS3基础样式
  18. 【Windows C++】调用powershell上传指定目录下所有文件
  19. 充气娃娃?Python告诉你到底有多爽......
  20. css 居中设置和图片白底处理

热门文章

  1. LSGO软件技术团队与信息1402班开展真人CS活动
  2. 【转】UDP协议格式以及在java中的使用
  3. SqlServer学习之触发器
  4. async await 的前世今生(Updated)
  5. 【HDU - 3081】Marriage Match II(网络流最大流,二分+网络流)
  6. 【Gym - 101196F】Removal Game (环形区间dp,环状,细节优化)
  7. 【牛客 - 301哈尔滨理工大学软件与微电子学院第八届程序设计竞赛同步赛(高年级)】小乐乐的组合数+(取模,数学,思维)
  8. 【 HDU - 1796】How many integers can you find (容斥原理,二进制枚举或者dfs)
  9. 【HDU - 5916】Harmonic Value Description (构造,思维,SJ题)
  10. 0.Overview