投稿邮箱:
dazhongwenyishe@163.com
基于工程项目驱动的程序设计综合实训课程改革研究
姚鹏*,周丽芹,李庆忠
(中国海洋大学工程学院,山东 青岛, 266100)
[摘 要]针对工科自动化专业的程序设计综合实训课程教学难度大、脱离工程应用、学生缺乏兴趣等问题,分析课程知识体系与教学需求,设计了融合课程知识树、结合自动化专业特色且面向科研应用的工程项目,并以该工程项目为驱动,以启发式教学为支撑,开展程序设计综合实训课程的教学工作。
[关键词]程序设计综合实训;工程项目;启发式教学
[基金项目]中国海洋大学本科教育教学研究项目(项目编号:2019JY072)。
[作者简介]姚鹏,1989年,男,山东潍坊,博士,中国海洋大学工程学院,讲师,主要研究方向为无人系统路径规划与智能决策。
[中图分类号]G642 [文章编号] [文献标识码]B/A [收稿日期]2020-7-27
Research on the reform of comprehensive training course of program design based on project driven
Yao Peng *, Zhou Liqin, Li Qingzhong
(School of engineering, Ocean University of China, Qingdao, Shandong Province, 266100)
Abstract To: in view of the difficulties in teaching the comprehensive practical training course of program design for engineering automation major, which is divorced from engineering application, and students lack of interest, the knowledge system and teaching requirements of the course are analyzed, and an engineering project integrating the knowledge tree of the course, combining the characteristics of automation specialty and facing the scientific research application is designed. Driven by the engineering project and supported by heuristic teaching, the project is carried out Design the teaching work of comprehensive training course.
Key words: programming comprehensive training; engineering project; heuristic teaching
作为工科自动化专业的本科生实训课程,《程序设计综合实训》在自动化专业的人才培养方案与课程体系中具有重要的地位,它是C/C++语言等基础核心课程的进一步延伸与拓展,也是大学生智能车竞赛、海洋航行器竞赛、电子设计大赛等竞赛的支撑课程。《程序设计综合实训》在C/C++语言基础上,要求学生掌握Visual C++可视化应用程序开发工具,主要内容包括Windows编程、文档/视图结构、图形设备接口和GDI资源、对话框、控件等。《程序设计综合实训》作为一门实践性很强的课程,将着重培养学生的软件编程能力与项目开发能力,并对培养学生分析解决复杂问题的能力、养成严谨务实的学习态度、树立高效合作的团队意识等都有重要意义,可为学生后续学习打下良好的基础。
众所周知,《程序设计综合实训》课程具有知识点繁杂、概念抽象难懂、编程细节较多等特点,学生在短期的实训课程内无法掌握全部内容,且大多数高校停留在课堂基础教学与实验实训阶段,学生们仅通过编写课后题或者老师设置的小项目程序(如动画小游戏)等完成实训课程[1-2]。然而,学生们普遍反映此类方式往往枯燥无味,缺乏对学生的有效引导,且与专业实际背景结合不够,导致理解课程不够深入且缺乏学习兴趣,无法真正掌握面向工程的编程思想。因此,国内外很多学校已经开始积极尝试将程序设计实训与具体专业背景下的工程项目相结合,以工程项目为主线推动学生自主学习与实训[3-4]。本文结合自动化专业的特点以及授课教师的具体科研方向,以水下机器人路径规划系统设计这一典型的工程项目为驱动主线,以学生自主发现式学习与创新为主导,以教师启发式引导为支撑,提出了基于工程项目驱动的程序设计综合实训课程教学方法。
1课程内容与特点分析
以本校为例,《程序设计综合实训》是中国海洋大学自动化专业的本科生小学期实训课程,为期两周时间,要求学生先修课程为《C++程序设计》即已具备一定的C/C++程序设计基础。本课程一方面是对已学C/C++语言的巩固,更重要的是,要求学生学习并掌握Visual C++可视化应用程序开发工具。Visual C++程序设计支持MFC类库编程,具有强大的集成开发环境,可用来开发各种类型的应用程序,其主要内容包括MFC编程框架与消息映射编程、文档/视图结构、图形设备接口和资源、对话框与控件、BMP图像处理软件设计等,通过学习上述内容并进行实训,要求学生熟悉Windows编程思路与框架、Visual Studio开发环境,掌握在各种程序框架下的图形、文本绘制、鼠标、键盘消息、菜单界面、画笔、画刷、字体、定时器、动画、对话框、控件资源等功能的编程调试,进一步培养学生的项目开发与程序设计能力,提升学生的问题分析与算法描述能力,并初步掌握利用计算机解决复杂问题。
通过分析本课程的教学内容与知识体系可知,《程序设计综合实训》课程的教学难度较大,主要体现在:知识规模庞大繁杂、结构复杂,学生难以短时间快速掌握或理解;向导生成程序较专业、代码量较大、程序结构复杂,学生往往不知如何入手。正是由于上述特点,该课程的主流教学思路是以学生编程训练为主、老师讲解知识为辅的“精讲多练”方法,因此如何引导学生更高效地进行编程训练,是授课老师的重要任务。
2 工程项目驱动教学整体思路介绍
新工科背景下,高校要以培养能够适应甚至引领未来工程需求的人才为目标,学生应对于本专业知识结构体系等具有宏观的认识与清晰的把控,需从专业大局观出发开展各门课程学习;人工智能、大数据等与自动化息息相关的新兴技术的快速发展,对学生的编程设计与项目开发能力提出了更高的要求。结合专业特色,以工程项目为驱动开展程序设计综合实训,不仅可有效提升学生的学习与实训效果,还可使学生对本专业背景有更加清晰的认识,增强该课程与后续课程的联系。主要特点如下:
(1)教学过程以一个与本专业密切相关的工程项目为主线展开,从该项目的各模块环节中提取课程知识点并展开学习,层层推进,直至得到一个完整的项目解决方案,注重培养学生的问题分析能力。此外,还可通过对项目的功能扩充,来拓宽学生的知识广度和深度。
(2)教师不用全部讲解各类繁杂的知识点,不再过于关注具体编程细节,只选取部分内容的典型案例进行讲解以启发式引导学习,而学生将学会主动查阅资料、获取知识,注重培养学生的自主学习能力与探索实践能力。
(3)教师仅提出项目需求与任务限定,学生给出具体方案设计,此外教师监督学生小组的项目进程并对具体方案给出建议。学生通过对自身潜能的积极发掘,自主完成项目设计和编程全过程,可有效提升学生的项目开发能力与编程能力。
3 基于工程项目驱动的程序设计综合实训课程教学方法
本方法立足于程序设计综合实训课程的特点与自动化专业的人才培养方案,并结合本校的海洋特色背景,在合理规划课程关键知识点的基础上,侧重培养学生解决复杂工程问题的能力,以面向科研应用的工程项目为驱动,结合启发式教学思路充分调动学生的主观能动性,提高学生的编程能力。整体教学流程如图1所示。
3.1 基于工程项目的学习任务方案设计
教师如何设计工程编程项目,并给出合理的学习任务,直接决定了后续学习的执行效果与学生的参与热情,是工程项目驱动教学方法的重点。
首先,在实训课程开始前,教师根据课程培养计划与教学大纲要求,结合本专业人才培养需求、国内外先进教材、创新竞赛需求等,确定适应于本专业的Visual C++程序设计基础知识分布与内容衔接。由于程序设计综合实训课程的知识点密集且偏重编程实践,因此需分解本课程知识点并实现横向关联,在此基础上选取与实际编程项目密切相关的关键知识点,进行重点强化,以实现纵向深入,构建本课程知识树。
然后,教师着重考虑设计可包含关键知识点且与本专业密切关联的开放式工程项目,确定项目各模块与课程主要知识点的联系,给出指标化的学习任务。基于教师科研方向与研究课题[5],我们设计了一组基于水下机器人路径规划系统设计的软件编程项目,该工程项目难度适宜且属于自动化领域典型应用,能提高学生的学习兴趣。它不仅包括可视化界面设计,以引导学生掌握文档/视图、对话框与控件等可视化编程知识,还包括具体路径规划算法的实现等内容,以巩固动态链表、指针、类和对象等C++基础知识。该工程项目主要包括基本需求和拓展提升两部分:项目的基本需求部分要求所有小组必须完成,包括对机器人状态、障碍环境等信息的数据处理与可视化展示,具体路径规划算法的实现(考虑到项目复杂度,要求学生从A*、人工势场法、Q-learning、迪杰斯特拉等较简单的经典算法中任意选择一种)等;拓展提升部分主要是针对部分比较优秀、有剩余精力开展实训的学生,具体内容包括多种编程算法尝试、机器人示意图、动态算法实现等。
然后,教师基于该工程项目的指标要求与内容,将涉及到的关键知识点穿插融入到工程模块中,制定课程学习任务单,并在正式开始实训课程前将其下发给学生。学生们根据各自的兴趣与编程水平,进行自主分组与任务分配,然后各小组制定详细的课程学习计划与项目设计方案,并反馈给教师,教师对其进行调整,形成完整的闭环设计方案。
3.2 课程教学
当各组学生制定好项目方案后,即可开始正式的编程实训。首先,考虑到学生自己入门Visual C++课程的难度较大,教师将在实训阶段前期对某些关键知识点进行详细讲解,并结合具体案例进行编程,指导学生“先模仿、再改写、后编写”,快速入门。随后,在工程项目的驱动下,进入学生主导、老师辅助的学习阶段,即教师不再讲授基础知识点,而是引导学生通过查阅资料、小组讨论等方式来解决共性或个性化编程问题,并监督各组项目进度或进行方案调整。通过借助课堂交流、课程QQ或微信群、邮箱、慕课等多种形式,采取课堂课下多模式多渠道联动,增强教师与学生的互动。
3.3 课程考核
为了评估学生在程序设计实训课程中的表现,教师不仅要关注最终的实训成果(成绩占比60%),还要考察学生在整个实训阶段的表现(成绩占比40%),主要考核点包括项目完成情况、实训课程参与度、基础知识掌握程度、计算思维能力、程序设计能力、实训报告规范程度等。同时,在传统的教师考核学生的基础上,引入学生互评考核体系,即在整个实训阶段引入小组成员内部互评打分,并在实训结束时采取项目答辩的形式让小组间互评考核,以激发学生们的参与热情。其中教师打分与学生打分的比重各为50%,以确定最终实训成绩。
3.4 课程评价
对中国海洋大学自动化专业2018级2个班级的学生,分别采取了传统的教师主导式方法与工程项目驱动式方法进行《程序设计综合实训》课程的教学,并在课程结束阶段对90名学生进行了问卷调查。经统计,相比于传统的教师主导式方法,采取工程项目驱动式教学方法可使学生们在基础知识掌握(83%)、实践编程能力(94%)、课程兴趣程度(88%)、专业素养拓展(90%)、综合评价(93%)等方面具有更高的满意度(采用教师主导式方法,学生们的各项满意度分别为:66%、70%、58%、54%、64%)。
4 结语
根据“工程项目驱动、教师启发引导”的教学思想,设计符合自动化专业背景的水下机器人路径规划系统编程项目,并通过任务方案设计、基础案例教学、项目自主开发、实训互评等步骤,引导学生高度参与程序设计实训,取得了良好的教学效果。
参考文献:
[1] 谢凯,李靓,冯文祥.项目驱动模式下的面向对象程序设计教学改革研究[J].电脑知识与技术,2019(15):208-209.
[2] 李金凤,边继龙,王立梅, 等. C语言程序设计实训课程改革研究[J]. 科技信息,2013(34):191-191.
[3] 郭银章,王丽芳. 基于项目任务驱动的C语言程序设计课程教学改革与实践[J]. 计算机教育,2017(2):41-44.
[4] 钱燕,赵桂龙,桑运川,等. VC++课程教学中的发现式项目驱动法研究[J].计算机教育,2014(12):72-75.
[5] 姚鹏,王琨. 基于最小一致性的自治式水下机器人路径规划[J].无人系统技术,2019(4):8-14.
文稿来源:教育教学论坛编辑部 网址:www.jyjxlt.com