人工智能时代《数据结构》课程的教学探讨

    杨秋妹

    

    摘 要:教育应与时代接轨,人工智能时代给高等教育带来了智慧教学新工具,也给学生的专业知识培养带来了新要求。文章针对人工智能时代下《数据结构》课程的教学改革问题,分析了课程理论教学及实验教学需要改进的地方,阐述了《数据结构》课程应充分利用人工智能时代的新工具,调整授课方式,改善教学效果。同时也应根据人工智能时代的新要求,将课程的教授内容与时代研究热点相结合,激发学生的学习兴趣,培养人工智能时代所需要的特色人才。

    关键词:数据结构;人工智能;计算思维;教学改革

    中图分类号:G434;TP311.12? ? ? 文献标志码:B? ? ? ?文章编号:1673-8454(2020)24-0048-04

    一、引言

    人工智能已渗透到人们日常生活的各个环节,个性化的购物体验、新闻定制、医疗保健、智能家居、城市安保等无一不是人工智能的应用范畴。互联网、大数据、人工智能技术的发展引领社会的未来发展方向,带动社会岗位技能需求变革,也给高校的教育体系带来了挑战[1]。为迎接人工智能时代的到来,高校需要在教学思想以及专业设置等多方面进行调整[2]。人工智能研究主要集中学习、推理、问题解决、感知和使用语言这几方面的研究,分为两种类型:一种是数据驱动的人工智能,以机器学习为研究方法;另一种是基于知识的人工智能,以领域知识的推理为解决方案。当前人工智能的成功主要是以数据驱动的人工智能技术的进步。

    《数据结构》作为大学计算机相关专业的基础课程,教学目标为提高学生以计算机为工具的问题求解能力,是一门研究数据建模的学科。其不仅仅是大学程序设计能力训练的核心课程,也是人工智能技术的基础课程。《数据结构》课程于1968年由Knuth教授提出,其在《计算机程序设计艺术》一书中系统地讲述了数据的逻辑结构、物理结构以及在数据集合上常用的操作。20世纪70年代初,《数据结构》开始进入大学课堂,是一门历史悠久的经典课程。计算機科学与技术是一个持续发展、快速更新的学科,对应的学科知识讲授也应与时俱进。在《数据结构》课程的教学过程中,应结合当前人工智能时代的发展需求以及研究热点,调整相应的教学内容以及教学方法[3]。本文将结合《数据结构》教学环节中的理论教学以及实践教学,探讨如何在现有的基础上利用新技术,结合新需求,进一步改革该课程的教学。

    二、《数据结构》课堂理论教学探讨

    《数据结构》知识点多且抽象程度高,学习难度大。而授课的对象多为大一下学期或大二上学期的学生,大部分学生仅进行了《计算机导论》及《程序设计语言》的专业基础课程学习,程序设计能力较为薄弱,对计算机专业知识接触面窄,理解不够深刻。在此背景下,任课教师应结合学生的知识体系,适当地引入人工智能时代涉及的新技术、新概念,引导学生更好地完成课程的学习。

    1.注重授课内容与人工智能时代核心技术的关联

    图灵奖得主、计算机科学家N.Wirth提出程序等于数据结构加算法的观点。《程序设计语言》《数据结构》及《算法设计与分析》这三门课程组成大学计算机相关专业进行程序设计能力培养的一个课程体系,在课程安排上按照“《程序设计语言》—《数据结构》—《算法设计与分析》”的授课次序开展。《数据结构》教学内容起到承上启下的作用。《程序设计语言》以语法学习为主,学习变量、运算符、表达式、顺序、循环、分支、函数及递归、结构体、指针等程序设计的基本概念,培养学生程序阅读、代码编写及调试能力。《数据结构》在此基础上,主要讲授在程序设计过程中对于数据的建模。《数据结构》课程研究的是非数值计算问题处理过程中,数据元素之间的逻辑关系、数据在计算机上的存储结构以及在各种结构上相关的运算。《数据结构》学科讲授的内容包括基本的数据结构,如线性表、栈和队列、串、数组和广义表、树和二叉树、图以及常用的计算机操作,如查找、排序的介绍及实现。《算法设计与分析》则旨在进一步提高学生问题求解能力,学习内容主要包括通用的算法设计技术及算法复杂度分析理论。课程包括分治及递归、动态规划、贪心、回溯与分支限界等常用算法的学习。这三门课程的教学相辅相成,互相促进。在如今的人工智能时代下,该课程体系也应适应技术变更需求,进行相应的改革。

    更快的计算机处理器、大数据的可用性和计算方法的进步引发了人工智能时代的到来。机器学习、深度学习、大数据处理等都是人工智能时代的核心技术。结合当前人工智能的发展,可在《数据结构》讲授的过程中作为扩展内容,给学生介绍当今的研究热点。从数据结构的基础学习内容出发,探讨课程知识点在人工智能热点技术中的应用,激发学生学习的兴趣[4]。可在查找算法的学习中引出大数据中对应的搜索策略等,结合深度学习中广泛采用的人工神经网络结构,如图1所示,其实现时可用《数据结构》中的带权图结构进行表示,图中顶点表示神经元,边表示神经元之间的连接线,每条连接线拥有一个不同的权值,该权值经由训练得到。

    2.利用智慧教学工具加强课堂互动及推广个性化教学

    人工智能技术改变了传统的教学模式。传统的课堂教学由于人数众多,教师无法与学生有效互动,较难快速获取课堂教学效果的直接反馈。同时,由于智慧手机应用花样层出,成为分散学习者上课注意力的主要原因。为了充分借助现代化信息手段改善课堂讲学效果,雨课堂、超星学习通等平台应时而生,将信息技术与教学需求相融合,更好地让学生利用手中资源,革新传统的教学模式,产生教学“线下”和“线上”相结合的模式[5]。虚拟化技术在《数据结构》课堂中得到应用[6],各类新型教学平台在《数据结构》的教学上也得到了应用及推广[7][8]。

    《数据结构》课程教学内容抽象,如果只是由授课教师做理论讲述,学生较难掌握。结合“线上”平台,可通过设计与课程内容密切关联的线上互动,提高学生的上课积极性,同时任课教师可实时了解学生对知识点的掌握程度,及时调整上课进度。以雨课堂的使用为例,其通过PowerPoint插件的方式使用,将丰富的教学资源插入到讲义中,学生通过手机端实时地与任课教师进行互动,系统提供完善的数据分析反馈。任课教师可在课前备课时设计与知识点相关的习题。如在讲授栈这一种数据结构时,可设计与栈的进栈、出栈相关的练习;在讲授串的模式匹配问题时,由于KMP模式匹配算法较难理解,可设计失效函数计算的习题。另外,由于《数据结构》课程还涉及到代码实现问题,但是在课堂教学中由于时间及硬件条件的限制,任课教师往往无法对代码实现进行详尽的讲解,由此导致学生在代码实现这一环节出现困难。利用雨课堂可以帮助教师把较难编写的关键代码抽出来,通过互动的形式教导学生进行代码编写。

    智慧教学的主要特色是自适应性、突出用户个性化。通过收集和分析大量的教学相关智能数据,形成人工智能技术驱动的教学效果评价系统。教师可充分利用智能评价系统的反馈,更好地对学生进行个性化的教学,根据各个学生在知识点上掌握的差异进行不同的学习资料推送,因材施教,达到更好的教学效果。

    3.人工智能时代下计算思维的培养

    计算思维与阅读、写作、算术并列,被认为是当今人类应掌握的四大基本技能。计算思维利用可计算的理论去解决问题、设计系统及理解人类行为。计算思维的本质是抽象与自动化[9]。计算思维关注的核心为:什么是可计算的,并探索什么问题人类比机器擅长以及什么问题机器比人类更擅长。在问题的可计算考量上,如何选择符合实际需求的数据结构及算法很重要。选取的数据结构不同,相应设计的算法也会有差异。

    人工智能未来的发展依然存在着各种可能性,因此从人类的基本技能培养出发更能顺应多变的未来需求。《数据结构》的教学目标之一是教会学生分析问题、解决问题。计算机问题求解的过程为从问题出发,抽象出问题求解的数学模型,设计相应的数据结构及算法,最终在计算机上编写程序并运行得到结果。

    在《数据结构》课程的学习过程中,研究如何抽象出问题的求解模型是很重要的一个环节。问题的求解模型一般以抽象数据类型表示。抽象数据类型指的是从求解问题的数学模型中抽象出来的数据逻辑结构和抽象运算,不考虑计算机的具体实现,独立于程序设计语言,研究的是数据元素之间的逻辑关联。如何正确定义抽象数据类型非常重要,在抽象的过程中提取需关注的细节及忽略无关的部分是计算思维的体现。通过学习常用的抽象数据类型,掌握在问题求解中抽象方法的运用。

    此外,在《数据结构》课程中,还应教导学生进行算法的时间复杂度及空间复杂度分析。在问题求解中,一般将多项式时间复杂度的算法称为好算法。通过图表等形式向学生直观展示多项式时间复杂度及指数时间复杂度的算法差异,引导学生进行算法评价。教师在课堂教学中与学生探讨改进算法复杂度的可用方案,如在讲授线性表的归并时,引入空间换取时间提高算法时间效率的策略介绍。在学习查找、排序等计算机常用算法时,可探讨人类与计算机求解问题的区别等等。

    三、《数据结构》实验教学探讨

    人工智能也通常被称作为高级的计算机程序。由此看出程序设计是人工智能的基础,优良的编程能力依旧是一个必不可缺的基本技能。《数据结构》课程也是一门训练学生动手编写代码能力的课程。学习数据结构的理论知识与编程实现数据结构及其操作是两个不同的挑战。《数据结构》的实验教学主要包括三个部分,分别是配套的实验课程、综合性实验以及课程设计。结合人工智能时代的技术热点,合理设计好这三个部分的实验内容,有助于学生在巩固课程知识点的同时更好地与现实接轨,学以致用。

    1.与程序设计比赛相联合的编程实验练习

    在实验内容的设计上,传统的《数据结构》实验课主要以实现教材介绍的各种数据结构及其基本操作为主,为验证性的实验,大部分代码在教材中已经给出,需要学生自主编写的部分不多。人工智能时代,对该领域专业人员解决问题、算法设计能力的要求进一步提高。程序设计竞赛通过结合当前研究热点,设计题目激励当代大学生运用计算机编程技术和技能解决实际问题。可在《数据结构》实验课程中利用程序设计竞赛内容设计合适的扩展编程训练[10]。

    ACM-ICPC国际大学生程序设计竞赛为全球最有影响力的大学生程序设计竞赛。该竞赛要求3人组队,各队在限定时间内使用一台计算机编写程序,解决给定的问题并通过在线评判,考核了大学生的团队精神及创新能力。要提高学生的编程能力,可借鉴该竞赛的评判模式,引入在线评判系统。实验的正确性评判一般依赖有限的具有代表性的测试数据来完成。初学者编写程序在测试时往往主观性强,导致无法全面地评估程序的正确性。利用程序设计竞赛的“黑盒子”测试模式则能较客观地进行程序正确性评判。另外,在实验题目的设计上,可结合《数据结构》课程知识点选取相关的竞赛题目作为训练。常用的程序设计竞赛题库网站有北京大学在线评判系统、浙江大学在线评判系统等。

    2.串联多个学习知识点的综合性实验设计

    《数据结构》综合性实验在学生已经完成课程的大部分学习内容后开展。综合性实验是对课程学习到的多个知识点进行应用以及巩固,题目的选取要区分于实验课的基本练习。《数据结构》课程中经常布置的综合性实验题目有“平衡二叉排序树的实现及应用”“利用哈夫曼编码实现文件压缩”等。“平衡二叉排序树的实现及应用”要求实现平衡二叉排序树这一种数据结构,并且实现其插入、删除、查找、递归及非递归遍历(先序、中序、后序、层次)、求最值、交换子树等基本操作,综合队列、堆栈、树、递归等多个知识点来解决问题。“利用哈夫曼编码实现文件压缩”要求根据输入的字符创建哈夫曼树,并生成每个字符对应的哈夫曼编码,综合运用了二叉树、顺序存储、查找、文件压缩等知识点。

    综合性实验的考核方式应从代码测试以及文档编写两方面进行。除了按传统的程序设计要求检查程序的正确性外,还要求学生编写综合性实验报告,锻炼其文档编写能力。综合性实验报告的内容应包括题目分析、解题思路、测试、算法分析及总结等。

    3.与当前新技术相结合的课程设计

    《数据结构》课程设计是在课程所有知识点学习完毕后,为了深化对课程内容理解,拓宽学生知识面而开设的。《数据结构》课程设计的形式一般采用教师布置任务,学生自主查阅资料完成对应任务的形式。鼓励学生以多人组队的形式完成比课堂配套实验难度更高、综合性更强的题目。教师在课程的开展期间为学生提供资源,负责解答学生遇到的疑问。

    在《数据结构》课程设计中,可结合当前研究的热点来布置题目。可以设计与大数据分析、人工智能、图像处理、机器学习等研究方向相关的题目。由于大多数学生的程序设计水平还不高,在题目的设定上不宜选用大而难的题目,应围绕着《数据结构》课程的教学内容作适度简单的扩展为佳。可结合当前大数据的应用需求,让学生运用《数据结构》课程知识解决问题,例如,给定100亿个整数,设计算法找到里面出現次数最多的整数,则可以用到哈希查找算法思想。人工智能领域可设计人机对弈程序如五子棋等。结合图像处理需求,让学生了解图像的存储机制,并进行简单的灰度图像的平滑、锐化等基本操作的实现。在机器学习方面,可通过构建决策树的创建及使用,让学生了解预测模型的建立原理。

    在提供扩展题目让学生拓宽视野之外,《数据结构》课程设计的题目也应考虑到知识掌握程度处于不同层次的学生,提供一系列难度不同的题目供学生选择。基础的题目可包括数据结构在各种信息系统中的应用,实现教学内容以外的其他数据结构等,也应鼓励学生根据自己的兴趣爱好结合课程学习内容自由选题。在代码实现上,放宽程序设计语言的限制,除了基于C语言的程序实现外,鼓励学生采用当前在人工智能领域广泛使用的Python语言进行代码编写。

    四、结语

    人工智能技术给计算机相关专业人员带来了大量的工作机遇,与此同时也给专业学习带来了巨大的挑战。《数据结构》科目的学习,能够培养学生数据处理及问题解决能力。在《数据结构》的理论教学环节中,将该科目与《程序设计语言》《算法设计与分析》等多门课程的学习内容进行关联,形成完整的知识体系。借助新时代的智慧教学工具加强师生互动,在学习过程中深化计算思维的培养。在实践教学环节,充分利用课程配套实验课、综合性实验以及课程设计多种形式的实践锻炼,结合人工智能时代研究热点,合理设计实验内容。通过课程的教学调整,让相关专业的学生更好地顺应人工智能时代的人才需求。

    参考文献:

    [1]鲁石.人工智能视角下的高校职业素养教育[J].教育与职业,2018(7):104-108.

    [2]刘宁,夏克俭.人工智能给高等教育带来哪些改变?[J].高教探索,2018(6):22-25.

    [3]亓静.人工智能背景下《数据结构》课程的教学改革分析[J].电脑知识与技术,2020,16(12):151-152.

    [4]邹汉斌,雷红艳.人工智能背景下数据结构课程的教学改革研究[J].教育现代化,2019,6(A4):56-58.

    [5]付向艳,边少彬.雨课堂在数据结构课程教学中的应用探析[J].计算机产品与流通,2018(9):208.

    [6]程秀峰,罗小路,熊回香,等.虚拟化技术在《数据结构》课堂设计中的应用[J].中国教育信息化,2020(8):90-93.

    [7]叶琪,胡国玲.基于云课堂的混合式数据结构课程建设[J].计算机教育,2020(2):41-44+48.

    [8]徐鹤,谭萍,黄海平,等.基于微助教的数据结构课程教学资源建设与应用[J].计算机教育,2020(4):56-60.

    [9]Wing Jeannette M. Computational thinking[J]. Communications of the ACM,2006,49(3):33-35.

    [10]喻梅,于瑞国,王建荣,等.程序设计类课程教學与学科竞赛结合的研究[J].实验室科学,2019,22(1):237-240.

    (编辑:李晓萍)