APP下载

“金课”建设标准下程序设计类课程教学改革探索

2020-07-12李瑞生

科技视界 2020年30期
关键词:金课程序设计编程

李瑞生

(甘肃政法大学<公安技术学院>,甘肃 兰州 730070)

0 引言

教育部高教司吴岩司长提出了“两性一度”的“金课”建设标准,即高阶性、创新性和挑战度。其中,高阶性就是知识、能力、素质有机融合,培养学生解决复杂问题的综合能力和高级思维。创新性体现在课程内容有前沿性和时代性; 教学形式体现先进性和互动性,不是满堂灌;学习结果具有探究性和个性化。 挑战度是指课程一定要有一定难度, 需要学生和老师一起,跳一跳才能够得着[1]。

程序设计类课程是高等院校工科类专业,尤其是计算机和信息类相关专业课程的重要组成部分。在人工智能、大数据、云计算等快速发展和深度普及应用的背景下,程序设计类课程在工科类专业人才培养中的地位和作用更加重要。 对照“金课”标准,程序设计类课程教学中需改进的方面:(1) 课程体系设计中对学生职业能力需求考虑不充分,或不能及时跟踪产业新需求、 编程技术和应用领域的新变化调整课程设置。(2)按照教材章节化的编排线性地组织教学内容,教学中的问题(案例)往往仅为验证编程语法而设计,题目较简单,与实际应用结合不够,而且大都具有“良构性”,而源于实际的应用问题往往具有“非良构性”。当学生在遇到新问题时,不能够有效综合所学程序设计知识和技能创新性地解决问题。 (3)教学方法上还未彻底实现从“教得好”到“学得好”的转变。 对学生“拔高性”的创新能力培养不够。 长期以来,导致学生学习积极性、主动性不高和教学质量降低。近年来,运用基于学习产出的教育(Outcomes-Based Education ,OBE) 理念、 基于问题或案例学习 (Problem-Based learning 或 Project -Based Learning ,PBL)方法的教育教学改革研究和实践成为热点[2-3]。

运用OBE 理念和PBL 方法, 从程序设计类课程体系构建、教学方法、学生创新能力培养、教学保障与教学效果评价等方面展开论述,以期建设程序设计类“金课”。

1 运用O B E 理念构建课程体系,P B L 方法实施教学

1.1 学生职业能力分析与课程体系构建

OBE 教育理念自20 世纪80 年代初由美国学者Spady 率先提出后, 很快为教育学界所高度重视和普遍认可[3-4]。OBE 理念倡导结果导向的人才培养。 其中的“结果”应以学生学习课程后对该专业人才培养目标的达成度和对学生职业能力的贡献度来衡量。

对于程序设计类课程体系构建,学校要深入不同专业的用人单位做深入调研,考察该专业实务领域对学生程序设计和软件开发相关的职业能力具体需求和典型应用场景,来逆向决定课程体系组成、各课程占比、侧重点、课程间的前后衔接关系等;在持续调研中, 逐渐积累和形成具体课程的实际应用案例库,便于PBL 教学实施。

2018 年1 月 《普通高等学校本科专业类教学质量国家标准》颁布,程序设计类课程体系与课程内容侧重点设置应在遵循《国标》的基础上,由学生就业实务部门专家如资深的软件研发工程师、专业教学指导委员会专家、资深教师团队、已就业并具备工作经验的学生(反馈已学的课程体系能否满足职业需求并提出改进意见)共同商定,切实实现课程体系的职业目标导向和关注学生学习诉求, 让课程体系设置科学、合理、面向应用实际。

程序设计类课程的设置应紧随应用需求变化而不断拓展更新、灵活调整,充分体现先进性和前沿性。根据不同专业学生职业能力需求和学生就业意向,在针对高年级学生开设的专业拓展课和方向课中灵活增加如嵌入式开发、Android 应用开发、Python 程序设计、R 语言数据分析、MATLAB 科学计算与程序设计、安全编程技术等,满足学生多层次、多领域的程序设计和软件开发学习需求。

