“新工科”背景下电子信息类人才程序设计能力培养的思考
2022-07-08林伟铭袁江南
林伟铭 袁江南
厦门理工学院光电与通信工程学院 福建厦门 361024
一、概述
电子信息技术是信息时代的重要产物,是科技和经济的主要推动力。在人工智能等技术引导下的新一轮科技革命必然影响到电子信息技术的发展,两者相互融合、互相促进[1]。在此背景下,电子信息类人才的培养迎来了新的挑战和机遇,那么高校电子信息类专业的教与学如何变革才能真正培养出适应产业需要的新型电子信息技术人才则是我们要思考和解决的重大问题[2]。其中在电子信息技术与人工智能技术交叉融合的情况下,程序设计能力是创新应用型人才的一项重要能力,因此有效提升学生的程序设计和创新能力就显得尤为重要[3]。在新工科建设的理念下,以培养具有创新思维、解决问题能力和自学能力的新一代电子信息类新工科人才为目标,本文将对学生编程创新能力培养的教学方法变革进行思考与探讨。
二、教学现状分析
(一)现有课程体系
程序设计能力是应用型本科电子信息类学生的重要基础能力。而在新一轮智能技术革命的影响下,编程创新能力的重要性显得更加突出。目前电子信息类专业的程序设计能力培养课程从层次上主要可以分为三类:
(1)编程基础类,让学生掌握相应编程语言的语法和程序编写,如C语言程序设计、数据结构、C语言程序设计专题实验等。
(2)应用类,让学生掌握编程在某一领域上的应用,如单片机原理与应用、嵌入式系统、物联网技术、数字图像处理和计算机视觉等。
(3)综合类,让学生综合使用各项能力解决问题,例如专业综合实践类课程和毕业设计,如图1所示。
图1 电子信息类专业程序设计能力培养课程体系
从该课程体系结构可以看出,编程基础类课程是整个课程体系中的关键基础,对学生应用程序设计能力解决实际问题尤为重要。
(二)存在问题分析
编程基础课程对学生应用编程解决实际工程问题尤为重要。如果编程基础课程的教学方法单一[4],缺乏对学生创新意识的培养,就不利于在新工科人才的培养,主要有以下几个方面。
1.教学手段不够丰富
编程知识概念抽象,语法繁多。而首次接触的编程语言的大一新生,思维方式和学习方式尚未转变。如果编程基础类课程过多讲授语法知识,缺少丰富的教学手段,大部分学生面对编程课程可能会产生畏难情绪和厌学。因而无法达到课程学习目标,与工程教育的思想相背离。
2.缺少课程间的关联性
电子信息类专业学习编程的目的是将程序应用于电子系统设计或数据/信息处理中,是为后续专业课程打好编程基础。例如,单片机原理与应用课程需要将编程知识与硬件相结合,而数字图像处理中常使用二维数组保存和处理图像。但在编程基础课的讲授过程中,位运算和二维数组等方面的相关知识却较容易被忽视。
3.缺乏解决复杂工程问题能力的培养
课程的教学过程中通常会设置传统经典问题,但通常这些经典问题缺乏实际应用场景,较难提起学生的兴趣,也不能培养学生解决复杂工程问题能力。学生可能学会了经典算法,却无法灵活应用算法去解决实际工程问题。
4.过程考核手段欠缺
期末考试或期末大作业通常被作为主要考核手段,但期末考核为主的方式容易导致学生期末突击学习。程序设计能力的培养需要通过平时不断的编程实践,日积月累的经验才能让编程能力逐步提升,缺少过程考核就无法督促学生的平时学习。
三、教学改革措施
目前程序设计类课程传统教学方式存在的问题为电子类新工科人才培养带来重重困难。为了应对新技术革命的浪潮,需要对现有的程序设计基础课程进行改革,在新工科教育理念下建设能够培养有创新思维、能解决实际工程问题人才的程序设计课程体系。针对上述问题,主要的改革措施有以下几点。
(一)建设编程基础知识微课视频库,线上线下学习
首先从教学方式上进行改进,结合线上线下的学习方式,提高编程知识的学习效率。通过建立一套微课视频库,采用短视频的形式演示编程基础知识,用于学生课后学习,将编程知识以可视化的形式进行演示和讲解,让学生更容易掌握编程思想和技巧。不同于传统线上课程的视频里会涉及较多内容,微课视频时间短,每个视频只涉及一个编程知识点,学生容易消化吸收[5]。该视频库可以辅助C语言程序设计课程的教学,也可以用于后续专业课程复习编程知识,并通过课程分析学生能力的薄弱环节,在视频库中补充和丰富相应的知识点讲解,从而实现反馈闭环,持续提高教学质量。通过线上线下学习的方式提高学习效率,为教学过程中进行解决复杂工程问题的训练提供了前提。
(二)以问题为导向引导学生学习,提升学生解决复杂问题的能力
上述微课资源库可以辅助相关课程的教学,提高基本编程知识的教学效率,因此在课程中可增加学时用于训练学生解决问题的能力。在传统的教学中,设置的经典问题通常过于简单,缺乏应用背景,学生只需要模仿例子代码就可以解决,无法激发学生的创新思维。具有解决工程问题的能力和创新思维是新工科人才的一个主要特点,在程序设计类课程当中设置适合本科生探索实践的工程问题,才能鼓励学生思考多种途径解决问题,激发学生创新思维[6]。
问题设置要具有复杂工程的应用场景。问题可以是多个独立的工程问题,也可以是以一个完整项目的形式分解成多个问题。问题的内容可以引入电子竞赛和创新项目的课题,也可以是新技术的应用背景。例如,在电子竞赛中经常需要对小车进行控制,那么就可以在课程中设置小车的简单控制题目,并逐步分解功能,引导学生分析整个小车控制的过程中的重要编程方法,如图2所示。又例如机器视觉应用中通常需要对图像进行预处理,那么就可以设置相应的图像预处理题目,学生设计图像预处理的程序,并分析图像预处理对机器视觉识别的性能影响。
图2 小车控制任务
此外可以设置完整的复杂项目,将项目分解为多个问题,逐步引导学生逐步实现整个项目。例如图3演示了五子棋游戏项目可以分解为棋盘显示、棋子输入、错误处理、胜负判断、记录保存等多个任务,涉及了输入输出、判断、循环、二维数组、文件操作等多个知识点,学生需要思考解决方案,可以自由使用各种方法解决问题。五子棋也有一定的趣味性,学生完成项目后可以得到直接的反馈,形成较强的满足感和成就感。题目还可以设置遗留问题,例如人机对战的实现,鼓励学生后续自学完成。
图3 五子棋项目分解
在教学过程中以问题为导向引导学生学习,以新技术应用和创新项目背景提升课程创新性,以复杂问题的解决提升课程的挑战度,从而保持学生持续学习的兴趣和动力。将以项目问题的解决结果作为学生的平时考核成绩,让成绩可以更好地反映出学生综合运用软件设计的能力,并督促学生的平时学习。
(三)梳理专业知识脉络,课程相互融合支持
与计算机类专业不同,电子类专业的学生学习软件设计更注重与硬件或信息处理结合(见图1)。因此要针对专业特点,梳理编程基础课程内容与专业课程的关联性,建立前后课程间的融合支持关系。让课程体系可以更好地满足专业人才培养规格的要求。例如电子类学生学习C语言程序设计将会用单片机、嵌入式等课程。所以有必要突出电子类程序设计课程的专业特点,整理好课程体系的知识脉络关系,并在微课视频库中增加与后续课程关联的知识点,增加编程与电子信息知识结合的知识。具体如:硬件平台上的变量类型、定点运算和位运算控制并口等,利用编程进行基本的图像处理等。这样学生在学习程序设计的过程中,也相应地为后续专业课程做好了准备。
(四)树立社会主义核心价值观
学生的综合能力不仅需要专业知识,更要有正确的价值观和文化素养。在培养学生工程能力的同时开展思想政治教育,更有利用学生的综合能力提高和全面发展。因此课程教学过程中要突出学生知识、能力和思想素质的协调发展。在程序设计类课程体系中,可以通过引入案例教学和类比教学方法融入课程思政德育元素。例如以黑客程序进行举例,说明黑客病毒程序破坏数据、系统和软件或盗取重要信息,给人们的工作、生活带来巨大的经济损失,属于网络犯罪行为,应予严厉打击。通过各种案例分析将程序设计教学与课程思政有机融合,帮助学生提升思想水平、政治觉悟、道德品质和文化素养,树立社会主义核心价值观,最终提高学生综合素养,满足新时代对人才培养的要求。
结语
本文以“新工科”背景下电子信息类人才培养为背景,分析程序设计创新能力培养的重要性、当前教学方式存在的问题,并提出了教学方法的改革方式。建立具有电子专业特色的编程知识微课资源库,让课程从繁杂的编程语法教学中脱离出来,更注重学生编程解决问题能力的培养和政治思想水平、道德品质的提高。教学过程中设置以电子竞赛、创新项目或新技术应用为背景的工程问题,训练学生解决问题的能力,将学生解决问题的结果作为过程考核的依据,督促学生保持学习的动力,最终为培养具有高综合素质的电子信息类新工科人才打下基础。