APP下载

面向工程教育专业认证的应用型高校程序设计课程群的建设
——以嘉兴学院为例

2022-09-28夏小云李绍燕邓浏旸廖伟志

嘉兴学院学报 2022年5期
关键词:程序设计考核工程

夏小云,李绍燕,邓浏旸,廖伟志

(嘉兴学院:a.信息科学与工程学院; b.马克思主义学院;c.平湖师范学院,浙江嘉兴 314000)

工程教育专业认证是国际通行的推动工程教育质量不断提升的有效手段,其核心是持续改革教学模式,实现培养目标,落实“培养什么人、怎样培养人、为谁培养人”这一根本性问题。近年来,我国高校对工程教育专业认证也日益重视,截至2020年底,全国共有257所普通高等学校的1600个专业通过了工程教育专业认证,覆盖机械、化工、仪器、电子信息等22个工科专业类。[1]

嘉兴学院计算机科学与技术专业积极顺应工程教育专业认证这一趋势,主动对标工程教育专业认证标准要求,坚持立德树人,通过构建程序设计课程群,将OBE(Outcome based education)理念贯穿于整个人才培养过程,以培养学生计算思维和程序设计能力为核心,对程序设计课程群的建设进行了积极探索和改革。在教学实践中,不断优化课程之间的衔接和内容,创新教学方法和手段,不断改进考核方式,自觉践行专业认证理念,努力培养学生解决复杂工程问题的能力,推动应用型人才培养目标的实现。

一、计算机科学与技术专业程序设计课程群

程序设计课程群的建设能加强不同课程之间的内容融合与衔接,拓展课程之间的内在关系。将传统的单门课程独立授课转向课程群内相关课程的共同学习,能够有效避免课程之间的内容重复,加强各课程间的相互衔接和交叉渗透。[2]通过统一规划课程群培养计划,打通课程群中相关课程之间的壁垒,加强课程之间的连贯性,有利于提升学生的学习效率。另外,程序设计课程群的建设有利于提升学生的创新能力和实践动手能力,实现学生培养与企业用人的无缝对接,达到“零适应期”。

图1 程序设计类课程群

程序设计能力是计算机类专业学生必备的最重要、最基本的能力,是检验计算机类专业毕业生质量的标准之一。程序设计类课程群的建设,旨在培养学生程序设计的基础开发能力,让学生不仅掌握程序设计的思想和方法,精通主流的程序开发技术和平台,更重要的是让学生具备运用所学知识解决计算机相关领域复杂工程问题的能力,培养学生的编程思维和创新意识,[3]为其后续课程的学习与实践打下良好的基础。

嘉兴学院开设有计算机科学与技术、网络工程、软件工程、电子信息工程等四个计算机类专业,涉及的程序设计类课程群主要包括高级语言程序设计、Java语言程序设计、移动应用开发、Java语言程序设计课程设计、嵌入式C程序设计、移动应用开发综合实训等,这些课程贯穿计算机类专业程序设计开发与应用的主线,起到一个循序渐进、相辅相成的作用。程序设计类课程群如图1所示。

二、程序设计课程群教学的现状

程序设计能力的培养是一个循序渐进、逐步提升的过程,应将工程教育专业认证理念贯穿到人才培养方案、课程设置和教学的全过程中。

(一)课程之间还有待于进一步融合

程序设计课程群中,各门课程的实践内容设置相对独立,部分内容重复,未能形成前后串联的实践教学体系,课程之间衔接度不够,学生无法理解课程间知识的相关性及延续性。在学习新的后续课程时,不能很好地运用前面所学知识,或者遇到学习与前面重复知识时有厌倦情绪,不利于培养学生的知识综合应用能力,各课程还有待于进一步融合。

(二)实践教学模式陈旧,学生动手能力较弱

现阶段,高校实践教学模式依旧传统化,学生自主学习能力弱,实践动手能力普遍不足,实际工程项目开发能力偏弱。学生的实验实训等实践教学仍以传统的计划和指定的实验指导书为主,学生对书本上的实例程序进行验证,在学习过程中处于被动接受知识的状态,在处理现实问题的时候又缺乏实战经验,难以产生成就感和获得感。

