夏黎晨
[摘 要] 建构主义指导教学过程,從教学观、学生观、知识观等方面帮助学生建立知识的认知过程,从发现中获取知识。“应用型”办学目标,以成果为导向,紧盯教学成果。以此为基点,探讨高校中计算机科学与技术专业中软件工程课程体系建设的方向和策略。从多个方面建立一个完整的课程体系,逐步引导学生建构自己的知识体系,并做到运用知识的水平,锻炼实践能力。
[关 键 词] 应用型教学;软件工程;课程体系
[中图分类号] G642 [文献标志码] A [文章编号] 2096-0603(2024)06-0137-04
软件工程是计算机体系课程中的一门比较特殊的课程。不同于程序设计、计算机组成原理这些课程,软件工程主要内容为工程管理学,虽然管理对象为软件开发,目的在于对软件开发的过程进行管理,因而整体的内容更容易偏向于记忆性的东西,但是软件工程的课程内容实践指导性是很强的,无论是作为前序课程,还是作为后序课程都具有一定的实践意义。在教学过程中往往偏向于理论教学,但是作为工程管理学的课程,由于其实践性强,因而需要建构课程体系,从多个角度来指导日常教学。
一、行业数据
开源软件(gitee.com)是目前国内使用较多的代码托管平台。以项目星标数排序,获取前100条项目,将作者开源的软件项目分为业务、技术、其他三种类型。其中业务类型是指该开源软件项目具有明确的业务性,具有明确的业务方向,可以被企业直接使用或是少量调整即可投入使用;技术类型是该开源软件项目不具体为某一业务方向服务,而是作为软件项目中间件存在,可以被任意软件项目使用;其他类型则是指既非业务方向,也不是技术方向,比如开源图书。其分布趋势如图1(a)所示。业务类型的软件项目占比为55%,技术类型的软件项目占比为39%,其他类型的软件项目占比为6%。基于这些数据,我们又做了项目主要开发语言的比较,如图1(b)所示。其中Java语言作为主要开发语言的软件项目占比最多,达到了73%。
随着“应用型”教学理念的推广,高等教育需要关注相关行业的发展,尤其是计算机相关专业,需要实时关注行业的发展才能更好地制订教学计划。但是需要注意的是高等教育是为相关行业培养人才,并不是特定的某个企业。因此决定了在软件工程课程体系建设时需要注意体系内的课程内容安排。
二、软件工程课程体系基本概念
本文所说的软件工程课程体系以程序设计、数据结构与算法、数据库概论为前序课程,软件工程为主体课程,部分院校会加上WEB编程作为后续课程以满足现有的就业市场中B/S架构编程,提升学生的就业竞争力。在教学反馈中发现,学习软件工程这门课,需要学生具备一定的软件项目经验才能更好地进行“应用型”教学。
在《基于建构主义的软件工程教学方法探索》中提到建构主义学习环境下软件工程课程教学设计,在情景创设中提到,由5~7个学生构成一个项目组分别担任不同的角色,完成经典案例[1]。通过建构主义的方式,以学生为中心,激发学生通过实践教学的方式,从实践中发现知识。然而,在实际教学过程中,由于学生对软件项目认知缺乏,而且教学过程中不足以提供更多的时间给学生查阅相关资料,反而容易造成团队无目的的探索,无法更好地搜集相关资料、理解学习相关知识,导致意义学习变成机械学习。同时,由于学生本身的专业能力不足,即使投入大量的精力和时间,也很难从浩如烟海的文献中获取到有用信息。原因在于课程体系建设不完备,或是课程体系相对孤立造成软件工程的教学偏于理论,无法付诸实践指导。以至学生在学习的过程中注意力也放在理论部分,无法很好地完成实践,造成学生欠缺完成实践的能力。
在过去的教学过程中,程序设计课程中理论课时和实训课时一般进行1∶1的分配。但是实训课的内容是针对理论课的内容安排的。因此随堂设计的实训课,并不能满足学生编程语言学习的需要,反而容易导致学生越学越糊涂。原因在于,课程只教给学生编程语言的语法逻辑,而没有教给学生如何探索一门编程语言,或者说没有教给学生如何用编程语言解决更为实际的问题。
三、影响课程体系建设的各类因素
从当前的就业情况来看,就业市场中,企业更看重应聘人员的项目经验,且已不再满足于毕业设计所带来的项目经验,尤其是在目前的就业市场中,企业对于应届生项目经验的要求是学生在学习过程中能够参与真实软件项目的开发。然而学生在高校学习过程中,更多的项目经验来源于积极参与教师的科研项目,或是参加各类全国性比赛,而这些项目又无法满足所有的学生。这就带来了一个值得思考的问题——如何从课程体系建设中为学生提供更多的项目经验。
现阶段的高校课程建设所开设的实训课不足以支撑学生的学习。部分高校在此基础上又会开设具有综合性的实践课,每周提供完整的1天8个学时,总共2周共16个学时,由学生完成一个具有综合特性的实训项目。由学生自行查阅资料,结合前序课程的学习,完成相关的实训项目。经过这样的课程训练,学生可以将之前所学的内容,结合自己查阅到的资料,通过知识建构的方式,建立自己的知识体系,加深对相关课程的知识理解。同时,也为后续课程的学习带入一定的知识,让学生通过完成相关课程的项目,在复习当前课程知识内容的同时,提前学习后续课程的知识,调动学生在后续课程的学习中的内驱力。
四、建构主义下的课程体系建设
软件工程作为软件编程这一课程体系中的综合课程,它很好地起到了总结性作用,课程内容需要很多前序课程作为基础,以此支撑课程的学习,同时通过课程的讲解达到开拓创新的作用,帮助学生进入真正意义上的软件编程领域,从面向过程编程,面向对象编程,进入面向构件编程。并以此为基础,开始学习软件工程的相关知识,打好成为一名软件工程师的基础。
建构主义要求由“以教师为中心”向“以学生为中心”转变,如何理解这种转变或者说如何让这种转变真正意义指导于教学。结合建构主义学习观——学习不是知识由教师向学生的传递,而是学生建构自己的知识的过程[2]。同时在学生观中也强调,学生并不是空着脑袋走进教室的[2]。同时大学教学原则“科学性与思想性原则相统一的原则”“传授知识与培养能力相统一原则”和“教师主导作用与学生主动性相结合的原则”“面向全体与因材施教相结合原则”和“理论与实践相结合的原则”[3]。从中我们可以看到,在教学过程中,并不是单纯地弱化教师在教学过程的作用,而是应该强化学生在知识建构过程中的作用。而如何强化学生的作用,调动学生学习的积极性、主动性,这正是“应用型”办学理念所要求的。
五、应用型大学关于课程体系建设的要求
应用型大学强调大学的社会服务职能,以服务经济社会发展需要为导向,注重学生专业知识、专业技能的培养和训练,以培养专业应用型人才为目标[4]。因此,我们在进行课程体系建设的同时以此为出发点,关注学生的就业导向,是否能真正意义地服务社会,促进地方经济的发展。着眼于当下中国给出的世界经济新方案“一带一路”的倡议,高校“应用型”人才的培养都需要立足于国家需要与地方建设。结合建构主义和“应用型”办学的理念,我们从两个方向进行软件工程课程体系建设。
六、“双师型”教师队伍建设
(一)校企协同育人
校企协同育人是现在很多高校都在深入研究的一种教学模式。(此处略)
(二)校企合作
校企合作的目的在于校企协同育人,但往往都是由企业派出人才辅导高校教育或是替代高校完成部分课程的教学工作。但也应注意到高校教师常年在教育前线工作,尤其是计算机专业的教师,一定程度上实践经验是缺乏的。校企合作不能简单地理解为企业教育学生,而忽略了企业对教师的培育。教师到企业中学习的目的在于提升教师的实践经验,辅助教师的理论教学工作,避免理论教学与实践教学的脱节。
七、课程体系建设案例
(一)课程体系方向建设
结合OBE教学理念,同时关注行业发展,一门课程所应教授的知识内容应当支撑学生的后续学习和就业。从图1(b)开发语言占比分布中我们可以看到,当前行业中Java语言还是占据主要开发语言地位。因而在课程体系建设中,应以Java语言为主要教授方向。
B/S架构和C/S架构是目前软件开发主要的两种选择,前者使用WEB技术开发轻客户端应用,后者使用编程语言开发重客户端应用。图2软件架构风格占比展示为gitee网站中开源软件项目,星标排序前100软件项目中划分为业务项目的架构选择。
从图中可以看到B/S架构占比最高。图中的其他是指软件项目无法明确区分其架构归属于哪一类。基于此,在课程教学过程中需要适度选择教学内容偏WEB编程。这样建立一个明确的课程体系方向,让学生的学习过程是知识的积累,而不是知识的堆砌。学生由浅入深地学习,逐步建构一个完整的知识体系。
(二)单一课程建设
我们在建构课程的过程中,除了配套的实训课时外,还需要为学生开设足够的课时,完成单一课程的综合实训,并计入学分。目的在于随着学生课程学习的深入,需要通过这样一个实训课程,帮助学生更为深刻地理解单一课程的内容,升华学生的认知。以程序设计为例,如表1所示。
通过指导学生完成这样一些小的程序,以促进学生主动学习。从非课堂资料中发现知识、理解知识,最后建构知识。
(三)课程体系建设
我们在建设课程的同时,需要明确,不能孤立地建设课程,而是需要结合多门课程进行课程体系建设。比如学生在学习完成程序设计和数据库概论之后,一定会有这样的疑问,如何通过编程访问数据库。这些疑问就表明,我们需要结合多门课程进行课程体系建设,让学生在单一课程学习结束后,能够建构更为完整的体系性知识。具体的案例如将表1所示案例成果修改为使用数据库存储的程序,结合实际项目规模调整组队人数。
(四)综合课程建设
软件工程作为一门综合性课程,在建设前序课程的内容时,结合7.1、7.2和7.3的建设内容,为学生建构一个完整的学习范围,让学生提前建构关于软件工程的认识。这些认识对于学生的后续学习,具有一定的指导性,让学生的知识理解得到一定程度的升华。具体的案例如将表1所示案例成果修改为使用提交设计报告,提交相关软件项目,结合实际项目规模调整组队人数。
相同的项目,不同学习阶段的学生对知识的了解和掌握是不同的。随着学生学习阶段的变化,对学生的要求也随之变化。在这一过程中,教师需要辅助学生融会贯通所学的知识,提供一个平台引导学生发现知识、掌握知識、运用知识,以达到建构知识体系,为学生后续发展提供理论支撑。
(五)考核方式建设
应用型教学,更需要关注学生的应用能力,因而在考核方式上也应更多关注学生的动手能力和知识的应用能力。表1所示为新旧考试方式及占比的比较。
如表2所示,左侧为传统考核方式,侧重点为测试,一般性考核占比较少,且考核方向不关注学生的实际动手能力。右侧为OBE考核方式,更多关注点为学生的实际动手能力。其中实训室出勤,需要学生在实训室完成相应实训项目才能获得成绩。参考书籍为教学过程中指定的辅助阅读书籍、论文等,需要学生在教材之外,查阅更多资料,以提升理论知识的理解。项目开发和期末测试都是考核项目,但是项目开发重点考核学生的动手能力,期末测试重点考核学生的理论知识学习情况。
八、课程团队建设
在这一过程中,教师需要注意团队合作中学生之间是协作学习。在协作学习中,提高学生协作能力的方式之一,就是教师在恰当的时候给予学生适宜的干预[5]。这种协作,除了团队内部人员职责的划分,更多的是基于人员能力不同所进行的任务划分。同时,如何帮助承担不同任务的学生之间,相互了解团队成员的工作,单一的团队合作方式容易引起成员之间只关注自身而忽略了其他成员承担职责部分的知识。
团队协作的过程中教师要注意自己的职责。除了承担课程知识的讲授者,还需要注意在团队完成任务的过程中,引导学生发现知识。值得注意的是,学生在知识学习的过程中,教师可以通过讲授的形式,让学生记住即可。也可以建构一个完善的课程体系,教师在此过程中,并不需要弱化教师的主导作用,通过“以结果为导向”的形式,逐步调动学生的学习主动性,通过教师引导的作用,帮助学生学习、理解,建构自己的知识体系。
在这一过程中,转移了教师的作用,由过去的一对多的课程讲授,变成了小团队的引导,学生成为学习的主力。通过教师的引导作用,学生在学习过程中,除了教材本身以外,还会接触更多同类书籍,通过建构的形式,学生接触更多的资料,也会通过自主学习的方式,查阅网络资料,或者是期刊论文等,这样建构出来的知识体系更为完整,知识面也更加健全。教师的作用因为学生知识面的拓宽而显得弱化,但实际上,教师的作用其实是加强了,并且相对于传统的方式,作用更明显了,只是因为学生的积极性被调动之后,教师的帮助显得少了而已。
九、结论
结合《应用型和技术技能型人才的区别》[6]一文来看,我们在制订课程体系时,需要重点关注人才的培养是技能型还是应用型,以免产生教学偏差。
当然教师在引导学生建构知识体系的同时,不能一味地盯着学科专业的知识,也需要引导学生发现一些相关性的知识,从《云南边境小额贸易对地方经济发展相关性分析》[7]我们可以看到云南具有天然的边境贸易优势,“应用型”是服务于地方的经济发展的,那么学生自然需要了解地方的经济特点,建构知识体系时将本专业的知识结合社会、经济、法律的知识一起建构,才能掌握“应用型”人才的特点。
结合“应用型”人才的理念,基于建构主义的指导,建构一个完整的课程体系,可以有效地帮助学生学习知识,掌握知识,运用知识。从就业中来到就业中去,这样才能更好、更有效地展开教学。
参考文献:
[1]郑红,顾春华,虞慧群.基于建构主义的软件工程教学方法探索[J].计算机教育,2008(10):79-81.
[2]莫雷.教育心理学[M].北京:教育科学出版社,2007.
[3]王道俊,郭文安.教育学[M].北京:人民教育出版社,2016.
[4]王世杰.迭代、多样、均衡:日本应用型大学的发展特征及启示[J].高教论坛,2022(9):120-124.
[5]劉三女牙.计算教育学[M].北京:科学出版社,2022.
[6]罗静,侯长林,蒋炎益.应用型和技术技能型人才的区别[J].高教发展与评估,2022(5):13-22,119-120.
[7]张群.云南边境小额贸易对地方经济发展相关性分析[J].合作经济与科技,2017(15):118-119.
◎编辑 王亚青