Python语言程序设计课程教学方法探究

2021-07-01 04:45段亚西徐成振魏凌华高艳玲
科技风 2021年17期
关键词:列表实验课程序设计

段亚西 徐成振 魏凌华 高艳玲

摘 要:当下人工智能领域的发展突飞猛进,Python语言程序设计课程在高校开设已成为普遍现象,针对目前Python语言程序理论和实验课教育教学过程中,学生动手能力不强,学习动力弱、解决问题能力不足等问题,提出了一种有效的教育教学方法,使学生在学习的过程中,更加得心应手,学习效果更加显著。

关键词:python语言程序设计;人工智能;教学方法

1 绪论

随着时代的迅速发展,科技的不断进步, 人工智能领域逐渐步入人们的日常生活中。随之进入人们视野中的一个词“Python”也在流行。Python语言由荷兰数学和计算机科学研究学会的Guido van Rossum 于1990 年代初设计的,它是一种解释型脚本语言,应用极为广泛[1]。2016年,教育部高等学校大学计算机课程教学指导委员会发布了《大学计算机基础课程教学基本要求》,首次将Python语言作为程序设计入门课程的教学语言[2]。2018年3月起,教育部将Python语言列入全计算机等级考试科目中,在计算机二级考试中也加入了“Python语言程序设计”[3]。同时,从2021年2月份的TIOBE语言排榜中可以看出,Python语言仅次于C语言和Java语言排在第三的位置,表示Python语言最近这几年的发展也是非常可观的。近几年,在本科教育教学过程中,大多数中职及高等院校将Python程序设计这门课程纳入到计算机专业的必修课程中。也有一些院校将Python程序程序设计这门课程作为公共基础课,在校内开展教学。

Python语言有如此大的发展,离不开Python语言本身的优势,以及它优越的性能。Python程序设计语言是一种面向对象、有很强扩展性的解释型语言[4],Python语言简单易学,同时它是免费开源的,它的每一个模块和库都是开源的,并且代码都可以在网上找到[5]。它有很强的可移植性,Python程序编写完成后,无需修改就可以在Windows、Linux等操作系统中执行,另外,它也有非常丰富的第三方库,如用于数据分析的NumPy、pandas和matplotlib库等。除了Python语言本身特点的优势外,它还有众多的应用领域。比如用于图形图像处理,自然语言处理,web程序开发、科学计算和数据分析等。

2 Python语言程序设计教学中存在的问题

2.1理论课教学中存在的问题

传统的程序设计课程大多在理论课教室上课,实验课在机房上课,这种上课模式在学生在学习的过程中,相对来说较为枯燥。因为在编程语言类课堂上,学生只在听而得不到实践,偶尔老师会在讲台上对程序进行演示、分析。以本校为例,学生也只是在看着老师在讲台上进行演示,加之上课之前所有的程序都在在课前准备好的,一般都不会造成运行错误等问题。即使哪一部分代码出错,造成运行失败,老师一般会做出更改,以让学生看到正确的程序。对学生而言,学生看到的只是Python语言程序和程序的运行结果,对部分基础较好的同学而言,这种学习方式是可以肯定的,但对于基础较弱的同学而言,这种授课方式可能一时间接受度还比较低。加之计算机语言类的课程有些同学入门比较困难。

在此之前做过一次调查问卷,共发下问卷108份,收回问卷94份。当问及关于学生学习动力弱的原因时,有62.77%的同学认为思路少,无从下手;22.34%的同学认为难度较大,同时另外分别有7.45%的同学不感兴趣和屡试屡错,没有成就感,如图1所示。在课程教学过程中,学生大多数都依赖于上课所用教材,对于课后理论内容的学习素材,经过问卷调查显示,有54.26%的同学选择网络资源,课后还用理论教材学习的同学占40.43%,另外分别有2%的同学没有课后学习素材或购买、借用辅导资料,此外还有1.06%的同学选择其他,如图2所示,通过这个选项,可以看出,学生在学习的过程中,将近有一半的同学课后还是依赖于课本内容的学习,缺乏课外自主探究学习。此外,调查问卷还显示,当问及学生的学习态度属于哪一种时,有47.87%的同学态度属于一般,分别有14.89%和6.38%的同学属于不太积极和无学习意愿,另外有25.53%的同学比较积极,仅有5.32%的同学选择十分积极,如图3所示。相比较而言,学习对于课程内容学习态度也是影响学习效果的一个方面因素。

2.2实验课教学中存在的问题

