新商科背景下Python程序设计课程混合式教学方法与实践
作者: 柳青
摘要:结合新商科对经贸类商科人才的需求和现有Python程序设计课程教学中存在的问题,对Python程序设计课程混合式教学方法进行了介绍,从课前、课堂学习内容建设和要求、课后作业内容建设、学有余力推广等方面进行了阐述,提出课堂讨论拓展环节的重要性,起到承上启下,贯穿于整个教学始终的作用,并以函数章节为例,从课前学习、课堂教学、课后作业及推广等几个方面进行了教学设计和实践。
关键词:新商科;混合式教学;程序设计;教学实践
中图分类号:G642 文献标识码:A
文章编号:1009-3044(2022)20-0133-03
1 引言
数字经济、人工智能等先进技术的发展,对经贸类商科人才提出了新的要求。新商科是商科教育主动服务于新经济的战略性调整[1]。Python语言具有良好的跨平台特性和可扩展性,在数据挖掘、机器学习等方面拥有众多的包且还在不断更新和增长,是人工智能技术中不可替代的一部分。人工智能等新一代技术将人类引领到智能时代,冲击了传统的教师教学、学生学习方法和教育体制,引导我们重新思考教育的本质,并主动求变。这不仅仅是我国的商科教育,也是全球商科教育主动求变的战略性选择[1]。对于经贸类商科人才来说,Python程序设计语言已经成为必须掌握的一门高级程序设计语言。
上海对外经贸大学2015年开始面向实验班和提高班等有一定计算机基础的学生开设Python程序设计课程,着重培养学生的计算思维能力和应用计算机解决实际问题的能力; 经过2年的实践,2017年开课范围扩展到经管类学生,2020年面向全校所有专业开设该课程。经过5年的实践,Python程序设计取得了一定的成绩,也发现了不少问题。
2 Python程序设计课程存在的问题
1) 以前的授课方式一直采用多媒体机房授课,精讲多练。以前教学内容相对较少,学生笔记本电脑还没有完全普及,精讲多练在一定阶段解决了重点不突出、练习较少、学生动手能力不强的问题。随着学生笔记本电脑的普及(我校学生几乎人手一台,学校还开设了自由上机机房,随到随用) ,学生的需求发生了改变,希望课堂多学点新知识,课后自己通过复习和练习来巩固所学。需求的改变也必然导致教学方式和方法的改变。
2) Python在TIOBE编程语言排行榜中近一年来一直处于前列,热度只增不减,而且作为开源软件,新模块新用途还不断增多,学生学习兴趣非常浓厚。而每周2课时对于不断增多的教学内容来说非常紧张,有些部分只能浅尝辄止,没有时间进行深入讨论,还有些Python中值得推广和应用的部分根本没有时间介绍。这也导致有的学生出现“吃不饱”的现象,对学生的因材施教的效果大打折扣。
3 Python程序设计课程的混合式教学方法
“混合式教学”是以学生为中心的教学模式,教学过程的出发点和落脚点都是以促进学生的发展为根本目标[2]。混合式教学充分利用了科学技术的优势。教师可以按照学生的需求进行个性化教学,从重复性的填鸭式的教学模式中解放出来,让教师成为教学过程中的组织者、引导者和指导者[2]。线上线下结合的教学模式不仅是传统课程在教学手段上的创新,更重要的是给新商科学生自主学习的机会[3]。战“疫”期间的线上教学实践积累了丰富的经验,对遇到困境的分析研究和解决,无疑会对疫情结束后的线上线下混合教学模式的有效实施产生深远影响[4]。
3.1 混合式教学方法的教学流程
针对上面提到的Python程序设计课程存在的问题,我们对这门课程进行了线上线下混合式教学方法的改革和试点。为了达到更好的教学效果,教学内容均由团队成员精心策划和组织;为了更好地衔接教学内容,所有视频均由教学团队成员亲自进行录制。
教师用到的在线教学平台是BlackBoard,学校有专业部门负责维护和管理。上课前,教师发布课前学习内容到BlackBoard平台上,包括教学课件、配套的学习视频,并布置课前学习作业或测试,另出思考题加深所学和扩展,供学生讨论,同时也作为课前学习和课堂教学的衔接。通过课前学习作业可以检测学习效果和发现问题,以供课堂教学更有针对性地讨论。在课堂教学中,教师会讲解重点和难点并适度扩展,讨论课前学习中出现的共性问题和思考题,并提出新的问题,课堂教学结束后教师会在BlackBoard平台上布置课后作业巩固学习成果,开设“推广”栏目拓宽视野,同时布置下一次的课前学习内容。
3.2 Python程序设计课程的课前学习内容建设
Python程序设计的课前学习内容在Blackboard教学平台完成线上课程建设。课前学习内容包括:课前学习视频、课前学习课件、课前学习作业(或学习测试) 、课前学习思考题及讨论。
1) 课前学习视频。将课前学习内容分解成不同知识点,每个知识点录制一段微视频,每段视频时长不超过20分钟,供学生课前学习和预习。
2) 课前学习课件。与学习视频配套的学习课件,供学生自由下载。
3) 课前学习作业(或测试) 。根据课前学习内容布置的线上学习作业,检测学生学习情况,对课前内容的理解程度以及复习巩固课前知识。
4) 课前学习思考题。根据课前学习内容布置的在线思考题。思考题有一定的难度,有一部分知识属于课前学习内容的扩展,不要求学生准确做出来,但要有思考的过程。
5) 讨论。针对课前学习视频、作业(或测试) 、思考题中的解题思路、疑惑不解的地方以及编写程序出现的问题通过微信群或者QQ群随时随地进行自由讨论。
3.3 课前学习具体要求及学习形式
课前学习的好坏关系到线下课堂学习的开展。首先在教学方案中明确规定有课前学习的环节,采用线上方式进行;其次在微信群或QQ群中也会有通知提醒学生及时完成学习内容。学生在线下课堂学习之前必须观看视频并完成布置的学习作业或测试以检测学习效果,参与思考题的讨论并发言,为即将到来的线下课堂学习打下良好的基础。
3.4 Python程序设计课程的课堂学习内容建设
混合式教学包括线上教学与线下教学两种途径,线下教学是基于线上教学的学习成果而展开的有针对性的、更深入的教学活动[5]。Python程序设计课程的课堂教学环节是在线下多媒体机房进行。课堂学习与课前学习密不可分,紧密相连。传统课堂的“满堂灌”“一言堂”的教学方法已经不适合混合式教学中的课堂教学,而“翻转课堂”的形式倒比较合适。
课堂学习内容主要安排如下:
1) 线上课前学习内容典型示例或案例串讲,针对课前学习反映出来的问题多引导分析,巩固所学知识点,学生能达到举一反三的效果。
2) 将课堂思政元素潜移默化地融入课堂教学中,润物细无声。
3) 思考、拓展、讨论始终贯穿其中。通过课前布置的思考题,学生有一定的思路但可能还不成熟,或者还不能完全通过程序代码设计出来。老师一方面要利用学生和代码正处于“热恋甜蜜期”兴趣正浓,趁热打铁,适度在课堂上引导分析,帮助学生解决课前学习中留下的思考题,加深学生对知识的掌握和理解;另一方面老师必须能适度拓展,拓展对于课堂教学非常重要,它容易启发学生思维,既是对原有知识的加深,又是对新知识的理解,课后还可以继续讨论。
3.5 课堂学习具体要求及学习形式
跟课前学习一样,在教学方案中明示课堂学习采用线下“翻转式”方式进行。老师起到“领路人”作用,学生可以个人或者分成小组进行讨论,老师做归纳总结以及最后的点评。学生全程参与讨论,老师要把握好方向,或引导抛出思路,或将学生思路及时调整到正确的轨道上来。
3.6 Python程序设计课程的课后作业内容建设和学有余力推广
教师在讲解每一个知识点后,要通过课后作业的预设及实践案例的教学为主,帮助学生全面且充分地掌握课堂中所学习的内容[6]。经过课堂学习,学生对教学内容大部分能掌握,为了检测学习成果和学习效果,会给学生布置课后作业,课后作业或是程序设计题或是小测验的形式,以期达到教学目标。对于学有余力的学生开设“推广”栏目,介绍相关的新知识,以便更灵活应用Python语言。
4 Python程序设计课程的混合式教学实践
2020年我校在疫情防控期间实施了在线教学,在数字化资源建设方面,录制了一些相关的教学视频,在Blackboard平台上组织了不同形式的测试和最后的期末考试,在在线教学方面积累了一定的经验,为我们实施线上线下混合式教学打下了良好的基础。
4.1 课前学习
课前学习内容的准备是一个不断探索、精益求精的过程,内容要求难易适中并自带启发性。
在讲函数时,我们设计的课前学习内容有:函数定义-形参实参、位置参数-默认参数、关键参数、带返回值的函数、函数体中调用其他函数,这里的带返回值的函数指的是一个返回值,并布置了两道课前学习作业和一道思考题。如图1所示。课前学习内容把函数基本的思想和知识点讲清楚了,两道课前学习作业让学生掌握了定义函数的技巧和方法、如何设置提炼参数和返回值。据此,函数中的基本内容学生学习完毕。
【思考题】求任意多个自然数中每两个组成一组数字的最大公约数和最小公倍数。如自然数5,77,8,90,2,40,则求的是5和77、8和90、2和40的最大公约数和最小公倍数。如自然数5,77,8,则会输出“缺数字,不成对”。提示:利用辗转相除法求两个自然数的最大公约数。
要解决这个问题学生要学会的是如何将一个稍大的问题分解成若干个小问题,每个小问题都解决了,大问题也就迎刃而解。根据提示,一般学生都会想到先利用辗转相除法编写一个函数求两个自然数的最大公约数,最大公约数求出来用这两个数的乘积除以最大公约数就能得到最小公倍数,那么这个函数就可以写成两个自然数做参数,函数返回这两个自然数的最大公约数和最小公倍数(以什么形式返回也是学生需要考虑的问题) 。一般学生思考到这里就差不多了,学有余力的学生可以更进一步地讨论(这对即将到来的课堂教学也会起到促进作用,课堂教学中,除了老师讲解以外,这些学生一起参与讨论和发言也是热点和关键) 。
4.2 课堂教学
教学活动是联结学生与教学内容的纽带,倘若采用混合式教学,教师在其中扮演引导者的角色,同时,强调学生的主人翁地位[7]。混合式课程学习设计的理念应由传统课堂的知识传递的设计转向能力培养的设计[8]。在课堂教学中,首先针对函数的课前学习内容做一个简单的串讲,将课前学习的重点和难点给学生做一个归纳总结,然后针对课前学习作业做一个评讲,对学生典型的错误进行分析指正,再后针对留的思考题展开重点讲解和讨论。要解决这个思考题,首先要解决利用函数求两个自然数的最大公约数的问题,这个函数也是对课前学习内容的再巩固。程序如图2所示。然后修改这个函数让函数的功能扩展到最小公倍数也一并解出。在讨论过程中,有的学生直接提出,将最大公约数和最小公倍数作为一个列表返回,还有的学生大胆提问既然可以有一个返回值,那函数应该还可以有多个返回值。老师都对这些问题做出肯定的回答,同时表示程序写法各异能解决问题就好。经过讨论,写出来的程序可能如图3所示,图3最后一句写成return [y,m*n//y]就返回一个列表。
然后再跟学生讨论如何接收返回值的问题……,经过一系列的代码测试,学生已经明白在函数中如果直接返回n个值,用一个变量来接收,则接收到的是一个元组;如果用n个变量来接收,接收到的是对应的返回的n个值的具体内容。(可以进一步提问:如果返回一个列表那接收值的方法会有不同吗?)
那如何解决参数可以输入任意多个自然数的情形呢?老师这时候可以不失时机地抛出sum()、max()、min()等内置函数,解释这些内置函数的功能和特点,然后引出可变长度参数的知识,举几个实例让学生理解和消化。那如何解决成对问题?返回一个列表和返回多个值对于后面要用到的函数中调用其他函数的写法是否有影响,该如何写等,经过轮番讨论,可能写出的程序如图4所示。