以学为中心的面向对象程序设计课程改革实践
2021-11-08马丁齐歌郑丽萍
马丁 齐歌 郑丽萍
摘 要:面向对象程序设计是一门强调抽象思维、实践性校强的专业核心课程。为提高教学质量与学习效果,本研究针对传统授课方式存在的问题,遵循以学为中心的先进理念,从教学目标、教学策略与设计、考核评价三个方面提出了系统的、切实可行的改革方案,并在实践中取得了良好的效果。
关键词:以学为中心;面向对象程序设计;教学改革
面向对象程序设计是河南工业大学软件工程专业的核心课程,在程序设计类课程中起着承前启后的作用。课程以C++作为编程语言,要求学生能够阐释面向对象程序设计的基本概念,能够掌握C++语言的抽象、封装、继承、多态、输入输出、模板等技术,能够使用C++面向对象程序设计思想和技术分析、解决复杂的工程问题。经过十几年的课程建设与改革,课程团队拥有丰富的教学经验,也积累了大量的课程资源。但是,囿于传统课堂授课以教师为中心的方式,学生在教师的引领下经常陷于被动的学习状态。学生课堂参与度不高,学习的积极性和主动性较差,分析、评价、创新等高阶教学目标难以达成,这些问题已成为制约课程教学和学生提高学习成效的主要障碍。
近年,随着翻转课堂教学模式在高校的推广和应用,工程认证背景下OBE(Outcomes-based Education,
基于学习产出的教育模式)教学策略的深度融合,以及教育部推进高校教学改革,打造“金课”,建设一流本科课程的要求,课程团队基于OBE理念,依据一流本科课程建设要求,借助智慧教学平台和互联网工具,对面向对象程序设计课程改革进行了深入探索,从教学目标、教学策略与设计、考核评价等方面提出了系统的改革思路,并在实践中取得了良好的效果。
一、融合课程思政的多维度深层次教学目标设定
面向对象程序设计课程教学目标不仅包含浅层次的“理解+记忆”,还包括学科专属知识与技能、高阶思维能力、人文价值观、职业准备、个人发展、思政育人等多维度深层次目标。教学目标的设定除了编程能力培养、主流价值观形成、沟通与交流能力培养、终身学习能力培养等方面,还加入了思政育人的目标,涉及社会主义核心价值观、技能观、职业精神等方面。
(一)学科专属知识与技能
能够阐释使用C++语言和面向对象技术解决软件工程复杂问题的基本方法和原理,并能够有效应用面向对象程序设计方法和C++编程语言在复杂面向对象程序开发中进行系统概要设计和详细设计。其中涉及的基础知识主要包括抽象、封装、继承、多态、输入输出、模板等。
(二)高阶思维能力
能够考察和比较当前流行的C++集成开发工具及其工作平台,总结其优缺点;能够使用其中的一款进行代码的编写与调试,具备良好的编程习惯,代码风格严谨,注释规范;能够应用面向对象的思想将现实中的实际问题转化为面向对象世界的编程问题;能够使用统一建模语言UML设计问题所需的类和继承层次结构,完成概要设计;能够使用C++语言按照设计方案完成系统的详细实践。
(三)人文价值观
能够从哲学的角度思考面向对象程序设计思想的实质,明白事物本身的性质、结构及事物之间的联系;密切关注当今社会IT行业的热点话题,能够利用所学的知识对社会上的观点进行分析、比较、评价和预测,能够向他人进行解释和简单的科普。
(四)工作与事业准备
尊重他人的观点,学会沟通与交流,学会提问与回答;具备良好的团队合作精神,能够与其他学生组成2—3人讨论小组,协作解决复杂的工程问题。在讨论过程中,能够正确发表自己的观点和吸取他人建议,增强团队合作与知识共享的意识。
(五)个人发展
能从面向对象的编程思想中体会使用计算机模拟现实世界的思路与方法;掌握主动学习方法,找到适合自己的C++学习路线;学会利用丰富的网络资源推动自己的学习,如在线开放课程、在线测试平台等;能够及时跟踪C++语言的发展状况,考察其应用行业,关注新标准和新领域,保持学生对课程的新鲜感和求知欲,培养学生主动学习的能力,促进终身学习意识的形成。
(六)思政育人
引入国内IT行业的成功案例,分享其成功经验;剖析软件工程专业发展历史和软件行业领军人物的奋斗故事,培养学生自信、乐观、诚實、守信、善于思考与发现的优秀品质;提高学生的编程技能,为社会和人民造福;鼓励学生利用自己所学的专业知识,积极参与科普活动和应用推广活动;告诫学生不能将自己的编程技能用于违法犯罪活动。例如,从事黑客行为,攻击、破坏他人软件系统,编写木马程序、电脑病毒,参与盗版活动,编写破解软件等;要引导学生树立科学的精神和态度,建立科学的思维方式,培养学生的软件工匠精神。
二、全方位系统化的教学设计
课程教学依据课程执行大纲进行,整个教与学的活动扩展到课前、课堂、课后三个阶段,并依据教学目标、教学内容的特点采用测试、讨论、案例分析、实践探究、拓展阅读、分组讨论等多样化的教学活动。首先,在课前,通过文献拓展阅读、在线课程学习、智慧教学平台学习,让学生带着问题走入课堂,通过课前测试检验学习的效果。课堂上,根据在线学习的效果选择教学内容,采用案例分析、视频学习、网络检索、分组讨论、辩论赛等教学活动,突破重点,化解难点,扩展知识,并通过随堂练习进行强化。在课后,通过课后作业、分组任务、思考与讨论等帮助学生巩固所学知识,提升理解广度与深度,并通过课前测试、课堂提问、章节测试等活动检验学习的效果。在具体的实施中,按照执行大纲明确的课前要求、课堂要求、课后要求,将上述近20种教学活动穿插融入20次授课环节中。
执行大纲、教学活动和教学过程的融合,需要借助先进的互联网工具和贯穿始终的教学策略。课程团队选用了学习通和Github两个平台。其中,学习通可以提供课前任务布置、课初测试、课堂签到、随堂测验、课后作业任务发布、问题讨论与反馈、数据统计等功能;Github则为学生提供了代码管理功能。
结合本课程的特点,提出以下几种教学策略:
(一)以问题为导向的教学策略
首先,教师在课前的预习环节中抛出问题,这些问题多是与现实场景相关的思考题,学生通过阅读、检索文献,尝试用面向对象的思维去思考、设计、形成问题的初步模型。
其次,教师通过课堂讨论、案例分析、网络检索、视频学习、辩论赛等教学活动对问题进行剖析,充分调动学生学习的积极性;并通过实验环境,借助UML建模工具将问题转化为图形,激发学生的兴趣,提升学生的信心,帮助学生形成主动学习的意识。
最后,学生通过课后作业进一步强化分析问题的思路与方法,通过延伸讨论和辅导答疑,深化对问题的认识,进一步完善解决问题的方案。
(二)以代码为导向的教学策略
学生在课前预习课件与视频的同时,编写、调试、修改示例中的代码,将自己的问题在代码中进行注释,带着疑问进入课堂。
在课前测试和随堂测验中,设置涉及程序代码的阅读与填空,可以进一步发现存在的问题,检验学生预习和学习的效果;通过课堂讨论、案例展示、调试分析、辩论赛等教学活动进一步对代码进行剖析,从而帮助学生消除疑问、破解难点;通过实验环节,找到解决代码中问题的方法和技巧。
通过课后的作业练习,进一步提升学生编写代码的熟练度;通过延伸讨论和辅导答疑,深化学生对编码的认识,使其进一步对代码进行规范化、优化的修正。
(三)以团队合作为导向的教学策略
以实验为例,对于综合性实验题目,可以让3个学生组成一个小组,在以下几个阶段展开团队合作:
问题分析、设计与UML建模;
在Github上建立代码库,编写、优化、更新代码;
建立测试用例,进行系统测试。
以辩论赛为例,学生自由结合,组成战队,每战队包括一名主辩手和3~5名辩手,在以下几个阶段展开团队合作:
赛前,收集素材,制作PPT,讨论辩论策略,模拟展示;
赛中,抽签决定出场顺序,各队进行论点陈述,自由辩论;
赛后,各战队互评,教师总结。
上述导向明确的教学策略,能够将教学活动无缝地穿插到三个阶段的教学过程之中,有效地提升学生分析问题、设计方案、调试编码的能力及沟通交流的能力,培养学生的团队合作精神,促进课程教学目标的达成。
三、多元化的考核评价设计
课程团队依据OBE教学理念,针对课程学习目标达成,以能力评价为核心,设计和实施作业、实验、考试等多形式多环节考核,增强学生学习的持续性;引入学生互评,增强学生对学习共同体的参与度;教师采用及时性和积极性的评价反馈,激发学生学习的自信心,促进教与学的不断调整和改进。
(一)建立多元化的学习成果评价机制,增强学生学习的持续性
在考核中,平时的成绩不仅涵盖了传统的作业和考勤,还包括课前预习、课前测试、课堂测试成绩、课堂主观讨论性题目成绩。其中,课堂测试与课堂讨论均通过学习通的随堂测试方式进行,分数统一计算。
在作业考核中,共包括8次课后作业,每次作业均需要学生按照要求完成并上传代码至Github的对应库。学生可以随时查看课程代码库和自己代码库中的每次作业代码并做出更新,此举激发了学生学习的兴趣,他们开始主动去使用Github研究和分享自己的代码。
在实验考核中,共包括5次实验,每次实验前学生均需要做好充分的准备,编写好当次实验的代码,带着问题进入机房去改进和调试。实验环节设置了实验方案设计、代码撰写情况、程序运行调试情况、实验报告质量等考核内容。教师可以充分利用实验过程交互性强的特性,实时解决学生遇到的问题,推动人文维度目标的达成。随着程序警告、错误逐个消失,报告内容不断充实、格式愈加规范,学生的信心逐渐增强,学习积极性得到了提升。
提高平时成绩和实验在总成绩中所占的比例,从以往的占比30%提升至50%,综合考量学生平时的表现。这样可以使学生更加重视预习和复习的过程,重视平时的知识积累,重视每一次代码编写和提交的过程,享受编程能力提高带来的成就感,从而激励学生主动、自觉地学习,保证持续学习的动力。
在期末考试中,强调能力评价的核心作用,题目着重对应用及分析、综合能力目标的达成。
(二)及时反馈,持续改进,激励与鞭策并施
教师每周对平时表现成绩、作业成绩、实验成绩进行统计和分析,并将当前结果反馈给学生。一方面,有助于教师了解目前课程目标的达成情况和出现的问题,在后续教学过程中及時改进;另一方面,让学生了解自己目前的学习效果,在后续的学习中及时进行调整,同时对积极向上的学生进行鼓励,对落后的学生进行鞭策。例如,实时关注每周综合表现排名后十位的学生及总排名后十位的学生,通过私信交流的方式,了解他们的近况,共同分析表现不佳的原因,并针对不同学生的情况量身定制改进措施。经过交流,大部分学生都能认识到自己的问题,并表示出积极改变的意愿。
对面向对象程序设计课程的教学与实施而言,以学为中心、以成果为导向的教学改革对改善课堂教学质量,促进学生主动、自发学习有着重要作用。课程团队遵循以学为中心的先进理念,从教学目标、教学策略与设计、考核评价三个方面提出了系统的设计方案。通过在软件工程专业2018级和2019级两届学生中的应用,学生的学习习惯有了明显的改变,主动学习的意愿明显增强,对课程的满意度与日俱增,综合成绩评价较往年有了显著提高。未来还需要对教学活动及其评价机制进行深入的优化,合理地融入课程思政元素,进一步激发学生的内驱力,保证评价的公平性,培养学生的软件工匠精神。
参考文献:
[1]钟晓流,宋述强,焦丽珍.信息化环境中基于翻转课堂理念的教学设计研究[J].开放教育研究,2013(1).
[2]施晓秋.遵循专业认证OBE理念的课程教学设计与实施[J].高等工程教育研究,2018(5).
[3]林姗,江南,刘伟.基于工程教育专业认证的面向对象程序设计课程改革[J].计算机教育,2019(7).
[4]吴岩.建设中国“金课”[J].中国大学教学,2018(12).
[5]史仪凯.一流课程建设和教学的关键在提升教师的教育教学水平[J].西北工业大学学报(社会科学版),2020(1).
责编:莞 尔