课程设置中还应考虑课程的体系性,并给学生呈现清晰的学习路线如按“C——>Java SE——>Java EE(或 Java ME 或 Android 开发)” 的路线深入学习某一个系列的程序设计和软件开发方法。在课程教学大纲和教学实施过程中,应该向学生介绍“这是一门怎样的课程,它在专业中处于什么样的地位,通过这门课程学习,能够学到什么和用在什么地方”等。对某门课程的前导、后继课程做出详细说明[5]。

1.2 PBL 教学实施

PBL 教学就是要紧紧围绕学生职业能力需求中的实际问题 (案例) 组织教学内容和开展教学活动。PBL 的关键在于问题或案例的质量,PBL 中的问题或案例需要具备真实性、复杂性、非良构性等特点[6-7]。PBL 中的问题或案例不是传统意义上为验证理论知识点的例题,而是源于学生职业能力需求中的实际应用问题及其被分解后得到的子问题。基于高质量的问题(案例)驱动,有利于让教学内容“实起来”;非良构性的实际应用问题和能够紧密联系产业前沿的问题具有难度、深度和挑战度。 以这些问题的解决方法探索和实践开展教学活动,会促使师生双方都付出更大努力,让教师“强起来”,学生“忙起来”;在解决这些问题的过程中,会让学生具有成就感和顶峰体验,也更有利于学生创新思维和能力的培养;PBL 中的案例源于学生职业实务中, 从而使得学生更加明确就业方向,充分激发学生学习兴趣,调动学生学习自主性和内驱力,提高就业竞争力。

程序设计类课程旨在系统培养学生的计算思维能力,能够进行问题分析、问题抽象与建模、算法设计、编程解决问题的能力等。从软件工程的角度看,软件系统开发需要经过“需求分析、系统概要和详细设计、系统实现、系统测试与维护”等环节;从程序设计方法来看,复杂问题的求解应采用“化整为零,分而治之”的模块化思想。借鉴软件工程和程序设计的“模块化”思想,在教学设计和实施过程中, 将典型的实际软件应用系统分解为模块。按照模块组织所需的知识点和技能点,形成PBL 学习和编程实践单元。 由于每个模块的解决都会涉及多个知识点和技能点, 且这些知识点和技能点不是按照传统的教材章节次序编排的, 因此有利于学生以问题解决为中心, 将所学程序设计知识和技能网络化。随着课程推进,将已经完成的各个软件模块逐渐进行组装,形成完整的软件应用系统。

2 翻转课堂与小组协作学习

翻转课堂教学模式有利于学生由被动学习转为主动学习,克服传统教学“满堂灌”,以及学生由于缺乏充分预习而与教师在课堂上思维不同步等的缺陷。将学生按3~5 人结为一个学习小组,便于课堂上开展讨论和实现互助学习,小组成员轮流担任组长,协助教师督查小组成员学习进度和汇总学习难点等。

课程资源建设是翻转课堂实施的前提。这些资源包括基于学生程序与软件设计职业能力需求分析的教学案例库、 以PBL 组织的知识和技能单元学习素材、教学短视频(包括案例导入、知识点讲解、编程演示)、学习任务书等。学生按照教师布置的学习任务在课前自主学习和完成编程实践任务。各小组组长汇总本小组成员学习和实践中的难点, 教师梳理这些难点;课堂上,教师针对普遍难点问题进行重点讲解和编程演示,对于个别难点,则通过学习小组内或小组间交流和互相讲解、操作演示的方法解决。 教师对学生课前学习和实践任务完成情况进行检查、点评和总结,提出复杂度略高于本节学习任务的问题(如源于程序设计竞赛的问题),学生以学习小组为单位,在教师启发下分析该问题、开展讨论、得出解决方案并进行编程实现;课后,学生继续完成课堂上的较难问题的编程实现及教师布置的其他编程实践任务,完成下一个学习和实践任务等。每个PBL 单元学习任务结束后,需要对学生进行PBL 单元考核。

实验教学中,学生根据实验任务书要求,在每次实验课前独立(或小组协作)完成所有实验内容,记录实验过程和结果,记录难点问题;实验课堂上,教师进行普遍实验难点演示和讲解,对于个别难点,教师进行个别辅导,学生继续完成实验难点部分并做详细的实验记录;实验课后,学生分析和总结本次实验,提出改进方法,撰写实验报告。

