APP下载

基于PBL的软件工程专业Python程序设计课程案例式实验教学*

2023-09-05朱文强熊碧舟

中国教育技术装备 2023年2期
关键词:程序设计案例知识点

朱文强 熊碧舟

江西财经大学软件与物联网工程学院 南昌 330013

0 引言

Python 语言是一门简单易用、生态圈完善、应用广泛的计算机程序设计语言。它以其接近自然语言、代码编写效率高以及侧重问题求解等特点,在大数据处理、人工智能、自然语言处理、图像处理、计算机运维等多个方面得到了广泛应用。

目前,国内外许多高校都开设了Python 语言课程,开设专业不仅包括计算机、软件工程、大数据等与信息技术密切相关的专业,像应用统计、金融工程、数据法学等专业也相继开设了这门课程。许多高校甚至已将它作为计算机基础通识课程,取代了传统C 语言的地位。

案例式实验教学是Python 程序设计课程的有效教学手段之一[1-2]。为激发学生兴趣,李博等[3]参照SE2014 国际标准体系,构建了丰富的课程资源,并实现了案例融合式Python 课程教学。岳彦龙等[4]依据计算思维核心概念和思想,通过分析计算思维、Python、人工智能案例三者的关系,提出了以人工智能案例为驱动的Python 编程教学模型。陈广智等[5]针对目前软件工程教材理论介绍多、应用案例少的情况,设计一个GPA 变动分析案例,并针对软件工程理论,分析该案例覆盖的知识点。

实验是Python 程序设计课程教学的一个重要环节。在进行本次Python 课程案例式实验教学实践改革之前,笔者通过问卷调查、访谈及聊天的形式,对所在学院软件工程专业C 语言、Java 语言及Python 课程的授课教师、学生进行了一次较为广泛的调查。调研结果反映,现有程序设计语言教学存在的一些普遍性问题,具体体现在以下五个方面。

1)传统程序设计课程的教学方面,特别是C、C++等语言,教学多以知识点讲解为主,且知识点较为分散,学生无法对知识点进行融合,应用于大型项目开发实践中。

2)把C 语言作为大一的必修课,增加了学生学习的难度,不少学生特别是部分女生,甚至认为自己选错了专业,不适合本专业的学习。

3)现有的Python课程教师,大多是原来讲授C、C++、Java 等课程的教师,仍使用以教师讲授为中心的传统教学模式进行授课,教师讲解知识点,学生听课学习,课堂交流互动少,很难调动学生的学习兴趣和积极性。

4)现有的Python 课程考核评价方式单一,教师大多数采用传统编程语言的考核方式,比如以期末考试为主,导致学生的学习精力重点放在知识点的死记硬背上,较少关心知识点的灵活应用。

5)学生之间互动较少,同伴学习开展较少,教师布置的实验练习大多以知识点为主,学生大多是单兵作战,很少进行合作和互动,不利于培养和提高学生的团队协同开发能力。

根据这些调研结果,笔者通过对PBL 教学方法(Project-Based Learning method)进行了深入分析,以学生兴趣为主导,将大型主题程序项目案例分解成若干个小实验,将小实验与平时课程练习进行有机结合,构建一个兴趣驱动、分散实现的案例教学方案,以提高学生分析项目、设计模块、构建复杂系统的编程实践能力。

1 PBL 实践教学方法

传统的软件工程专业编程语言教学,如C 语言、Java 语言等,通常以知识点为导向,通过简单的教学例子来辅助学生理解这些知识点。这种传统的教学模式,通常是在个人电脑未大面积普及的情况下形成的,教学目的在于“知识点理解”,学生被动学习,很难对这些知识点进行融会贯通,且课程考核大多以试卷考试为主。

而随着个人电脑的普及,大学生基本拥有个人电脑,有充足的时间进行编程语言知识点的实践和练习,因此,程序语言教学应当以“知识发现”为主,而不再局限于“知识传递”。随着大数据时代和人工智能时代的来临,更需要致力于培养学生的计算思维、创新能力、解决问题能力和宏观项目构建等软实力,这正是教育部提出的新工科专业建设的具体要求。