(三)考核评价的方式和内容不利于检验课程目标的达成

当前,应用型高校课程考核评价方式单一,考核内容陈旧、偏理论,以结果性考核为主,缺乏过程性评价。对学生的自主学习能力、实践动手能力、团结合作素养等内容考核体现不够,不能很好地评价学生的学习效果,不利于达成认证标准中具备解决复杂工程问题能力的要求,不能充分调动学生的学习积极性、激发学生的学习兴趣。

(四)应面向工程教育专业认证做好程序设计课程群的建设

根据《关于积极促进更多本科高校加强应用型建设的指导意见》的要求,为促进应用型高校建设,大力培养高素质应用型人才,提高高等教育服务区域经济社会发展的能力和水平,作为浙江省第二批应用型建设试点示范高校的嘉兴学院牢记服务地方的使命,相继出台了《关于加快建设高水平应用型本科教育的实施意见》等措施,其计算机科学与技术专业在人才培养目标中明确要求培养能够在计算机工程及应用等领域促进智能应用产业发展的高素质应用型工程技术人才,要求毕业生能够设计与实现计算机应用领域复杂工程问题的解决方案,设计与开发满足特定用户需求的计算机软硬件模块或系统,并在设计与开发环节中体现创新意识。而面向工程教育专业认证建设好程序设计类课程群,对于提升学生实践动手能力、团结协作能力以及创新能力起着重要的作用,可为学生可持续发展能力的培养奠定坚实的基础。

三、面向工程教育专业认证的程序设计课程群建设

国际工程教育专业认证的核心理念在于落实以学生为中心,从以教师为中心的传统教育观念向以学生为中心的教育理念转变。这一核心理念的贯彻,第一个关键是以学生成果为导向,不再单独评价教师和学校投入了什么,而是衡量产出了什么;第二个关键是持续改进,不是为了评价而评价,而是在于能够正视评价过程中发现的问题并分析原因,而后采取有效的、持续的改进措施。[4]

工程教育专业认证计算机类专业补充标准明确指出,必须保证学生受到足够的训练,专业实践环节至少包含两个基于多门课程综合、具有一定规模的系统设计与开发。对于计算机类专业的学生,工程教育专业认证要求培养学生提出问题、分析问题和解决问题的能力。落实到程序设计类课程,重点在于培养学生的计算思维、创新意识、程序设计和系统能力。面对需要求解的复杂工程问题,能够使用计算思维的方式分析问题,采用合适的技术和方法,通过编程加以实现,创新性地解决实际问题。[5]

(一)构建立体化的程序设计课程群教学体系

嘉兴学院是一所地方本科院校,于2016年获批教育部-中兴通讯ICT产教融合创新基地,在计算机科学与技术、网络工程、软件工程等专业进行合作办学。近年来,校企双方不断探索专业特色人才培养模式,在传统的专业课程教学基础上形成了课程群教学体系。对核心程序设计类课程群进行了多维度、立体化培养体系的有效探索,取得了一些效果。多维度立体化程序设计课程群紧紧围绕优化课程体系、注重创新能力培养、创新教学方法和手段、改革课程考核评价方法,不断完善优化教学资源,形成综合、整体的课程群教学体系。

通过对行业调研,挖掘和收集用人反馈信息,紧密跟踪社会需求,并聘请行业专家参与人才培养方案的修订,使课程的设置与行业用人要求相匹配。[6]按照程序设计知识内容的先后顺序、内在关系和衔接要求,将程序设计类课程分为程序设计基础课程、程序设计应用课程和程序设计提高课程三个部分,层层递进,在实践教学过程中突出以专业技术能力为主线。程序设计类课程群教学体系架构如图2所示。

图2 程序设计课程群教学体系架构

课程群的教学资源建设是一个长期而又漫长的实践过程。我们应明确课程群资源建设的目标和方向,优化和整合现有的课程资源。从学生能力培养的目标出发,充分吸纳“工程案例”等教学资源,充分利用博客论坛知识,形成丰富、多样的教学资源,包括多媒体教学课件、电子教材、视音频教学资料、工程案例库以及开源项目库等内容。

