杨 武,卢 玲,陈 媛
(重庆理工大学 计算机科学与工程学院,重庆 400050)
数据结构课程是计算机专业课程体系的重要组成部分。该课程一般面向普通高校本科二年级的计算机类及信息类各专业学生开设,主要学习基本数据结构[1],包括逻辑结构、存储结构、算法设计与分析等相关理论,培养学生的模型抽象能力[2],为学生研究能力和创新能力的形成奠定基础,在计算机专业课程体系中具有承上启下的作用。
目前,分布式计算平台及并行计算技术的发展带来了计算力的极大增强,同时,各应用领域累积的数据规模不断扩大,强大的计算力及大规模数据推动了人工智能技术研究及应用的爆发式增长。产业发展及学科研究的需要,对数据结构课程的教学内容及教学方式提出了新的要求。2017年,《教育部高等教育司关于开展新工科研究与实践的通知》指出,希望各地高校开展新工科的研究实践,并将新工科的主要研究内容归纳为工程教育的新理念、学科专业的新结构、人才培养的新模式、教育教学的新质量、分类发展的新体系。这五个“新”表明,传统工科课程的教学内容及方式应面向产业需求,积极进行改革和升级。
数据结构课程的大案例具有三个主要特点,一是其数据包含简单类型和复杂类型,二是案例数据的逻辑结构包含线性、树形、图形,三是案例数据的规模包含小规模、中规模和大规模。大案例主要运用于课程设计环节,由教师演示、讲解,再指导学生完成。根据人才培养方案的要求,重庆理工大学数据结构课程的大案例构建应达成三个目标,即案例问题有吸引力、数据规模有压迫性以及案例文档有规范性。目前,数据结构课程的大案例构建面临如下问题,影响着前述目标的达成。
(1)虚拟的案例问题和数据影响学习效果。一般案例建设都是教师根据教学需要,自行选取虚拟案例问题及案例数据。从教学的角度看,虚拟问题的小规模,暂且符合本科二年级学生尚未系统地学习软件工程等专业课程的特点;但如果虚拟问题与实际工程问题完全脱节,则可能使学生失去学习兴趣,例如“走迷宫问题”“八皇后问题”就不适合作为大案例运用。另外,虚拟的数据也因数据形态单一、数据规模小而使算法的性能难以显现。目前,采用虚拟案例问题及数据的原因,主要是没有针对科学研究及工程应用问题,积极挖掘和提炼实际问题中可供教学使用的案例资源。
(2)由任课教师独立进行大案例构建,难以保证案例质量,同时影响案例建设的长效性。大案例有别于一般的实验题目,其内容包括问题设计、方案设计、案例编码、案例文档资料等多个方面。目前,案例建设多由任课教师独立进行,虽然教师具备科研和应用开发能力,但由于其主要着眼于教学,因此教师制作的案例在编码规范、文档编写规范等方面,仍与实际工程项目存在差距。此外,大案例建设的工作量大、周期长,如何调动教师建设和运用大案例的积极性,形成使教学双方受益的案例建设长效机制,也是大案例构建需要解决的重要问题。
针对上述大案例构建所面临的主要问题,数据结构课程大案例构建思路如图1所示。
图1 数据结构课程大案例构建思路
由图1可知,案例构建思路主要着眼于提取优质的案例资源以及组织科学的案例建设团队。其中,优质案例资源来自于教师的科学研究项目和实际工程项目;案例建设团队以任课教师为主导、学生创新团队以及企业工程师协同进行。
1)自科学研究项目中提取大案例。
教师的科学研究项目一般面向学科的前沿问题,是优质的大案例资源。例如,教师的“面向网络舆论场的情感语义嬗变机制”研究项目,其中包括对机器学习算法、自然语言处理技术的研究和运用。在自然语言处理中,文本的结构化及其处理,如文档向量构建、文本相似度计算、文本特征提取等,都涉及数据逻辑结构分析及存储结构设计;再如,目前广受关注的神经网络方法中存在大量的矩阵计算,这些都为数据结构课程分析数据的逻辑结构、存储结构提供了良好范例。此外,科学研究项目所采用的数据多是面向真实应用的,例如使用社交网络平台的真实文本数据。这些数据具有丰富、多样的特征,以文本文件 、超文本标记语言等多种格式存储,且数据量巨大。使用这种多维、异构的数据,可以较好地训练学生的数据分析能力,且数据规模的 巨大性也容易使算法性能得到显现。
由于科学研究项目的上述特点,使其可以为数据结构课程提供丰富的范例,但科学研究问题的理论背景较深,用作教学案例时,需进行有针对性的提炼。首先提取其子问题作为案例内容,再将科研项目的研究背景作为案例的问题背景,然后把项目研究所采用的数据,制作成小规模、中规模和完整的数据集三个层次,分别提供给学生使用。例如,重庆理工大学数据结构课程从任课教师的“面向网络舆论场的情感语义嬗变机制”项目中,分别提炼出“朴素贝叶斯新闻分类问题”“基于KNN的新闻文本分类问题”案例,学生主要运用线性表进行中文文本特征的提取及计算。此外,该项目中频繁使用的“文本清洗”操作,多需检索停用词典,适合作为数据结构课程查询算法的案例,学生运用线性、树形结构进行停用词典的存储和检索,可实现该案例。
在教学实践中,课程组试探性将上述案例在本科一年级学生中,以手工计算小规模数据的方式进行讲解,极大地调动了一年级学生对相关领域的学习兴趣。在本科二年级的数据结构课程中,学生通过独立编码,运用中规模、大规模数据测试的方式实施前述案例,大部分学生能够对科学研究有身临其境的感受,并通过案例实施,对数据结构课程在课程体系中的作用有了更好的理解。
2)自实际工程项目中提取大案例。
源自实际工程项目的案例,最能反映产业需求,体现课堂教学与实际应用之间的关联,因此也是大案例构建的重要资源。由于实际工程项目开发需经过项目论证、需求分析、系统设计、编码、测试等多个环节,数据结构课程的教学显然不必还原实际生产环境,仅需根据教学目标,从项目中提炼出适合教学的内容。
例如,在任课教师参与的“铁路机车车号实时识别系统”项目中,由于企业对车号识别的准确率要求极高,系统的复杂性除源于图像处理、识别算法外,还源于针对实际生产环境的多种策略设计。任课教师经分析,认为该项目的图像处理与数据结构的教学具有较大相关性,而复杂的策略设计则不适合课程的教学,因此仅将图像的基本操作从该项目中提取出来作为大案例。以该项目的开发背景作为案例的问题背景,再将图像看成矩阵,在案例中设计包含矩阵存储、矩阵转置、矩阵乘积等操作内容,同时将该项目在实际应用场景中采集的部分真实图像作为案例数据,有效提高了学生的学习兴趣。
3)凭借教师丰富的项目实践经验,挖掘优质案例。
如前所述,科研和工程项目中蕴含着丰富的案例资源,但需要任课教师有针对性地进行提炼。这不仅要求教师具有良好的研究能力和丰富的开发经验,熟悉项目背景及相关技术,同时也要求教师对课程教学目标理解准确,能主动探索和挖掘项目中与教学相关联的知识,将其转化为教学内容。因此,应首先从任课教师参与的研究项目中选取案例,另外,课程组还应组织和参与广泛的学习、交流活动,探索专业教师所研究课题中的案例资源。
结构合理的案例建设团队,是大案例构建质量和效率的保证。大案例的构建应以多方协同的方式进行,通过调动专业建设资源服务于案例建设,激发任课教师建设和实施大案例的积极性,为大案例的维护、更新及案例建设的可持续性提供保证。如图1所示,论文提出的案例建设团队包括任课教师、学生创新团队和企业工程师。其中,以任课教师为案例构建的主导,学生创新团队主要协助教师完成案例编码和文档编制工作,企业工程师主要对案例内容及文档规范进行指导,协同进行大案例的构建。
1)组织学生创新团队参与案例建设。
由于大案例的构建包括问题设计、系统设计、编码、文档编写等多方面内容,建设工作量大,周期较长,因此,构建过程以教师为主导、创新实验室学生为主体的方式进行。首先由任课教师提出案例建设构想及案例设计方案,再由课程组对大案例所覆盖的知识点、能力点进行论证;后续案例编码及文档编制,由任课教师组织学生创新团队联合进行。例如,重庆理工大学数据结构课程的“基于KNN的新闻文本分类问题”大案例构建流程如下:①任课教师提出“基于KNN的新闻文本分类问题”案例建设构想及案例设计方案;②课程组根据专业人才培养方案,对案例所覆盖的知识点,与人才培养的能力点进行对照和论证;③任课教师组织创新实验室学生团队,联合进行案例编码和文档编制;由任课教师制定案例编码规范及案例文档规范;④参与大案例建设的学生创新团队,成为课程实践教学的助教团队。实验室通过招新更新助教团队,助教团队内部进行传、帮、带,配合任课教师进行大案例的维护和更新。
上述方法较好地规范了大案例的构建流程,一是通过课程组对案例设计方案的论证,在一定程度上保证案例质量;二是充分调动了专业实验室的学生创新团队辅助课程建设,较好地缓解了教师因案例建设工作量大导致的积极性不足的问题。同时,通过案例建设,可以提高实验室学生创新团队的综合能力,锻炼和带动一批本科学生助教,使大案例的构建和教学实践形成使教师、学生双方受益的良性循环,保证案例建设的长效性。
虽然论文提出以教师为主导、学生团队为主体的案例构建方法,但是为保证教师能准确把握案例实施的重点、难点问题,在案例构建时,应保证任课教师的高参与度。例如,重庆理工大学的大案例构建由任课教师独立完成案例第一版本,再以教师为主导、学生团队为主体进行后续的案例升级和维护。
2)引入企业工程师指导案例构建。
大案例不仅应在背景问题上契合企业需求,同时在案例编码、文档编制方面,都应符合一定的规范。对此,可邀请合作企业的工程师协同进行案例构建,对案例编码、文档规范等进行指导。例如,重庆理工大学的“机车图像中的车号识别”案例在建设时,多次邀请该项目的合作企业工程师进校讲座,与教师及学生进行研讨。目前,重庆理工大学计算机专业申请的教育部产学合作协同育人项目,也计划借鉴Oracle公司的成功商业案例,用于指导专业课程教学大案例的制作规范。
重庆理工大学数据结构课程面向产业需求,以深化高等工程教育改革[3]、培养高水平应用型人才为目标,提出了建设具有“一定规模、一定逻辑结构、一定形态”的大案例[4]的实践教学内容,建设目标是满足产业对高水平应用型计算机本科人才的需求,并在课程实践内容建设方面进行有益探索。笔者针对大案例构建中面临的问题,提出从教师科研项目、工程实践项目中提炼优质案例资源,以教师、学生创新团队、企业工程师协同的方式,进行大案例构建。这种构建方法,可以较好地调动教师将科研成果转化为教学内容的积极性,培养一批富有责任感和良好工程实践能力的学生创新团队,同时引入企业工程师参与教学案例建设,为计算机专业培养高水平应用型人才探索出了多种途径。近两年,重庆理工大学运用这种案例构建方法,数据结构课程已逐步建设了“朴素贝叶斯新闻分类问题”“基于KNN的新闻文本分类问题”案例,同时正在建立“结合倒排索引的问答系统”“机车图像中的车号识别”等大案例。这些案例运用在数据结构的课程设计中,取得了良好的教学效果。此外,课程组试探性地在本科一年级学生的计算机导论课程中讲解大案例,引发了学生对相关领域浓厚的学习热情。重庆理工大学本科学生广泛参与各类大数据、智能计算领域的竞赛,如CCF中文信息评测、中国大数据创新创业大赛等,取得了良好成绩,这与数据结构课程逐步运用大案例,进行实践教学内容改革和升级是密切相关的,从一定程度反映了课程教学目标的达成。笔者将在如何有效地推进大案例实施和针对大案例的教学方法设计方面展开进一步的研究。