袁立,杨焘,李玉玲,付冬梅
(北京科技大学 自动化学院,北京)
随着人工智能领域的发展,自动化专业人才培养应该适应信息化、物联网+和人工智能浪潮快速发展的趋势[1],我校自动化专业的“面向对象程序设计”“软件工程”“数字图像处理技术”和“模式识别基础”四门课构建了“智能软技术课程群”。目前常见的教学改革通常是面向某门课程独立进行的,如以文献[2-5]为代表的项目,都对这些课程在新工科建设、工程教育认证的框架下进行了相应的改革,取得了一定成效。我专业教师在这几门课的教学过程中,分析了独立设置时各课程存在的一些问题,如缺乏对上下承接课程的内容与连贯性、实验内容不容易有深度广度、缺乏与实际综合工程应用的联系等。针对这些问题,本文提出了课程群的构建与建设。
本文重点探讨第一轮的实施过程中课程群在课程内容和实验环节两方面的建设。在课程内容建设方面,主要探索课程群内课程如何相互衔接,研究四门课程在授课计划、授课内容、示例选择和实验验证安排等方面的相互衔接,以提升学生通过本授课群获得的智能软技术及其相关理论的整体感受效果,帮助学生打通不同领域知识点的衔接与依托,培养终生学习态度。在实验环节设计上,以提高工程实践能力为目标,在课程群各课程相互支撑的条件下,探索如何增加实验内容的广度和深度,来推动以工程应用为导向的教学实践性内容改革。
课程群中四门课程均为自动化专业的选修课程。在课程群的建设方面,我们捋顺了课程内容承接关系,调整了课程的开设学期与学时,表1所示为各门课程开课学期、理论和实验/上机学时分配,并从教师讲授和学生习得的角度说明了从课程群的整体角度出发做出这种优化调整后的优势。按此计划实施之后,各课程内容之间能够融会贯通,教师能够提高讲课效率,更新讲课内容,适当扩充人工智能、智能控制领域的前沿知识。
从学生的角度看,我们对比了课程群建设前后两届学生的选修课选课情况,连贯选修课程群所涉及课程的学生比例从10%提升到40%(自动化专业每届人数约180人)。对这个方向感兴趣的学生可以学习到更为系统的知识体系,实践的深度和广度得到提升。下面对课程群内四门课程的教学内容改革进行描述。
1.“面向对象程序设计”教学内容改革。在保证知识体系完整的前提下,多为“数字图像处理”和“软件工程”两门课程做出铺垫。由表1可知,面向对象程序设计的教学分两学期完成,一学期主要讲授Python语言,一学期主要讲授C++语言。为了能更好地为课程群内的其他课程提供基础,提高课程群内课程在课程内容上的连贯性,进行了如下改革:首先,将Python语言的内容安排在了针对大二下学生开设的“面向对象程序设计I”,从而使得进入大三的学生在上“数字图像处理”时具有Python编程基础,同时,在“面向对象程序设计I”课程的教学内容中引入数字图像处理的一些算例,引发学生对数字图像处理技术的兴趣。基于Python脚本语言开发的数字图像处理包较多,如PIL、Pillow、OpenCV、Scikit-image等,本课程依托一个图像处理算例,介绍了OpenCV的相关概念和相关第三方库的安装方法和使用方法,通过实时展示图像处理效果,一方面激发了学生学习编程语言的兴趣,一方面为下个学期的图像处理课程的教学奠定了基础。其次,在针对大三上学生开设的“面向对象程序设计II”中,从软件项目开发角度强调面向对象程序语言的封装性、继承性和多态性、类和对象设计与使用、利用继承机制实现类族及其多态性,同时介绍了一些软件设计模式,为大三下开设的“软件工程”课程提供基础。
表1 智能软技术课程群各课程授课时间搭配、教学内容互相支持情况
2.“数字图像处理技术”教学内容改革。首先优化课程目标,形成了渐进式能力提升目标:掌握基础知识和基本分析方法;针对实际需求设计合理的图像处理系统,选择适当的硬件、软件进行系统构建,并能够选择适当的编程语言进行实现;了解领域内应用和研究热点,针对性进行自主学习。这些课程目标对应了工程认证中技术性和非技术因素对学生能力培养的要求。
由于先修课程《面向对象程序设计I》中已经讲授了相关的类库和编程方法,为本课程节约了课时,使得能够调整和优化教学内容。除了图像的空域滤波、频域滤波、图像复原、图像分割、形态学处理等内容外,还引入了深度学习前沿知识[6],介绍深度学习在图像处理常见任务如图像分割、图像复原(去噪、图像超分辨率等)方面的应用和实现原理。同时引导学生通过手机、相机、USB摄像头等设备采集图像和视频作为实验素材,分析所采集图像的特点,引导学生思考采用什么方法进行针对性处理。
3.“模式识别”教学内容改革。以数字图像处理所学知识为基础,围绕当前人工智能领域研究热点,通过实际工程案例为导引(如带钢表面缺陷检测系统、车牌识别系统、人脸识别系统、指纹识别系统等),进行模式采集、图像预处理、特征提取与选择、线性分类器设计、支持向量机、卷积神经网络等知识点的讲解。这些案例的实施能够将Python程序设计、数字图像处理、模式识别课程的知识有机融合在一起。由于适当削减了概率密度估计的部分内容,同时又因为先修课程对图像处理编程方法进行了铺垫,节省下来的课时能够为学生讲解更多的基于深度学习的模式识别知识[7],如卷积神经网络在图像分类、目标检测与跟踪和目标行为识别与理解等领域的应用与实现。
4.“软件工程”教学内容改革。软件工程要求学生能够运用结构化程序设计的编程思想,通过面向对象分析和常用的设计工具,建立软件设计模型等,最终实现软件项目的分析、设计、实现和维护工作。在先修面向对象编程语言、数字图像处理知识后,学生已具备一定的编程基础,能够更好地理解软件工程中的总体或详细设计原则,在绘制流程图或类图等专业图形时,有一定具象化的编程经验帮助理解;同时,可以将数字图像作为工程对象,展开数字图像处理的软件设计的相关内容讲解,填补了课程中的实际应用对象,以某数字图像处理系统或模式识别系统为对象,掌握从软件项目启动、面向对象开发、软件项目实施、项目部署和维护到文件文档编写的整体流程。学生对软件工程的理解更加深入,体会到学习过程的连贯性,也感受到了学有所用带来的学习成就。教师在授课过程中,感受到课程效率的提高,尤其在关联到其他课程相关内容时,学生在听课时的反馈更加积极,形成良好循环效果。
课程群中四门课程均设有课内或课外实践环节,以课程设计报告或者上机实验的形式完成。面向对象程序设计课程利用Python语言实现函数、流程控制、图像绘制、类库调用等的学习;软件工程课程设置了与图像处理、模式识别相关的小型项目的软件设计报告,学生组成团队进行题目选择后,小组内部根据软件工程的基本原理和方法,讨论在设计这些软件系统时应该使用的技术、方法和流程,来完成问题描述、需求分析、总体设计、功能设计、对象时序设计等内容。
在数字图像处理、模式识别两门课程的实验教学方面,根据学生水平进行了“基础级”和“提高级”的分层设计。在“基础级”层面上,考虑到实验学时和学生编程能力的限制,为学生设计了数字图像处理、模式识别自主学习实验平台。这些实验平台能够适应学生多层级水平。第一层次为对图像处理、模式识别的基本算法进行课堂演示,让学生直观感受算法处理的效果;第二层次用于学生动手实验过程,学生通过学习代码了解算法的具体实现,通过调整算法的参数观察结果从而深入理解算法;第三层次用于学生自主二次开发,在自主实验平台的基础上,学生可针对某实际问题进行二次开发,对界面进行升级、对处理算法进行扩展。先修课程《面向对象程序设计》课程的相关内容铺垫使得学生在程序理解、二次开发时更加顺畅。
图1所示为数字图像处理课程的实验平台界面,在该平台中,为学生设计了图像基本处理、空域图像增强、频域图像增强、图像复原、形态学处理等模块,展示各个图像处理功能的效果,让学生理解针对处理目标需要选择什么样的处理方式、每种处理方式的适用范围和局限性,为后续实际项目中的应用打下基础。
图1 数字图像处理自主学习实验平台界面
图2所示为模式识别课程的实验平台界面,在该平台中,为学生设计了线性分类器、非线性分类器、无监督聚类、典型模式识别系统实现等模块,以张学工的模式识别(第四版)内容为基础[8],展示监督与无监督模式识别中针对不同任务的分类或聚类效果,让学生理解针对实际需求如何设计系统流程、选择什么样的算法实现分类或聚类、每种算法的适用范围和局限性。
图2 模式识别自主学习实验平台界面
在“提高级”层面上,结合教师的科研课题和智能感知领域的热点应用,引导学生利用树莓派、英伟达Nano等设备,使用Python语言编程解决实际工程问题。这些设备成本较低,携带方便,学生自行组队选择感兴趣项目,借用设备进行设计和开发。对学生来说,树莓派单片机或Nano在系统安装与环境配置方面比较容易上手,Python编程、软件工程相关知识也已经具备,再利用AI算法的开源库,一个小型项目设计是可以实现的。《模式识别基础》《软件工程》课程的课内外实验环节中设置了目标检测、人脸识别、图像处理与识别等小型工程设计。在实施过程中,学生可以完成从项目需求分析、整体方案设计与可行性论证、硬件设备选型与系统搭建、软件设计与构造、系统测试与维护等工作环节,从而开拓学生工程应用的视野,培养学生解决综合性工程实践和复杂工程问题的能力。
本文所述为具有专业特色和相互承接关系的智能软技术课程群的建设,着力培养学生的人工智能相关工程实践方面的能力。在教学内容建设上,建设授课时间搭配、教学内容互相支持和贯通的课程群教学方案。课程群各课程内容相互铺垫,有助于建立整体连贯的知识学习体系。在实践教学上,建设从基础到应用、具有前后承接关系的实验设计方案。以人工智能边缘计算设备为基础,训练学生解决工程问题中的技术性与非技术因素方面能力的培养。在“新工科”建设背景下,这种课程群的建设有利于学生实践能力的深度培养。