面向对象程序设计课程建设与改革研究

时间:2023-08-10 11:05:01 来源:网友投稿

司慧琳,李 素

(北京工商大学 计算机学院,北京 100048)

面向对象程序设计是一门理论性和实践性均较强的课程,对学生编程能力要求较高,属于计算机科学与技术等专业的基础课程。该课程主要介绍面向对象的概念和设计方法,围绕面向对象的封装性、继承性和多态性,重点介绍类和对象、友元和静态、继承和组合、重载与多态性、异常处理等基本语法[1]。该课程侧重于学生面向对象编程语法理解和实践的编程能力培养,使其能够运用面向对象思想和方法分析和求解计算机领域应用软件设计与开发问题。

北京工商大学自2014年开始在计算机科学与技术专业开设面向对象程序设计课程,采用C++语言,基于Moodle(Modular Object-Oriented Dynamic Learning Environment)平台上的面向对象编程题库进行教学。基于此,本文分析当前面向对象程序设计课程教学中存在的问题,并提出针对性改革措施,以期提高教学效果和人才培养质量。

1.1 传统教学局限

作为C语言程序设计的后续课程,面向对象程序设计课程肩负着承上(兼容C,但C++以对象为中心,侧重软件应用)、启下(为Java及后续编程实训课程打基础)的作用,需要持续激发学生的编程热情。教学早期有些学生对封装语法掌握比较薄弱,只能机械地重复书本上的源码示例;
通过课堂讲授、编程练习和师生互动,教学中期大多数学生能够跟上课程进度,但继承和多态的语法比封装更难以理解,且代码编写量更大,此时有些学生开始力不从心,逐渐掉队,丧失学习兴趣和积极性。究其原因,传统教学存在学生编程练习量少、教师反馈不及时、未能实时了解每个学生练习情况等弊端。

1.2 初学者代码纠错和调试能力薄弱

北京工商大学开设的面向对象程序设计课程于大一下学期开课,此时学生掌握的C代码短而简单,而C++语言编写的面向对象代码长且复杂。学生在编程过程中碰到语法错误时,即使开发工具给出了错误提示,部分学生也不具备纠错能力。随着课程深入,学生出现的程序逻辑错误增多,有些学生无从下手,难以完成编程训练,影响编程能力提升。出现这种现象的原因是学生编程训练量不够,而代码纠错和调试能力训练是一个长期过程。

1.3 基于在线平台并支持C++的面向对象编程题库较少

在在线判题(Online Judge,OJ)系统中,用户可以在线提交程序源代码,系统对源代码进行编译和执行,并通过预先设计的测试数据检验程序源代码的正确性。能提供在线编程评测的OJ平台有很多,例如:ITbegin作为一个在线编程与互动教学相结合的网站,提供了基于C++的面向对象课程和相关编程题,但题量偏少,且只能对源代码提供编译和执行功能,不提供测试数据检验程序源代码的正确性;
LeetCode 平台上题目丰富,可以进行在线测试,能够指出错误数据,并支持多种主流语言(C/C++、Python、Java等),但该平台大部分题目侧重于经典算法或数据结构的编程训练,不涉及基于C++的面向对象编程题训练;
Moodle平台是一款免费开源教育平台,其面向对象的模块化动态学习环境既适合在线教学,又可作为传统教学的补充,同时也适合构建混合式教学模式,在开源学习系统中获得了较高评价[2]。

2.1 基于Moodle平台的题库建设

2012年,北京工商大学C语言程序设计课程组在Moodle平台上创建了一个C语言题库,对学生的C语言编程能力提升起到了良好的促进作用。面向对象程序设计课程作为后续课程,采用Moodle平台训练和教学是顺理成章的设想,能持续有效地提高学生的学习兴趣和编程训练热情,巩固和提升编程能力。2014年,课题组筛选传统教学中面向对象程序设计的经典编程题目[1,3],依托Moodle平台题库进行呈现,运用前置或后置预设代码等手段限定其以面向对象语法实现,配备多组测试用例校验源代码的正确性,在Moodle平台上建立了一个支持C++的面向对象编程题库以训练学生面向对象的编程能力。通过在教学实践中不断完善,目前该题库已拥有120个左右面向对象编程题目。为完成该题库训练,学生需要编写的代码约有4 000行,训练量比传统教学大得多。掌握一门程序设计语言的最佳途径就是多练习,大量编程训练有利于学生掌握面向对象的语法和提升面向对象的编程能力。

2.2 基于Moodle平台的教材建设

2014年,课题组将面向对象编程题库运用到课程教学中后,深感现有教材不具有辅助学生完成平台编程练习的针对性,因此重新编写并出版了一本教材,该教材侧重面向对象的编程训练。为明确训练具体语法主题,所有示例和习题都提供了相应的输入输出测试用例,部分习题还预设了前置或后置代码,限定学生所写的代码需采用面向对象实现。该配套教材还附有4套模拟卷和从多年教学实践中收集整理的初学者面向对象编程问题集[4]。

2.3 基于混合学习的教学探索

2.3.1 基于Moodle平台的教学互动

