一年以前,我还只是一个没有任何编程经验的电脑爱好者。在试着上了一些在线课程之后,我深受启发,接着决定开始学习加拿大最好的计算机科学课程之一。
两周后,我意识到我可以通过 edX ,Coursera 和 Udacity 来学习我需要的一切知识,并且更快、更有效、成本更低。所以我退学了。
在不久之后,我开始通过使用在线课程创建自己专属的数据科学硕士学位。并且制定了一份数据科学编程方向的课程清单,其中很多课程我已经上过,其他课程均根据网站评分和评论等进行了筛选。
对于本课程指南,我花了 20 多个小时查找截至 2016年 8 月前所有在线编程课程的简介,并从其大纲和评论中提取关键信息,对其进行评分。除了开源的 Class Central 社区和它数以千计的课程评分及评论的数据库,我没有借助其他任何帮助。
自 2011 年以来, Class Central 的创始人 Dhawal Shah 一直密切的关注着在线课程。 在 Dhawal 的帮助下,我列出了这份课程清单。
如何选择课程
每个课程必须符合以下四个标准:
· 介绍了编程课程,并选择性的涉及计算机科学相关内容。 稍后会做出解释。
· 教学语言使用 Python 或 R 。这是迄今为止在数据科学中使用的两种最流行的编程语言。
· 必须是可互动的在线课程,没有书本或文本教程。 关于后者, Codecademy 的没有视频、基于文本教程的课程包含在内,但是 R 语言课程中的文本教程则不符合这个标准。虽然书籍是学习 Python 和 R 的可行方法,但本指南着重介绍在线课程。
· 必须有一定的教学时长:完成课程至少需要十个小时。
Python 和 R 语言是数据科学领域最主流的两种编程语言
如何评估课程
我们涵盖了几乎所有的符合以上标准的在线课程。由于 Udemy 上关于 Python 和 R 的课程总共有几百个,所以在此仅考虑评论最多和综合评分最高的课程。如果我们错过了一些课程,请给我们留言。
我们从 Class Central 以及其他评论网站整合了课程的平均评分和评论数量。然后计算每个课程的综合评分。如果一系列课程有多个课程(如莱斯大学课程的 Part 1 和 Part 2 ),我们就计算所有课程的平均评分。同时还根据评论内容补充评分。
我们根据以下三点对课程做出推荐:
1.课程对编程基础的覆盖面。
2.对编程中更先进但实用课题的覆盖面。 (例如:有些课程没有包括面向对象编程。这是一个关键的课题,虽然不是那么不可或缺,但是这些课程不排除在考虑之外。)
3.教学大纲与数据科学的相关度。
编程 VS 计算机科学
编程不等同于计算机科学,反之亦然。 初学者可能不会敏锐地意识到这一点。 Programmers Stack Exchange 中这样解释道:
丨计算机科学是研究电脑 [可以] 做什么的学问; 编程则是使计算机做事情的实践。
我们在找那些介绍编程,并且选择性的涉及计算机科学相内容的课程。 许多被考虑的课程包含了部分计算机科学的内容。
然而,这些课程都不算严格意义上的计算机科学课程,这就是 edX 上 Harvard’s CS50x 之类的课程被排除在外的原因。
我们认为最适合数据科学家的编程课程是…
Coursera 上多伦多大学的“学习编程”( Learn to Program )系列。 LTP1 :基本原理( The Fundamentals )和 LTP2 :制作质量代码( Crafting Quality Code )获得了近乎完美的综合评分4.81。 这些课程对于数据科学家初学者来说,在内容难度和范围上有很好的的融合。且此课程免费。
多伦多大学“学习计划”系列课程的 Part 2
多伦多大学的计算机科学系在世界上首屈一指,其中的两位副教授 Jennifer Campbell 和 Paul Gries 教授这一系列课程。 此课程内容大部分来自他们的书“实践编程:使用Python 3的计算机科学导论”(“Practical Programming: An Introduction to Computer Science Using Python 3.)。 LTP1 占本书内容的 40-50% , LTP2 占书内容的 40% 。其中书中未覆盖的 10-20% 的内容对于数据科学不是特别实用,但也是这些内容使这一课程入选我们的推荐课程清单。
以下是详细的课程大纲。
学习编程:基础(LTP1)
学习时间: 7 周
估计投入时间:每周 6-8 小时
这是针对没有编程经验人群的计算机编程入门课程。 涵盖 Python 中编程基础知识,包括基本数据类型(数字类型,字符串,列表,字典和文件),控制流程,函数,对象,方法,
字段和可变性。
模块
1.安装 Python , IDLE ,数学表达式,变量,赋值语句,调用和定义函数,语法和语义错误。
2.字符串,输入/输出,功能重用,功能设计配方和文档。
3.布尔值,导入,命名空间和 if 语句。
4.用于循环和花式字符串操作。
5.循环,列表和可变性。
6.用于循环索引,并行列表和字符串以及文件。
7.元组和字典。
学习编程:制作质量代码(LTP2)
学习时间: 5 周
估计投入时间:每周 6-8 小时
学习此课程所需的 Python 编程基础知识:基本数据类型(数字类型,字符串,列表,字典和文件),控制流程,函数,对象,方法,
字段和可变性。
LTP. 制作质量代码课程包括以下内容:设计更大的程序,测试代码,以便知道它的工作原理,阅读代码以了解它的效率以及创建自己的代码。
模块
1.设计算法:如何决定在函数体中做什么?如何要弄清楚首先要写哪些功能?
2.自动测试:doctest 和 unittest 。
3.分析速度代码 - 搜索和排序的细节。
4.创建新类型:Python 中的类。
5.函数作为参数,默认参数值和异常。
Gries 副教授还对课程结构做出了以下评论:“每个模块的视频长度约为 45 分钟到一个多小时。在视频中有测验问题,这使学习视频的总时间可达 2 小时。“
每个视频时间通常短于十分钟。
他继续说道:“另外,我们每个模块有一个练习(十几个选项为两个左右的多选题和简答题),这应该需要一两个小时。在 LTP1 中有三个编程作业,每个作业可能需要4到8个小时。在 LTP2 中有两个类似的编程作业。”
他强调,每周 6-8 小时是一个粗略的估计:“课程所需时间是因人而异的。例如,一个有少量编程基础,或者会另一种编程语言的学员,可能只需编程新手一半的时间。有时,有的人因为一个概念停滞不前长达几个小时,而有的人则可能进展神速…这也是自学课程模式吸引人之处。“
总而言之,多伦多大学学习计划系列课程每周学习时间预计 6-8 小时,预计可达 12 周,这是大学创建的大多数在线课程的标准。如果你特别喜欢利用 MOOC 学习的话,那就是 72-96 小时,如果你有一点编程经验的话,这可以在两到三个星期内完成。
专注于 Python 的精品课程
如果你已经熟悉编程,并且不介意教学大纲中包括一些游戏和互动应用程序的话,在此我推荐 Coursera 上莱斯大学关于的 Python(第1部分和第2部分)的交互式编程入门课程。
该课程有近 3000 条评论,最高的综合评分 4.99 。该课程以吸引人的视频,挑战性的测验和有趣的小项目而备受欢迎。 比起我们的推荐课程 #1,这一系列课程稍微更难,而且对于基础知识的比重更少,包含更多关于不适用于数据科学的课题。
这些课程也是 Coursera 中计算机专业的原则(Principles in Computing Specialization )的 7 门课程的一部分。
CodeSkulptor:莱斯大学 MOOC 课程使用的基于浏览器的Python编程环境。
课程免费,且自定进度,并且有付费证书。分级教材需以 79 美元购买。
课程描述和全面教学大纲如下:
“这个共两部分课程旨在帮助有一点或没有计算背景的学生学习构建简单交互式应用程序的基础知识…为了使学习 Python 更为简单,我们开发了一种基于浏览器的编程环境,从而可以在 Python 中简单开发交互式应用程序。 这些应用程序将涉及内容为图形、响应按钮的窗口,以及键盘和鼠标。
推荐知识背景:需掌握高中数学知识。 虽然该课程是为之前没有的编程经验的人群设计的,但是一些初学者认为此课程的节奏较快。 对于在课程开始之前希望有一些准备学生,我们推荐类似 codecademy.com 的 Python 自学网站。“
Part 1
学习时间: 5 周
估计投入时间:每周 7-10 小时
第 0 周 - 语句,表达式,变量
了解课程结构,如研究计算器一样探究 Python 。
第 1 周 - 函数,逻辑,条件
了解 Python 的基本结构,并创建运行 Rock-Paper-Scissors 变体游戏的程序。
第 2 周 - 事件驱动的编程,本地/全局变量
了解事件驱动编程的基础知识,了解本地和全局变量之间的区别,并创建一个猜测游戏的简单交互式程序。
第 3 周 - 画布,绘图,计时器
在 Python 中创建画布,了解如何在画布上绘制,并创建数字秒表。
第 4 周 - 列表,键盘输入,建模运动的基础
了解 Python 中的列表的基础知识,在 Python 中建模移动对象,并重新创建经典的街机游戏“乒乓”。
Part 2
第 5 周 - 鼠标输入,列表方法,字典
了解鼠标输入,了解列表方法和字典,并绘制图像。
第 6 周 - 类和面向对象编程
使用类学习 Python 中面向对象编程的基础知识,并使用平铺图像。
第 7 周 - 基本的游戏物理,sprites
理解加速和摩擦的数学原理,利用 sprites ,并为游戏添加声音。
第 8 周 - 集和动画
了解 Python 中的集合,sprites 和 animate sprites 之间的计算碰撞。
专注于 R 的精品课程
如果你想开始学习 R 的编程入门课程的话,我们推荐 DataCamp 的 R 系列课程: R 语言入门 ,中级 R 语言 ,中级 R 语言- 实践和 在 R 中编写函数。尽管后三门课程价格为 25 美元 /月,但是 DataCamp 无疑是囊括编程基础和 R 特定课题的最佳学习渠道,综合评分 4.5 。
DataCamp R 系列课程的前三个课程。
我们认为使用在线课程学习数据科学编程是可以先学习 Python 。 这是因为在MOOC 上,缺少使用 R 语言的教授核心编程原理的课程。 相比 22 个 Python 的课程,我们只发现 6 个符合我们测试标准的 R 课程。 大多数的 R 课程评价不是太好,且没有达到我们的入选标准。
R 系列课程如下:
R 语言入门
预计学习时间:4小时
章节:
1.基础介绍
2.载体
3.矩阵
4.因子
5.数据帧
6.列表
中级 R 语言
预计学习时间:6小时
章节:
1.条件和控制流程
2.循环
3.函数
4.家庭应用
5.公用事业
中级 R 语言 — 实践
预计学习时间:4小时
这个中级 R 语言的后续课程不包括新的程序概念。相反,你将通过一系列有趣的练习来增强对中级 R 语言中课题的了解。
在 R 中编写函数
预计学习时间:4小时
章节:
1.快速回顾
2.何时、怎样写一个函数
3.功能编程
4.高级输入和输出
5.Robust Functions
学习 R 的另一种方法是先学一个使用 Python 的编程入门课程,以此掌握编程的基础知识,然后再通过 R 基础课程来学习 R 语法。我就是通过这一方法学习了 Udacity 的 Data Analysis with R,这对我来说很有效。
你也可以通过我们推荐的最佳统计课程来学习 R ,这些课程通过编程统计数据问题来教授 R 的基础知识。
其他课程
我们的推荐课程#1 和#2 选择分别获得 269 和 2,982 条评论,综合评分为 4.81 和 4.99 。下面让我们看看其他的课程。
Python课程(根据综合评分由高到低排列)
· 人人都懂的编程课(从 Python 开始)和 Python 数据结构(密歇根大学/ Coursera 大学)也是不错的选择。这一系列课程有个很棒的老师( Charles “Chuck” Severance 博士。这一系列几乎要超过我们的推荐 #1,因为它符合评分标准和大多数主观标准。然而,这个课程更简单,许多评论的人都注意到它可能无法和其他课程那样学习的更深入。 Chuck 博士自己指出,这门课程通向更高级的编程课程的桥梁:“我建议,在学生完成我的 Python 课程后,如果他们对编程感兴趣,可以试试莱斯大学的课程。” 我们也认为对推荐#1课程的评论更加热烈。该课程获得 4,800+ 条评论,综合评分 4.8 。
· Python 从 A 到 Z :使用 Python 通过实际练习学习数据科学(Udemy):付费。该课程获得52 条评论,综合评分 4.7 。
· 使用 Python 使枯燥的东西自动化(Udemy):付费。该课程获得 2,000+ 条评论,综合评分 4.6 。
· 初学者的 Python :在22小时以内从小白成为的专家(Udemy):付费。该课程有获得240条评论,综合评分 4.6 。
· 使用Python 的计算机科学与编程入门(麻省理工学院 / edX):另一个不错的选择。该课程获得240条评论,综合评分 4.5 。
· 完整的Python 训练营(Udemy):付费。该课程获得 4,700+条评论,综合评分 4.5 。
· Treehouse 的 Python 系列( 9 门课程):付费。一个受欢迎的课程,但没有足够的评论来判断其价值。该课程获得 5 条评论,综合评分 4.5 。
· Python(Codecademy):此课程无视频,文本编辑器,互动课程。该课程获得 20 条评论,综合评分 4.5 。
· 使用 Python 的数据科学入门(微软 / edX):该课程获得 360 条评论,综合评分 4.47 。
· 编程纳米学位介绍(Udacity):该课程专注于 Web 开发。对于没有明确想做的编程类型的人来说,这是一个很好的选择。该课程获得 730 条评论,综合评分 4.4 。请注意,该课程的前半部分包括 Udacity 热门课程的“计算
机科学简介”,这不符合我们的入选条件。
· CS for All:计算机科学与Python 编程入门(Harvey Mudd College / edX):给课程的评论很少,仅有 6 条,综合评分 4.33 。
· 使用 Python 的编程基础(Udacity):不涵盖基础知识。该课程获得 7 条评论,综合评分 4。
· 学习使用 Python 进行编程(edX /德克萨斯大学阿灵顿分校):该课程获得 14 条评论,综合评分 4 。
· 学习代码进行数据分析(开放大学/FutureLearn):该课程获得 2 条评论,综合评分 3.5 。
· DataCamp的 Python 系列(3门课程):该课程在两个主要课程网站没有评论,但 DataCamp 是一个热门的选择。
· SoloLearn 的 Python 3 教程:该课程没有评论,但有一个全面的课程体系和专门的粉丝群。
· Dataquest 的 Python 系列(3门课程):该课程没有评论,但有全面的课程体系和一个直言不讳的粉丝群。
R课程(根据综合评分由高到低排列)
· R 语言从 A 到 Z ™:使用 R 通过实际练习学习数据科学! (Udemy):付费。该课程不会像R 课程的推荐 #1 一样那么有震撼感。考虑到样本量,综合评分是相似的。该课程获得 785 条评论,综合评分 4.7 。
· 数据科学 R 语言入门(微软 / edX):没有DataCamp 课程的深度。该课程获得 500 条评论,综合评分 4.48 。
· R 语言编程(约翰·霍普金斯大学/ Coursera):没有充分涵盖编程的基础内容。评论者指出,课程较难。该课程获得 900 条评论,综合评分 4.04 。,尽管在 Class Central 该课程获得 212 条评论,综合评分 2.5 。
· 试试 R 语言(CodeSchool):课程时长较短不符合选择标准,并内容不足以涵盖编程基础。该课程获得 260 条评论,综合评分 4 。
· 使用 R 语言学习数据科学(微软 / edX):该课程更多的是关于 R 语言的入门而不是编程。课程网站评论道:“如果你有一些编程经验,并想了解更多关于 R 的知识,那么你就选对课程。”该课程获得 12 条评论,综合评分 3 。
结语
本文是六部曲系列的第一篇文章,涵盖了指引你进入数据科学领域的最好的在线课程。该系列的剩下部分将涵盖数据科学的其他核心部分:统计学,数据科学过程(data science process),
数据可视化和
机器学习。
最后一篇将会是对这些课程的总结,以及其他主题的最佳 MOOC 课程,如数据整理,数据库以及软件工程。
原作者 David Venturi
编译 CDA 编译团队
本文为 CDA 数据分析师原创作品,转载需授权
CDA数据分析师考试相关入口一览(建议收藏):
▷ 想报名CDA认证考试,点击>>>
“CDA报名”
了解CDA考试详情;
▷ 想加入CDA考试题库,点击>>> “CDA题库” 了解CDA考试详情;
▷ 想学习CDA考试教材,点击>>> “CDA教材” 了解CDA考试详情;
▷ 想查询CDA考试成绩,点击>>> “CDA成绩” 了解CDA考试详情;
▷ 想了解CDA考试含金量,点击>>> “CDA含金量” 了解CDA考试详情;
▷ 想获取CDA考试时间/费用/条件/大纲/通过率,点击 >>>“CDA考试官网” 了解CDA考试详情;