CDIO理念下协同学习在程序设计课程教学中的应用
2017-09-15夏小云嘉兴学院数理与信息工程学院浙江嘉兴314001
夏小云(嘉兴学院 数理与信息工程学院, 浙江 嘉兴 314001)
CDIO理念下协同学习在程序设计课程教学中的应用
夏小云
(嘉兴学院 数理与信息工程学院, 浙江 嘉兴 314001)
计算机程序设计课程一直是高校工科类专业学习重要的基础课程,编程技能是每个大学生应该掌握的基本能力。针对当前计算机程序设计课程以老师讲解和学生个人学习为主的情况,分析了学生普遍感觉编程内容学习困难的原因,提出了CDIO(C→Conceive,构思;D→Design,设计;I→Implement,实现;O→Operate,操作)理念下协同学习计算机编程教学方法。通过实践教学发现,协同学习能够让学生进行更多交流和互动讨论,能够激发学生的编程兴趣,更好地掌握编程中的各项技能,同时也有利于老师在教学中的重点指导和评估。
CDIO理念;编程教学;协同学习;效果评价
为了适应社会对应用型人才的需求,当前高等教育改革明确要求部分院校往应用型或技术型转型,并要求高校着力培养具有创新能力的应用型高素质人才[1]。计算机作为一种高效的信息处理工具,在各行业得到了广泛的应用。计算机程序设计类课程有利于培养学生的逻辑思维能力和实践动手能力,众多高校将其纳入工科专业的公共基础课程。当前开设的计算机程序设计类课程主要涉及到C、C++、C#以及Java等编程语言,通过吸收CDIO先进工程教育理念[2],将传统学生以个人学习为主转为协同学习为主[3],这不仅仅是学习编程知识、方法和技巧,而且可以切实培养学生的工程思维。通过在教学中的应用和评价,该方案取得了较好的学习效果。
一、计算机程序设计课程教学现状及问题
计算机程序设计课程是计算机类专业乃至许多工科类专业的核心基础课程,也是其他后续专业课程的先修课程。从当前高校计算机类及相关工科专业人才培养方案来看,计算机类程序设计课程主要以开设C、C++、C#或Java编程语言为主。而这些课程所涉及的内容都是学生今后就业应聘时企业、单位重点考察的内容,从某种程度上来说其教学质量直接影响到学生专业能力提升以及学生的就业质量。然而,当前高校相当部分的教学模式还以教授知识为主的填鸭式教学。尽管在理论教学之外也安排了学生上机实验,但是这种方式难以让学生真正掌握开发实际工程项目的能力[4]。而且学生始终处于被动式学习,学习兴趣不高。主要存在的问题有以下几点:
(一) 重理论轻实践
从当前高校计算机程序设计课程教学的学时设置来看,大多数高校设置的理论学时均在不同程度上高于上机实验学时。学生也经常反映只会做题目,不会动手编程实现。一些基本的语言等理论知识掌握的很好,而在实际编程过程中,难以将所学知识应用到实际编程中,动手能力没有得到提高。
(二) 教学方法单调
程序设计类课程所涉及知识点较多,而课程总学时又不多,导致很多教师都是很匆忙地完成教学任务;教学方法上也很单调,不能充分调动学生的学习积极性,导致学生处于被动接受知识,学生学习起来感觉疲惫,缺乏兴趣。教师在讲授过程中也只是按照教材的固定PPT授课,教材把握不全面,教师的知识体系也没有得到及时更新。目前的教学方法更多地关注教学内容,无论是教师授课用的案例还是学生上机的题目,都是按照教学大纲的要求设计的一些简单例子,它们大多是对同一种方法的重复练习,学生难免感到枯燥乏味,最终达不到掌握程序设计的基本方法和利用计算机解决实际问题的目标。
(三) 课程学习以学生个人为主,团队协作能力薄弱
课程设计以个人为单位,缺乏多人合作的设计性、综合性及创新性课程设计项目的安排,不利于学生团队协作能力、创新能力、交流沟通能力的培养,而且学生多以得分为目的,忽略了自身能力的提高。
(四) 考核评价方式滞后
目前,C 语言程序设计教学的考核依然采用闭卷理论考察的方式,教学评价中缺少实践能力考察的内容。学生为了能够通过考核,只是注重理论知识的学习,忽视了实践能力的培养,因此对于实践教学的重视程度不足,缺少足够的实践锻炼。如此导向使得学生在学习过程中只注重概念、原理和模式化的试题,而工程素质和实践能力根本得不到有效的训练和提高。
二、CDIO理念下计算机程序设计课程设置
为了让学生全面提升计算机的程序设计能力,不仅仅要提高编码的能力,还包括分析问题、解决问题的能力。计算机程序设计课程应放在大学整个学习过程的哪个阶段,相应的课程设置也显得至关重要。传统教学方法认为大学生刚入校,基础薄弱,不宜在大学一年级就开始学习编程课程。然而当前的学生在高中阶段已经学完了通识教育的大部分数学及自然科学课程,而且很多也完成了计算机基础课程的学习,初步掌握了计算机编程学习所需要的基础知识,完全有条件让学生一进校就接触计算机程序设计类课程的学习。因此,完全可以将计算机程序设计相关课程放在大一、大二阶段完成。从全面培养大学生工程思维能力的角度出发,应将计算机程序设计课程教学分为三个阶段进行。
第一阶段:计算机编程和算法基础。很多程序设计课程所采用的入门级标准教材都以“Hello World”作为教学的第一课,而后续课程都是编程语言的语法以及程序控制结构的学习。然而,本质上编程的目的主要是解决具体的问题。如果一开始就让学生去学习大量的语法知识以及代码编写,很有可能就会减弱学生的学习兴趣。在教学改革过程中,应当是在入门学习的时候,不管是何种编程语言,最关键的是培养学生对编程的兴趣,甚至让学生爱上编程,而不是让学生关注他们应该学习哪种编程语言,或者是编写的代码程序是否能在电脑上运行,以及语法的问题在哪里。
因此,在学生学习编程的时候允许学生使用自然语言以及伪代码,先描述一个问题,了解问题的输入和输出,以及用什么方法进行问题求解。在这个阶段,采用基于CDIO的工程教育理念来设计计算机编程方法,如下表所示。
表1 CDIO理念的程序设计方法
从表1可以看出,程序代码的编写,只是众多步骤中的一个。因而对于那些程序语法掌握不够好、编程不够熟练的同学,仍然可以在其他步骤中很好表现,从而能够充分的激发编程兴趣。在这个阶段,表1中的程序设计方法贯穿整个过程。在此阶段教学过程主要涉及到数据类型、基本的程序控制结构以及常用的算法等内容。
第二阶段:主要关注数据结构及算法设计部分内容。学生在学习第一阶段内容之后,已经初步掌握了基本的编程概念以及求解问题的能力。在第二阶段主要是进一步引导学生学习更高级的数据结构科目,进一步磨炼学生的编码技能以及程序调试能力。这个阶段组织学生进行编程竞赛,并且学生以团队的方式参加竞赛。每个团队中选出一名组长,不同成员之间明确分工,各司其职。目的在于考核他们分析问题的能力、求解问题的速度以及团队协作能力。
第三阶段:项目驱动的综合编程训练。第二阶段学习过程中采用的编程竞赛能够促进学生编程技能的提升,然而竞赛中的程序都是小规模的问题。为了进一步检验学生对现实中一些实际项目的开发能力,本阶段主要是为学生提供一些具有一定规模的项目给学生训练,让学生真正体验到所学的编程知识在实际项目中的应用。通过实际项目的训练,有利于刺激学生的学习动力,激发学生的学习兴趣,并能够进一步提升学生的工程思维素养。
三、协同学习编程方法
(一)协同学习
当面对复杂问题求解时,个体的作用往往显得非常弱小,因此,需要通过团队合作的方式才能协同完成整个任务。根据群体智能研究表明,一些群居生物通过个体之间相互合作从而表现出群体智能行为。例如蚁群、鸟群及蜂群等在没有任何先知和组织安排的情况下,能够分工有序的进行觅食、避障。而相关研究人员也根据这些群体智能涌现现象,提出了许多不同的群智能方法用于复杂问题的求解。
协同学习是当前流行的一种团队学习方式。在学习过程中,团队成员之间协作发挥集体协同效应,成员之间各自有自己的任务,而且成员之间相互帮助共同完成某个任务。而在团队组织的过程中,需要考虑团队成员之间的异质性和多样性,而不同的团队之间互相竞争有利于发挥群体智慧。因此,引入将集体智慧最大化的协同学习应用于计算机编程教学中,以期达到更好的教学效果。
(二)自组织式协同编程学习方法
为了更好的达到学习效果,学习过程中采用群体智能中的逐步寻优、不断进化的思想。学习班级分成若干个学习团队,每个团队成员自己组织,而且为自己团队取名,以突显团队成员的团队精神和责任感。自组织式协同编程学习主要基于上述CDIO不同阶段的学习过程,通常按照以下步骤进行:
1.团队分组
2.明确学习内容和目标
3.收集资料
4.建立学习环境
5.头脑风暴,协同沟通
6.评估和总结
该过程最关键的是头脑风暴过程的应用,以及之后如何进行协同交流和沟通,最后得出结论。具体的过程如下:
(1)各团队明确自己的任务之后,团队成员分别独立收集资料并进行资料整理、理清相应知识体系。
(2)所有团队开始搭建各自的协同学习环境,包括软件和硬件等环境。
(3)各成员完成相应任务之后,发表自己的见解,碰撞出新的火花,再进行协同交流,最后形成一个统一的结论。
(4)老师进行点评指导,团队再进行方案优化,并反复进行(1)、(2)和(3)的过程。
教学效果评价,可以通过学生考核的方式以及通过问卷调查学生对于学习效果的满意度进行总体评分。
四、教学效果评价
计算机编程类课程教学效果评价不同于传统的理论教学,其更注重学生的动手实践能力以及综合素质的提升[5]。因此设计合理的评价方法也是进一步检验学生学习效果的有效途径。在近两年的程序设计类课程教学中,已经将重新设计的基于协同学习的编程方法应用到相关工科专业教学中。并通过与传统的计算机程序设计教学方法对比,新的教学方法使得学生编程的兴趣得到提高,求解具体问题的编程能力也大大提升。
为了更好的评估新的教学方法的有效性,选取了一组30人的教学班,已经参加了传统教学方式的Java语言程序设计课程的学习。另外选取一组30人的教学班参加协同编程学习方式的Java程序语言的学习。为了测试两组学生采用不同教学方法后的编程能力,通过对他们进行编程考核。考核等级分为A(90分以上)、B(80-89分)、C(70-79分)、D(60-69分)及E(60分以下)五个等级。结果见表2,图1。
此外,为了进一步评估协同学习方式的优缺点,对60名已经参加过课程的学生进行了另一次调查。从学生的编程技能提高、创造思维提升、主动学习、团队合作意识等方面进行了问卷调查,统计显示学生的总体满意度达到98%以上。从极少数不满意情况分析来看,反映了制定的数据结构和一些编程竞赛对一些同学来说有点难度,或多或少给他们带来了一定的压力。
表2 传统教学方法和CDIO理念的协同学习教学方法考核等级分布
图1 不同教学方法编程测试成绩等级分布图
五、结束语
CDIO理念下的协同学习方法给计算机编程教学提供了一种新的思路。传统的教学方式转为以学生团队学习为主的学习方法,使得学生在锻炼的同时还能促进自己能力提升。这不仅有利于培养学生自主合作学习的兴趣,还能增强学生的自信心、成就感以及自我欣赏的能力。在此过程中,也能让学生培养相应的竞争意识以及团队协作意识,使他们能更早地适应社会,最终把学生培养成能够真正符合社会需求的高素质应用型人才。
[1]孙楠,秦龙. CDIO视域下独生代大学生应用型人才培养模式创新研究[J].教育探索,2016(4):34-35.
[2]于延,周国辉,李红宇,等. CDIO模式下C语言程序设计实践教学改革[J].计算机教育,2016(2):5.
[3]林路生,黄晓丽,邱文峰,等. 大学生多维协同学习模式的实践与思考[J].教育教学论坛,2016(21):234-235.
[4]曹曼曼. 校企合作应用型本科专业Java课程的CDIO教育模式研究与实践[J].计算机教育,2017(2):158-162.
[5]孙燕飞. 基于云模型的高校计算机类课程教学评价指标体系分析[J].信息系统工程,2017(3):171-172.
Research on the Application of Collaborative Learning in Programming Teaching under CDIO Concept
XIA Xiao-yun
(College of Mathematics Physics and Information Engineering, Jiaxing University, Jiaxing 314001, Zhejiang, China)
Computer programming courses have been regarded as an important basic course for engineering majors in colleges and universities. Programming skills are the basic abilities that each student should master. The current main learning model of computer programming course is teacher’s explanations together with student’s selfstudy. In the paper it analyzed the reasons why the students commonly have difficulties in learning programming and proposed a teaching method of computer programming based on collaborative learning under the concept of CDIO. Through the practice teaching, it found that collaborative learning enables students to have more exchanges and interactive discussions, which greatly stimulates students’programming interest and is useful for students to grasp various skills in programming. Meanwhile, this method is also helpful to the key guidance and evaluation in teachers’teaching.
CDIO concept; programming teaching; collaborative learning; effect evaluation
A
1007-5348(2017)08-0070-04
2017-05-08
浙江省教育科学规划研究课题“基于CDIO模式的软件开发项目实训课程教学研究”(2017SCG048)
夏小云(1982-),男,江西南昌人,嘉兴学院数理与信息工程学院讲师,博士;研究方向:计算智能。