APP下载

人工智能课程仿真教学实践
——以计算机科学与技术专业为例

2020-11-17

教育观察 2020年26期
关键词:计算机科学学时编程

区 苏

(广西大学行健文理学院,广西南宁,530005)

一、引言

2017年《国务院关于印发新一代人工智能发展规划的通知》指出人工智能发展和落实的相关任务和细节,其中讲到人工智能的成果转化、人机结合等都是促进人工智能技术发展和人才培养的方式。高校作为人才培养的基地,在人工智能发展的洪流中有责任进行专业技术高级人才的培养。在日常教学工作中,教师应该坚持教学内容与实际问题相结合,保持学生学习内容的前沿性,搭建合理的专业教学体系,加强教学质量和人才队伍建设。

人工智能是计算机科学、控制论、信息论、哲学、心理学、语言学等多学科结合下产生的一门跨领域的综合性学科。正因为多学科结合的特性,在人工智能技术日新月异的发展过程中,人工智能技术融入人类社会多个领域,且规模持续扩大。相对地,人工智能的思想和技术也在深刻地改变着人们传统的生活和生产方式,其影响深刻且久远。

人工智能(Artificial Intelligence,AI)的意义是使机器像人那样具有智能去做事情。所谓人类智能,就是人类所具有的智力和行为能力。[1]人类智能在机器上的运用需要一套完整的理论体系作为基础支持,如系统架构、编程技术和算法策略等。人类智能从知识的角度来看,包含知识的获取、表示、记忆和应用四个基本环节。

二、人工智能教学中的问题

人工智能的跨学科融合的特性,决定了其学时的多少变得尤为重要。充足的学时数是实现学科基础知识教学的保障,也为学生充分地实验实践和有效地知识掌握提供了时间资源。人工智能课程作为计算机科学与技术专业的选修课,分配的课时为45学时,其中理论33学时,实验12学时,学时数量相当有限。教师仅利用课程内的学时无法完成人工智能基础理论的讲授,也无法展开理论知识向具体问题实验的转换。这不利于学生兴趣的培养,其结果是该课程内容生且涩偏理论化,教学效果不佳,所以对该课程的内容调整是有意义的。[2]

人工智能的课程教学主要存在以下几点问题:课程内容跨多学科且知识面广,课程学时非常紧凑,两者的时间量不匹配;课程内容比较前沿,理论与硬件更新升级较快,课程学习需要相关知识基础;计算机科学与技术专业的知识体系偏计算机软件,难以开展目前流行的以硬件为载体的人工智能实验。

对人工智能课程的改进是非常紧要的任务,改进时间不宜太久,应尽可能地让本届学生享受到课程改进后带来的福利。学校要在现有教学资源基础上进行教学资源的优化整合,如课程间知识的连贯、专业间知识的互助。课程教学内容更新,主要对人工智能课程的实验内容进行了修改,改为仿真硬件的人工智能实验内容。

三、人工智能课程改进的教学思路

(一)计算机科学与技术专业的知识特点

学校计算机科学与技术专业的专业课程大致为程序设计语言、数据库系统、操作系统、网页设计、算法设计与分析等,课程总体偏向计算机软件编程。在人工智能的众多学习与应用方向中,问题求解、机器学习、专家系统、模式识别、智能搜索等都非常适合计算机科学与技术专业学生的学习。

单纯的课程理论内容较为抽象,教材中的实例数量少且不详细。[3]其中,编程实例的内容智能化展示不足,让该专业学生不能深刻体会人工智能课程开设的意义和学生设想的课程内容有出入,从而淡化和降低了学生对人工智能学习的兴趣。教师在与学生的交流中感受到该专业课程的基础理论学习难度普遍较大,与学成后的展示力不成比例。学生编写好程序、搭建成系统后,因计算机专业性的特点,无法随时随地、有效地向非专业人群进行成果展示来获得对等的专业认同,容易失去自信心和满足感。因此,人工智课程既要体现专业知识的综合应用,又要基础理论有合理的层次和深度,还要实践内容有时代性以及有必要的实物化展示。

