嵩 天,黄天羽
(1.北京理工大学计算机学院,北京100081;2.北京理工大学软件学院,北京100081)
2016年,教育部高等学校大学计算机课程教学指导委员会发布了《大学计算机基础课程教学基本要求》(简称《基本要求》)[1]。《基本要求》首次建议将Python语言作为首门程序设计课程的教学语言,在其推动下,国内高校逐步开设了Python语言,成为教学改革热点。与此同时,构建Python语言教学案例就成为教学进程中必不可少的环节。我们认为,Python语言并非其他编程语言的简单替代,而是伴随计算机技术发展时代变化的必然选择[2]。因此,在构建教学案例时,要充分结合Python语言特点,采用新思维进行设计,而不应将其他编程语言已有案例进行简单移植。因为只有采用新思维设计的案例才能让学生认识到Python语言的价值,并体会到程序设计过程的快乐。
相比其他语言,Python具有3个明显的优势:简洁、高效和生态。
(1)简洁:Python语法简洁,却具有完整的语法逻辑,可以进行语句级、面向过程和面向对象的程序开发,变量类型使用无需定义,强制缩进能显著提高可读性;相比其他语言,Python能更加纯粹地表达算法和程序逻辑意图。
(2)高效:Python代码编写高效。同样功能的计算任务,Python语言实现的代码行数约是C语言的10%左右;程序越复杂,Python越具有优势,而更少的代码行数意味着更高的编程效率、更少的调试代价和更短的实现时间。
(3)生态:Python具有全球最大的单一程序语言计算生态,是一门计算生态语言。截至2017年11月,Python语言提供超过12万个第三方库,几乎覆盖计算的各个领域,已有功能简洁实用,避免“重复造轮子”,进一步提高了编程效率。
针对Python语言上述特点,北京理工大学提出“理解和运用计算生态”的教学理念和实施方案[3-4],得到全国众多高校的积极响应,许多高校以此为基础开展了大量的教学设计和教学实践,并取得一批优秀的教学成果。本文将进一步探讨Python语言程序设计教学案例设计的新思维及实施效果。
表1 教学案例设计思维比较
计算机程序设计已经成为当代信息社会的基础技术方法之一,基于计算机的计算思维也成为与逻辑思维和实证思维并列的第三种思维范式。随着云计算、物联网、移动互联网、大数据、人工智能等重大技术和科技需求的不断发展,人们对计算问题及程序设计的认识发生了根本的转变,从以知识验证为主的问题求解转变为面向实际问题解决为主的计算求解。这种根本转变反映了信息技术对人类生活和工作的影响程度,在未来的10~20年中,这种影响程度将更加深入,甚至将引发一批非信息类工作的消亡。
对于高校程序设计类课程,这种认识转变所带来的直接影响是学生的学习期待将不断增长。现阶段,学生对网络爬虫、数据处理、机器学习、人工智能等计算问题十分关注,希望通过程序设计课程掌握相关技能。然而,以C语言为例,传统的教学案例以字符打印输出、数列计算、基本文件读写等作为主要内容,学习期待与实际问题相差较大,客观上影响了教学质量的提升。
程序设计教学案例新思维产生于计算时代发展新阶段的背景下,以符合时代发展的应用需求为对象,主张设计既能满足学生期待又符合学生认知水平以及程序设计教学规律的教学案例,兼顾兴趣和创新,培养学生通过程序设计解决问题的能力。
为了更好地阐述程序设计教学案例新思维,表1给出不同视角下传统思维和新思维的对比。
程序设计教学案例新思维是一整套视角,从案例设计目的、形式、来源、开放性、规模和意义多角度进行综合诠释,核心理念在于设计教学案例需要符合时代对问题求解和创新的要求,满足学生对程序设计课程的学习预期。
传统思维下,程序设计教学案例用于服务知识点讲解,案例需要有确定的输入输出,便于自动评阅,且案例完全由教师设计,可重点讲解。这是传统课堂教学思路在程序设计课程中的具体反映。新思维则希望程序设计教学案例用于服务问题解决,案例对应大类知识体系,但不限于个别知识点;案例可以激发学生的创造力,而不是统一的固定输出形式;案例要有一定的运用空间,不限制规模,从有趣和有用两个方面引导学生学习。
程序设计教学案例新思维要“面向问题、引发兴趣、培养能力、引导创新”。其中,问题、兴趣、能力和创新4个要素兼具,面向问题是原则,引发兴趣和培养能力是手段,引导创新是目的。结合实际教学,我们发现,兴趣、能力和创新是相辅相成的关系,当采用创新型教学案例时,学生的兴趣和能力会快速提高,而兴趣和能力的提高又为进一步创新引导提供坚实基础。
针对程序设计课程教学,案例教学新思维具有普遍的适用性,即适用于各种编程语言教学案例的实践,然而,从各编程语言生态性考虑,Python语言具有最佳适用性,主要有以下3个原因。
第一,Python语言符合计算机技术发展阶段。Python语言是一门通用语言,尤其适合在云计算、物联网、移动互联网、大数据、人工智能等重大技术和应用需求下完成功能开发,更符合学生对编程应用的预期。Python语言不仅符合计算机技术发展方向,也是面向未来的教学内容,最适合教学案例新思维设计。
第二,Python语言具有庞大的计算生态,高级计算功能采用搭积木方式组织,新思维案例更容易设计。Python语言具有12万个第三方库,覆盖几乎所有计算领域,因此构造教学案例可以利用第三方库提供的功能作为基础模块,培养学生集成创新能力,极大扩展学生对程序设计功能的视野,适合构造符合时代发展的新思维案例。
第三,Python语言高效高产,实现周期短。学生对创新的热情不仅在于创新想法本身,更在于对创新的实现。由于Python语言高效高产,创新想法可以得到快速实现,因此,相关教学案例能够较好地激发学生的兴趣。
我们建议将Python语言作为我国高校各专业程序设计入门语言,并采用程序设计教学案例新思维设计教学案例,不仅便于学生掌握程序设计入门知识,还能够引导学生进行创新,加深对程序设计的理解。
图2 利用蒙特卡洛方法求解π
“有趣”的案例可以激发学生的学习兴趣,所见即所得,起到兴趣引领的作用。对于Python语言来说,建议使用turtle库(绘图库)开展入门案例设计,部分案例如图1所示。
图1 turtle库入门案例
“有用”的案例可以培养学生在某方面的程序设计基本能力,但是案例不一定有趣。对于Python语言来说,建议围绕random库(随机函数)、jieba库(中文分词)等有特定用途的功能库来设计入门案例,使学生掌握使用相应的程序设计能力。如利用random库中的随机数函数可以设计蒙特卡洛方法求解π(圆周率)实例,使学生掌握蒙特卡洛工程方法,如图2所示。
我们建议交叉组织“有趣”的案例和“有用”的案例,先依靠兴趣引导学生掌握基本的编程方法,进一步使用有用的案例培养学生的能力。
turtle库也叫海龟绘图库,它是Python语言最基础的图形绘制函数库,基本原理是用程序控制一只小海龟爬行,并将其轨迹动态生成图形进行输出。turtle图形绘制的概念诞生于1969年,最初成功应用于LOGO编程语言。由于turtle图形绘制概念十分直观且非常流行,Python接受了这个概念,并形成了Python的turtle库,图1的3个例子都是turtle库绘制的图形。
turtle库设计的案例是典型的“有趣”类型教学案例,除了掌握基本的图形绘制,学生还可以进一步实践Python语法运用和程序设计结构能力。有趣案例可以很好地激发学生的学习兴趣,十分适合在程序设计入门课程中讲授。因此,我们引入“海龟绘制作品”这个实践案例,这个案例并非只是简单绘制一个海龟图形,而是一个创意类型题目,该案例有如下3个要求:
第一:利用turtle库绘制一个图形,内容不限,以创新性作为主要评分依据;
第二:相同代码尽量使用函数,总代码数量不少于100行;
第三:所绘制图形要有个人特点,成为“作品”。
这3个要求可以基本保证学生实现的答案具有一定规模。实践中,需要引导学生以“作品”心态实现案例,代表学生turtle绘图的最高水平。大部分学生能够利用Python语言完成有趣案例绘制,对程序设计有全新、良好的认识,达到一定的Python编程水平。
用经典文学作品中的人物出场次数可以间接表明作品中人物的重要程度,我们以此形成一个通用实践案例框架。围绕这个功能构建的具体案例能够帮助学生掌握文本读取、中文分词、字符清洗、关键词排序、排序输出等整套文本处理能力,属于典型的“有用”案例。
人物出场统计能够衍生出一系列案例,如《红楼梦》《三国演义》等中文名著人物出场次数统计,《哈姆雷特》《尤里斯西》等英文名著人物出场次数统计等。对于中文实例,还需要介绍Python用于中文分词的jieba库;对于英文实例,依靠空格和标点符号即可进行单词分隔。讲解这两种衍生实例,有助于学生理解中英文文本处理的差异。此外,对于人物出现多个名称的情况,如曹操、孟德、丞相等指代同一个人,也需要学生进行有效处理,使学生的关注点从程序语法逐步过渡到问题求解。
人物出场统计案例可以再进一步衍生成为关键词统计,这将有助于概要分析重点文件的写作特点或内容重点。如统计政府工作报告的关键词,有助于刻画不同时期政府工作重心的转变。这类实例延伸不仅贴近生活,也为学生未来使用编程解决学习和工作中的实际问题指明了方向。
截至2017年10月,本文作者在北京理工大学开展了11轮Python语言课程教学,其中多次采用案例1——海龟绘图作品和案例2——人物出场统计,构造新思维实践题目,学生反应十分热烈。以案例1为例,其中3份学生作业如图3所示。
图3案例1实践案例的学生作品展示(部分)
图3 中展示的作业是从众多作业中随机选取的部分作品。值得说明的是,这些作业是学生在Python语言程序设计入门课程讲授第10~12个学时内容后完成的,即初学编程的同学可以在5次课堂教学后完成案例1——海龟绘图作品,显著提升了学生对程序设计的兴趣,扫清了学生潜在的畏难心理。这个新思维案例的运用为同学们后续学习深入编程技术做了良好的兴趣引导。
北京理工大学的教学实践表明,程序设计教学案例新思维案例能从两个方面显著提高教学效果。
(1)新思维案例能够激发学生对程序设计的兴趣。有趣的案例能够促进学生发挥想象力,调动学生的主观能动性,如果这些案例不仅有趣且能够贴近自身生活,可以让同学们认识到编程不再是枯燥的事情。
(2)新思维案例能够激发学生的创造性。非标准输出的案例或具有一定灵活度的案例能够激发学生的创造性,同时凸显个性。例如,案例2——人物出场统计是一个框架性案例,不仅能够启发学生选取合适文本或问题进行统计,实践中部分同学还能够采用turtle库或其他第三方库制作出可视化效果。
教学实践体系对于学生掌握一门课程内容十分重要,我们建议在讲授Python语言程序设计内容同时,能够采用新思维设计一套培养学生兴趣和创造力的实践体系。多轮实践效果证明了新思维的适用性和有效性,即选择海龟绘图作品和人物出场统计作为阶段大作业内容,可以调动学生的学习热情,显著提高教学效果。
[1]教育部高等学校大学计算机课程教学指导委员会.大学计算机基础课程教学基本要求[M].北京:高等教育出版社,2017.
[2]嵩天,黄天羽,礼欣.Python语言:程序设计课程教学改革的理想选择[J].中国大学教学,2016(2):42-47.
[3]嵩天,礼欣,黄天羽.Python语言程序设计基础[M].2版.北京:高等教育出版社,2017.
[4]嵩天,黄天羽,礼欣.面向计算生态的Python语言入门课程教学方案[J].计算机教育,2017(8):7-12.