美国学者埃德加.戴尔(Edgar Dale)提出的“学习金字塔”(Cone of Learning)理论显示了采用不同的学习方式,学习者在两周以后还能记住内容的多少(平均学习保持率)。在该理论中,“讨论”、“实践”和“教授给他人”的学习方式被认为是主动学习方式[9],其平均学习保持率高于被动学习方式。 其中,“教授给他人”的学习方式平均学习保持率为90%。在翻转课堂模式下,更有利于在课堂中预留出更多时间让学生进行讨论和讲解。如教师安排不同学习小组成员分别演示讲解对同一问题的不同程序设计与实现方法,以程序实现中的难点、算法效率、是否采用了某种面向对象编程模式、 是否运用了编程思想 (如MVC、ORMapping等)、是否考虑了编程中的安全因素等为主题,组织学生展开讨论并得出结论。

3 学生创新能力培养

一方面,PBL 教学案例源于实际应用问题, 这些问题的解决本身具有挑战性。 教师在教学活动中,引导学生查阅和学习大量的产业、学科前沿研究成果和技术,通过师生共同研讨、学生独立或协作实践,不断解决新问题、攻克难问题,可以在课程教学过程中帮助学生逐渐形成创新意识、思维和方法。

另一方面,还需通过软件项目开发与学科竞赛等“拔高性”教学环节,持续推动在育人的全过程、全环节中提升学生创新能力的不断提升[9]。

3.1 学生软件项目开发

遵循OBE 理念,以学生未来职业能力、探索研究能力和创新能力培养为目标,在教师团队和聘请的软件研发企业工程师(兼任教师)的指导下,组建学生软件开发团队。项目来源可以是教师指导团队负责承接的软件开发项目,教师和研究生科研课题的软件设计任务, 参与协同育人的软件研发企业提供的项目,大学生创新创业项目子问题,大学生程序与软件设计竞赛作品, 开源软件资源的二次开发如MATLAB 中各类工具箱、各类智能算法工具包的二次开发等。 项目来源的多样性可以促进学生进行跨学科和专业知识的融合学习,进行多层次(纯软件系统开发、科学计算、结合人工智能、大数据分析、云计算等新应用领域)的程序或软件开发,为学生将来就业或深造提供更好的编程和软件开发能力支持。

在软件项目实施中,给学生划分角色,如“项目经理”“系统架构师”“系统分析师”“程序员”等。 按照软件工程方法,让学生团队从软件项目的开发背景和需求分析起,完成项目概要与详细设计、算法设计、安全编程设计、数据库设计、编程实现、系统测试与文档编写、系统维护与优化等软件全生命周期的任务。

由教师团队和聘请的软件研发企业工程师定期以项目开发培训和专题报告形式辅导学生;形成研究生、高年级学生带动低年级学生的“传、帮、带”机制。团队成员中高年级学生给低年级学生进行成果讲解展示和项目开发培训。

通过软件项目开发训练和实施,教师团队引导学生追踪软件研发领域新需求、新成果、新技术,锻炼学生发现、分析和解决新问题的能力,提升学生团队协作、沟通组织能力、创新思维和实践能力。

3.2 学科竞赛

目前, 程序与软件设计类竞赛包括ACM 国际大学生程序设计竞赛、“中国软件杯”大学生软件设计大赛、“蓝桥杯” 全国软件和信息技术专业人才大赛等;大学生创新创业类竞赛如“互联网+”大学生创新创业大赛、“‘创青春’全国大学生创业大赛”“挑战杯”全国大学生课外学术科技作品竞赛等;综合类竞赛如全国大学生数学建模竞赛、机器人竞赛、信息安全竞赛等。各类竞赛共同特点是题目背景源于生产生活实际,具有“前沿性、综合性、复杂性”特点。通过组织学生进行这些竞赛的筹备、训练、参赛和竞赛成果推广等活动,可以进一步拓展学生学科视野及提升创新能力。近年来,我校学生在此类竞赛中获得较好成绩。