PBL 教学方法最早由加拿大麦克马斯特大学医学院提出,是一种以学生为主体、以实践为手段、以问题为导向的实践案例教学方法[6],因其能有效调动学生的学习兴趣,培养学生的实践动手能力和团队沟通能力,而受到国内外教育界的重视[7]。

在PBL 教学方法中,P 包含双重含义,既包含问题(Problem)的意思,也表达项目(Project)的意思[8]。教师通过分析课程的实践特征和学生的学习基础水平,提出适合于学生学习水平的问题,学生在教师的指导下,以小组为单位,构思、策划和完成一个融合课程知识点的综合项目,最终提高自身的技能水平,解决教师所提出的问题。

2 案例式实验教学活动总体规划与课时安排

2.1 总体规划

基于PBL 的Python 程序设计课程案例式教学,主要聚焦于PBL 关注的三个核心问题,即学生、教师和项目。教师思考教学改革的方法与手段,对课程的实践教学特征进行分析,研究学生的基础水平,设计课程的考核方式,将传统的知识点教学转换为项目引导式的教学,通过与学生沟通交流,提出与课程相关的问题,构思出适合学生水平的项目要求,并围绕这些问题和项目提供相关课程知识点的讲解,提供相关教学资源。学生则根据教师提出的问题和项目,进行主动学习和协作学习,通过教师的知识点讲授、问题引导和课程资源,与小组成员协同实现项目。

基于PBL 的Python 程序设计课程案例式实验教学以问题为主线,总体规划如图1 所示。

图1 基于PBL 的Python 程序设计课程总体规划

2.2 教学内容及课时分布

Python 程序设计课程主要是让学生掌握Python 语言的编程基础,掌握第三方库的使用,培养学生使用Python 语言分析问题和解决问题的能力。Python 语言程序设计课程一般作为电子信息类专业的通识课程,不同专业在开设该课程时,侧重点可略有不同,课时根据学习内容可分为48-64课时不等。在面对软件工程专业学生开设Python程序设计课程时,考虑到本专业学生本身的学习基础较好,具备一定的编程实践能力,且部分学生已有C、C++、Java 语言基础,因此课程设为48 课时,分别使用翻转式课堂教学进行Python 语言知识点教学(含练习),使用线上线下相结合的教学及学习方式。线下学时48 课时,其中,知识点理论学习占24 学时,实验及项目交流24 学时,线上课时由学生根据自己的基础和兴趣安排。学习内容及学时分配如表1 所示。

表1 学习内容及学时分配

3 案例式实验教学设计

3.1 课程实验活动设计

本课程面向软件工程专业大二、大三、大四的学生,学生本身具备一定的编程基础,如果只是讲Python 的知识点,容易使学生失去学习兴趣,因此,必须将Python 语言与应用相结合,使得学生能学以致用,解决问题,才能提高他们的学习兴趣。

本课程教学活动采用PBL 教学方法,将课程教学分为课程教学、课堂练习和课后实践三部分。课程教学采用混合式教学,分为课堂学习和线上学习两个部分,课堂学习由教师讲授课程内容和知识点,线上学习作为补充。课堂练习是对教师讲授课程知识点的实践,学生通过对教师知识点的代码演示进行举一反三,对知识点融会贯通。

课后实践由课后实验和综合项目组成。其中综合项目在学期开始就由教师根据实际Python 项目开发热点应用,提出若干个项目指导方向,学生根据自己的能力和兴趣进行自由组队,成员人数限制在3 ~5 人。团队组长根据小组成员能力,选择某个方向进行构思,在后面的学习过程中不断完善规划和设计。在综合项目完成期间,小组分别完成需求分析和项目设计,代码编写和调试,撰写项目进度表,最后完成综合项目,并进行汇报和展示。而课后实验则是在综合项目的构思上,对综合项目的分解,完成一个个实验,并作为或修改作为综合项目的模块。

