投稿问答最小化  关闭

万维书刊APP下载

融合人工智能专业知识的程序设计课程建设

2022/11/14 14:24:06  阅读:247 发布者:

0 引 言

2017 7 月,国务院印发《新一代人工智能发展规划》,指出人工智能的发展进入新的阶段,将会深刻改变人类社会生活并改变世界。为抓住人工智能发展的重大战略机遇,必须加快完善人工智能领域的学科布局和专业建设。2018 4 月,教育部发布了《高等学校人工智能创新行动计划》,进一步要求提升高校人工智能领域的人才培养,重视人工智能与计算机科学、数学、物理学、生物学等学科专业教育的交叉融合。在人工智能飞速发展的新形势下,针对计算机方向的学生培养,应该着重研究计算机类课程与人工智能相结合的问题。

1 人工智能基础教学现状

人工智能作为专门的学科,有其独特的思维方式和处理问题的方式,许多解决问题的方法和技术依赖于计算机、数学等学科的基础,因此,全面讲授人工智能的知识具有一定的基础门槛。目前国内诸多高校的人工智能课程往往以选修课的形式在本科三、四年级(第五学期或之后)开设,综合考虑学生的知识基础和技术能力,但客观上也使学生接触相关知识的时间点相对延后,影响了学生本科阶段深入学习和实践活动的开展。部分学校探索了在离散数学 [1]C 语言程序设计 [2]Python[3]、软件工程实践 [4] 等课程中融入部分人工智能内容的方案,但是这些探索仅是以独立项目的形式在部分课程中进行局部调整,与学生基础的结合不够深入,也较难进行综合性的人工智能实践。

近年来,部分高校开始建设人工智能学科的本科教育体系,探索如何更好地在本科教育体系中融入人工智能学科相关的思想和思维方式 [5-9]。部分高校在本科一年级以讲座形式普及人工智能知识,在本科二年级秋学期(第四学期)讲授人工智能的现代方法课程 [6]。南京大学人工智能学院在本科一年级秋学期(第一学期)开设人工智能导引课程的基础上,设计并建设了人工智能程序设计课程,并将其开设在本科一年级春学期(第二学期),是目前高校中将人工智能及其实践在低年级进行有机结合的最早尝试 [5]

2 人工智能与程序设计课程

人工智能的人才培养离不开对程序设计相关能力的培养。高校计算机类学科普遍注重程序设计基础教育,将计算思维作为贯穿学科教育的核心问题,旨在培养学生利用计算机解决问题的能力,其中,程序设计是培养计算思维的重点课程之一 [10-11]。值得注意的是,传统的程序设计基础课程往往强调基础思维方式的建立,较少涉及与人工智能相关的基础概念和方法,使得核心计算思维的养成过程与培养人工智能专门人才的目标产生脱节。面向人工智能新阶段的人才培养目标,人工智能的思想和方法也应当是计算思维的重要组成部分,将人工智能的核心思想和技术融入到计算思维的养成过程中,使两者有机结合、相互促进,应当是相关课程建设的核心和重点内容之一。

另一方面,因为程序设计课程往往开设在本科低年级,在程序设计课程内融入人工智能相关内容并不是一蹴而就的事情,主要有以下 3 个方面的困难:①学生刚刚接触计算思维,以计算为核心的思维方式还不够稳固;②学生对人工智能的认识还停留在导引课程或者讲座中的科普性知识,不够具体深入;③学生的程序设计能力处于起步阶段,还没有处理大规模复杂问题的工程经验。因而,对于融入到程序设计课程中的人工智能内容更加需要进行仔细的设计和推敲,使之适合于当前学生的接受能力,更好地发挥对学生的引导作用。

3 人工智能程序设计的课程实践

3.1 课程定位

1)前序课程。

程序设计与人工智能是具有一定独立性的课程体系,分别承担着建立相关学科方向的基础思维意识的职责,最初接触这两门课程时分别介绍且保持一定的独立性是符合学科规律和学生接受能力的。以南京大学人工智能学院的本科培养体系为例 [1],通过在本科第一学期讲授人工智能导引课程,向学生介绍人工智能的基本概念和专业脉络,使得人工智能教学能够从头至尾贯穿整个本科阶段的学习,也使得其他课程有了与人工智能进行更紧密结合的可能性。同时,通过程序设计基础课程培养学生的计算思维意识,学生掌握程序设计的基本方法并得到实践训练。在这两者基础上,本课程得以进一步讲授利用程序设计方法解决人工智能问题的基本做法,提升学生的相关能力。

2)教学目标。