以应用为目的,加大实践性教学的投入。按照“语言知识—程序设计能力—软件开发能力”的目标要求,将企业的实际案例和教师的科研项目与教学过程有机融合,以工程案例带动能力培养,通过参与项目设计开发,最终达到培养学生程序设计能力、通过实践提高学生在实际应用中解决问题能力的目的。

在Java语言程序设计课程设计、移动应用开发综合实训教学中,采用“案例教学+ 项目驱动”的实践教学方式。项目案例的设计由易到难、由浅入深,兼顾趣味性和实用性,方便操作,加深和巩固学生对专业知识的理解,调动学生学习积极性。

(二)程序设计课程群教学内容的评估和重构

课程教学大纲规定了课程教学内容、教学体系、教学范围和教学要求,是指导课程教学、开展教学评估、实现课程目标及毕业要求达成的指导性文件,其中课程教学内容是主体。根据工程教育专业认证的要求,课程教学大纲明确指出了课程教学目标对毕业要求的支撑作用。因此,按照工程教育专业认证的毕业要求,嘉兴学院多次组织教师对程序设计课程群的课程内容进行讨论,及时按照行业发展和人才市场需求变化进行调整、优化和更新。

嘉兴学院程序设计课程群支撑的毕业要求主要体现在5个方面:1)具有必要的数学和自然科学基础、工程知识和计算机专业知识,并能够利用相关知识解决计算机应用领域的复杂工程问题;2)能够设计、开发计算机应用领域特别是移动或物联网领域复杂工程问题的解决方案,设计与开发满足特定用户需求的计算机软硬件模块或系统,并在设计与开发环节中体现创新意识,考虑安全、法律、文化及环境等因素;3)能基于科学原理并采用相应科学方法对计算机应用领域,特别是移动或物联网领域的复杂工程问题进行研究,包括设计实验、分析与解释数据并通过信息综合得到合理有效的结论;4)能够针对计算机应用领域特别是移动或物联网领域的复杂工程问题,开发、选择与使用恰当的技术、资源、现代工程和信息技术工具,对复杂工程问题进行预测与模拟,并能理解其局限性;5)拥有团队协作精神,能够在多学科背景下的团队中承担个体、团队成员以及负责人的角色。

值得注意的是,当前很多高校仅考虑不同课程的设置顺序和开设学期,而较少关注同一课程群中不同课程之间的逻辑关系、内容衔接,以致造成学时浪费,也使学生因为学习重复内容感到厌倦。例如,C语言和Java语言在语法上非常相似,但也有很多不同之处。为了让学生保持学习新鲜感和积极性,在教授C语言和Java语言两门课程时,应把它们之间的内在逻辑、差异和关联讲通、讲透。在教学实践中,还需要充分考虑对课程群中不同课程教学环节的优化。对课程群中不同课程的教学内容、实验内容教学方法的选取,都应充分考虑相互之间的衔接和融合,从而避免内容上的重复或课程间发散而各成体系,应考虑课程之间相互依存、有机融合,最终实现课程群建设目标。对于复杂工程系统的代码设计与编写,结合用例图、类图、顺序图等软件工程的理念、方法和流程去讲解。程序设计课程群的教学环节安排如表1 所示。

表1 程序设计类课程群的教学环节安排

高级语言程序设计课程是计算机类专业大一新生的基础核心课程,也是后续课程的基础,主要讲述C语言变量类型及不同类型常量的表示,标准输入输出函数、运算符及常用数学函数的使用,控制结构、数组和指针的使用,结构体、链表的构造使用,基本的文件操作等内容。Java语言程序设计课程和高级语言程序设计课程一脉相承,两门课程的知识内容有关联也有区别, C语言中数据所占内存字节长度依赖于编译系统,而Java语言是不依赖于编译系统的,具有更好的移植性。Java语言作为面向对象编程语言,在程序维护、复用、可扩展方面都比C语言更加灵活。移动应用开发基础和移动高级应用开发两门课程主要讲述以Android平台为主的移动端开发原理和方法,是前两门课程的深化和应用。

