基于Python语言程序设计的交互式课堂教学探索
2017-08-29罗晓牧
【摘 要】本文讨论了如何在程序设计基础课程中实现交互式的课堂教学。通过使用 Jupyter Notebook 和 Python Tutor 等工具,提高课堂教学效率,激发学生的学习热情。本文提出的教学设计,也适用于其它编程语言的教学。
【关键词】Python;交互式教学;Jupyter Notebook;Python Tutor
计算思维是国内外各界重点关注的一种先进的教育理念,已经成为计算机程序设计课程教学的指导思想。在我国,C 语言是目前众多高校所教授的第一门编程语言,对于刚接触计算机编程的学生,具有一定的难度和挑战性。C语言注重的是“计算机系统结构时代”的计算思维,教学内容围绕数据类型、指针、内存、字符操作等展开,初学者很容易陷入 C语言语法的细枝末节中,并不能很好的激发程序设计的兴趣。相比之下,Python 语言的受欢迎程度日益提升。Python 是目前最接近自然语言的计算机编程语言,近年来在美国高校中广受欢迎,在众多的知名高校中取代 C和 Java 成为计算机入门的编程语言。 Python 语言简洁高效,能让学生关注计算问题的求解,其轻量级的语法和高层次的语言表示充分表现了应用计算机解决问题的计算思维理念。Python 语言除了应用于教学,在工业界也有广泛的应用。如Google 用于深度学习的开源平台 TensorFlow支持 Python 语言进行神经网络的搭建与计算。
要学好 Python 语言,除了学生的认真学习之外,教师的课堂教学方法也十分重要。以前那种用黑板或用 PPT 的静态传统教学模式,也应该适应时代的发展,与学生进行有效的互动,提高教学效果。
一、Jupyter Notebook的使用
在传统的程序设计课堂上,通常都是采用“理论课”+“上机课”这两种模式,并且这两个环节通常是分开的。然而,这样的教学效果并不好。在理论课上,教师的主要教学手段是对着 PPT 进行讲解,学生在下面记笔记。由于刚入学的学生基础各不相同,有的同学缺乏对计算机体系结构的理解,仅仅靠教师的静态的讲解,并不能很好地理解程序设计的要点。能跟得上老师讲课节奏的学生,能“脑补”各种计算机程序的实现;对于跟不上的学生,容易注意力涣散。到了上机课,学生需要完成一定的练习题。然而,这时候老师不可能再重新讲解程序设计的要点。对于理论课上没有掌握好知识点的学生,就会出现“两眼一抹黑”的情况,完全不知所措。因此,我们在实际的教学中,可以尝试将“理论课”和“上机课”结合起来,实现交互式教学。
要实现程序设计课程的交互式教学,需要合适的教学软件。教学软件要能满足以下的基本要求:
(1)包含文档和图片,将知识点完整表达。
(2)实时运行程序段,将程序运行的结果表示出来,并且可以方便修改,重新运行。
基于上述的要求,我们在课堂上使用Jupyter Notebook,取得良好的教学效果。Jupyter Notebook 是包含在Anaconda 的一个组件。图1 为Jupyter Notebook 的运行环境截图。
图 1 Jupyter Notebook 的运行截图
使用 Jupyter Notebook,有以下的明显优点:
(1)运行一次代码,保存结果,可以多次阅读,不需要为每一个程序段保存单独的文件,程序段之间并不互相影响。
(2)交互式编程,通过Python 的内核运行程序段,并且可以随时修改,重新运行,方便学生“试错”,立马得到结果。
(3)除了可以根据 Python 的语法在代码段后面注释外,还可以通过 Markdown 语法撰写文档。
(4)可以添加各种元素,比如图片,视频,链接。
这样通过Jupyter Notebook,就可以很好的实现互动式教学。教师可以先讲解一个知识点,马上让学生做练习题,然后再讲解下一个知识点。在统一的环境下,学生对于不懂的知识点可以及时反馈,教师进行答疑。
二、Python Tutor 的使用
在使用计算思维解决问题的过程中,把复杂而庞大的问题按照比较合理的方式进行分解简化,然后逐步求解,是基本的思想。对于刚开始接触编程所面对的难以理解的概念,如:递归,通过可视化的运行环境将对学生的理解将十分有帮助。Python Tutor是由加利福尼亚大学圣迭戈分校 Philip Guo 教授所开发的一款免费的在线教育工具,可以帮助学生攻克在开始学习编程时所遇到的障碍,理解每一行源代码代码在计算机内部的执行过程。通过这个工具,学生和教师可以在Web 浏览器中编写Python 代码,然后一步一步地可视化执行。截止2017年,有來自超过180个国家和地区的超过350万人使用过 Python Tutor,超过3000万个代码段被执行。这个工具通常作为教材、讲义和在线编程指南的补充。使用者不仅仅包括自学的编程者,如 edX、Coursera 和 Udacity 等在线课程的学生,还包括 MIT、加利福尼亚大学伯克利分校等国际著名高校的教师。
图 2 是Python Tutor 运行递归程序时的截图。图的左边是代码段,可以通过“Back”和“Forward”两个按钮查看每一步程序的运行结果。图的右边是程序运行到某一步时的情况,包括定义的函数、全局和局部的变量、以及每一个变量所指向的对象及其值。通过单步执行,学生可以形象化的理解“递归”这个程序设计的关键概念,这是传统通过静态 PPT 教学所不能比拟的。
图 2 Python Tutor 单步执行时的截??图
本文讨论了针对基于 Python 语言的交互式课堂教学,有助于全面提升教学质量,激发师生的创新热情,让学生掌握一门终身受用的程序设计语言。要实现高效的交互式教学,必备的软件运行环境不可或缺。作为教师,应该时刻关注最新的教学方法与工具,及时调整,才能激发学生的学习热情。
参考文献:
[1] TensorFlow [EB/OL] https://www.tensorflow.org/
[2] Anaconda [EB/OL] https://www.continuum.io/downloads
[3] Python Tutor [EB/OL] http://pythontutor.com/
[4] Philip Guo教授的主页[EB/OL]. http://www.pgbovine.net/
作者简介:
罗晓牧(1980.05~)男,广东省广州市,学历:博士研究生,职称:讲师,研究方向:无线传感器网络。