教师需在学生实验和综合项目过程中跟进,对学生小组的项目计划和构思进行沟通交流,确定项目的可行性,能否在有限期间完成等内容,并对学生实现项目需要学习的内容进行指导。在学生将综合项目分解为小实验的过程中,对学生的实验进行批改,指出存在的不足之处和修改意见,并就项目实现进度和小组长进行沟通,促使小组在规定的时间内可以保质保量地完成项目。项目完成后,学生需要对项目的实现过程进行总结,并提交实验报告。教师最后会根据学生的过程质量、最终项目表现等进行考核。

3.2 线上补充学习

本课程的课堂知识点讲授,是由教师对Python程序设计课程公共知识点进行讲授。教师会给出与项目第三方库的建议,而学生的项目可能会用到的第三方库各有不同,需要学生进行线上补充学习。

北京理工大学嵩天教授的国家精品在线开放课程“Python 语言程序设计”在国内具有较高的知名度,已在中国大学MOOC 上开设多年,具有丰富的教学案例和库的讲解,因此,本课程将嵩天教授的“Python 语言程序设计”作为课程指定的线上补充学习课程。

作为补充,教师会推荐一些国内知名的线上社区给学生作为交流学习使用。这样在他们遇到问题时,可以在这些线上社区向一些资深程序员求教。推荐的社区有Python 中国社区(https://pychina.org/)、Python 中文开发者社区(https://www.pythontab.com/)、CSDN 网站(https://www.csdn.net/)等。另外,课程教师还给学生推荐了几个知名的公众号,如“机器之心”“Python 小屋”“俊红的数据分析之路”等。

3.3 线下翻转学习

线下翻转学习采用小规模限制性在线课程(Small Private Online Course,SPOC)教学形式。在学生线上学习完成之后,以学生小组为单位,教师组织线下教学活动,对学生的线上学习成果进行掌握和了解。

在线下翻转学习中,通常以学生项目小组为单位,进行学习的交流和讨论。先由学生对各自的学习内容进行汇报,讲述自己的线上学习心得,包括各自负责的项目模块有何益处、存在哪些问题。然后由小组成员进行讨论交流,思考问题的解决方式。然后教师对问题的难点和重点进行讲解,并回答学生们的问题。最后由教师进行总结。整个线下翻转课堂两节课的时长大约90 分钟。翻转课堂结束后,学生根据课堂讨论交流的内容进行代码实现,完成各自的模块和实验内容,并于下一次课程前完成各自的任务。线下翻转课堂活动流程如图2 所示。

图2 线下翻转课堂活动流程

3.4 教学资源

本课程教学活动设计使用的教学资源包含三方面的内容,分别为线下教学教材、线上学习平台和作业交流平台。

线下教学教材使用的是笔者编写的《Python数据分析实战》,该书2021 年在清华大学出版社出版,目前已重印三次。书中提供大量的练习和习题供学生使用,并配套相关的答案,还提供了相关视频教学材料作为补充。

对于教学过程中扩展的内容部分,教师推荐中国大学MOOC 平台作为补充,并提供一些著名的Python 社区,如Python 中国社区、Python 中文开发者社区、CSDN 网站供学生交流学习使用。特别推荐北京理工大学嵩天教授的国家精品在线开放课程“Python 语言程序设计”,该课程具有丰富的教学案例和库的讲解。中国大学MOOC 平台具有签到、互助答疑、问卷调查、学习考核等功能,能够辅助教师进行分组讨论、问题解答等课堂活动。

使用超星慕课平台进行学生作业的提交和批改,该平台可实现教师课程的资料上传,作业限时发布,作业自动批改和考试等功能,能够对简单的知识点进行自动考核,减轻教师的教学工作量,帮助教师及时掌握学生的学习动态。

4 课程考核设计

由于课程使用的是案例式实验教学,因此,课程考核摒弃了传统编程语言,如C、C++、Java 期末试卷的考核形式。整个考核分为过程考核和期末考核两个部分,成绩使用量化形式计分,其中过程考核占60 分,期末考核40 分。

课程过程考核分为4 个部分,分别为练习成绩和实验成绩。练习成绩主要考查学生课堂学习过程中的知识点的掌握,包括练习结果、代码规范程度、练习讲解三个部分。实验成绩主要考查学生对章节知识的融会贯通,包括实验结果、代码规范程度、实验分析、与综合大项目的关系四个部分。

期末考核以综合大作业形式进行考核,主要考查大作业的逻辑完整性、项目展示效果、项目复杂度和团队合作效果四个部分。

具体课程考核细则如表2 所示。

表2 课程考核细则表

5 Python 案例式实验教学效果评价

课程结束后,通过五个方面对基于PBL 的软件工程专业Python 案例式实验教学效果进行评估和检验,并根据评估结果进行反思和总结,以在下一次课程活动中改进。

1)进行统一的上机测试,对比应用PBL 实验教学Python 课程班级(以下简称PBL 实验班)和以往传统Python 课程班级(以下简称传统课程班)编程能力的差异。

