APP下载

面向对象程序设计课程思政教学案例设计与实践探索

2023-11-06赵晓荣陈传明夏芸陶涛

电脑知识与技术 2023年25期
关键词:子类鲁棒性程序设计

赵晓荣,陈传明,夏芸,陶涛

(安徽师范大学计算机与信息学院,安徽芜湖 241000)

0 引言

习近平总书记强调,各类课程与思想政治理论课通向同行,坚持教书和育人相统一[1]。由“思想政治教育课程”转换为“课程思政”[2],将思想政治教育融入各个专业课程的课堂教学中。工科教育改革中提出的“新工科”[3]推动现有工科专业的改革创新,探索符合工程教育规律和时代特征的新培养模式,同时要求计算机类专业教育过程中更加注重对学生应用能力和创新能力的培养。高等教育在“课程思政”和“新工科”背景下,遇到了新的挑战,计算机类专业课程教学过程中需要强调工程技术应用和创新能力的培养,同时挖掘课程思政元素,实现价值引领和知识传授同行。面向对象程序设计课程是计算机专业的核心基础课程之一,开设于大一下学期,选择Java 语言进行课程教学。对于大学一年级的学生,课程教学过程中价值引领和知识传授同等重要。本文以面向对象程序设计课程为例,设计可行、有效的课程思政案例。

1 面向对象程序设计课程思政现状

在传统计算机专业课程的教学过程中,教师和学生均倾向于专业知识的学习和训练,对于课程思政的理解和学习较少。近年来,众多从事计算机专业教学的高校教师结合学科专业和课程特点,从不同的维度开展了一系列的课程思政元素的挖掘和探索[4-5]。

面向对象程序设计强调以面向对象的模式来分析问题、设计程序,如何在教学过程中融入课程思政内容,学者们进行了相关研究,提出了自己的观点并进行了探索。张翔等人提出了从课程融合、师资培训、开展多样化课程思政活动促进课程思政的融合[6];李金忠详细分析了该课程的理论和实践教学内容中各个模块内容蕴含的思政元素,并结合多样化的教学方法和实践活动将课程思政有机地融入教学过程[7];高虎从教师自学、思政元素切入、课程资料、师生互动等方面进行了课程思政实践的探索[8]。

随着研究的深入和思政教育的持续改进,面向对象程序设计课程的课程思政教学和相关建设取得了较多成果,但是仍旧存在思政案例融入不够自然、思政教育效果不理想等问题,这些问题可能对学生的专业学习和思政教育都产生不良影响。本文围绕“立德树人”和“专业知识教学”两个核心任务,设计符合专业特点和课程特征的思政案例,从知识点讲解和思维启发两个维度进行课程思政探索和实践,促进课程思政元素更自然地融入面向对象程序设计教学之中,实现价值引领和知识传授同行。

2 结合百年党史的课程思政案例

“类的继承”一节是本门课程中类与对象基础知识之后的重要内容,是以已存在的类作为父类、新增成员变量和方法建立新子类的特性。通过“类的继承”特性设计程序能够提升代码的复用率并减少程序中重复的代码量,在软件开发过程中能够大大缩短开发周期、降低成本。在中国共产党发展历程中,回顾百年党史,汲取奋进力量,续写辉煌篇章,是我们每一个人的时代使命。继承党的优良传统,结合时代特色续写新篇章,和“类的继承”思想一致,在“类的继承”教学过程中融入“百年党史的发展与传承”实例,加强课程的育人效果。

2.1 教学目标分析

“类的继承”之前主要讲授了Java 的基础语法知识和类与对象,学生对Java 语法、程序结构以及类与对象基本概念具有了初步的认识。“类的继承”是本课程中重要的章节内容,继承也是Java 的重要特性,本节课程从知识、能力、育人三个方面设置了三个教学目标,详细的教学目标如表1所示,要求学生掌握“类的继承”基本知识并能够基于父类和类的继承性快速设计软件程序,同时引入思政元素,实现思想政治方面的教育引导。

表1 “类的继承”教学目标

2.2 学情分析

