新商科背景下Python程序设计课程混合式教学方法与实践

2022-08-29 06:59柳青
电脑知识与技术 2022年20期
关键词:思考题程序设计函数

柳青

(上海对外经贸大学统计与信息学院,上海201620)

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,学校有专业部门负责维护和管理。上课前,教师发布课前学习内容到Black‐Board平台上,包括教学课件、配套的学习视频,并布置课前学习作业或测试,另出思考题加深所学和扩展,供学生讨论,同时也作为课前学习和课堂教学的衔接。通过课前学习作业可以检测学习效果和发现问题,以供课堂教学更有针对性地讨论。在课堂教学中,教师会讲解重点和难点并适度扩展,讨论课前学习中出现的共性问题和思考题,并提出新的问题,课堂教学结束后教师会在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 所示。课前学习内容把函数基本的思想和知识点讲清楚了,两道课前学习作业让学生掌握了定义函数的技巧和方法、如何设置提炼参数和返回值。据此,函数中的基本内容学生学习完毕。

图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]就返回一个列表。

图2 求最大公约数的函数

图3 求最大公约数和最小公倍数的函数

然后再跟学生讨论如何接收返回值的问题……,经过一系列的代码测试,学生已经明白在函数中如果直接返回n 个值,用一个变量来接收,则接收到的是一个元组;如果用n 个变量来接收,接收到的是对应的返回的n个值的具体内容。(可以进一步提问:如果返回一个列表那接收值的方法会有不同吗?)

那如何解决参数可以输入任意多个自然数的情形呢?老师这时候可以不失时机地抛出sum()、max()、min()等内置函数,解释这些内置函数的功能和特点,然后引出可变长度参数的知识,举几个实例让学生理解和消化。那如何解决成对问题?返回一个列表和返回多个值对于后面要用到的函数中调用其他函数的写法是否有影响,该如何写等,经过轮番讨论,可能写出的程序如图4所示。

图4 思考题的一种解决方法

老师再次启发学生,利用条件语句和循环可以解决问题,那有没有更为简单的形式表述呢?既然返回一个列表,那考虑列表推导式如何,是不是可以使代码更为简洁?经过一系列的启发和讨论,学生有可能写出ssff 函数的用列表推导式表达的另一种形式,如图5所示。

图5 ssff函数的列表推导式表达

思考题到这里就讨论完成了,老师还可以不经意地提一句:既然加一个*作用这么大,那加**会不会又有什么其他含义呢?会学习的学生就会去找资料了……

课程思政是目前高校教学改革的重要内容,也是新商科改革的必然要求。课程思政不是某一门特定课程,它代表一种教育教学的理念[3]。在师生相互讨论的过程中,老师强调函数能解决代码冗余的问题,有了函数,代码就能重用。函数中调用函数给我们展现出只有通过互相帮助,互相促进,团结合作才能又快又好地解决问题完成任务……将这些思想融入函数的讲解中,不知不觉地,在课堂教学中就加入了课程思政的内容。

4.3 课后作业及推广

课堂教学完成以后,我们布置几个课后作业让学生巩固对可变长度参数的理解,如对任意个数数字字符串,将这些数字的平均值和大于平均值的数组成列表输出等题目。在“推广”栏目中,我们会介绍高阶函数的知识让有能力感兴趣的学生了解。在布置课后作业的同时布置下一讲的课前学习内容。

课后作业的布置和讨论更加激发了学生的兴趣,起到了加深学生对知识的理解作用,越讨论越分明,越讨论越清晰,激发了学生无限潜力。反过来经过讨论,教师也会更明白学生存在的问题,在下一次的上课中再对普遍存在的问题做最后的点评。

5 课程考核评价

Python程序设计课程采用闭卷考试,最后的总评成绩由三部分组成:课堂出勤、平时成绩和期末成绩。课堂出勤占总评成绩的10%,主要考查学生是否到课堂参与课堂学习;平时成绩占总评成绩的40%,由多部分组成,如课前学习作业(或测试)、课堂讨论及表现、课后作业等,这几部分缺一不可、互相支撑,构成混合学习中重要的检测环节。

6 结束语

总体而言,混合式教学依托丰富的线上学习资源,不仅能延展课堂教学空间,有效节约实体课堂学时,还能助推互动交流和过程性评价,及时评估和反馈“智育”“德育”目标的实现程度,为提升课程思政建设质量和效率提供保障[9]。Python 程序设计课程就目前开设试点情况来看,通过线上线下混合式教学,学生普遍热情较高,学习效果较好,对于知识的拓展和学习能力的增强起到很大的促进作用。课堂讨论拓展环节非常重要,起到承上启下的作用,贯穿于整个教学的始终。而且这种线上线下混合式教学设计对于现在疫情还没有结束的非常时期非常重要,如果疫情形势不容乐观则可全部转为线上教学,课堂教学可以通过开设腾讯课堂来进行;如果疫情形势较为乐观,学生习惯于这种教学模式,与原始的课堂教学相比,学生会学到更多的知识,能够拓宽视野,启发思维,对学生今后的学习生活起到促进作用。这种具有时代特征的混合式教学方法也可以推行到其他课程建设中。当然,如何设计线上和线下教学内容和案例也是一个任重而道远的工程,随着课程的开展需要不断地调整和努力。

猜你喜欢
思考题程序设计函数
二次函数
二次函数
函数备考精讲
基于Visual Studio Code的C语言程序设计实践教学探索
从细节入手,谈PLC程序设计技巧
超级思考题
超级思考题
高职高专院校C语言程序设计教学改革探索
2016年《护理学报》继续教育思考题参考答案
PLC梯形图程序设计技巧及应用