2)课程结束之后,对比PBL 实验班和传统课程班学生的参赛获奖情况,考查学生灵活应用Python 编程技术及项目创新能力。

3)进行问卷调查,对比PBL 实验班和传统课程班学生的学习兴趣、学习收益及进一步学习意愿的差异。

4)跟踪对比PBL 实验班和传统课程班的相关计算机等级证书通过率方面的差异。

5)跟踪对比PBL 实验班和传统课程班毕业设计选用Python 语言的差异,并对比毕业设计评优的差异。图3 为部分学生大作业的结果截图。

图3 部分学生大作业的结果截图

6 结束语

基于PBL 的软件工程专业Python 课程案例式实验教学是一项很好的计算机编程语言教学改革尝试,它针对软件工程专业学生进行分析,以PBL 教学方法为指导,融合线上、线下教学方式,获得了一定的教学效果提升。根据该实验教学的结果,可以得出以下结论。

1)传统以教师为主导,以知识点为教学核心的编程语言教学方式,已无法适应Python 这类应用型编程语言的教学模式。Python 教学应当以学生为中心,以项目、问题为主导,积极主动发现学生的兴趣和结合当下应用热点,课堂上组织学生自主讨论和交流,提升学生兴趣和课堂教学效果。

2)线上线下混合教学要灵活结合,线下教学应先把学生的基础打好,在教师的引导和建议下,通过线上教学资源进行补充学习。学生在线上学习时,教师需要随时掌握学生的学习动态,并及时发现他们线上学习中存在的问题。

3)解决问题是PBL 教学的根本,在进行Python语言教学时,需要引导学生结合自己的兴趣解决专业应用相关问题,并在教师的建议指导下,学习相关扩展专业知识,最后解决问题。在这个过程中,教师只是引导作用,学生才是解决问题的核心,让学生分析问题、解决问题,最终提高学生的动手实践的能力,全方位锻炼学生的项目开发能力。

4)小组合作学习有助于学生团队协作能力的提升,有助于学生沟通表达能力的培养,无论在进行课堂练习还是综合项目实践中,应该多鼓励学生之间的沟通和交流,特别是在进行分组时,更需要注意学生分组搭配的科学性。

5)线上教学平台和线上补充教学资源是PBL教学活动一个重要的考量因素,应结合学校的具体情况和学生的习惯,认真开展调研和分析并将其灵活地融入教学活动设计。

猜你喜欢

程序设计案例知识点
一张图知识点
一张图知识点
第四页 知识点 歼轰-7A
案例4 奔跑吧,少年!
基于Visual Studio Code的C语言程序设计实践教学探索
随机变量分布及统计案例拔高卷
从细节入手,谈PLC程序设计技巧
发生在你我身边的那些治超案例
高职高专院校C语言程序设计教学改革探索
关于G20 的知识点