针对上述问题,教室可借鉴电子专业教学实验模式,运用真实的机器设备进行课程教学。[4]同时,计算机科学与技术专业还应拥有自己的技术特色和知识侧重点。例如智能机器控制实验和计算机科学与技术专业人工智能的教学可尽量避免电子硬件的处理,实验内容偏重于机器人的高层控制的算法和策略的引入,见图1。

图1 控制层次

在关于适合计算机科学与技术专业的智能机器教学问题上,因个人的学习经历而选择的人工智能实验内容是ROS(Robot Operating System)。ROS是一款适用于机器人的开源操作系统,是斯坦福人工智能实验室建立的一个项目。它提供了操作系统应有的服务,包括硬件抽象、底层设备控制、常用函数的实现、进程间消息传递以及包管理,也提供用于获取、编译、编写及跨计算机运行代码所需的工具和库函数。

解决有关计算机科学与技术专业学生电子硬件知识技术不足的问题,教室可利用仿真软件Gazebo与ROS配合,实现智能机器人可视化教学实验内容。Gazebo是一款3D动态模拟器,能够在复杂的室内或室外环境中准确有效地模拟机器人群。Gazebo中的机器人模型与rviz使用的模型相同,但是需要在模型中加入机器人和周围环境的物理属性,例如质量、摩擦、重力等系数。机器人的传感器信息也可以通过插件的形式加入仿真环境,以可视化的方式进行测试。[5]Gazebo不需要学生拥有真实的机器人硬件,而是通过仿真虚拟的机器人进行替代。该软件有较强的展示力,便于人工智能知识成果的分享。考虑到部分学生想进一步将人工智能技术扩展到真实的机器人载具上,那么ROS的知识也同样是基础和必需的。ROS知识可以脱离Gazebo仿真环境,嵌入各种真实机器人硬件,例如ROS官方机器人实体模型ROS Turtle等,见图2。

图2 可应用ROS的实体硬件

(二)课程教学内容的安排与设计

人工智能课程的理论和实验内容非常多,上述的人工智能的教学工作经过精简也无法在课程学时内完成,因此增加教学课时非常有必要。为了避免新增学时与原学时的冲突,课程采用的是隐性学时增长方式,即通过把人工智能课程与其他课程的共通知识点进行关联,剔除近似的知识点,直接由其他课程进行教学扩展和实验实践,换句话说就是利用其他课程的学时来变相增加人工智能课程的学时。

具体的课程关联与学时分配的思路是人工智能课程主动配合其他课程知识点,并进行综合。下文内容按仿真实验设计步骤和课程设置时间顺序,对计算机科学与技术专业的几门特色课程关联的知识进行介绍,见图3。

图3 仿真模拟课程关联

学校计算机科学与技术专业暂无开设电子硬件相关的课程,因此需要在人工智能课程内分配学时进行关于仿真的载体、传感器等内容的教学。如在Gazebo仿真环境中,教师选用合适的感应器(如激光传感器等)用于检测障碍物或目标物体,并做出决策,驱使感应器的载具(机器人、车辆等)智能行走。教师在此内容中要求学生学习并理解仿真模型的制作流程和模型代码。

1.仿真环境与建模

计算机科学与技术专业有许多课程可以教学三维仿真的知识,例如AutoCAD[6]、计算机图形学[7]等课程。这些课程适合于让学生从零基础接触和熟悉三维仿真的设计工具,了解二维与三维图形的变换和算法。因此,这部分内容可以从人工智能课程的教学中分离出。如没有开设相关课程,教师也可以在人工智能课程的实验环节中利用3个学时简单地进行教学,让学生简单了解仿真软件的功能,如通过学习使用Gazebo软件来熟悉三维模型的创建,如图4。

图4 Gazebo模型制作

在仿真三维建模中有不少内容需要与其他课程进行关联,如在建模中采用了XML和URDF的形式进行仿真环境和模型的描述和存储,如图5至图7。该内容与之关联的课程是网页设计课程,该课程在计算机科学与技术专业中开课率较高,分配到的课程学时数充足。因为HTML等超文本标记语言是本科学生较为熟悉的知识内容,所以在人工智能课程中,教师可以直接使用标记语言对模型进行设计与教学。

