您好, 访客   登录/注册

基于CDIO的高级语言编程实训课教学改革

来源:用户上传      作者:

  摘 要:针对高校夏季学期教学普遍存在的问题,结合高级语言编程教学实践,提出了符合夏季学期时长的实训课教学改革方案。在实践中以CDIO教育理念为指导,以基于项目的学习为技术手段,重点培养学生工程思维和编程能力,设计多层次多类型的实训题目,鼓励学生以团队的方式积极参与,并利用代码评估工具进行质量评估。实践证明,新模式下的实训课提高了教学效果。
  关键词:实训课程;CDIO;PBL;教学改革
  DOI:10. 11907/rjdk. 192170 开放科学(资源服务)标识码(OSID):
  中图分类号:G434 文献标识码:A 文章编号:1672-7800(2020)002-0176-04
  英标:The Reform of Teaching of High-level Programming Language Training Course Based on CDIO
  英作:LI Xing-juan1, LIU Ming-ming2
  英单:(1.College of Computer Science,Nankai University; 2. College of Software,Nankai University, Tianjin 300350,China)
  Abstract:In view of the widespread problems of summer semester teaching in colleges and universities, combined with the practice of high-level language programming, this paper proposes the teaching reform of training course in line with the summer semester. In practice, under the guidance of the concept of CIDO education, project-based learning is used as the technical means. The emphasis is developing students’ engineering thinking and programming skills, designing multi-level and multi-type practical topics, encouraging students to participate in teams, and using code evaluation tools for quality assessment. Practice has proved that the new model of training courses improves the teaching effect and realizes the aim of summer semester.
  Key Words: training course; CDIO; PBL; teaching reform
  0 引言
  我国高校一直在人才培养模式、课程体系、教学内容等方面进行改革,以跟上世界高等教育的发展步伐,其中一个重要改革就是“小学期”制度。“小学期”也称为“夏季学期”,主要安排在紧随春季学期的3-4周中,是很多世界名校普遍采用的学期制度。南开大学从2012-2013學年开始实施“夏季学期”制度。增加夏季学期后,原来的两学期制改为“两长一短”三学期制,即18周秋季学期+18周春季学期+4周夏季学期[1]。学期改革的目的是推动“大班上课、小班讨论”,通过“讲一练二考三”的教学改革,进一步提升教育教学水平和人才培养质量。经过几年的实施,夏季学期在教学设置、丰富课程形式、深化实践教学、加强国际交流方面发挥了独特作用[1]。在实施过程中也暴露出一些问题,主要集中在“课程分散效率低”、“夏季学期课程安排不紧凑”及“修学分”方面,同时与企业实习时间冲突是普遍问题。熊丙奇[2]认为:“形式上的教学创新有,但实质性的教学突破依旧缺乏。”
  针对高级编程语言课程(C++)而言,该课程是计算机相关专业的必修课,共开设两个学期,每个学期都配有上机课时,最终考核形式是闭卷考试和上机编程。从课时来看,实践教学所占比重并不小,但课程结束后,根据评教调查发现,在上机实验教学中,学生只是按照教师布置的作业内容或者知识点按部就班练习,欠缺分析、解决实际问题训练。学生普遍反映“能够看懂书,听懂课,考试分数也好,但在编写规模稍大的C++程序时无从下手”[3]。同时,在培养优秀工程人才的过程中,高校工程教育也存在一些问题,如模式趋同化、教学中缺乏实践环节、教学体系不适应工程特点、创新与创业教育重视不足、学生综合能力素质薄弱等[4]。基于上述现状,笔者学校开设了“高级语言编程实训课”作为培养学生工程实践能力的途径,基于CDIO理念和PBL模式[5]对课程进行教学改革与实践。
  1 CDIO理念与PBL模式
  CDIO工程教育模式是麻省理工学院和瑞典皇家工学院提出的教育理念,代表构思(Conceive)、设计(Design)、实现(Implement)和运作(Operate),以现代工业产品的生命全过程指导工程教学过程。CDIO是近年来普遍采用的工程教育理念,许多世界著名大学都采用了CDIO教育理念,国内一些大学和教师也开展了CDIO研究、实验和探索。如南开大学王庆人[6]探讨了如何借鉴欧美的CDIO模式,走适合中国国情的计算机教育之路;韩智等[7]探讨了如何在软件工程教学中采用CDIO理念进行教学改革;孙凌宇等[8]研究了CDIO标准和工程教育理念在培养创新型软件工程人才中的作用;廖湘林等[9]在计算机专业实验教学中采用了CDIO;马丽等[10]采用CDIO理念构建了软件工程在线开放课程。   基于项目的学习(PBL)是一种以学生为导向、由教师推动的学习方法。教师提出一个项目,学生在教师的指导下通过研究完成该项目,将整个研究和项目阶段实施的流程系统化。孔平[11]、边亚琳[12]、李杰[13]、王哲[14]和毛胜利[15]等分别在课程教学和人才培养方面应用了PBL模式。实践表明PBL模式能激发学生独立思考、主动探究、规划学习,提升解决现实世界中问题的能力。PBL不仅是学习的补充活动,而且是科学类课程的基础。
  CDIO大纲涵盖了工程教育基础知识掌握、个人专业技能和素质发展、团队协作能力和产品或系统开发必须经过的4个阶段,如表1所示。笔者学校参考CDIO的工程教学理念和教学大纲,在实训中强调对学生能力的培养,从层面能力和具体能力进行工程思维训练。学生要在完成特定项目的过程中学习一系列编程技能,在设计、实施和操作阶段贯穿CDIO构思。在PBL教学模式实施中,减少教师讲授时间,大幅增加学生动手编程时间。学生在项目参与过程中,自由组织团队、自主分工,选择要解决的问题,形成自己的逻辑思维和解决方案。在项目中利用自己的经验、能力,形成自己的学习风格。项目结束时,演示成果并接受评估。 实践证明,基于CDIO理念、采用PBL模式的实训课程取得了很好的教学效果。
  2 教学改革与实践
  本实训课的核心目标是提高学生利用C++语言编程解决实际问题的能力,將项目开发中的经验和先进工具教授给学生,培养工程素养和团队合作能力,以求更接近“实训项目”。从软件工程师角度出发,结合CDIO培训大纲,实训课要求学生掌握的知识点和技能涵盖如下内容:
  (1)专业基础知识与应用能力。需要掌握C++基础,包括数据类型和运算、运算符重载、IO流和文件操作、异常处理;掌握C++进阶,包括函数模板和类模板、继承、多态、STL标准模板库、常用设计模式;掌握常用数据结构,包括数组、队列、链表、栈、容器、集合等。
  (2)个人专业能力和职业素质。需要掌握Visual Studio集成开发环境,包括多种类型项目的建立、编译、调试和运行;熟练使用调试工具和技巧;掌握QT5集成开发环境,包括GUI项目的建立,消息和事件机制。
  (3)团队协作与沟通能力。需要组成团队、选择项目、自由分工、计划开发进度并以文档形式管理开发流程。
  (4)工程系统能力。学生需要在项目完成后,提交可执行系统并答辩演示,教师进行效果评估,同时要求使用工具软件评估C++代码质量。
  2.1 题目设计
  梳理和调整实训课教学内容,不再沿习传统的知识点练习模式,而是以完整题目为单位进行编程实践。在设计实训题目时,要认真考虑题目的难度级别。如果级别太高,部分学习能力较差的学生会产生畏难情绪,丧失编程兴趣;如果级别太低,会形同“水课”,无法真正提升学生实践能力。为此设计了不同难度级别的编程题目,总体分为3大类5个难度级别:基础类、综合类和提高类,如表2所示,其中星号表示难度级别,从1级到5级,星号越多,难度越高。
  在设计实训题目时,考虑目前流行的VisualStudio 2015(VS)和QT 集成开发环境。VisualStudio 2015功能强大,支持多种开发模式和开发语言,是业界进行C++应用程序开发的主流IDE。QT是跨平台的C++图形用户界面(GUI)应用程序框架,支持开源,完全面向对象,广泛应用于GUI程序开发。
  在基础训练类别中,要求学生在VS环境下编写基于Console窗口的命令行程序,完成C++基础编程能力训练。代表性的题目包括字典程序、图片处理和各种编码算法,这3种类型题目涵盖了C++中的基本数据类型和运算、文件操作、输入输出、函数以及异常处理等。在综合训练类别中,要求学生编写GUI程序,掌握消息事件机制和面向对象编程概念。Visual Studio提供了MFC类库,方便开发人员自定义应用程序框架,但MFC的封装过程复杂,学生很难掌握这些类库,并且无法在调试中精确定位问题位置。
  因此,采用Visual Studio QT插件创建GUI Application项目,利用VS的编译、调试和运行环境,同时不限制学生单独使用QT5完成这部分实训题目。在提高训练类别中,要求学生编写应用级别程序,掌握复杂的数据结构和算法,考虑用户友好性。这部分题目是经典的迷宫类、棋类和射击类游戏,学生在完成基本功能之外可以自行增加一些特色,如背景音乐、动画渲染、游戏关卡等元素。为培养学生的工程思维,提高编程效率,允许使用第三方类库。在教学实践中,这3类题目可以灵活调整和扩充,提升学生解决实际问题的能力。例如CMD模式下的某编码算法,曾要求学生实现广泛使用的base64编码,在编码和解码算法都正确的基础上,鼓励学生尝试对多种类型的文件进行编码解码处理。这种从点到面的扩展让学生能看到更多的实训成果,增强了编程信心,极大提升了学生的编程能力。以此类推,上述3大类9小类的题目可以根据实训课进度和学生学习能力扩展到20多个具体题目。
  2.2 实训实施
  高级编程语言实训课课时为32学时,每周8课时。为保证教学效果,实训课采用小班教学模式,每个班人数控制在30人以内,课时分配如下:
  (1)在编程基础环节,以教师实操演示为主、学生练习为辅,共分配4课时。内容为配置VS和QT5开发环境,掌握调试工具和技巧,能够定位并改正程序中的错误。
  (2)在编程实训环节,以学生编程实践为主、教师讲解为辅,对普遍出现的典型问题作出指导,共分配24课时。具体分配为:基础题目分配4课时,综合题目分配10课时,提高题目分配10课时。基础题目由每个学生独立完成,教师逐一检查,之后评分。综合题目和提高题目以小组形式完成,学生自由组成开发团队,每组2-3人。要求成员分工明确,确保工作量,遵循软件开发工程规范。   (3)在评估验收环节,各个项目小组以答辩形式展示项目构思、设计、实现和运行各环节,阐述核心技术和代码。教师根据各小组演示效果,采用通用软件质量框架模型对软件项目的上层质量特征进行评估。质量特征主要包括功能特征、可靠特征、易用特征和效率特征。同时采用代码分析工具CppDepend对所有项目代码进行定量化的度量因子评估。CppDepend能够对C++程序进行60多个指标测量,如class、namespace的数量、注释比例、内聚性、稳定度等。该工具还能直观显示程序模块、类、函数之间的依赖性,给出程序质量等级。
  2.3 实训效果
  在新实训方案实施过程中,学生选课积极性得到了极大提升,每个小班的选课人数都是满员。遵循CDIO能力培养大纲,教学主体由教师转变为学生,学生能够有更多的时间和更大的自由度进行工程能力训练。以项目为导向的编程训练培养了学生工程推理和解决实际问题能力,贯穿构思、设计、实现和运行各个阶段。同时分组模式锻炼了学生的团队协作与交流沟通能力,让学生更贴近企业开发环境。对学生完成的综合题目和提高题目进行运行演示和代码审查,发现开发质量有明显提升。项目运行情况如图1所示。
  实践结束后也发现了一些问题,如有些项目小组存在前松后紧情况,学生缺乏主动学习、克服困难的心理准备,缺少软件技术、工程开发以及文档写作方面的经验,工作不是很细致,抓不住重点;部分组内分工及工作量不平衡,好的学生做得多一些,基础不好的学生做得少一些,影响项目最终质量。原因是部分教师在指导项目小组时侧重宏观指导,未深入到各个小组内部,动态了解他们的具体问题和进度。笔者计划采用某些过程管理软件解决上述问题,希望在后续课程中能有所改善。
  3 结语
  本文分析了南开大学夏季学期学制施行的特殊性和存在的问题,针对高级语言编程实训课教学实践,提出基于CIDO和PBL的教学模式。这种开放式的编程实践给予学生更多的编程时间,锻炼了学生的综合素质,改变了夏季学期“修学分”的选课状态。针对存在的不足,考虑加强实训过程控制的节奏和力度。拓展学生工程思维、培养创新型人才教育任重道远。
  参考文献:
  [1] 舒高磊. 三学期制下学生夏季学期生活状况探究——以南开大学为例[J]. 思想政治课研究,2015(5):61-65.
  [2] 成炘儒,李攀,史一棋.  高校小学期点赞与吐槽并存 小学期该如何升级[EB/OL]. http://edu.people.com.cn/n1/2017/0727/c1006-29430 793.html
  [3] 张波. C++程序设计案例遴选[J]. 计算机教育,2010 (18):49-50.
  [4] 朱高峰. 中国工程教育的现状和展望[J]. 清华大学教育研究,2015(1):13-20.
  [5] EDSTR?M K,KOLMOS A.PBL and CDIO: complementary models for engineering education development[J]. European Journal of Engineering Education,2012,39(5): 539-555.
  [6] 王庆人. 我国计算机教育如何借鉴欧美 CDIO模式[J]. 计算机教育,2010(11):8-12.
  [7] 韩智,张振虹,李兴娟. 基于CDIO理念的软件工程课程教学改革[J]. 计算机教育,2010(11):56-57.
  [8] 孙凌宇,冷明. 基于CDIO的创新型软件工程人才培养模式研究[J]. 山西财经大学学报,2011(S1):48-52.
  [9] 廖湘琳,余晓晗,张所娟,等. 基于CDIO理念的计算机专业实验教学改革[J]. 计算机教育,2018(2):47-52.
  [10] 马丽,李真,何伟娜,等. 基于CDIO理念的软件工程在线开放课程建设探索[J]. 软件导刊(教育技术),2018(10):14-17.
  [11] 孔平,张建青,候丽英,等. 基于PBL教育理念的数学建模课程的教与学[J]. 上海理工大学学报(社会科学版),2018(3):267-271.
  [12] 边亚琳. 基于项目驱动的大学生创新能力培养模式探析[J]. 大学教育,2018(9):20-23.
  [13] 李杰,李爽,舒廣文. 基于PBL模式的统计学课程教学设计——以“中心极限定理”为例[J]. 高教学刊, 2018 (5):106-108.
  [14] 王哲,张钰,袁同山. 基于PBL教学法的高校计算机课程教学改革与研究[J]. 信息与电脑,2017 (8):245-246.
  [15] 毛胜利,冯运仿,程细才,等. 基于PBL的数据结构教学模式研究与探讨[J]. 现代计算机(专业版),2015 (17):10-13.
  (责任编辑:杜能钢)
转载注明来源:https://www.xzbu.com/8/view-15224493.htm