浅谈jupyter notebook 的教育应用

0

上周略读了一本github上的开源书籍《Teaching and Learning with Jupyter》,应导师之邀,写一篇推文总结归纳,作抛砖引玉之用,感兴趣的同学可以将进入该repos详细查看。

这是jupyter社区的几位用户自主发起编写的一本书,书中包含了很多jupyter notebook(以下统称notebook)在教育领域的应用和实践,为很多想把notebook应用到课堂上的教育工作者提供了宝贵经验,除此之外,计算机专业的工作者也能在本书中得到很多启发,值得仔细阅读思考。

本文的组织和该书的目录组织基本一致,接下来每一部分对应书上的一个章节。

1 使用notebook的理由

In short, we design learning environments and experiences.

教师最大的作用就是设计学习环境和体验,以此让学生更好的参与课堂,理解知识,表达自我等等,使用notebook能帮助教师更好地达到这些目标。

书本在此章节介绍了notebook,相信本文读者或多或少都接触过notebook,故本文不再赘述,配图一张,自行理解。
图1:jupyter notebook界面概览
图1:jupyter notebook界面概览

不仅在课堂上,学生和教师都能通过notebook获益,课堂下的练习和巩固也可以通过notebook来进行。上课的时候老师利用notebook能提升学生在课上的参与度,及时反馈学生的上课情况,增进学生的理解,改善学生的课堂表现,甚至能够让学生为自己的职业生涯做好前期准备。而学生能通过notebook培养自己的计算机思维,开源意识,自主学习能力等等。

这里举了一个及时收集学生听课反馈的案例——ticket to leave 通过代码的编写,教师直接在notebook上面出题并列出选项,如图2,学生可以点击下方的选项框进行选择,在教师端能看到答题统计情况,如图3,并以此为依据了解学生对这节课的了解和领悟水平。
在这里插入图片描述
图2:ticket to leave学生界面

在这里插入图片描述
图3:ticket to leave教师后台数据

2 Notebook在教学的应用

本章介绍了notebook在教学上的应用

  • 教科书,教师和学生可以把notebook当作教科书来使用,区别于传统的静态教科书,notebook能够让学生参与到设计好的实验中,更好的接受那些新知识。
  • 工作手册,与上一种用法相同,我们可以利用notebook中的markdown功能引导学生和教师完成工作。
  • 笔记本,通过notebook做课堂笔记相比传统的纸质笔记有众多优势,其中之一就是存储云端并能随时分享。
  • app,当学生不需要去学习编程,只需要了解一个知识点或者概念时,把notebook做成一个app可能是更好的选择,用户只需要输入和输出就足够,不需要了解黑盒里面的东西。
  • 实验报告和作业,利用notebook布置实验报告和作业也是一个很好的选择,尤其是涉及到代码编写的作业时。
  • 多媒体交互平台,notebook的每个单元格能够很方便的嵌入视频或者音频,学生可以利用这些音视频进行学习,而不用切出当前页面看别的视频。
  • etc…

决定在教学上应用notebook时,教师需要做几件事情,确定自己的教学目标,理解自己的学生,完善自己的教案,安排好学习环境,为特定任务选择合适的工具。

需要注意的是,当教师使用notebook进行教学任务时,必须要防止学生对编程产生误解,IDE和notebook是编程的两个有效工具,它们分别能完成各自擅长的事,必须要让学生知道编程≠notebook,在教学时,也要介绍命令行交互,IDE的使用等等,以此正确建立学生的编程世界观。

3 教学模式

