新工科背景下的Python 程序设计教学微改革
作者: 陈浩强 梁振 刘方 柳伟续
摘要:人工智能领域的发展与普及给高校课堂教学带来了新的变化与挑战。然而,由于成本和规模等因素的限制,传统课程教学尚未广泛采用智慧教室等形式。本文以教学方法为突破点,结合信息化手段,对Python程序设计课程教学活动进行了一系列微改革,旨在增强课堂的信息化程度,提高课堂的价值与内涵,进而提升传统课堂的价值。
关键词:计算机教育;教学改革;Python程序设计;计算思维;课程思政
中图分类号:G424 文献标识码:A
文章编号:1009-3044(2024)17-0141-04 开放科学(资源服务)标识码(OSID) :
0 引言
教育部于2018年印发并全面推进建设的高等教育"新工科、新医科、新农科、新文科"的“四新”教育教学改革,是在信息爆炸、知识量加速膨胀、知识获取更加容易的背景下,对高等教育工作全局的新思考和大战略部署。目前,较为热门的“生成式人工智能”模型ChatGPT作为第一个实用的通用型人工智能模型,一经应用便以其高智能、高精准、高效率的信息整合能力惊艳了世人,并由此引发了人们对当前高校教育模式的思考与担忧。然而,这类通用型人工智能仍然可以视为信息获取与信息整合方面的进步,尚未脱离“工具”的范畴。知识的信息化与智能化意味着人们获取知识、传播知识和生产知识的方式与效率发生了极大的变化,但“四新”教育改革的时代背景依然适用。
毫无疑问,人工智能的发展将更加迅速,对生活和教学环节的影响与改变也将更加全面和彻底。然而,人工智能产品的产出质量、目的和倾向性依赖于人们的“喂养”,过度依赖人工智能系统可能带来一定的社会风险。因此,在高等教育教学过程中,人工智能系统应被视为知识传授中的工具,课堂的重心应逐渐转向以人类生存与发展为主线的交互和思维能力。人们之间交互的需求和能力获取更加依赖人类自身;深度思考能力的获得需要与现实世界的交互体验,并与知识的交叉和创新思考密切相关。这是教育系统中与真实世界联系密切,且难以被人工智能取代的部分,也是我们对课堂教学微改革的重要着力点。
Python语言是人工智能系统研究应用中的一种语言,其语法简单易学,并在诸多专业领域的信息化应用方面有丰富的资源。在高等教育中,Python语言程序设计能为后续各课程中融入信息化思想、创新思想和学科交叉应用提供能力基础。因此,在贯彻落实“四新”教育教学改革框架下,Python语言程序设计课程在“四新”人才培养方面具有非常积极的意义。
1 目前Python 程序设计课程教学普遍存在的问题
计算机应用类课程往往在学生入校前两学期开设,这个阶段的学生计算机应用水平相对较为薄弱。与其他程序设计类课程类似,学生普遍反映Python程序设计课的知识点较多,与非计算机课程的知识结构有很大不同。与此同时,信息技术的发展和进步,使得知识的获取、生产与应用方式都迈入了智能化时代。在这样的背景下,传统的课堂教学受到了更大的挑战。
在Python课程的授课过程中,常出现以下问题:
1) 知识的信息化与智能化使得知识获取更加便捷和准确,学生对课堂的依赖降低。2) 课程知识点繁多,课堂教学过程相对枯燥。3) 学生在理解综合性程序代码时遇到困难,理不清思路。4) 学生普遍认为Python很有用,示例代码也很有趣,但在面对实际问题时没有思路,不知道怎样开始编写代码。5) 课程安排模式化,难以跳出将Python程序设计作为编程工具的思维模式,不能很好地体现课程的内涵。
归结起来,这些问题的核心在于教学目标、教学组织架构和教学方法设计得不够合理,不能很好地适配学生的需求。
2 Python 程序设计课程教学的思考与实践
对于Python程序设计课程的教学,应本着务实的指导思想,充分认识到学生的基础有较大差别、接受能力的差异化较大、课后有效学习时间的投入也各不相同。教师应尽可能由浅入深地解构示例程序,用通俗的方式表达,以减小理解难度。形象化的表达方式有利于学生的理解和记忆,也可以建立友好的师生互动交流基础。授课过程中还应对常见的代码错误进行适当的提示与总结,这样可以增强基础薄弱或接受能力偏弱学生的信心,提高学习效率。在示例程序的讲解中,应以培养学生的计算思维为目标,从计算思维的高度加以引导。
课程思政和计算思维能力的培养是在课堂与信息化、智能化技术应用在人才培养方面互补关系的关键,是高校计算机课程的新内涵,也是提高学生课堂参与度的突破点。高校教师可以通过课程思政的引导和计算思维的训练,展开学科知识交叉、创新应用和思维深度方面的能力培养,同时兼顾培养学生的健全人格和品德。
2.1 线上、线下混合的教学模式
Python程序设计作为一种实践性较强的课程,需要师生之间有更多的互动交流。在多种现代教学形式中,线上、线下结合的混合教学方式因其灵活的课堂组织形式、低成本的教学环境布置,能够适应复杂多样的学生状态和层次,更加适合公共课性质的Py⁃thon程序设计课程教学。
2.2 理论课的教学
2.2.1 知识结构的构建
对不同特点的知识,需要采用相应的教学策略和方法。作者将理论课程内容划分为基础知识、应用、扩展三个方,按照各自的特点从教学方法上加以区分。
1) 基础知识。基础知识在教学环节体现为进一步划分的、更加基本的知识点。理想的情况下,应按照知识点制作简短的视频资料,并根据学生的反馈不断迭代资料的内容和形式。
2) 应用。应用是指对基础知识的运用。基础知识的应用不仅体现在展现其功能特点的零散代码中,还会成为综合程序实例的一部分。对基础知识的灵活应用是编写复杂程序和解决实际问题的基本能力,也是帮助学生理解基础知识的重要途径。由于基础知识涉及的点较多,相关示例设计应以形式简洁、思路清晰为主,避免过分追求代码的简省或“灵巧”,以免给学生带来不必要的困难。
3) 扩展。扩展指课程知识内涵的延伸,通过课程思政和计算思维来呈现。这部分内容可以将课程知识与其他学科、社会、生活相关的问题或现象相联系,建立多学科知识的关联;为学生提供解决更多问题的模型、模式和“素材”;并促成学科交叉与创新思维的基础框架。
这种知识结构划分与教学方法设计综合考虑了学生的基础、接受能力、学习水平和学习进度的差异。教学过程中,可以使学生在基础知识的微观细节与宏观全局方面反复对比,帮助学生构建更加清晰的知识体系和灵活的应用模型。在课堂组织方面,这样的设计能够帮助教师适时、合理地引入课程思政案例,让学生体验到马克思主义哲学辩证思维在课程中的具体运用和表现,感受学科知识交叉的奥妙与人类文明的伟大,从而在学生性格、人格和情怀培养方面发挥积极作用。
在计算思维层面的引导方面,通过应用问题的分解、抽象、建模、算法、调试、迭代、泛化训练,可以让学生逐渐理解并形成科学的思维模式,为全面建立计算思维打下坚实基础。
由于Python程序设计语言基础知识点多、应用方式多样,难免存在知识碎片化的问题。碎片化的知识应用会导致学生思路混乱、无所适从,加大学习难度。这就需要教师在演示、讲解或教学资料的呈现环节适时加以引导和梳理。完整且循序渐进的知识铺垫会让知识的应用变得有迹可循、脉络清晰。再辅以合理的课后作业任务,就可以很好地帮助学生建立课程的知识脉络。例如,在讲解如何使用循环语句编程实现字母组成的金字塔时,可以从单个符号的输出开始,逐步演化到由多个符号组成的矩形、平行四边形、三角形和菱形的输出,直到完成数字三角形、字母三角形的输出。循序渐进的效果比直接讲解字母三角形的示例代码更加有条理,学生也更容易理解。
2.2.2 视频教学材料的运用
根据许多教师的教学经验,有不少学生因为不好意思打断课堂进程,无法及时解决自己的疑惑或问题。这些问题可能会积累,成为后续学习中的大麻烦。为此,可以提前为学生提供网络上经审核确认无误的解答信息,或者自制相关知识或问题分析与讲解的视频。在条件允许的情况下,还可以录制授课过程的视频,作为学生的复习参考。相关的视频材料不仅能帮助学生根据自己的需要回顾课堂中的难点,也可以减轻教师课后的辅导工作量。
发放资料的SPOC(小规模限制性在线课程)平台形式可以是雨课堂、头歌等公共平台,也可以是自建系统,甚至是课堂专用的在线聊天群组,具体以学生能及时获取教师发布的课程资料为宜。
2.2.3 课后作业的设置
作为提高课程学习效果的手段之一,课后作业任务可以督促学生及时对课程知识进行复习和训练。对于计算机应用类课程来说,课后任务可以按知识记忆、理解能力、应用能力、知识表述能力等维度进行分类设置。在日常教学实践中,通过设置对照组进行对比,发现坚持布置课后作业的班级在课堂纪律和学习效果方面优于未布置课后作业的班级。
2.3 实验课的教学
实验课是理论课在实践应用方面的延伸,主要是帮助学生理解知识点的应用方式与特点,体验相关知识的引申应用和灵活性。我们在实验课教学中参考了专业课程的“课程设计”模式,将实践目标划分为基础知识训练、项目应用实践和项目拓展实践三个方面,以开源平台的小型项目为主要素材,跨学期展开项目式教学训练。
1) 基础知识训练。基础知识训练是对理论课基础知识的基本应用场景模拟训练。除了教材中已有的示例与题目,还鼓励学生自己动手把相关知识点按其特点根据自己的想法转写为简短的代码。例如,想要验证列表的截取功能时,学生可以通过创建变量、赋值、截取、输出查看等简单的语句组合,在实际编译环境下运行并观察代码的结果。对于难度稍高的问题,鼓励学生在debug模式下逐句跟踪观察。在实际运行环境中观察各知识点的应用,比死记硬背教材的描述或代码更加直观、形象,能让学生更加熟悉程序代码的调试方法,从而快速掌握Python程序设计课程的特点,并逐渐减少对老师的依赖。通过这种方式,学生与老师的互动可以从基础的知识问答转向更深层次的问题探讨。
2) 项目应用实践。项目应用实践模式与课程设计相似,主要依托开源的小场景应用项目,让学生亲自体验开源项目的实现过程。这部分的实践不分组,具体应用的题目一般由学生自选,也可以由老师提供主题。每位同学都要亲自动手完整实现相关功能,并在开源项目基础上进行一定的功能完善和改进。项目推进分为选题、中期检、结题三个阶段,每个阶段学生都需提交相应阶段的报告。项目结题时需要制作演示文稿并录制视频,全面介绍项目的功能构成、代码分析、经验教训等。
3) 项目拓展实践。项目拓展实践属于可选训练,利用项目应用实践的经验,由学生自己动手完成一个具有实际应用价值的小型应用开发项目。学生根据自己的兴趣选择主题,在完成项目后制作相关演示文稿并进行现场汇报讲解。根据项目的实用性、创新性和完成度,可以选择性地推荐学生参加相关比赛,使项目拓展实践成为课程赛教融合的切入点。
在实验课教学过程中,我们以基础知识训练为主、项目应用实践为辅,并将项目拓展实践作为进阶训练。通过这样设计,每位同学都能体验一个小型的实践项目,还能通过同学的汇报了解更多项目实施的全过程。对于兴趣更高、要求更高的学生,这个方案也提供了充分的发挥空间。
这种内容灵活、层次递进的实验课教学方案,不仅能让基础薄弱、接受能力一般的学生有从适应到提升的过程,同时也兼顾了部分学生更高的学习需求。这种教学模式的最终目标是通过实际操作,让学生不仅理解知识,更能应用知识,从而全面提升学生的实践能力和项目开发能力。
2.4 课程的考核
考核是对学生课程学习过程和达成课程教学目标程度的评价。课程考核环节中,平时成绩占总评分的30%,作者将线上和线下课堂的过程性考核各设为50%。线上过程性考核依据学生在在线平台的学习进度、作业完成情况等数据。线下过程性考核依据学生的出勤情况、课堂互动和作业任务的完成情况。过程性考核的设置能够调动学生参与课程的积极性[2],并且可以根据学校和专业的实际情况,科学设置其在总评分中所占的比例。