要有选择地将人工智能问题与程序设计问题相结合,将人工智能的基础范式和思维模式融入本科低年级的程序设计学习和训练。具体而言,可以分为程序设计和人工智能两个方面(图 1):一方面,作为进阶的程序设计课程进一步讲授程序设计的方式方法、编程范式,培养学生以数据为核心的程序设计能力,提升学生使用模块化方法解决更大规模问题的能力;另一方面,作为人工智能方法的实践课程将人工智能基本问题及其求解作为实践内容,通过实现知识和推理、搜索和规划、机器学习等人工智能基本求解方法加深对这些基本问题的理解。两个方面相互支持和关联,共同支撑一个具有一定复杂度的人工智能系统的设计和实现,作为提升学生程序设计能力的有效手段。通过循序渐进地将每个阶段的人工智能理论知识和实践内容穿插进程序设计的教学之中,保证程序设计和人工智能的紧密结合。

3.2 课程内容选择和安排

1)第一阶段:以程序设计的方法、范式为核心,引导学生采用知识推理、搜索规划等方式实现智能相关问题的求解方法。

详细教学内容见表 1。考虑到人工智能的研究与行业现状,课程选择 Python 为主要描述语言。本阶段的程序设计部分精炼介绍 Python 语言的基础知识以及过程抽象、数据抽象和逻辑式编程等程序设计范式及其对程序设计的影响。作为配合,在人工智能部分介绍知识和推理、搜索和规划等人工智能传统方法的基本思想及其在一些简单智能问题上的应用。

在本阶段,学生可以在掌握程序设计语言的基础语法和流程控制等能力基础上对特定问题的状态合法性(如在迷宫中移动等)进行判断,也可以通过枚举等方式对解(如博弈问题的可行解等)进行搜索;在程序设计范式的学习中,学生可以通过抽象和封装、分解和复合等基本思想将一个智能相关问题的求解过程分解为函数或者类的设计实现来进行。可以用作状态判断和搜索求解的问题包括八皇后问题、迷宫问题或黑白棋博弈问题等。这些智能相关问题可以激发学生兴趣、强化计算思维,有效串联两部分教学内容。

2)第二阶段:以数据的计算、分析、可视化为切入点,引导学生实现有监督学习、无监督学习的基本方法,用于解决一个机器学习相关的问题。

详细教学内容见表 2。其中,程序设计部分介绍以数据为核心的分析处理方法,高维数据处理和计算、数据分析和可视化等内容,同时也介绍 SciPy 生态中相关的 numpyscipysympy 以及 pandasMatplotlib 等内容。人工智能部分介绍有监督学习和无监督学习的代表性问题和基础解决方法。

在本阶段,程序设计部分主要强调对数值等数据进行处理和分析的能力,这是大数据时代进行问题求解的核心能力。基于上述技术,学生有能力组织一定规模的数据并实现一系列基础学习算法。一方面可以对程序设计能力进行巩固和提升,另一方面也可以通过实践加深对这些算法的理解,为探索更有效的算法、解决更复杂的问题打下基础。

3)第三阶段:以模块化程序设计为基础,讲授构建更大规模程序的方法,配合图像、文本等人工智能应用,引导学生构建智能系统解决实际问题。

详细教学内容见表 3。其中,程序设计部分引导学生模块化地构建更复杂系统以及基于已有的框架快速开发解决实际问题的程序。人工智能部分以图像和文本为例介绍相关领域常见的问题,并将他们转化为人工智能基础问题进行求解的方法。

在本阶段,程序设计部分主要关注大规模系统的构建和可能问题的处理。基于上述内容,学生可以将图像、文本处理中的常见问题通过分类、聚类等手段进行实现,并最终设计实现出具备一定功能的智能系统。

3 个阶段理论课程部分的课时分配为 24 学时、 18 学时、 6 学时,共计 48 学时;另安排实践部分共计 16 学时,用于引导学生进行课程相关的练习、实践以及交流讨论等。

3.3 课程实践和拓展

在前述每个阶段的授课过程中,由浅入深地实现智能方法是课程实践的主要内容。为进一步激发学生兴趣,引导学生进行更加自主的问题求解和更加有效的方案探索,课程还设置了引导性的课程设计作为课程的实践和拓展内容。