教学互动手段分为面对面答疑、Moodle平台讨论区及微信群或QQ群在线答疑等,其中Moodle平台讨论区是互动交流的主要场所,师生通过发帖和回帖的方式在线交流,其他学生可通过浏览帖子旁观和参与解决问题,这是获得编程经验的途径之一。Moodle平台上的编程题目通过多组测试用例、成绩分值设定、折扣比例和提交截止时间等方式有效激发学生编程热情,学生为了在规定时间内通过平台用例测试拿到满分会主动向老师提问。这意味着基于Moodle平台题库进行授课的教师不仅需要更多时间和精力去答疑,而且需要随时关注和及时回复学生提问,并随之调整课程进度。

2.3.2 基于 Moodle平台的实时反馈评价体系

Moodle平台自带GCC、G++等编译器,学生在该平台上提交程序,平台自动评判所提交代码并给予分数反馈,既给教师节省了大量批改作业的精力和时间,又能保证每个参加编程训练的学生得到实时反馈评价。Moodle平台在系统中记录学生完成编程训练的各项成绩,并且提供了多样化成绩计算方式及弹性分值调整功能,以便教师对学生编程训练情况进行实时有效的监控。Moodle平台还提供了将学生练习成绩导出为Excel文件的功能,教师可对学生成绩进一步分析,获取其练习详情,针对学生普遍存在的问题及时调整教学内容。此外,教师还可在Moodle平台的讨论区公布学生每周练习题目完成情况,督促学生完成编程练习。然而,Moodle平台的自动评分方式也存在局限性,例如Moodle平台会对符合C++语法,以及用例和预设代码所需的代码自动判满分,至于提交的代码实现方法是否满足面向对象设计要求,是否满足题目要求,其判定不甚准确。

2.3.3 基于混合学习的教学模式

线上+线下的混合式教学可将学习者引入深度学习[5]。教学过程中以Moodle平台题库训练为主,辅以课堂提问、课后笔试练习和笔试小测验等传统教学方法,将平台在线学习与面授相结合,构建了一种既能发挥课堂学习中教师主导作用,又能使学生通过自我学习建构知识体系的学习方式。

采用机考与笔试结合的课程考核评价方法。教学早期利用Moodle平台实时反馈和评价的优势,以机考形式督促学生进行编程训练;
中期需完成1套笔试模拟卷;
后期除在Moodle平台进行编程训练外,还需完成2~3套笔试模拟卷。期末考试以笔试方式考核学生对语法概念的掌握程度。面向对象程序设计课程混合式教学目标与相应措施如表1所示。

Table 1 The content of curriculum objectives and corresponding measures表1 课程教学目标与对应措施

改革方案实施后取得较好教学效果。2017-2021年间面向对象程序设计课程的学评教成绩如表2所示(数据来源于学校教务管理系统)。可以看出,5年间该课程的学评教成绩均在90分以上,学生对课程的总体满意程度较高。

Table 2 Assessment of teaching results表2 学评教成绩

2017-2021年间面向对象程序设计课程的总评成绩如表3所示(数据来源于学校教务管理系统)。可以看出,平台题库训练对于学生掌握课程内容大有裨益,即使2020年春季受疫情影响全程采用线上授课,与其他4年的线下教学相比,学生平均成绩和最高分差异性不大,教学质量比较稳定,说明教学改革达到了预期效果。

Table 3 Analysis of students" overall course assessment results表3 学生课程总评成绩分析

针对面向对象程序设计课程传统教学中存在的一系列问题,课题组建立了基于Moodle平台的编程题库,以提高学生学习兴趣,增强其代码调试、纠错和项目开发能力;
基于Moodle平台题库编写了配套教材,提供面向平台题库的针对性辅导;
开展了混合式教学探索,基于Moodle平台的教学互动和实时反馈评价调整教学内容与进度,取得了优异的教学成效,即使期间受到疫情影响,学生成绩依然保持稳中有升。后续将进一步完善编程题库,充分与实际应用相结合,以提升学生解决现实问题的能力。

猜你喜欢面向对象题库程序设计“勾股定理”优题库中学生数理化·七年级数学人教版(2021年3期)2021-07-22“轴对称”优题库中学生数理化·七年级数学人教版(2020年10期)2020-11-26基于Visual Studio Code的C语言程序设计实践教学探索计算机教育(2020年5期)2020-07-24“轴对称”优题库中学生数理化·七年级数学人教版(2019年10期)2019-11-25“整式的乘法与因式分解”优题库中学生数理化·八年级数学人教版(2019年11期)2019-09-10从细节入手,谈PLC程序设计技巧电子制作(2019年9期)2019-05-30面向对象的计算机网络设计软件系统的开发电子测试(2018年15期)2018-09-26面向对象的数据交换协议研究与应用电测与仪表(2017年24期)2017-12-19高职高专院校C语言程序设计教学改革探索山东工业技术(2016年15期)2016-12-01面向对象Web开发编程语言的的评估方法现代计算机(2016年12期)2016-02-28

推荐访问:程序设计 面向对象 课程建设