朱义鑫,韩莉英,苟转荣
(新疆财经大学 信息管理学院,新疆乌鲁木齐 830012)
培养具有创新能力的高素质人才是经济发展、社会进步的需要。高等院校是培养人才的基地,除了传授大学生专业知识,还需要培养他们创新创业的思维和能力[1]。构建和完善适合我国高校的创新创业教育体系,对培养适应社会发展的创新型人才意义重大。
大学生具有活跃的思维、强烈的求知欲和思变的精神。在讲授专业课的过程中,如能有效地融入“双创”内容,能够为他们将来的创业打下一定的基础。在这个背景下,项目驱动教学法是非常有效的[2-3]。项目驱动教学法是在教学过程中设计一个个的项目,把教学中的知识点巧妙地分散到每个项目中,让学生在项目中消化吸收教学内容中的难点、重点,同时又完成一个项目从设计到实施的整个过程,培养了学生的创新意识、创新能力和自主学习的习惯。学生在整个过程中体会到完成一个项目的成就感、满足感,建立起自信心,综合素质和自主学习的能力得到有效提升。
《高级语言程序设计》课程的教学一直都是以讲授多种数据类型、语法细节、三种编程结构等知识点为教学重心,学生通过完成课后编程作业来检验学习效果[4]。这样的方式有着一些弊端:一是不利于培养学生的学习兴趣,学生觉得比较晦涩难懂;二是不利于培养学生的抽象思维、分析问题和解决问题的能力,学生着力于细节,常常忽略程序的架构;三是学生对所学内容在实际工作中的应用没有概念,没有了解完整的软件系统;四是不能培养学生的创新思维和团队合作精神,由于多是编写一个个小程序,所以不需要团队合作,学生的团队合作意识没有得到充分锻炼。
实际上,学生编写一个数学问题和做一个APP 或开发一个游戏所用到的编程知识是相通的,但是在不同的活动中,学生的学习动力和自主性存在差异。在做一个小游戏项目的过程中,学生能在短时间内看到运行结果,自信心增强,学习兴趣和学习热情得以激发。
由于计算机专业《高级语言程序设计》课程开设于大学一年级,学生学习编程基本都是零基础。在学习编程语言的过程中,学生还没有建立软件系统的概念,课程讲授重点还是要求学生掌握编程语言的语法,三种编程结构及数组、函数的概念,对零基础的学生来讲,以项目驱动的教学改革推行起来比较困难。
选择难度适宜、学生有兴趣的项目存在一定的难度。例如有些游戏类的小程序涉及的编程知识比较多,甚至需要一些软件包的支持,学生比较难理解,难以入手。
项目的设计既要紧扣教学内容又要考虑教学进度。项目的设计要实现两个基本目标,一是使学生能够在完成项目的过程中将所涉及的基本知识融会贯通,二是项目的任务设计应与该阶段要实现的教学目标相匹配。
结合教学实践,探索和研究“双创”背景下基于项目驱动的《高级语言程序设计》课程教学改革,形成一套基于项目驱动模式的教学改革方案。设计好项目、分解项目、给出任务描述和要求,是实现该教学模式的关键。以项目驱动教学的改革,可以从以下几个方面切入。
(1)设计项目。采用以项目为导向、以任务为驱动的教学方法。教师要事先设计好项目,将零散的知识点整合到项目中的具体任务中,由浅入深、由易到难地带领学生学习,使学生在完成一个个具体的项目任务后,能够完成一个完整的项目开发,让学生有成就感。
(2)给出项目框架。对于一个包含多个任务的小型项目,可以为学生搭建好项目的框架,让学生开始以填充式的方法去完成项目,解决入手难的问题。
(3)在教学过程中适时发布项目。根据授课进度发布该阶段学生有能力完成的项目,并且将项目完成的最终运行界面让学生先进行观看。
(4)对项目进行指导和验收。教师可以借助混合式教学的论坛,或者该授课班级的微信群给予学生一定指导。每一个项目完成后要给出学生该项目的成绩。
(5)改革课程的考核体系。建立过程化考核评价体系[5-6],所有项目的完成情况都在课程的总评成绩中有所反映,每个项目中的每个任务都给出分值。
项目驱动教学法起源于建构主义学习理论。建构主义成熟的教学模式有支架式教学、抛锚式教学、随机进入教学等。这些教学模式都强调以学生为中心,学生是认知的主体,教师主要对学生的学习起帮助和促进作用;选择与当前教学大纲密切相关的问题作为学习的中心内容,通过学生之间的“协作”最终完成知识的建构,在教学过程中学习效果的评价一直在进行。项目驱动教学模式就是在此基础上实现的,项目驱动教学模式的流程如图1所示。
图1 项目驱动教学模式流程图
项目驱动教学法实施方案如下:
项目驱动教学法依托一个个小型项目的实现,所有项目的实施构成了整个课程的教学过程。项目可以是教师根据教学内容自行设计,也可以选取企业的小型项目,或者来源于教师的在研项目。选取项目的原则如下:
一是大小合适,难易适中。项目不宜过大,项目过大实现周期过长,学生可能无法按照教学进度按时完成,影响后面课程内容的学习。项目也不能过难,难度太大,学生容易丧失信心,学习兴趣和热情降低,影响该课程的学习。项目也不能太小,项目太小不能涵盖所学的知识点,学生的合作意识得不到锻炼。
二是项目设计要和大纲中的知识点结合,使学生通过完成项目,学习和掌握相关的知识点。因此,每个项目应按照教学进度尽量覆盖教学大纲中的重难点。这样,才能达到理论学习和实践应用相结合的目的。
三是项目的选择尽量要有实用性,并且有时代特色。选取的项目最好来源于软件公司正在开发或已经开发完成的项目,可以是这些项目中的部分功能,这样学生能够感到学习有目标、有动力。
通过前两周的学习,选出学习能力强的学生作为组长。每位组长可自行挑选其他同学作为组员。划分小组的原则:强弱搭配,以强带弱。组长负责项目功能的划分、分配、督促、集中调试及演示。同时,组长还要负责与教师的沟通、与组员的协调。小组划分是否合理,是项目驱动教学法是否能够顺利进行的关键。
教师认真和正确的指导是顺利完成项目的必要条件。在布置任务时,教师应将项目讲解清楚,在学生完成项目过程中碰到技术性难题时候给予指导,在学生进行项目演示的时候给予一定的点评。针对常出现的问题,在课堂上统一讲解。在所有项目都评价完后,将优秀学生的作业分享给所有学生,便于学生进一步完善自己的项目。
该课程学生的评价方式不再是学期末的试卷或者是上机考试。学生总评成绩应该包括平时成绩和期末成绩两部分。平时成绩是基于每个项目的完成情况评定的,项目完成情况占40%,期末成绩占60%。项目的考核应该从小组成员在项目中的参与度、项目开发规范、完成情况等方面进行评价。期末成绩可以是大作业或者是上机考试。
当学生完成对基本三种程序结构的学习之后,可以布置一个小型的项目,给学生提供一个小型的系统框架,学生根据所学知识完善这个系统的各个功能。目的是使学生在学会运用基本输入输出函数和基本控制语句的同时,进一步掌握自定义函数的运用,为以后学习用户自定义函数做好准备。最终完成的是有四项子功能的小系统,知识面覆盖C 语言程序设计的基础部分。
可以设计这样涵盖前面所学内容的小项目,如表1所示:
表1 项目中任务列表
程序运行后的界面提前展示给学生,如图2所示:
图2 系统主界面
给出学生作业的评分标准,让学生能够有目标地去完成项目。如表2所示:
表2 作业评分标准
项目模板如下:
从2018年起,在新疆财经大学计算机科学与技术、信息安全、网络空间安全、电子商务4 个专业进行基于项目驱动的《高级语言程序设计》课程的教学改革和实践。结合了混合式教学模式,在教学中采用了线上作业方式,学生要完成线上的客观题来加深对概念的理解,同时要完成与课程内容结合紧密的编程题,在一两个章节之后布置一个小型项目题。学生最终的学习评价通过过程考核和期末考核相结合的方式,学习效果有大幅度提升。学生参加“双创”竞赛并获奖的人数也较之前增加,参加全国“蓝桥杯”编程大赛取得了较好的成绩。
今后还需进一步更新教学项目,完善实践环节的监控和质量评价体系。设计质量更高、实用性更强、更能提高学生实践能力的项目,课下让学生完成项目,课上进行展示与讨论;设计线上线下相结合的实践教学实时监控和评价体系,全方位、全过程地培养和评价学生;请企业中一些有经验的工作人员给学生做指导。按照“以项目为驱动、以项目带出程序”的教学思想,以学生为中心,取得了较好的教学效果,为学生后续课程的学习奠定了坚实的基础。