一、教师简介
周利玲,信息工程学院教师,讲师。从事高校教学工作5年,主要承担课程有《数据结构》《C++面向对象程序设计》《软件需求分析与建模》《Python语言程序设计》等课程。主持校级一流本科课程1门,主持省级教研项目1项,参与省级科研项目、校级教研项目6项,参与建设校级优质课程2项,获得校级”优秀毕业论文”二等奖1项、三等奖2项。
二、教学经验分享
《C++语言程序设计(2)》课程授课过程中针对课程特点,构建“三实”课堂。一是实用,课程强调知识的实用性,将真实案例与课堂教学有机结合,让学生学有所用;二是实践,注重学生对理论知识的理解,更加注重程序的实践;三是实时,运用头歌实践教学平台,学生的实验结果可以实时反馈,形成“实验-反馈-总结”于一体的教学机制。
采用“BOPPPS”教学模型进行教学设计,运用视频引入、问题引导、过程推导、实践训练等教学方法,激发学生的学习热情,促进学生自主学习、全程参与式学习,从而提高思辨能力、手动能力。以教学目标(Outcome)为导向,设计相关性的导入(Bridge-in),形成学习动机。从基础知识和高阶思考多层面设计前测(Pre-test)、后测(Post-test),动态学生的学情,以便更灵活地选择教学策略。有效组织师生互动、生生互动、小组互动,吸引学生自主学习(Participatory learning),使得课堂活起来。简短的知识回顾总结,反馈课堂内容的学习情况。
按照教学设计中的“BOPPPS”模型实施教学,关注重点难点的解决,能够针对学习反馈及时调整教学,突出“以学生发展为中心”实行因材施教。
1.明确学习目标,激发学生内在动力
教育心理学指出,学习动机是学习活动得以发生、维持进行,直到完成内在动力。现代大学生对自己学习活动、学习内容以及其对未来就业与发展十分关注,如能在课堂教学初期讲清课程开设目标以及相关就业前景,充分重视学生这种学习动机,学习效果自然会提高。例如,在讲授《C++语言程序设计》课程前,收集一些招聘C++语言编程人员就业信息及毕业生从事C++语言编程工作收入、工作岗位发展趋势等学生十分关注重要信息。到了教学初期,在讲授“什么是 C++”时,可穿插着介绍这些信息,并让学生知道“C++语言广泛应用于基础软件、桌面系统、网络通信音频视频、游戏娱乐等诸多领域。目前,企业招聘 C++软件开发工程数量占软件开发工程师总量 1/3 左右,薪水居高不下。要尽快使每个学生明确即将学习知识与社会关系,因人而异地帮助学生找到各自学习目标,激发学生内在动力。
2.教学方法注重同中求异、异中求同
这样可使学生学会抓住事物本质特点,加深对事物理解,有利于培养学生创造性思维。为了能使学生学习更深入,采用对比方法进行教学,可以达到很好教学效果。例如,学生在学习C++语言时可以拿它与C语言作比较,C++程序语言与C语言在程序设计思路上存在着不同:一个是面向对象程序设计语言,将数据与数据方法拥绑在一起:一个是面向过程程序设计语言,由上至下,采用分模块方式。但两者之间共同之处也比较多C++语言是对C语言改进与扩充,C语言一个超集,它保持了对C语言兼容,也即在C语言中使用命令,可以直接在C++中使用。通过比较,学生更能体会到教学目性。
三、教学案例
教学内容注重从整体到具体,再从具体到整体。虽然教材编排大都按照先概念、再规则、最后举例这一顺序,但由于其间知识分散性,彼此缺乏联系,使学生不能体会一个完整编程过程。在教学中,注重教学内容从整体到具体,再从具体到整体,使学生通过一个完整案例先快速了解 C++语言程序设计全过程,然后增添程序设计教学内容,具体剖析实现步骤中各个知识点,学习更高标准与要求程序,最后学生在学完所有知识点后完成一个完整设计。这种思路特别适合程序设计类其它课程。
在学习静态数据成员时,会结合类中数据的共享与保护进行讲解。为了让学生能更直观的看到静态数据成员与普通数据成员的区别和联系,通过具体的内存分配模拟画图来设计、讲解。
图1 教学案例截图
学生可以更直观的看到静态数据成员的应用带来的节约空间和数据间的共享。
四、教学改进
在过去的教学中,由于学生基础不够扎实,加上本课程具有理论性强、内容抽象的特点,学生在学习该课程的开始阶段,容易产生畏惧和茫然的情绪。故在本门课程的教学中,教学内容的选取符合学生的认知水平,教学容量恰当,教学成果为学生下阶段的学习与成长奠定坚实的基础。
图2 授课实况图
以教学目标为导向,强调“以学生发展为中心”精心规划和设计课程内容,“传统教学板书”+ “学生动手” + “多媒体”教学方法相结合的形式,“润物细无声”式思政,身边的案例引入,和可测可达的教学目标。使学生能在每次课堂都学有所得,提高学生的积极性,吸引学生能主动、独立地学习,培养学生具备能通过应用实例理解如何为求解问题设计适当的数据结构、如何基于数据结构设计算法,从而将数据结构、算法和程序设计有机地融合,具备以下四种能力:
(1)编程思维能力:多方面融合数学、算法、机器学习等知识,培养科学计算思维、增强基本编程技能。
(2)设计开发能力:针对典型问题,开展专项分析,科学组织程序,提高编程效率。
(3)工程应用能力:分析典型案例,学习工程方法,培养工程应用综合能力。
(4)科学创新能力:将所学知识和技能,运用于科技创新和学科竞赛,锻炼提升专业能力与综合素养。