学生已经掌握了Java 中if、for 等语句和基本语法的使用,对于类的定义以及使用具有了基础的认识和应用能力,但是面向对象程序设计思想以及“类与对象”概念知识运用不够熟练,所以在“类的继承”章节中需要在巩固“类与对象”思想的编程应用,然后再引入继承和子类的概念,结合对比分析、情景案例、案例实现等教学方法,使学生掌握“类的继承”相关知识以及编程应用,增强代码的编写能力以及复用性,同时通过课程思政元素融入课堂教学增强学生的思想政治觉悟和学习的主动性。

2.3 课程思政元素分析

“类的继承”是类与对象相关知识扩展的内容,所以通过实例中类的定义和对比分析的方式让学生自主总结什么是类的继承以及子类的定义等基础知识,同时增强学生独立思考和自主学习的能力;然后结合党的指导思想发展史进一步讲授类的继承特性,运用案例引出、对比分析、案例实现等教学方法使学生更深刻地理解“类的继承”,引导学生使用发展的眼光认识党的发展历史,进一步引导学生用发展的眼光对待自己的学习与成长,实现“立德树人”和“专业知识传授”两个核心教学目标。

2.4 教学实施

本节课主要分为新课导入、知识讲授和案例讲解、应用实践、回顾总结四个阶段。

1)新课导入

导课阶段采用之前的Person 类实例进行新课内容导入,既可以帮助学生复习巩固类与对象的知识,又可以自然过渡到新课内容。首先基于表2中左边一列的Person 类引导学生分析定义右边一列的Student类,进行对比分析总结这两个类的异同点——两个类的定义中第2-15行代码是相同的。相比于Person类,Student类仅新增了一个成员变量schoo(l第4行)和两个成员方法(第17-22行),这种情形下使用类的常规定义会产生很多重复的代码。在程序开发过程中可以利用“类的继承”减少重复代码的编写、提高程序开发效率。本阶段总结分析了为什么学习类的继承,能够较好地激发学生的学习动力。继而引出“类的继承”和“子类的定义”的基本概念。

表2 Person类和Student类

2)知识讲授和案例讲解

结合Person 类和Student 类实例讲解“类的继承、子类和父类”的基础概念,然后介绍子类的定义以及extends关键字的使用方法,引导学生基于继承的概念重新定义Student子类,利用实例辅助新课内容的讲授和知识点的理解。

然后以党的指导思想发展史为例,从马克思主义到习近平新时代中国特色社会主义思想的不断探索和完善,讲述指导思想的继承和创新,选择“毛泽东思想”和“习近平新时代中国特色社会主义思想”类绘制其UML 图,如图1 所示,引导学生理解“类的继承”概念和使用方法,同时进一步巩固对于百年党史的认识,增强学生的政治素养。

图1 类的继承UML图

3)应用实践

根据图1 所示的UML 图进行代码设计和实现。这个阶段充分体现学生的主体地位,借助于课件上展示的“类的继承UML 图”,引导学生独立思考如何定义“毛泽东思想”类,基于该类和类的继承性如何设计实现“习近平新时代中国特色社会主义思想”子类,从编程实现的角度进一步理解类的继承,增强学生的实践应用能力。

4)回顾总结

然后结合上述的应用实例总结类的继承特点、子类的定义、子类中成员的访问,帮助学生进一步巩固类的继承等知识点以及使用方法,增强学生在编程中运用继承和持续发展的思想,提高软件程序设计的效率,在自我成长过程中同样需要保持持续发展的状态,成为更加优秀的自己。

2.5 教学效果总结

在本次教学过程中利用案例增强知识点的趣味性。首先选择熟悉的Person 类和Student 类代码实例对比分析提出“类的继承”相关基本概念,重写Student类的代码理解“类的继承”的应用方法实现了本节课程教学的知识目标。应用举例环节选择党的指导思想发展过程实例,分析党的指导思想发展史中继承的优良传统和创新发展,引导学生更深刻地了解党的历史和持续发展的特点,并从代码实现的角度巩固“类的继承”知识的应用实践,实现了本次教学的能力目标。在课堂上的知识总结阶段引导学生用持续发展的眼光对待自己的学习与成长,帮助学生形成良好的学习观,实现了育人目标。

