1. 引言
1.1. 大语言模型发展现状
自Transformer模型 [1] 问世以来,关键技术的出现推动了语言模型(Large Language Models, LLMs)的快速发展,大语言模型是一种基于深度学习的人工智能模型,能够生成高质量的自然语言文本,这些技术包括但不限于注意力机制的改进、模型结构的优化、预训练策略的创新等。近年来,随着人工智能技术的迅猛发展,大语言模型成为了热门话题。2022年底随着OpenAI公司推广ChatGPT,大型语言模型开始从研究阶段向实际应用领域转变,尤其是在文本生成方面,ChatGPT是一种基于GPT架构的聊天机器人,具有理解自然语言的能力,可用于自然语言处理任务和对话系统。其推广使得大型语言模型得以广泛应用于各种实际场景,例如文本生成、内容创作、客服对话等。
在国内,大语言模型领域研发和应用也取得了显著的进展。例如,百度的ERNIE [2] (Enhanced Representation through Knowledge Integration)是一款基于Transformer架构的中文预训练语言模型,被广泛应用于各种自然语言处理任务。褚连凯 [3] 等将百度的大语言模型应用到医院药学实践中取得很不错的应用价值。腾讯推出了一系列基于Transformer架构的中文预训练语言模型,如BERT-WWM (Whole Word Masking)等,用于提升各种自然语言处理任务的性能。阿里巴巴的达摩院(DAMO Academy)也致力于人工智能技术的研究和创新,其中也包括大语言模型的研究和应用。科大讯飞也推出了自己的大语言模型应用讯飞星火。还有一些创新型企业、初创公司以及科研院所也在大语言模型领域进行相关工作。这些公司共同推动了中国大语言模型技术的发展,并在各自的应用领域发挥着重要作用。这些国内的大语言模型在自然语言处理领域起到了重要的作用,促进了该领域的发展。
在国外,自从GPT-3发布以来,大型语言模型的规模不断增加。研究人员和技术公司不断尝试训练更大规模的模型,以提高模型的性能和能力。除了对大模型的研究,国外的研究人员也对多模态模型进行了研究,多模态模型融合了文本、图像、声音等多种感知模态的信息,是近年来的一个研究热点。一些大型语言模型开始尝试整合多模态信息,使得模型能够更好地理解和生成跨模态的内容,并取得了不错的成果,继ChatGPT之后,近日,美国OpenAI公司发布了首个视频生成模型“Sora”。您只要输入一段文本指令,就可以生成一段逼真的视频,陈舒梦 [4] 对大语言模型在外语教学进行研究并且取得了不错的教学效果。
然而,大语言模型的研究仍面临着一些挑战。首先,由于模型的规模不断增大,训练和推理的成本也越来越高。其次,由于大语言模型的算法是基于概率的,因此可能会出现一些不准确的预测结果。此外,由于大语言模型的训练需要大量的语料数据,因此可能会出现一些数据隐私和安全的问题。
总的来说,大语言模型在国内外的研究都取得了重要进展,但仍需要解决一些挑战。随着技术的不断发展,相信大语言模型在未来的自然语言处理领域将发挥更加重要的作用。同时,大型语言模型的发展正处于一个快速变革的时期,技术进步和产业应用相互促进,共同推动着这一领域的发展。也需要注意平衡技术创新与伦理、法律等方面的挑战。
1.2. 课程设置
根据教学计划,计算机科学与技术专业和物联网工程专业都会开设专业必修课程数据结构这些学生的年龄在18到25岁之间。由于学生来自不同的专业,他们可能具有不同水平的编程经验,从初学者到高级水平不等。在大一的时候,学生已经学习了计算机导论和C语言程序设计等相关课程。
学好数据结构课程对学生未来的专业课程如数据库、操作系统等提供了扎实的基础。数据结构课程的目标是增强学生在高效组织和操作数据方面的理解和能力。课程内容涵盖了数组、链表、栈、队列、树、图和哈希表等主题。学生将学习各种数据结构和算法的原理、实现和分析。高校教师对数据结构的教学也提出了一些改革,杨焱 [5] 等提出基于OBE-CDIO模式的“数据结构”课程教学改革探索。赵玉兰 [6] 等对数据结构和算法课程进行改革,提出了“中班授课,小班讨论,合作性小组学习,一对一验收作业”等多种新的教学模式。
对于初学者,他们可能对编程的基本概念和语法有一些了解,但对数据结构和算法的概念和应用可能相对陌生。他们可能需要从基础开始,逐步学习数据结构的概念、原理和实现方法。
对于具有一定编程经验的学生,他们可能已经学习过一些基本的数据结构,如数组、链表、栈和队列。他们可能需要进一步学习更复杂的数据结构,如树、图和哈希表,并学习不同的算法和数据结构之间的比较和选择。
无论学生的编程经验水平如何,他们都应该具备良好的学习能力和逻辑思维能力,以便理解和应用数据结构的概念和方法。他们的学习动机可能包括提高编程技能、为将来的职业发展做准备以及满足课程要求等。
通过学习数据结构课程,这些学生可以期望获得对不同数据结构的深入理解,能够设计和实现常见的数据结构,并能够应用所学知识解决实际的编程问题。他们还将学习算法的分析和优化,以提高程序的效率和性能。这些知识将为他们未来在数据库、操作系统等领域的学习和专业发展奠定坚实的基础。由于同学们的情况不同,所以对教学模式进行探索,通过与大语言模型进行对话,学生可以通过实际的问题和场景来应用所学的数据结构知识,加深对其原理和应用的理解。然而,需要注意的是,尽管大语言模型具有强大的生成能力和对话交互能力,但仍然需要教师的引导和监督。教师在课堂中仍然扮演着重要的角色,负责解答学生的问题、引导讨论、纠正误解,并确保学生获得准确和全面的知识。
通过基于大语言模型的数据结构教学模式探索,我们可以为学生提供更具互动性和个性化的学习体验,拓宽他们对数据结构的理解和应用。这也是教师不断探索和应用新技术的一种努力,以适应不断发展的教育环境和学生的学习需求。
2. 课程教学设计
2.1. 数据结构课程中的课程思政元素
2016年12月7日至8日全国高校思想政治工作会议在北京召开。习近平强调,高校思想政治工作关系高校培养什么样的人、如何培养人以及为谁培养人这个根本问题。要坚持把立德树人作为中心环节,把思想政治工作贯穿教育教学全过程,实现全程育人、全方位育人,努力开创我国高等教育事业发展新局面 [7] 。2019年3月18日,书记在主持召开学校思想理论课教师座谈会,强调青少年阶段是人生的“拔节孕穗期”,最需要精心引导和栽培 [8] 。近日,中共中央办公厅、国务院办公厅印发了《关于深化新时代学校思想政治理论课改革创新的若干意见》,进一步强调了实施“课程思政”的重要意义,提出要建成一批课程思政示范高校,推出一批课程思政示范课程,选树一批课程思政教学名师和团队,建设一批课程思政教学研究示范中。因此,广大高校专业课教师要提高课程思政意识,积极主动地投入课程思政教育教学改革之中 [9] 。
数据结构课程可以通过教学生系统地、逻辑地思考,能够分析和解决问题,以及能够与他人沟通和合作来强调德育和人才培养。通过学习数据结构,学生可以提高他们的判断力,明白解决问题的方法和策略有很多种,可以引导学生们做一个对社会有意义的人。鼓励学生们在数据结构学习中提出创新的解题思路,培养他们的创造力和创新精神,有意识的培养同学们的合作和团队意识。鼓励同学们参加CCPC以及蓝桥杯这样的算法大赛。
在讲授线性表时,由于线性表的不同存储方式有其各自的优缺点,具体在使用的时候,要根据具体问题具体分析,每一个人也都有自己独特的闪光点,一定找准定位,做自己最擅长的事情,发掘无穷潜力,开启人生华章;对于队列这种先进先出的线性表,教师在讲解过程中可以和现实中的排队联系起来,引申出遵守社会秩序和社会公德的必要性和重要性,从而引导学生躬行;对于“字符串”这种整体参与运算的一种数据结构,可引申出团队建设,只有团队中的“短板”变长,团队才能发挥出最大的效用;二叉树是数据结构中非常重要的知识点,在讲解遍历二叉树(或周游二叉树)的时候,对根、左子树和右子树这个部分的访问顺序不同可得到不同的遍历序列,引导学生看待问题或事物的时候,可以尝试着换位思考,站在另一个角度,能看到不一样的风景。
在讲解哈夫曼树的时候,可以根据其构造方法,类比至孤儿的生存状况,呼吁大家奉献爱心,关爱和拯救孤儿;对于最小生成树,教师在讲解的时候,通常会列举用最小代价构建交通网的例子,由此可引出铁路进藏,在世界屋脊构建“幸福天路”,是中国人永远的自豪;对于递归这一解决问题的基础工具,在讲解该思想时,可把递归的出口类比为个体的所作所为基础,无论基础如何,所有重大的革新和发展最终都是众多个体合力的结果。
因此可见,只要同学们脚踏实地,每天进步一点点,每个人都对推动社会进步贡献自己的一份力;在讲解堆排序时常用锦标赛排序作为引入,按照锦标赛的晋级规则,每个同学都要面临竞争,在竞争中会有优胜劣汰,只有做最棒的自己,才能在残酷的社会竞争中勇攀人生高峰。
2.2. 基于大语言模型的数据结构教学
在数据结构的教学过程中我们可以利用开源软件Visual Studio Code和其中插件bito,这样就可以利用ChatGPT这样的大型语言模型来辅助数据结构课程的授课,还可以利用视频网站中看名师的数据结构课程。bito的使用展示①是Visual Studio Code安装bito插件后的使用位置,②是学生提问区域,③是大语言模型给出问题结果显示区域。如图1所示。
以讲授冒泡排序为例进行课程设计,本次课程设计主要使用的编译环境是Visual Studio Code。要求学生们在课前准备阶段已经在自己的笔记本电脑上安装Visual Studio Code以及安装bito插件。
Visual Studio Code是微软开发的一款轻量级、跨平台的代码编辑器,支持Windows、Mac和Linux系统。它提供了丰富的编辑功能,包括语法高亮、代码补全、代码格式化、代码片段、调试等。Visual Studio Code还支持插件扩展,可以通过插件来添加更多功能。
Visual Studio Code中安装插件bito就能够实现在编辑器中实现大语言模型ChatGPT的功能。具体安装如图2所示:①表示Visual Studio Code安装插件的位置;②表示成功安装bito插件;③表示使用bito的位置。
Figure 1. Usage demonstration of bito
图1. bito的使用展示
Figure 2. Visual Studio Code installing bito plug-in
图2. Visual Studio Code安装bito插件
在bito插件中使用一问一答的形式学习冒泡排序,具体图例如上图1所示。这样对于那些自学能力强的同学是一个非常好的工具。
对于那些基础薄弱的同学推荐他们去B站上复习翁恺老师的C语言,然后关注懒猫老师的数据结构,懒猫老师是一位热爱用动画讲解编程的老师,她的课程以生动有趣、通俗易懂而著称。她的课程涵盖了数据结构、算法、编程语言等方面,适合初学者和有一定编程基础的学生学习。懒猫老师的课程特点在于她通过动画和实例来帮助学生理解抽象的概念和算法,使得学习过程更加轻松愉快。同时,她也非常注重学生的实践操作能力,会在课程中给出大量的编程练习题目,帮助学生掌握实际编程技能。
3. 比较与讨论
传统的课程教学主要关注普遍学生的水平,对于那些自学能力强和基础薄弱的学生往往关注不够,使用基于大语言模型的数据结构教学可以兼顾大多数学生,尤其是那些自学能力强的学生。
传统的课堂教学对理论学习的关注程度要高于对编码能力的锻炼,在教学过程中,我们团队发现学生的编码能力很弱,比如说给学生们一颗二叉树,学生们可以写出先序遍历、中序遍历以及后序遍历的结果,让他们编码实现,学生们就没有能力实现。
使用Visual Studio Code中的插件bito学习数据结构可以获得以下优势:可以快速获得编程知识。大语言模型回答你关于编程的任何问题,并生成你需要的代码。可以获得个性化的编程指导。bito可以根据你的个人需求和水平,提供个性化的编程指导。可以提高编程效率。ChatGPT可以帮助你自动生成代码,并在你编程时提供建议。
基金项目
校级项目新媒体网络舆情监控系统研究(2022YSYB007)资助;国家自然科学基金项目多变量混沌时间序列的补全、分解、预测与应用研究(62266046)资助。