朱红梅 孙 未 张广梅 李蔚妍 李 滨
1.山东农业大学信息科学与工程学院 山东泰安 271000
2.山东农业大学生命科学学院 山东泰安 271000
面向对象程序设计是计算机科学与技术、网络工程、物联网工程、大数据、信息管理与信息系统等专业的必修课,课程设计作为集中实践性环节之一,是面向对象程序设计课程学习完后进行的综合练习。以培养学生用面向对象的理念解决实际问题的程序设计能力为目标,加深对面向对象程序设计理论和基本知识的理解,提高综合应用能力。长期以来,程序设计类课程教学强调语法知识,轻视分析、设计和工程经验的积累,课程设计通常由教师给出多个选题供学生选择实现,忽视团队合作能力、创新能力的培养。实践教学环节设计缺乏系统、科学的规划[1]。因此,改进面向对象程序设计课程设计的教学内容,探索课程设计案例的设置原则与实施方案,培养学生的工程能力,成了当前面向对象程序设计课程设计教学改革中亟待解决的问题。
我校以CDIO工程教育模式[2]为指导思想,改革面向对象程序设计课程设计的教学模式,探索面向对象程序设计课程设计案例的设置原则,构建了三阶段循序渐进的项目体系教学模式,提出了全员参与的开放式考核方式。事实证明,在具有较强工程背景与应用价值的实践中,学生主动学习的意识与能力增强,逻辑思维能力、团队合作能力、创新能力提升,积累了必要的开发经验,提高了工程能力。
CDIO工程教育模式是近年来国际工程教育改革的最新成果。2000年,麻省理工学院和瑞典皇家工学院等四所大学组成的跨国研究组经过四年的探索研究,创立了CDIO工程教育理念,它以产品的研发、运行生命周期—构思Conceive、设计Design、实现Implement和运作Operate为载体,让学生以实践的、主动的、课程之间有机联系的方式学习工程[2]。国内外的实践证明,CDIO教学模式适合大学工科教育教学过程的各个环节。
运用CDIO教学模式,结合面向对象程序设计课程设计的特点,教师对课程设计的内容进行构思、设计、实施、运作[3];学生学习如何构思、设计、实施、运作一个相对复杂和完整的系统。CDIO创新工程教育模式的最大特点是倡导问题驱动,注重实践性教学和实际动手能力[4]。基于CDIO的面向对象程序设计课程设计改革必须解决两个问题:通过课程设计,学生应该掌握哪些知识、技能以及意识体系?如何帮助学生更好地掌握这些技能?本文借鉴CDIO工程教育模式的基本思想,结合面向对象程序设计课程设计的特点,研究课程设计案例的设置原则,构建适合面向对象程序设计课程设计的教学模式和考核方式。
随着社会信息化程度的提高,计算机的应用已经渗透到各个行业与领域,选取真实的并得到广泛使用的软件应用作为案例,有助于学生了解计算机软件的应用现状,激发学生的探究欲望,提高学习兴趣,积累领域经验。为了避免浪费时间学习相关的领域知识,尽量选取贴近学生水平和专业且易于理解的领域及其应用。尽量选择多种不同类型的应用系统,让学生了解它们的设计与开发过程,帮助开拓学生的视野,活跃思维,积累多种不同类型应用系统的设计开发经验[5]。
案例要能够清晰地、模块化地描述功能,且能够通过已掌握的知识及其扩展实现,有益于学生工程能力的培养,提高学生的分析综合能力、积累程序设计和调试经验,培养钻研精神。
为保证教学的有效性,必须选取难度适中的案例,才能避免由于案例太难导致的教师精心设计而学生不明所以;或者反之,由于案例太简单而无法激发学生的探索欲和求知欲,学生即使完成也会觉得索然无味。所以,必须选取难度适中易于理解的案例,让学生有参与讨论的热情,点燃学生的求知欲望。在同一个案例中,兼顾学生专业和个体差异,既有基础内容,也有进阶内容,使不同层次、不同水平的学生都可以根据自己的能力实现一部分功能,使学生都有不同程度的收获,建立面对挑战的自信。
选取或设计的案例应该是动态的,可以不断地提出新问题,对功能进行改进、优化与扩展。初学面向对象程序设计课程时,学生的专业知识有限,计算思维还没有建立起来,对于原型系统应该实现的功能和实现方法了解比较少,随着专业知识的不断充实和计算思维的逐渐建立,工程能力有了提高,应选取或设计一些在后续实践环节中可以进一步完善和扩充的原型系统。
软件的开发过程具有严格的规范性和程序性。教师在教学实践中应注意培养学生的规范意识与习惯,提高学生的职业素养和能力。在选取与设计案例的过程中,应选取各类文档齐全、编码规范的案例[6],并按照软件工程的规范过程分析与示范,虽然此时的大多数学生尚未学习软件工程,但是也要引导学生有意识地进行需求分析、设计、测试,充分理解项目的功能、性能、可靠性等具体要求,理解系统架构、功能模块设计,了解测试条件的设置,数据的选择等。要求学生按照规范的流程进行设计开发,并在提交的文档中体现这种规范性。
遵循面向对象程序设计课程设计案例的设计原则,整合教学方案与定位、实践内容和考核方式,构建三阶段循序渐进的项目体系教学模式。
由于学生首次接触面向对象程序设计的相对独立、完整的应用,为了帮助学生更好地体验软件设计开发的过程,便于学生进一步理解与体验相关知识,教师利用示范教学案例,按照软件开发的规范流程,用清晰的、易于学生接受的语言表达出设计开发分析过程,考虑到学生的不同水平,对一些比较常用的功能,可以给予实现。除程序设计的集成开发环境外,还可以借助一些主流工具,如ProcessOn在线协作作图工具,进行案例的设计,为学生今后进一步的学习和设计打下基础。
教师提出几个不同的案例要求,学生选择其中的一个进行详细分析和实现,引导与鼓励学生模仿教师的工程设计开发示范过程,按照前文的软件开发流程展开,注意面向对象程序设计语言的语法规则与编程规范,并在案例的展开过程中,引导学生主动探究,鼓励学生站在不同的角度设计不同的方案;如果某功能模块有多种不同的实现方案,允许多种形式的实现,并引入典型的编程模式,则应分析比较不同实现方案的特点,发现其优缺点,分析各自适合的情况。及时发现学生的编程错误,及时总结,分析错误出现的原因,讨论改正错误的方法。在案例完成后,根据选题对学生完成的设计分别分组,在组内从功能实现、实用性、易用性、设计文档的规范性等多方面展开讨论评价,这种方式可保证全员参与,充分调动学生的主动性,使学生知己知彼,通过比较发现设计的优、缺点,实现了优势互补,加深对程序设计方法的理解,激发学生的主动学习意识和参与意识。
经过以上两步的实践,学生体验到自己会做什么,能做什么。本步骤中,学生以小组为单位,组内分工协作,组长充当项目经理,制订项目进度,分配与协调组员工作,团队内的学生基于案例设计原则,结合教师示范设计,根据教师要求对已实现的案例进行充分交流,提出问题,针对案例的新需求,展开设计、分析和实现。在这个过程中,要注重鼓励学生独立思考,发现问题,讨论解决问题的方法,针对已有应用实现新的功能。提高学生创造性地综合运用学科知识的能力,激发学生精益求精的学习精神。
考核评价是教学过程的基本环节,是检验教学质量的重要手段。以往面向对象程序设计课程设计的考核方式主要采用的是教师随堂检查学生的实验过程、运行结果以及编写的课程设计实验报告。评分办法一般为指导教师根据学生完成任务的情况、课程设计报告的质量和课程设计过程中的学习、工作态度综合打分,多数学生只关心自己的得分结果,而对为什么有那样的得分不感兴趣。实际上,这与CDIO工程教育本质并不完全吻合,在课程考核上也要体现CDIO模式所倡导的在工程基础知识、个人能力、团队合作能力和工程系统能力四个层面上进行综合培养,提高学生在课程考核中的参与性和主动性,把学生由被评判变成主动评判,课程的考核也由教师主导的考核转变为学生和团队作品的展示和互相评判,在评判打分的过程中互相学习、比较、发现、借鉴和提高。学生的成绩由两部分构成:个人成绩和团队成绩,从而把成绩的评定也变成比较、学习、交流、改进和提高的过程。
表1是我校近三年来通过三阶段循序渐进的面向对象程序设计课程设计进行教学的效果反馈表,从中可以看出,绝大多数学生认为课程对自己能力的培养有一定帮助,肯定了教学效果。
表1 三阶段循序渐进的面向对象程序设计课程设计教学效果反馈表
改革后的面向对象程序设计课程设计能够深层激发学生的学习兴趣,进而有效提高学生的学习效率,多数学生通过课程设计可以将所学的知识点融会贯通,加深理解,提高知识的综合运用能力,学生在参与子项目的实践过程中,可以获得项目管理和小组合作等多方面的实践经验。但这种形式也存在一些不足:第一,由于学生的创新性选题多样,对教师的知识面和项目实践经验也提出了更高的要求,增加了指导负担,也增加了很多工作量;第二,分组实验过程中,教师无法顾及全部学生,部分不善交流的学生易被忽略;第三,分组合作的实验使一部分程序设计能力差、学习主动性不够的学生参与度低。下一步,将着力于改进和丰富案例,探索新的多因素加权的成绩评价体系,使学生的应用、实践和创新能力得到符合职业需求的锻炼。