在程序设计中运用这种继承和持续发展的思想,才能更好地提高代码的复用率,继而提升面向对象编程的效率,课堂上使学生参与到该实例的编程实现过程中,符合了“新工科”背景下对于计算机专业学生的新要求,能够增强学生的应用实践能力。讲授“类的继承”知识方法的同时使学生进一步加深对于百年党史的了解,实现了“立德树人”和“专业知识教学”同行达,到润物细无声的课程思政教学效果。经过教研,学生在课后的实验题目上也取得了较好的成绩。

3 结合工匠精神的课程思政案例

软件的使用过程中会遇到很多异常的情况,在实际的软件开发过程中,“异常处理”在处理用户的各类异常操作、提升软件的鲁棒性和用户的体验方面至关重要。“异常处理”是帮助程序在解决问题的过程中捕获和处理发生的异常情况,使得程序能够正常运行。只有对所解决的问题进行各类异常分析,才能提高程序的鲁棒性和安全性,同时在这一节教学过程中引导学生不断精益求精,在专业学习和实践过程中发扬工匠精神,提升职业素养,为进入软件行业夯实基础。

3.1 教学目标

“异常处理”之前已经学习了和类与对象、封装与继承、接口实现等内容,学生已经具备了面向对象编程的基础知识能力,本节是软件开发过程中重要的应用知识。本节课程从知识、能力、育人三个方面设置了三个教学目标,详细的教学目标如表3所示,不仅要求使学生掌握在编程中使用异常处理机制以及异常类的应用方法,同时在编程过程中发扬工匠精神、精益求精,设计鲁棒性更强的程序,增强面向对象编程的成就感和自豪感。

表3 “异常处理”教学目标

3.2 学情分析

学生已经掌握了基于Java 中类和对象进行面向对象编程的基本能力,也在实验中强化了编程实践能力,但是设计的程序仅仅能满足实验室环境的应用,不具备较强的鲁棒性。本节的“异常处理”机制能够增强程序的鲁棒性,结合情景案例、对比分析、案例实现等教学方法,使学生掌握类的异常处理机制以及应用方法,同时通过在教学过程中引导学生不断精益求精,设计更好地软件,成为更好的自己。

3.3 思政元素分析

结合日常软件使用的体验和问题,引入本门课的知识,将枯燥的理论知识和实际问题联系起来,激发学生的学习兴趣,学完后也能增强学生的成就感和获得感。同时异常处理机制能够提升应用程序的鲁棒性,引导学生需要不断地精益求精、发扬工匠精神,设计使用便利、用户体验良好的软件,在学生心中深植一颗“软件工程师”的种子。

3.4 教学实施

本节课的教学过程主要分为四个环节:新课导入、知识讲授、应用实践、回顾总结。

1)新课导入

首先由学生熟悉的语音助手相关图片开启本节课程教学,提出问题引导学生主动思考参与课堂教学:我们平时会利用语音助手帮助定闹钟、到电话等,但是大家回忆一下你的手机助手在遇到它不知道的问题是怎么处理的呢?有些会告诉你正在学习中或者帮你打开浏览器搜索,大多数的语音助手遇到异常问题时均会给予我们一定的反馈,这也是提升用户体验的设计。现在大家思考一下之前编写的程序,如图2所示,如果遇到用户的异常输入比如“6 2.4”,会发生什么结果呢?此时结合代码运行演示,根据异常的运行结果引导学生——我们应该发挥工匠精神不断精益求精,设计适用性更强的程序,在编程过程中如何提升程序的鲁棒性呢?继而引出本节课的主题——异常处理。

图2 整数相除代码图

2)知识讲授

首先由图2中例子运行的异常结果引出——程序遇到异常的情况就会抛出异常,程序中没有考虑各类异常情况的处理时,程序运行就会报错终止,“异常处理”可以帮助程序处理这类情况,提升程序的鲁棒性。然后讲授异常的相关基本概念,结合实验中常见的“ArrayIndexOutOfBoundsException”和“NullPointerException”等异常辅助学生理解异常相关概念,然后讲授Java中常见的异常类和异常处理机制——try-catch语句的使用方法。结合图2 例子代码在eclipse 中演示异常处理机制的使用,核心代码如下:

