0 引 言
随着人工智能在当下的作用及未来的前景越发清晰,整个社会对人工智能人才的需求在飞速增长。为了缓解国内人工智能人才紧缺的问题,获批的智能科学与技术专业也在逐年增加[1]
。以BAT (百度、阿里巴巴、腾讯)为代表的互联网企业和以ICT (信息与通信)基础设施和智能终端提供商为代表的华为公司近年来对人工智能人才也提出了明确的需求,技术人才招聘需求以往以掌握C 、C++和Java 为主,而近几年也逐渐为掌握Python 语言的人才提供同样的机会[2]。Python 是一门面向对象的解释型高级程序语言,凭借其语法精炼、轻量级运行效率和强大而丰富的开源科学计算库已然成为主流的程序设计语 言
[3-4]
。它具有C++和Java 等面向对象语言的封
装、继承和多态等特征,又具有解释型语言的跨平台的特点,最大的优势在于它的开源使得Python 具有其他高级程序语言无法匹敌的第三方库,非常适合大数据分析、深度学习、自然语言理解等数据量大,又需要各种科学计算的应用[5]。
1 课程定位和课程目标设置
1.1 课程定位
为响应国家人工智能发展战略,培养优秀的
人工智能方向人才,在整个课程体系当中,可以将专业课程分为初阶、中阶、高阶3个层次,初阶主要是让学生具备基本的编程能力和数据处理的能力,扩展学生的知识面,提高学习兴趣,课程主要包括Python 语言、C++编程语言、离散结构、人工智能导论、数据结构与算法分析等课程;中阶主要是让学生能够熟练配置运行环境,应用Python 语言对数据进行分析和处理,具备一定的算法设计能力,课程主要包括机器学习、数字图像处理、深度学习、Linux 操作系统应用基础等课程;高阶主要是让学生具备较好的算法应用和设计能力,具备较强的数据分析和处理能力,课程主要包括图像分析与理解、计算机视觉算法及应用、深度学习框架及应用等课程。由此可见Python 语言课程作为人工智能课程的一门基础课程,不仅承担着让学生掌握编程语言的责任,同时也为后续中高阶课程提供技术支持,其作用在于培养学生的编程能力,使学生具备计算机思维能力,最重要的是引导学生乐于运用Python 这一工具解决
生活和学习中各种问题。
1.2 课程目标
在上述的课程定位下,Python 语言课程在智能科学与技术专业背景下的课程目标至少包含如下几点。课程目标1:理解和掌握Python 基本程序设计方法,建立起牢固扎实的理论基础;课
基金项目:金陵科技学院高层次人员工作启动费资助项目(jit-b-201805)。
第一作者简介:沈乾彦,男,讲师,研究方向为计算机视觉,*******************。
Python 语言课程教学改革探讨
沈乾彦,赵海峰
(金陵科技学院 软件工程学院,江苏 南京 211169)
摘 要:针对智能科学与技术专业背景下的Python 语言课程教学中存在的问题,分析该课程在整个培养体系下的课程目标以及与后续专业课程的支撑关系,提出课程改革的一些思考和方法,旨在为应用型本科院校培养人工智能方向人才提供良好的参考和建议。关键词:教学改革;Python 语言;智能科学与技术;应用型本科
择;课程目标3:培养学生使用Python编程技术解决实际应用问题的能力;课程目标4:培养学生自主学习的能力,能够利用多种手段和途径完成自我学习。
一个课程子目标的实现可以促进其他课程子目标的实现,如图1所示,当学生具有牢固的理论基础(课程目标1),就更容易理解和掌握Python扩展库的使用(课程目标2),那么就能更好地解决实际应用问题(课程目标3),从而提高了学习信心和兴趣,促进学生自主学习(课程目标4)。课程目标2是针对Python语言区别于其他编程语言的优势而设定的。传统的程序设计课程更多地关注课程目标1和课程目标3的达成,课程目标2和课程目标4的达成往往被忽视。大的优势在于它丰富多样的第三方库,而当下Python语言课程更多的是讲解开发环境、基础语法、程序设计方法和面向对象等基础知识。由于课程缺乏对第三方库使用的正确引导,使得学生在后续的学习中因不断地接触新的第三方库而又要记忆一堆新的概念和规则感到灰心丧气。
2.4 课后习题缺乏探索性、综合性和趣味性
当前Python语言课程的课后作业往往来自于书后的习题,其知识点是孤立而枯燥的。虽然对于巩固课堂知识有帮助,但却忽视了培养学生的学习兴趣、自主学习能力和综合运用所学知识的能力,无法促进学生将Python融入到平时生活当中。
2.5 实验环节不理想
实验课在Python语言课程中具有非常重要的地位,其核心在于培养学生解决实际问题的能力。由于不注重培养学生的计算机思维能力,且实验往往缺乏合适的难度梯度设置,学生当面对一个巨大的难题时,感到难以下手,学习的兴趣受到打击。同时,单一的评分方式难以充分调动学生自主学习的积极性。
3 关于教学改革的几点建议
3.1 培养学生通过阅读帮助文档完成自主学习的能力
教师在讲解某一个对象时,不应拘泥于穷尽对象的所有细节,而应该挑选出重点或不易掌握的几种方法进行讲解。在讲解的过程中,可以给学生提供几种方式去查询和学习该方法,同时带着学生一起去阅读帮助文档,让学生掌握如何通过查阅帮助文档来实现自学。
事实上,除Python基础库外,根据Python 的第三方库不同,其说明文档的书写方式和书写规则也不同,如PIL库的帮助文档与Numpy 库的帮助文档书写方式完全不同,Numpy库更加规则,而PIL库更像
是笔记。以Numpy库的unique函数为例,教师在引导过程中,首先应该
numpy库不具有的功能有介绍Numpy库帮助文档的书写格式,然后通过阅读函数说明获得该函数的用途,其次通过阅
图1 课程目标之间的促进关系
2 Python语言课程教学中存在的问题
2.1 教学手段单一,无法调动学生的积极性
理论教学采用以讲授为中心的传统“填鸭式”教学方式,整个教学过程学生处于被动状态,教学手段过于单一,无法调动学生的学习积极性[6]。当前Python语言课程采用以PPT为主要多媒体工具,与学生的互动形式往往只采用提问法,这样做并不能让所有的学生尽可能地投入到课堂中来。同时,也没有利用好Python强大的跨平台能力。
2.2 教学安排不合理,过于侧重知识讲解
教学过程中,知识点讲解过细,却忽视了培养学生从帮助文档中查和获取知识的能力。教师在讲解某一知识点的时候,往往会将其使用方法尽可能地罗列给学生。学生们疲于记忆,能够对照着书本对某一函数进行应用,却很难利用帮助文档去学习和使用一个新函数,学生往往对阅读Python自带的帮助文档感觉非常陌生且困难。
return_inverse参数是一个可选参数,其数据类型为布尔类型,再通过阅读函数返回对象说明,获得该函数使用方法,最后给出一个例子展示该函数的使用。只有让学生不再惧怕阅读帮助文档,且能够熟练使用帮助文档,才让学生更加愿意去使用Python,从而将Python融入到他们的日常生活中。
3.2 培养学生学习、选择和使用第三方库的能力
Python语言最大的优势莫过于其丰富多样且功能强大的第三方库,教师在授课时可以将第三方库的使用
贯穿整门课程。采用案例教学法向学生逐步展现如何分析问题——将一个大问题分解成为多个小问题;如何选择第三方库——通过阅读第三方库的介绍和帮助文档提纲来了解第三方库的功能;如何利用帮助文档来使用第三方库;最后设计出该问题的解决方案。整个过程还会涉及计算机思维、模块化编程和面向对象编程等概念。
在学习和使用第三方库的过程中,学生普遍反映由于不同库要求处理的数据格式不同,使得将数据在不同库之间来回切换时晕头转向。因此,教师应当注重培养学生学习第三方库的技巧。以Numpy库与PIL库之间数据转换为例,PIL库处理的是Image类型的数据,Numpy库处理的是array类型的数据。将Image类型转换为array类型,通过阅读Numpy库的帮助文档可以知道array类的构造函数可以将任何暴露array接口的对象转换为array数据类型,那么通过Python自带的dir函数可以查看到Image类型数据包含_array_interface_方法,因此可以直接调用numpy.array进行数据转换。将array类型转换为Image类型,通过阅读PIL库的帮助文档可以查看到Image.fromarray 函数就有这样的功能。通过带着学生一步步去学习和使用第三方库的帮助文档,使学生知其然更知其所以然,从而能帮助学生更好地使用第三方库,同时也提高了学生的自学能力。
3.3 采用随时随地组队的方式进行授课
与传统高级程序设计语言相比,Python具有非常优秀的跨平台能力,且Python由于其内网的工具如手机
、平板电脑等,就能立即进行Python编程。教师可以在上课前让学生在计算设备上安装好免费的Python IDE软件。在授课过程中,利用案例教学法,结合讨论、启发、分组参与等教学方法进行教学活动,让每个学生都可以全程参与到教学活动当中,充分调动学生学习的积极性,提高课堂质量。以学习列表为例,教师给出一题“查字符串数组中的最长公共前缀”,根据人数将学生分成若干组进行3轮比赛,第1轮以最先实现该功能为目标,第2轮以实现该功能耗时最短为目标,第3轮以实现该功能消耗内存最少为目标。每一位学生都可以通过自己的手机进行实操,通过小组之间的比赛使得每一位学生都积极地参与到课堂学习中来,并深入学习到列表各种方法之间的优劣性,这样提高了课堂质量。
3.4 课后作业与学生生活紧密连接
Python本质是一个编程工具,只有当学生乐于使用这样一个工具去帮助他们改善和提高自己的生活,学习Python才变得非常有意义,因此,课后作业需要具有实用的功能性,且具有探索性和综合性,从而激励学生多思考多学习。而这样的课后作业素材非常丰富,例如利用Python+Numpy+Scipy辅助学习高等数学、线性代数、概率与数理统计等,利用Python+time+winsound制作一个定时闹钟,利用Python+Seaborn绘制统计图表,利用Python+xlrd 帮助处理日常Excel表,利用Python+wordcloud 制作词云,利用Python+Image制作照片墙等。上述例子涉及的代码量并不多,大部分都在5~20行,但具有一定综合性且需要学生去学习第三方库才能很好地实现,同时也可以增强学生的实际应用能力,提高学生的学习兴趣。
3.5 设置分层次、有梯度的实验目标
Python语言课程的实验教学在整个课程中具有很重要的意义,如果将实验指导书写得过于详细,则不利于培养学生实际项目开发的能力;写得过于简单,又容易导致学生无从下手,从而丧失学习的兴趣。因此,分层次、有梯度地设置实验目标是非常有必要的。学生存在个体差异,通
据不同的实验目标给学生不同的实验成绩。在保证大部分学生都能完成基本实验目标的同时,也能不断激励学生向着更高的目标去努力。以“学生成绩统计与分析”实验项目为例,共设置4个难度递增的实验目标。实验目标1是基于Python+xlrd+xlwt实现读取多个班级成绩统计表并合并为一份统计表;实验目标2是基于Numpy 库实现成绩统计,包括各班各门课程的平均分、最高分、优秀率和及格率并生成一张统计表;实验目标3是基于Seaborn库实现全年级各门课程成绩统计数据的可视化,包括箱线图、直方图和热力图;实验目标4是根据各班往年数学成绩统计表基于Scikit-learn库实现各班明年数学成绩预测。学生完成实验目标1就达到了基本的实验要求,而越高的实验目标越具有实际的应用价值,学生通过努力达
到更高的实验目标后会获得极大的成就感。
金陵科技学院软件工程学院结合自身各项条件和特点在2018年申请开设智能科学与技术专业(以下简称“智科专业”),2019年获批并于9月招收了第一批学生,针对智科专业Python语言课程的不足,进行了如下教学探索。不拘泥于编程语言枯燥而乏味的语法,让学生掌握如何学习和使用帮助文档,培养学生自主学习能力;积极引导第三方库的使用,培养学生的综合能力;灵活使用在线Python编程平台,提高上课质量,培养学生计算机思维能力;设置更加丰富有趣的课后作业,提升学生实践能力;设置分层次有梯度的实验目标,激励学生勇于挑战困难,解决实际应用问题。通过1个学期1个班的教学实践,对比同类专业,智科专业的学生更愿意通过编程来解决学习中的问题,且使用编程工具更频繁更自信。下一步,将以机器学习算法应用课程为例,探讨进一步的改革方法。
参考文献:
[1] 罗定生, 李文新, 邓志鸿, 等. 北京大学人工智能课程教学改革与实践[J]. 计算机教育, 2019(10): 3-8, 15.
[2] 王元辰. 基于OBE理念的Python课程教学改革研究[J]. 计算机产品与流通, 2019(9): 223.
[3] 魏冬梅, 王秀华, 王影, 等. 基于Python的程序设计通识课程建设与教学实践[J]. 计算机教育, 2019(2): 69-73.
[4] 刘彦, 赵欢, 杨科华, 等. 新工科背景下成果导向的计算机系统课程教学改革[J]. 计算机教育, 2019(7): 1-4, 9.
[5] 李丹丹. 浅析Python在大数据课程教学改革中的作用[J]. 教育现代化, 2019(82): 115-116.
[6] 秦科, 刘贵松. 面向Python应用的大学教学改革初探[J]. 计算机教育, 2017(9): 21-25.
(编辑:赵原)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论