将学生软件项目开发以及学科竞赛中取得的成果进行整理和系统化,形成案例库,并将这些案例进行分解和模块化,融入课程教学内容中,促进了创新创业与专业课程教育教学的融合。

鼓励学生用“路演”方式推广开发成果。让学生在校园、校外、网络平台对团队或自己的软件开发及创新实践成果进行演示、推介,或开展相关经验分享及科普活动等。 一方面,可以锻炼学生表达、推介能力;另一方面,有利于学生以后开展相关创业活动。

4 教学保障、效果评价与改进

4.1 产学协同育人机制

高校与知名软件研发及教育培训企业建立长期协同育人合作关系,是程序类设计课程能够实施OBE和PBL 教学的基础保障条件。 第一,高校通过在企业开展调研,才能够准确把握软件产业前沿发展现状和趋势,确保对学生职业能力的准确研判。 第二,“走出去”和“请进来”是提高师资质量的办法。 “走出去”就是要求目前承担专业教学任务的教师到有合作关系的软件研发企业、用人单位调研和挂职,参与软件研发等任务,获取最新地对学生职业能力的需求和提升教学水平;“请进来” 就是要改革现有师资队伍组成,聘请软件工程师和实务人员作为兼职教师,承担某门课程中部分知识单元的讲授和实践教学任务,定期开展讲座,指导学生课外实践。 第三,遵循《普通高等学校本科专业类教学质量国家标准》, 在专业教学指导委员会指导下,由资深专业教师和软件研发企业工程师联合编写满足OBE 和PBL 实施的高质量教材——紧紧围绕学生职业能力培养需求,体现问题(案例)驱动并定期更新, 最大限度地解决学生所学内容陈旧、与实际需求脱节的问题。 第四,在企业中建立学生专业见习、实习基地。学生通过专业见习和实习,可以进一步提升职业素养和能力。

近年来,教育部产学合作协同育人项目中的实践条件和实践基地建设、 教学内容和课程体系改革、创新创业教育改革项目等子项目的实施,给高校与企业合作与联合培养人才提供了便利和保障。在改善实验条件和平台方面,借助企业技术优势,引进或联合开发程序设计和软件开发教学案例库、在线编程测试系统、程序设计训练系统等。

4.2 课程考核与教学改进

程序设计类课程考核由学生课程学习与编程实践(课前、课中、课后)表现情况+PBL 学习单元考核+期末课程设计考核 (源于OBE 学生职业能力需求分析的、具有实际应用背景的程序或软件设计题目)+学生创新实践(参与课程相关的软件项目开发、专业学科竞赛、职业资格认证)等部分组成,合理确定各部分的成绩占比,使得课程考核更具信度和效度,对学生学习质量评价更全面和准确。

以学生课程考核中反映出的问题, 学生的反馈(在校学生和毕业生对课程的满意度及建议)、用人单位对人才的满意度及建议为依据, 形成 “评价—反馈—改进”的闭环,持续提高课程教学质量。

5 结语

不断促进教学和人才培养质量提高是教学改革的永恒主题, 课程教学改革则是实现这一目标的基础。 在信息化和智能化高度发展和深度应用的今天,程序设计类课程在工科专业人才培养课程体系中的地位和作用更加重要。 紧密结合学生职业能力需求,运用适合程序设计类课程特点的先进教育教学理念和方法,将其贯彻落实到课程教学和人才培养的全过程、全环节中并持续改进,建成“金课”和一流课程,为促进建成一流专业和培养一流人才做出应有的贡献。

猜你喜欢

金课程序设计编程
以本为本“金课”打造之精讲精练与发散思维在微积分中的应用举例
编程,是一种态度
元征X-431实测:奔驰发动机编程
浅谈大思政视域下有机化学课程“金课”打造
编程小能手
基于Visual Studio Code的C语言程序设计实践教学探索
纺织机上诞生的编程
从细节入手,谈PLC程序设计技巧
探讨如何打造“金课”在中西医结合眼科教学上的实施
高职高专院校C语言程序设计教学改革探索