专业实验课的教学大多是在专业实验室完成,教学模式多为以学生练习为主,指导教师讲解为辅的方式,可以概括成“思考—操作—(老师)讲解”这种方式,以本校为例,普遍的现象是实验课在上课之前把每节实验课所讲的部分,实验指导书发给大家,学生在看到实验指导书后,对本节实验课要操作的实验内容进行思考,以找解决的方式方法,完成实验内容,然后实验课指导教师把实验内容做一个完整的讲解,同学们在听完指导老师讲解之后完成本节课的实验内容。然而,这种做法也有一定的局限性,对于基础较好的同学而言,无疑是一种好的教学模式,但对于基础较弱的同学而言,和正常课堂教学模式几乎没有差别,还会有些问题模糊,不清楚如何做,还会像往常一样,跟着老师的步骤操作,有些甚至直接把老师讲过的代码直接复制粘贴到实验报告当中,达不到实验课教学应有的教学效果。

和2.1中提到的调查问卷相同,当问及学生在上机实验时(多选),希望上机指导教师应用做些什么时,有61.7%的学生希望老师对每道题详细讲解,带领大家一步一步完成项目,有47.87%选择只讲每道題的思路和难点,主要学生自己自我实践,有48.94%选择把题目思路形成文字发给大家,学生查阅资料独立完成实验,老师解惑答疑;有35.11%的同学选择对题目分小组进行讨论,然后进行实验,最好是老师讲解点评。如图4所示。从调查结果看,大部分同学希望老师能都每道题做详细讲解。

3 解决方案

3.1 理论课教学解决方案

针对以上存在的问题,理论课教学遇到的问题可以通过以下方法进行解决。

3.1.1课前

首先课前把要讲授的内容大纲在课前给同学们整理好发下去,让大家自主看一下上课所要讲授的内容,在内容上有个整体的概念。这样在学习起来会更加有侧重点,同时,学生在学习之前也可以把不清楚的问题先记下来,等到上课的时候大家把大家提交上来的问题起探讨学习,同时布置相关的练习来满足学生的学习需要,

3.1.2课中

课中,课中讲解的时候,采用内容类似比较的方式进行讲解,如在讲解Python中关于序列数据类型中的元组和列表部分内容时,首先在介绍完元组的定义及特点之后可以再列举列表的定义及特点,并分别举例子进行说明比较。然后再介绍元组和列表的相同点和不同点。例如:以江红等编著的教材《Python程序设计与算法基础教程》第二版[6]第五章序列数据类型为基础,讲解元组和列表。首先,把本节课要讲的章节大纲提前发给大家,让同学们有足够的时间来预习本节课所学的内容,在上课时,首先,给出两个例子,(1,2,3)和[1,2,3],让同学们回答一下两者的区别,分别从表面和具体的内容上做出解释。然后给出书面上元组的定义,它是一组有序序列,包含零个或多个对象引用[6]。它是不可变的对象,它的基本形式为x1,[x2,…,xn]或者(x1,[x2,…,xn]),其中x1,x2,…,xn为任意对象。接着,介绍列表的定义,它是一组有序序列的数据结构,同时列表是可变的,可以删除、修改、添加、查看列表中的元素,它的基本形式为[x1,[,x2,…,xn]]。对比上面两个例子可知,其中(1,2,3)所表示的是元组,而[1,2,3]表示的是列表。由于它们分别是不可变对象和可变对象,因此对它们分别进行添加修改或删除操作,来进行验证。再探讨元组和列表的共性,都可以进行索引访问、切片等操作,并用实例进行演示。然后对列表的特性作细致的讲解,如列表解析表达式及列表包含的方法,列表解析表达式需将基础的语法结构,实践操作做讲解,再举例说明列表解析表达式的用法,最后给同学们出一个练习题以巩固加强所学内容即可。列表包含的方法如append()方法、extend()方法、clear()方法、remove()方法、pop()方法、insert()方法等,再分别对append()和extend()及pop()、remove()作比较而得出各方法的用法,如pop()方法和remove()方法都是列表中用于移除元素的方法,pop()中如果含有索引下标数字,它的作用是用于删除并返回该元素所处在位置的下标,如果pop()中省略索引下标,默认是删除最后一个对象,而remove(x)方法则是移除列表中第一次出现的x,若对象不存在,则会导致出错ValueError。同时,以append()和extend()方法做对比举例,如表1所示。

3.1.3课后

课后,除布置相关的课后作业外,分小组让同学们完成相应的程序小游戏,如数字猜猜猜游戏,计算器小游戏,五子棋、人物拼图等游戏让同学们练习以增强同学们的实战操作能力。把教材中出现的常见错误示例报错整理成结构合理的文档发给同学们,以便同学们学习。给同学们找一些好的学习资源让同学们自主探究学习,如中国大学MOOC学习平台、超星学习通平台、慕课平台等,网上免费的学习资源还是相对来说也比较充足的,基本上都能找到与所学内容相关的知识点。此外,笔者也在超星学习通平台上传了Python程序设计课程的视频资源和学习资料,以供同学们学习。