(三)程序设计课程群的教学方法和手段改革

在教学过程中,应以课程群为教学依托,以培养实用型人才为目标,改变传统的教学方法。[7]现实中,往往存在学生上课能听懂、但思考得少,遇到写程序就无从下手,碰到实际求解问题束手无策等问题。传统的程序设计课程教学采取的是“理论+ 实验”的教学方式,学生的学习仍然是被动的,没有达到工程教育专业认证中以学生为中心的育人要求。

为了促进以学生为中心的教学,让学生在课前预习,鼓励学生遇到问题通过查阅资料或者分组讨论交流的方式解决,变学生被动学习为主动学习,养成思考的良好习惯;课堂上,教师有针对性地帮助学生解决重点难点问题,做到融会贯通,有的放矢;课后,让学生通过在线平台进行测验巩固提高,将一些实际项目中的问题放到平台上。为此,嘉兴学院程序设计课程团队于2019年就采用了希冀教学与科研一体化平台,所有的作业、实验、工程项目等都在线上进行。让学生以团队、小组合作的方式协同解决,提升学生解决复杂工程问题的实践能力。

注重教学过程中各课程之间的衔接、融合。在高级语言程序设计开始之后,紧接着开设Java语言程序设计,这两门课程在基本语法和程序设计基本结构等部分内容重复,要充分考虑两者的区别,切忌填鸭式灌输,为避免学生因学习重复内容感到厌倦,可以采用翻转课堂、混合式教学、微课等教学形式,让学生变被动为主动,持续保持学习的新鲜感和积极性。

以C语言和Java语言的学习为例,第一学期学完C语言之后,学生具备了一定的程序设计基础,第二学期接着学习Java语言,由于这两门课程在语法和数据类型等知识点上有很多相似之处,在讲述Java语言课程相应内容时,可以通过翻转课堂方式教学,让学生在课前就观看MOOC资源视频。课堂上,让学生讲述课前观看的内容并进行课堂讨论以消化,教师即时集中讲解学生在学习中遇到的问题。课后,学生通过练习和案例编程巩固所学知识。如此一来,不仅学生较好地掌握了所学知识,也充分调动了学生的学习积极性。在C语言课程实践环节中,增加了两次共4学时的课程相关问题研讨时间,学生自愿以团队的形式分组,教学采用开放式专题研讨等方式进行,如讨论现实生活中的实际案例与三种控制结构之间的联系,学习IT企业家、创业者的故事以及奋斗精神、工匠精神等。团队中每个学生带着各自的任务查阅文献资料,带着问题去思考。这让每个学生都有成就感,不仅延伸了教学过程,还充分发挥学生的主动性和积极性,提升了学生学习兴趣,体现出了学生在学习过程中的主体作用。

(四)课程考核方式

“工程教育专业认证通用标准”(2020版试行)在学生毕业要求指标点中明确指出,毕业生应具备将数学、自然科学、 工程基础和专业知识用于解决复杂工程问题的能力。学生不仅要掌握专业知识,更要懂得学以致用,要会运用所学知识。为此,在考核中应避免仅以期末考试或者以分数论英雄的传统单一的考核评价模式。[8]学生的理论课分数并不能决定实践动手能力的高低,考核时应采用多元化的考核评价方式,既要注重学生的过程评价,也要注重学生应用知识能力的培养。

基于此,嘉兴学院程序设计课程群的考核采用A+B+C的方式进行,A部分是过程考核,包括A1(作业评价)+A2(讨论互动),B部分为实践考核,包括B1(上机实验)+B2(项目案例)+B3(程序竞赛)+B4(认证考试),C部分是期末考核,采用集中封闭上机考试的方式。A1主要考察学生平时的表现,包括考勤、课堂表现、平时布置作业的完成情况等。A2主要结合程序设计课程重点难点内容,围绕某个主题,学生分组进行讲解、讨论和互动,重在考察学生自主学习能力,是对学生批判思维、创新意识以及团队合作能力的考察。B1上机测验书本案例,B2考核学生对企业方提供的实际项目或项目模块的开发设计能力,B3为考察学生参加各类程序竞赛的获奖情况,B4为统计学生通过认证考试获得的各类证书情况。若学生参与竞赛获奖或者获得相关证书,即可认定取得相应课程的学分。C部分是对学生理论知识掌握情况和综合应用能力进行考察。