现场编写代码演示异常处理机制的应用,运行程序解决异常终止的问题,使学生具有更强的代入感,增强学生对于异常处理机制和异常类的理解。

然后输入“6 0”,根据出现的异常,引导学生动手编程实现该异常的处理,这样既满足了新工科背景下对于实践能力的培养,同时通过程序的运行实践增强学生的兴趣并提升注意力。总结使用多个catch语句块捕获并处理不同的多种异常,同时也可以使用一个catch语句捕获Exception 类及其异常子类对象处理多种异常,扩展异常处理相关知识。

3)应用实践

利用求分数类对象的除法操作问题巩固异常处理机制的使用,此处给予学生5分钟的思考时间,然后找同学上台演示如何通过异常处理机制的使用捕获异常,使学生参与到课堂教学中来,增强学生的实践能力。

4)回顾总结

首先回顾总结常见的异常相关类、异常处理机制try-catch 语句,然后引导学生思考:对于面向对象程序设计有什么新的认识?引导学生对比分析仅考虑正确性和异常处理兼顾的程序设计过程,增强程序的正确性和鲁棒性同样重要的意识,在编程的过程中不仅要考虑程序的正确性,同时应该精益求精,通过异常处理方法提升程序的鲁棒性,这样才可以提升用户的体验,为以后设计优秀的软件奠定基础。

3.5 教学效果总结

本节课主要讲授Java中的异常处理,重点介绍了异常类和异常处理机制try-catch语句的使用,使学生构建程序设计过程中异常处理的知识体系,实现了本节课的知识目标。课堂上由语音助手和前面实验中编写的代码实例导入新课,不仅激发了学生的兴趣,同时基于前面实验中的程序和对比学习法,辅助学生理解异常处理的知识,动手编写程序完成练习,实现能力目标。在课堂总结的环节,引导学生养成不断探索、精益求精的学习精神,程序设计的过程中,正确性和鲁棒性兼顾才能设计更好的软件、成为一名优秀的软件工程师,实现育人目标。

在软件开发过程中异常处理是至关重要的,本次课程通过代码实例引入“异常处理”概念知识,同时结合编码实现增强学生对于异常处理机制的使用方法,在程序设计过程中发扬工匠精神、不断地精益求精,设计能够应对各种异常情况的程序。教学过程中充分发挥学生的主体地位,设置练习,学生独立思考编写程序、共同演示运行结果,增强学生的代入感和成就感,加深对于知识的理解,满足新工科对于工科教育的要求。学习利用异常处理机制如何设计鲁棒性更强的程序的同时,引导学生在学习、生活以及以后的工作中也要不断地精益求精、发扬工匠精神,才可以开发更优秀的软件,实现教书和育人同行。经过教研,课后的实验作业成绩反馈中,同学们能够较好地掌握了异常处理机制的使用方法。

4 总结

在面向对象程序设计的课程教学中,老师要充分围绕“立德树人”和“专业知识教学”的双重根本任务开展教学活动,落实到每一节课堂中。本文对于本课程的教学过程中两个思政案例实施过程进行详细的阐述和思考,以中国共产党指导思想的发展史案例辅助理解“类的继承”知识点和“异常处理”知识教学中引导学生在程序设计中不断精益求精、发扬工匠精神两种不同的模式进行了课程思政的探索。为了更好地开展课程思政,今后需要进一步探索新工科背景下具有计算机类专业特色的课程思政案例,让学生可以在学习专业知识的基础上,同时进行爱国、奉献、敬业、创新精神教育的熏陶,进而为国家培养出符合中国特色和时代需求的新兴人才。

猜你喜欢

子类鲁棒性程序设计
卷入Hohlov算子的某解析双单叶函数子类的系数估计
基于Visual Studio Code的C语言程序设计实践教学探索
荒漠绿洲区潜在生态网络增边优化鲁棒性分析
基于确定性指标的弦支结构鲁棒性评价
从细节入手,谈PLC程序设计技巧
关于对称共轭点的倒星象函数某些子类的系数估计
高职高专院校C语言程序设计教学改革探索
基于非支配解集的多模式装备项目群调度鲁棒性优化
非接触移动供电系统不同补偿拓扑下的鲁棒性分析
PLC梯形图程序设计技巧及应用