3.1.4课外

课外,在学习的基础上,要通过一定的实际操作演练才能把学到的知识加以运用,以体现学习知识的价值。另外,经常组织同学们参加比赛,如“互联网+”大学生创新创业大赛、中国大学生计算机设计大赛、全国大学生统计建模大赛、全国大学生电子商务三创挑战赛、全国大学生电子设计大赛等一系列竞赛以提高学生的知识运用及专业技能。

3.2实验课教学解决方案

实验课上机也是教育教学中一个重要的环节,它是理论课上教师对教材知识点的讲解的实践,有个理论指导,实验才能顺利进行,因此,实验课在教学中不仅仅是教同学们解题的思路和让同学们上交实验报告册,更重要的是让同学们掌握良好的学习方法。

针对实验课中存在的问题,提出“预(复)习-思考-操作-(教师)讲解思路-再思考-再听讲-反思”的解决方法,得到了较好的教学效果。预(复)习就是在实验课前把要讲的实验指导书提前发给同学们让他们知道本节实验课要做哪些内容,以及做到对某些知识的巩固;思考也就是说在知道做某一部分实验内容之后思考一下,这部分实验内容和書上的哪些知识点相关联,以及如何运用教材上的知识解决实验指导书实验内容;下一步操作是经过思考之后把想法转变成实际的一种做法,当对实验内容有个想法之后,便会实际操作来解决问题,在进行代码编写、查看教材中的内容没有得不到解时,换一种思路,试试能否行得通;然后是教师讲解解题思路,针对每节课的实验指导书,对实验内容的实验思路做讲解,此时不编写实验代码,只提供解题思路。如果在上一步有疑惑的同学就会按照新的思路来解决问题,进一步巩固了知识点,开阔了同学们的视野,当听过老师讲解的解题思路后,学生再做进一步的思考;然后学生在思考,考虑老师的解题思路和自己做的时候解题思路的差异,对比差异,了解不足,以完善实验内容;接着是再听讲,在这一步,老师对实验内容做细致的讲解,对每一个实验内容都做精讲,同时把实验代码的实现思路也给同学们讲解清楚,当同学们有疑问时,可以随时进行提问,并给同学们认真解答所遇到的疑惑;最后就是反思,也就是同学们对未做出来实验内容、老师讲解后做出来的以及老师未讲就做出实验内容的反思,问题已经解决的同学可以反思一下有没有其他解决问题的方法,其他同学考虑为什么当时没有这么想,或者按照老师的思路去想未做出实验内容的原因,之后完成实验报告。笔者使用这种实验课的教学模式经试用也取得了一定成效。

4 结语

Python语言程序设计教学方法的最终目的就是让同学们在学校能够学得知识的同时,感受到程序设计语言的魅力,并在以后的应用过程中,能够灵活运用。因此,本文所探究的Python程序设计教学方法在理论课教学和实验课教学过程中都有涉及,在一定程度上为Python语言程序设计课程教学起到了积极的作用,使学生的学习效果更加显著。

参考文献:

[1]范海燕.信息技术在Python教学应用中的思考——以Python环境搭建为例[J].湖北农机化,2020(01):93.

[2]嵩天,彭远红,宋文婷.理解和运用计算生态推动Python语言教学改革[J].计算机教育,2017(08):6.

[3]许洪云,陈朝焰.新工科背景下Python教学探讨与实践[J].计算机时代,2021(02):96-98.

[4]王亚萍.《Python程序设计》课程思政改革的几点思考[J].智库时代,2020(10):146-147.

[5]曹洁,张王卫等.Python程序设计与应用[M].北京:人民邮电出版社,2020.

[6]江红,余青松.Python程序设计与算法基础教程(第2版)[M].北京:清华大学出版社,2019.

基金项目:安徽省教育厅自然科学一般项目(KJ2020B12),2020年校级质量工程项目(2020xjxyj002、2020xjxyj003)

作者简介:段亚西(1991—  ),男,安徽阜阳人,硕士,助教,研究方向:模式识别与人工智能、计算机教育。

猜你喜欢
列表实验课程序设计
基于OBE的Java程序设计个性化教学研究
项目化教学在Python程序设计课程中的应用
C++程序设计课程教学改革研究
医学专业“Python程序设计”课程教学改革总结与思考
扩列吧
有趣的实验
魔术师的考验
导学案在化学实验课中的应用
列表法解分式方程问题探索
列表画树状图各有所长