对于实践考核部分,结合“以赛代考、以证代考”的方式,将学生竞赛获奖、考级证书等纳入学习成效评价,消除重语法、轻应用的现象,构建面向能力的考核评价体系。鼓励学生参加相关的学科竞赛及实践活动,如大学生程序设计大赛、多媒体作品设计大赛、电子商务大赛、电子设计大赛以及大学生创新创业项目等。鼓励学生参加计算机相关各类证书考试,如软件水平考试、职业技能鉴定证书及一些国内外行业认证等。学生在各类竞赛、考证中取得的名次、等级以及跟企业方老师开发设计的实际项目,都可以转换为相关课程的考核成绩。

嘉兴学院高级语言程序设计课程目标包括3个方面。1)掌握C语言变量类型及不同类型常量的表示,标准输入输出函数的使用,运算符及常用数学函数的使用,控制流程、数组和指针的使用,结构体、链表的构造使用,基本的文件操作;使学生掌握程序设计基础、软件工程等计算机软件系统工程基础知识,并用其指导复杂计算机软件系统工程问题的识别、分析、设计、模拟仿真。2)掌握结构化编程思想,通过函数、嵌套、递归等理论知识的学习,能够运用自然语言和程序流程图;对算法进行时间和空间复杂度的分析,培养学生在应用系统工程方案设计中具有创新意识;能应用计算机原理和方法,考虑相关影响因素,确定设计方案,设计满足特定需求的软硬件系统、子系统、模块或软件架构。3)掌握面向过程的软件开发环境,训练学生在程序开发、修改和调试方面的技巧;培养学生掌握软件工程专业设计中主流开发工具或实验平台的使用方法,并能根据具体的计算机软件系统问题选择合适的工具。

高级语言程序设计课程主要围绕课程目标的三个方面进行考核,以提倡学生主动学习和主动实践为核心,注重培养学生的创新精神和团队意识,学生在完成课程的过程中,应积极地去思考、探索。高级语言程序设计课程目标达成考核与毕业要求指标点支撑关系如表2所示。

表2 课程目标达成考核与毕业要求指标点支撑关系

嘉兴学院通过改革考核方式,从根本上改变了学生重语法、轻应用,重结果、轻过程的状况,使学生积极参与课程学习和实战训练,培养和提升学生的实践动手能力和创新能力,全面提升人才培养的质量。与此同时,在考核过程中,教师根据学生反馈情况不断优化教学设计和方法,使教学质量得到持续改进,以此形成良性循环。

四、结语

程序设计课程是计算机类专业的核心基础课之一,对于学生计算思维、分析问题和解决问题能力的形成起着至关重要的作用。课程群建设能够进一步优化课程体系,重构教学内容,是提升教学质量、实现人才培养目标的有效方法。嘉兴学院计算机科学与技术专业紧紧围绕工程教育专业认证标准,以学生为中心,以成果为导向,持续优化课程群体系建设,改进教学方法和评价方式,学生在学科竞赛、省级以上奖励、科技项目、软件著作权及学术论文等方面获得成果80余项。程序设计类课程群建设,有助于夯实专业基础,帮助学生提升分析问题、解决问题的能力,希望也能为其他专业课程群建设提供借鉴参考。

猜你喜欢

程序设计考核工程
《计算机辅助工程》征稿启事
基于SolidWorks和VBA的电机阶梯轴建模程序设计
医学专业“Python程序设计”课程教学改革总结与思考
高速透平真空泵工程应用
“表里不一”如何识别——富平增强考核洞察力
考核偏向:错把经过当结果
从细节入手,谈PLC程序设计技巧
创新完善机制 做实做优考核
发挥考核“指挥棒”“推进器”作用
子午工程