课程设计为具有一定复杂度人工智能系统的设计和实现,如黑白棋自动对弈、迷宫探索、魔方求解、图像分类、文本情感分类等。学生可以根据自己的兴趣选题进行设计和实现。以黑白棋自动对弈问题为例,配合课程教学的 3 个阶段,学生需要依次完成:对弈规则和对弈系统的实现以及黑白棋落子合法性判断;基于优先级规则和搜索的自动落子方法设计实现;基于学习的棋盘局势判断和自动落子方法设计实现等内容。上述内容配合程序设计部分教学,锻炼提升学生程序设计基础能力,也依次为知识和推理、搜索和规划、机器学习等智能问题求解提供了锻炼素材,使学生最终完成更加智能的对弈系统的构建,从而实现对整个课程内容的系统性回顾和训练。

为兼顾计算机学科的程序设计技能训练,本课程也使用 online judge 平台对程序设计能力进行实时考察,进一步巩固课堂所讲授的程序设计和算法知识。综合多样性的课程实践可以进一步提升人工智能与程序设计的授课进度与协调性,从而迭代式地提升学生的程序设计和问题解决能力。

4 教学效果和反馈

相对于原先的程序设计内容,课程内容选择兼顾了程序设计中针对相对复杂问题的能力训练,同时也更加贴合人工智能的学科基础,与学科内课程关联更加紧密,有利于提升学生学习兴趣、培养钻研精神。在最近一次授课的 5 分制评估中,本课程的学生总评得分为 4.93 分,其中学生对教学内容的满意度达到 4.95 分,对教学过程和激发兴趣的满意度达到 4.95 分,对鼓励学生自我表达的满意度达到 4.97 分,总体上得到了学生的认可。

在数次授课后笔者总结发现,程序设计内容与人工智能内容的有机融合是该课程建设的难点内容。教学实践中,可以在教学过程中的每个阶段有意识地提高学生自主动手实践和解决问题的积极性,结合实践教学中的实践演示、现场编程、讨论展示等手段,鼓励学生在实践中加深对相应课程内容的理解和掌握。

5 结 语

在人工智能发展的新形势下,本科教学的各门课程与人工智能的基础知识、方法和实践相结合是本科教学体系建设的重要方向。从教学实践效果来看,以程序设计课程为出发点,在低年级教学中融合程序设计培养和人工智能知识背景的教学方案是切实可行的。在后续工作中,还可以进一步丰富课程理论与实践内容,加强与前后课程的配合与衔接,继续提升人工智能领域的人才培养质量。

参考文献:

[1] 王宝丽, 胡运红, 张凤琴. 人工智能技术融入离散数学课程的教学探索[J]. 高等理科教育, 2019(5): 70-75.

[2] 王国华, 郑永森, 林琳, . 人工智能时代“C语言程序设计”教学改革[J]. 现代计算机, 2020(28): 65-68.

[3] 韩志豪. 人工智能背景下的Python教学探索[J]. 计算机时代, 2018(7): 76-81.

[4] 李波, 覃俊, 李子茂, .“人工智能+新工科”视域下软件工程专业实验实践教学改革[J]. 计算机教育, 2021(7): 82-86.

[5] 南京大学人工智能学院. 南京大学人工智能本科专业教育培养体系[M]. 北京: 机械工业出版社, 2019: 167.

[6] 郑南宁. 人工智能本科专业知识体系与课程设置[M]. 北京:清华大学出版社, 2019: 457.

[7] 余琍, 彭敏, 刘树波. 武汉大学人工智能本科专业人才培养探究[J]. 教育现代化, 2019(70): 15-17.

[8] 严远亭, 张以文, 陈洁, . 高年级本科生人工智能课程教学实践与探究[J]. 计算机教育, 2018(7): 78-81.

[9] 周卫红, 蒋作, 江涛, . 以人工智能及编程能力为核心的计算机专业新工科教学改革研究[J]. 云南民族大学学报(自然科学版), 2020, 29(2): 105-109.

[10] 陈国良, 董荣胜. 计算思维与大学计算机基础教育[J]. 中国大学教学, 2011(1): 7-11, 32.

[11] 姚天昉. 在程序设计课程中引入“计算思维”的实践[J]. 中国大学教学, 2012(2): 61-62, 76.

第一作者简介:黄书剑,男,南京大学副教授,研究方向为人工智能、自然语言处理,huangsj@nju.edu.cn

引文格式:黄书剑,吴震 ,陈家骏,等. 融合人工智能专业知识的程序设计课程建设[J].计算机教育,2022(10):79-83.

转自:“计算机教育”微信公众号

如有侵权,请联系本站删除!


  • 万维QQ投稿交流群    招募志愿者

    版权所有 Copyright@2009-2015豫ICP证合字09037080号

     纯自助论文投稿平台    E-mail:eshukan@163.com