张玉红,李培培,胡学钢
(合肥工业大学 计算机与信息学院,安徽 合肥 230601)
人工智能技术近年来得到了迅猛发展,根据艾媒咨询,预计2017年产业规模将会达到152亿元,增长率将提高为51.2%,有望到2019年增长至344.3亿元[1]。显然,工业界的发展急需教育领域培养相应的专业人才。2018年4月,教育部研究制订“高等学校引领人工智能创新行动计划”,并研究设立人工智能专业,进一步完善中国高校人工智能学科体系[2]。目前,南京大学、北京大学、西安电子科技大学、中国科学院大学、国防科技大学等高校已经成立人工智能学院[3],相应的培养方案和课程体系也相继出台。
目前已经设立的人工智能相关专业有智能科学与技术、数据科学与大数据技术、模式识别与智能控制等专业[4]。在相关专业的培养方案中,数据结构仍作为一门专业基础课程。然而,如何在新的专业培养方案中合理地调整、丰富教学内容,从而使学生能更容易地适应人工智能相关专业的培养需求是每个任课教师必须要思考的问题。
数据结构是计算机和信息类专业体系中的一门基础课,对培养学生的算法分析与设计能力、程序实现能力、系统设计能力、计算思维能力具有重要的作用。在各个学校的课程设置上,数据结构课程的定位是作为程序设计语言的后续课程,专业课如操作系统、数据库管理等的前置课程,在学生的整体培养过程中处于承上启下的关键位置。
在已有的计算机应用技术专业培养方案中,数据结构课程侧重培养学生的数据组织能力、程序实现能力、算法设计能力以及计算思维能力。以合肥工业大学的计算机应用专业为例,在C++程序设计语言课程后开设数据结构课程,并基于C++语言讲授数据结构课程。课程内容主要包括栈、队列、线性表、树、图等常用的数据模型,同时介绍递归、查找和排序技术[5-8]。课程的讲解有助于提升学生对实际问题的抽象和建模能力、程序设计能力以及对算法的分析和改进能力,同时在讲授的过程中,零星地穿插计算机体系结构以及内存存储方面的知识,有助于学生对机器存储和机器代码内部执行过程的理解。课程体系和教学内容兼顾软件设计和初步的硬件知识,兼顾数据的底层存储和顶层程序设计,覆盖的知识具有较全面的专业基础性,对学生后续专业方向的选择也具有较好的普适性。
与原有的计算机、信息类专业相比,智能科学与技术专业对学生的培养在知识层面上具有更强的应用领域和理论方法的针对性,而在能力和思维训练上具有更高层次的要求,也就是对学生能力的培养更“专”、更“精”。为适应新的培养目标,课程的目标以及教学体系也必须作出相应的调整。
智能科学与技术专业的课程体系在基础课程的安排上与原有计算机应用技术专业相差不大,但在后续的专业课程中具有较大的变化。总体来说,新的专业体系减小了偏底层、偏硬件体系的课程比重,如体系结构、编译原理等课程,强化了数据分析相关领域课程,如数据挖掘[9-10]、自然语言理解、机器视觉、智能机器人系统、信息检索与推荐、最优化方法、情感计算等。这些课程大多侧重于对实际应用领域各种类型数据的处理与分析。
作为一门从基础向专业过渡的关键课程,为了更好地为后续课程奠定专业基础,可以从知识目标、能力目标和素质目标3方面对本课程的教学目标进行相应调整。
知识目标:知识是教学的基本内容,也是能力、素质以及文化培养的载体。通过深入、透彻地讲解基本知识点,可以实现学生更高层次能力的培养。数据结构课程的知识点主要是软件设计中常见的线性表、数组、树、图、广义表、文件等数据结构及其在计算机中各种操作的实现,基本的算法设计技术,并讨论有关运算的性能。通过对这些内容的学习,学生能熟练地掌握和使用各种常用结构及其运算,同时了解如何利用这些常用结构表示人工智能相关专业后续课程中涉及的复杂数据。
能力目标:通过课程的学习,培养学生能根据具体问题要求,尤其是针对实际应用中海量、复杂类型的数据,自行设计并构建合理的数学模型和数据结构,在此基础上,培养学生运用所学知识解决实际问题的能力。
素质目标:通过对解决问题的各个环节的严格要求,培养学生严谨的治学态度、创新思考的能力,如对问题求解算法性能的严格要求,对求解算法的测试用例的充分性要求,对实验报告、课程设计报告等的严格规范等。此外,还需培养学生对问题的独立思考能力,训练学生发现问题、解决问题的能力。
面向智能科学与技术专业体系下数据结构课程的教学目标和任务,可以从教学内容和教学手段上进行改革,提升学生的能力。
1)理论知识。
(1)强化对模型结果的多样操作。由于智能科学与技术专业的后续课程多数面向的是大规模数据,数据的存储和管理多基于数据仓库,代码过程中对数据存储的概念相对弱化,为此,课程的目标任务中也需要相对弱化数据的存储内容,尤其是对数据间的存储关系等。在基本数据结构如线性表、树及图结构的讲解过程中,一方面弱化其底层存储,另一方面增加对其操作的描述,其中弱化存储部分的描述,可基于语言讲解其对结构的代码描述,对其底层存储设备上的存储原理可不作介绍;而丰富对其操作的描述,则是在原有的模型基本操作基础上,增加与数据处理相关的更多操作,如各个模型结构中节点的分裂与合并、相似性计算等,熟悉这些操作有利于后续课程的学习。
(2)增加对多种类型数据的表示。后续课程中涉及的数据类型多样,除了原有课程内容中的结构性数据,还更多地涉及非结构或半结构的复杂数据,包括文本、图像、网页、多媒体、高维空间等数据,且这些数据的复杂性较高,因此,在课时的安排上,可以适当压缩相对简单的线性结构课时,加重后续复杂的树、图及广义表结构课时。此外,需要在课程中加强对复杂数据结构的描述和处理。然而,考虑到数据结构课程多开设在大学第二学期,学生的程序设计能力还不够扎实,可引入部分简单的数据,如文本、图像和网页数据的结构和相关运算描述,增加抽象模型的实际应用场景,既便于学生理解学习,又可以提高学生的学习兴趣。
(3)训练算法分析与设计能力。后续课程多是针对某一类型或应用领域的数据,通过数据的分析和建模为实际应用提供决策支持,这一过程对算法的设计能力以及对其性能的分析能力是必不可少的,为此,需要在数据结构课程中加强学生对算法性能的分析能力。在教学过程中,除了讲解算法步骤和思想外,还可适当增加对算法的策略、适用范围、性能等方面的讨论,在此基础上,尝试引导学生对算法的不足之处进行简单的优化或改进,训练学生的创新思维能力。
2)实验环节的案例。
结合上述理论知识点的扩展和修正,进一步扩充和完善理论模型的应用案例,在理解理论模型的同时,利用案例使学生熟悉、强化模型的实际应用。
以数组为例,在讲解中,可结合文本和图像处理任务,对文本和图像的数据读入格式进行案例讲解,结合数据分析中常用的一些数据的预处理进行数组操作的讲解,丰富数组这一简单模型的功能性。此外,还可设计基于图结构的社交网络应用案例、基于广义表的网页数据应用案例等。
案例1:基于文本的bag-of-words方法[11],实现从海量文本文件的数据读入任务,包括数据读入,低频词、停用词过滤等预处理,计算等操作。
案例2:对海量图片文件的各种数据格式读入,并对其进行简单的操作,如变色、灰化、钝化、锐化等操作。
案例3:基于图结构实现简单的社交网络模型的构建和简单操作。
3)计算思维的训练。
人工智能和大数据分析专业对学生的计算思维培养提出了更高的要求,因此,在该课程的教学实施过程中,在基本的教学内容知识点传授过程中,应尤其重视对学生从低层到高层的能力和思维的培养以及由思维到实现的贯通过程。
在各个模型知识点的讲解过程中,注重不同模型与不同算法间的联系和区别。对模型和算法之间相同和不同点的对比和分析,让学生对算法设计的基本思路和框架有初步的认识,引导学生对算法进行一定的归纳,从而加强学生对模型设计和算法设计的思维训练。
案例1:对于二叉树的应用可结合诸多划分类方法如二分查找等进行讲解,从解空间的划分较多来讲解算法设计以及算法性能的提升方法。
案例2:在图结构的基本算法中,如dfs、bfs、prim等算法,通过对比分析算法的思路,提炼遍历算法在问题求解中的重要性,引导学生基于遍历算法对实际问题进行算法设计与改进,培养学生的创新思维能力。
在传统的课堂讲授教学方式和手段基础上,增加学生研讨环节,活跃课堂气氛,同时增加学生讲解和互评环节,训练学生独立解决问题及团队交流的能力。
结合专业特点,可以给出一些具体有趣的问题和案例,引导学生围绕课堂的基本模型对问题的求解算法进行研讨,并鼓励学生综合研讨结果,对模型和算法进行初步的设计。在此基础上,鼓励学生进行讲解,同时进行有针对性的点评。
案例1:图结构中的节点划分问题——可结合社交网络中的好友关系、距离等对图中节点进行简单的群组划分[9-10]。
案例2:路径推荐问题——基于图模型进行最短路径推荐。以智能交通领域为例,如何对路径增加时间、距离、拥堵、路灯等多因素来计算基于多因素加权的最短路径。
合肥工业大学2018年获批成立智能科学与技术专业,旨在培养具有脑与认知科学、信息科学、智能科学、现代科学方法学的基本理论知识,掌握计算机、智能系统、信息网络、信息处理、自动控制、系统优化的基本技能,综合运用所学知识与技能分析和解决实际问题的高级复合型人才。笔者对人工智能相关专业建设条件下数据结构课程的教学体系进行了深入的思考,从教学内容、教学方式等角度对课程建设提出了若干建议,并拟定了一些示例供参考。后续将进一步对课堂教学方式进行深入思考和改进,以更好地改革新专业培养体系下的数据结构课程,促进学生培养质量的提高。