图5 模型草图

图6 三维模型

图7 三维模型代码片段

2.仿真控制代码编程

实际问题的解决需要从自然环境中提取编程素材,如问题的求解的描述(初始状态、目标状态、算符等)、问题的求解规则的定义(元规则、推理规则、元素结构等)、问题的求解的应用(自动机、状态转换、状态预测等)。学生可以在离散数学和编译技术等课程中学习以上内容。离散数学是计算机科学与技术专业一门关于数理逻辑知识的课程,如用命题公式和谓词公式来表示真实环境的信息和知识,包括二者之间的蕴含推理关系的内容。编译技术这门课是介绍程序设计语言编译程序构造的原理,其内容涉及自动机(NFA、DFA)及对符号串书写规则和识别预测。以上两门计科专业的经典课程对学生的编程思维有很大的帮助,教师可以在人工智能课程中借鉴和引入,提高人工智能课程的理论性。

仿真系统ROS使用C、C++、Python语言进行编程,该内容与计科专业的契合度非常高。计算机科学与技术专业在本科一年级就开始有编程课,C、C++、Python这类语言是比较常用的编程语言,其中C语言是必学的。如果没有开设C++课程,有C语言的编程经验的学生也是可以直接上手的。Python语言这几年比较流行,如没有开设此课程,可以用C、C++语言替换。可见,人工智能的实验中可以直接开展ROS系统应用的编程教学。

3.仿真系统的交互与控制

仿真系统Gazebo软件配合ROS系统搭建,而ROS系统(ROS一代)是安装在Ubuntu操作系统内。ROS和Ubuntu系统都有要用到命令形式进行的人机交互与沟通。系统的结构原理、进程的调度机制等相关知识和涉及的控制命令知识在操作系统一课中都会讲述到。该课程作为计算机科学与技术专业的一门专业基础课,是计算机科学与技术专业学生必须要学习的。教师可在人工智能课程中直接开展编译环境搭建、库文件使用和命令控制。

4.仿真模型的控制策略与算法

人工智能的核心内容就是运用策略和算法实现控制的智能化。在这个部分中,计算机科学与技术专业相关的课程有算法设计与分析和人工智能原理两门课程。

算法设计与分析:教学内有多种算法的编程应用,如递归与分治策略、动态规划、贪心算法、回溯算法、分支限界算法、图论等。经典系统的算法运用是提高人工智能编程水平的重要基础。

人工智能:本门课程将在理论部分讲授知识获取以及知识运用问题,包括人工智能的基本概念及其发展状况、知识表示方法、确定性推理方法、不确定推理方法、搜索策略等内容。通过学习人工智能策略性和技巧性的编程,学生能提升处理问题的思维能力以及智能编程处理策略。

5.其他关联课程及知识

高等数学、概率论、数据结构、编程思想、大学物理、模拟电路、数字电路等课程知识,与人工智能课程也有较大的关联性,但由于文章篇幅原因不进行赘述。课程改进细节见表1。

表1 课程改进前后对比

续表1

人工智能课程的建设是非常有意义的,虽然改进过程遇到了不少困难,但始终以内容质量与知识同步作为问题解决方案的主导思想。课程的改进主要在内容分配和知识关联上作出了调整,采用主动配合的方式,总结人工智能课程中与其他课程知识的交集和联系,并合理利用多门课程的已学知识,通过合理编排整合到一个完整的实验体系里。

猜你喜欢

计算机科学学时编程
第二课堂成绩单制度下的学时发放标准的探索
——以中国民用航空飞行学院为例
《诗词写作》课程教学大纲(节选)
编程,是一种态度
教学大纲国画(工笔花鸟)
元征X-431实测:奔驰发动机编程
吉林省一流转业建设点
——通化师范学院计算机科学与技术专业简介
Privacy Preserving Solution for the Asynchronous Localization of Underwater Sensor Networks
编程小能手
探索学时积分制 构建阶梯式成长激励体系
纺织机上诞生的编程