高职程序设计课程“翻转课堂+CDIO”教学模式设计与实践
2019-09-09江天仿
江天仿
摘 要:文章针对CDIO教学实践中出现的问题,融入翻转课堂理念,重构高职程序设计课程教学模式,将产品开发生命周期嵌入翻转课堂教学环节,设计了分阶段、递进式“翻转课堂+CDIO”教学模式。实证研究表明,“翻转课堂+CDIO”教学模式能显著提高教学质量,促进理论和实践双重学习目标的实现。
关键词:翻转课堂;CDIO;程序设计课程;教学模式
中图分类号:G712 文献标志码 :A 文章编号:1673-8454(2019)14-0047-04
一、研究背景
CDIO是20世纪末麻省理工学院等四所国际知名大学联合创立的一种现代工程教育模式。它以培养产业界合格工程师为目标,通过模拟工程师角色和工程实践环境,以理实一体化的方式促进学生专业知识、实践技能和职业素养的同步提升。CDIO 工程教育的实施,能够有效建立理论与实际的关联,解决专业教学中知识传授与能力培养的矛盾,对兼具基础性、实用性的高职程序设计课程教学改革具有重要的现实意义。
但CDIO 作为一种基于项目的群体教育模式,引入教学实践后,却出现了一些无法回避的现实问题:一是不能兼顾学生个体的差异性,学生在课堂讲授环节必须掌握本次课的知识点,跟上班级的教学进度,否则难以进入课堂实践环节的学习;二是“设计实现”经验依赖于内容复杂、功能完备的工程项目,课堂有限的教学时间难以完成教学任务。此外,强调基于项目的协作探究,弱化基本编程技术训练,要求学生在项目训练过程中自觉主动地将项目经验与理论知识融会贯通,实现理论和实践的双重学习目标,无疑提高了程序设计课程的入门难度。
针对上述问题,我们需要重构现有的高职程序设计课程CDIO教学模式,不仅能通过项目CDIO全过程以用导学、学做合一,更要兼顾学生的基础,循序渐进地提高知识、锻炼能力,保证项目的顺利进行。本文将翻转课堂理念引入CDIO教学中,通过线上线下教学的有机结合,构建了“翻转课堂+CDIO”教学模式,以满足高职软件人才培养的需求。
二、CDIO和翻转课堂
CDIO 代表构思(Conceive)、设计(Design)、实现(Implement)、运作(Operate),涵盖了产品从构思、研发、应用到反复改进的全生命周期,[1]主张以产品生命周期为教育环境,引导学生主动实践并通过课程之间有机联系的方式学习,在获取一体化学习经验的同时,将工程实践问题和课程知识相结合,从而在专业知识和技能、终身学习能力、团队合作能力、企业环境下构建产品能力等方面得到全面提升。
翻转课堂则是将传统的学习过程翻转过来,学生课下自主学习教师提供的教学资源,完成知识的传递;课上通过合作探究、互动交流完成知识内化的一种新型教学模式。两者均倡导以学生为中心,[2]在课堂上给予学生更多“做中学”的机会,充分发挥学生的主体能动性,最大限度地实现知识内化和能力提升。将翻转课堂引入CDIO教学中,解决了有限学时与大容量、系统化的工程教学内容的矛盾,营造了个性化、协作式的学习环境,鼓励学生课下自定步调地深度学习,为课堂上CDIO项目的顺利开展创造了良好的条件。
三、高职程序设计课程“翻转课堂+CDIO”教学模式设计
“翻转课堂+CDIO”教学模式,实质是现代教育技术与工程教育模式的有机结合。CDIO强调教学实践过程的工程化,就程序设计课程而言,就是选择接近实际的软件项目作为教学贯穿项目,按翻转课堂方式进行教学流程设计,按构思、设计、实现、运作四个步骤组织每一环节的教学活动。考虑到高职学生的认知水平和程序设计类课程的特点,我们将整个教学过程划分为基础教学和综合运用两个阶段,按照软件工程开发流程,遵循程序设计一般步骤,通过线上线下多元教学活动,融合课堂内外两种学习形式,形成了以学科知识为基础、实践应用为重点、CDIO能力为目标的分阶段、递进式“翻转课堂+CDIO”教学模式,如图 1 所示。
四、“翻转课堂+CDIO”教学模式应用案例
Java作为一种纯面向对象的编程语言,具有跨平台、分布式、高安全性、健壮性、多线程等特性,[3]是高职院校计算机专业的核心课程。该课程理实并重,要求学生掌握Java的基础知识,具备面向对象的程序设计思想,能用Java语言开发实际工作领域的应用程序。为了充分发挥学生的主动性,确保教学目标的顺利实现,我们在教学中引入了“翻转课堂+CDIO”教学模式。
1.教学项目设计
践行“翻转课堂+CDIO”教学模式,关键是CDIO框架下的项目设计。由于大多数学生没有项目开发经验,我们在Java程序设计课程中分阶段引入两类项目。
一类是仿真软件项目,作为教学项目贯穿基础教学阶段始终。此类项目以实际软件项目为蓝本,根据课程目标改编而成。目的是有机整合课程知识,承载教学内容;在项目带动知识的同时,能兼顾课程知识结构的系统性。我们选用“员工管理系统”项目串接Java课程理论知识点,教师按项目需求将其分解成若干个功能模块,再将这些功能模块进一步分解为一系列覆盖课程知识点、由浅入深的小项目。每个小項目都具有各自的需求分析、算法设计、编码、测试、运行等活动,实现局部功能的某项开发任务。随着小项目的递进,增量式完成整个系统的开发,随之也完成了课程全部知识点的学习和训练。项目内容及知识点对应关系如表1所示。在小项目的讲解和训练过程中,实现多次知识内化,引导、推动学生自主完成知识的建构和CDIO能力的形成。