本章引入了很多教学模式的类别,供教育工作者参考,本文介绍几种重要模式

  • Shift-Enter模式,众所周知,notebook中运行一个单元格的快捷键是Ctrl+Enter,而运行一个单元格并跳转到下一个单元格的快捷键是Shift+Enter,运用这个快捷键,学生可以不用自己写代码,快速运行一整个notebook。这一模式适合初学者刚接触编程或者新知识时,教师为学生编写好代码和注释,学生只需要一步一步运行就可以了。
  • 填空模式,教师在布置任务时可以写好整体框架,留空给学生填写,比如,在学习机器学习时,教师在notebook中写好函数trainpredict的输入和输出,函数内部的逻辑空着,留给学生填,空白多少照这节课的难易度而定。
  • 自上而下的模式,区别于传统的教学方法,比如为通信专业的学生讲授离散傅里叶变换,传统方法要从教授复数开始,然后经过很长一段路才到达DFT,这一模式鼓励老师和学生先讲授总体的框架,比如给出DFT函数让学生使用,再去探索内部细节。
  • 每个苹果咬两口,上通识课的时候,有不同专业的学生,不同领域的学生对同一个问题的理解是不同的,比如计算一个区域的面积,计算机系的学生可能会for循环把面积加起来,但是物理系的学生可能会用积分去定义,这两种方式的结果应该是相同的,可以互相检验。
  • 翻译编程,将数学公式转化为代码一直是一件充满挑战的事情,让学生完成翻译数学公式能极大锻炼学生能力。
  • etc…

4 jupyter noteboook的生态

jupyter社区为notebook提供了强大的生态,kernels是最重要的一个插件,通过kernels的安装,notebook可以摆脱python,支持上百种语言,包括C++,javascript,R,go语言等等,这为notebook的推广提供了极大的动力。

notebook是jupyter的核心应用,除了常规操作之外,还有很多奇技淫巧,比如,查询函数文档时,可在函数后面直接加? 如print?,或者用shift-tab达到同样效果;小插件的使用也能极大增加交互性和效率,见图4
在这里插入图片描述
图4:滑轨插件

Magic命令时notebook中特有的命令,如%matplotlib inline, %timeit, %debug等命令能简化原有的python代码,增进效率;除此之外,notebook还提供了版本控制工具,类似于git中的diff命令,notebook可以使用 nbdime 进行版本控制,有兴趣的读者可以自行点击链接查看。

5 在课堂上使用jupyter notebook

有三种方式可以提供给教师和学生使用jupyter,

一、本地安装,在学生自己的电脑上安装或者在实验室电脑上安装,好处是性能充足,有多少台电脑就有多少性能,坏处是每个人电脑配置不同,环境不同,安装调试很麻烦,但对于上一学期的课来说,花一节课去安装和调试是值得的。

二、在服务器上安装,无论是云端还是自己的服务器都能很好地控制环境和安装过程,学徒工只需要登陆账号就可以使用,jupyter社区提供了jupyterhub这个软件能够很好的管理用户,发放和收集作业,自动评分等等;同时也可以考虑用容器去实例化一个临时的环境,用户关闭后,实例就被关闭,每次打开都是新的,能够避免很多问题,诸如Binder的工具为我们提供了容器化notebook的解决方案。此方法的优点是学生不需要自己去安装,用浏览器打开就能直接写;缺点是对服务器性能要求较高,同时满足几十上百的学生不容易,而且对搭建服务的工程师在服务器,网络等专业领域上有较高的要求。

三、使用云jupyter,市面上有很多将notebook云端化的公司,如CoCalc,HubHero,Kaggle Kernels,微软的Azure notebooks和谷歌的Colab等等,这些产品都有免费试用版和付费版,当然,不出乎意料的,免费版都不好用,付费版能满足绝大部分需求,教师也不需要考虑性能,环境配置等种种问题。优劣显而易见。

6 总结

该书最后给出了几个notebook应用教育领域的案例,包括大规模入学考试,音乐分析,高中的计算机入门教育,地理学科的应用等等,读者可以查阅该书。

jupyter notebook是数据科学领域常用的工具,本文展示了将其应用在教育领域的可能性,并有希望拓展为计算教育学的一部分,这是一个富有探索性的话题,需要奋斗在教育一线和工作者、科研人员和工程师们共同努力,不断为现代教育做出重要贡献。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值