1. 引言
在internet如此普及的今天,如何利用网络来有效的提高学习效果和效率是教和学共同关注的问题。数据结构课程是计算机和技术的重要基础,也是计算机学科中的核心专业课,该课程涉及大量的概念、定义、模型和算法,显得很抽象和深奥,尤其是,对算法描述的执行过程的理解是难点和重点。如果仅凭课堂上的理论教学很难使学生透彻掌握数据结构的精髓,该课程的学习并非一朝一夕就能够融会贯通,而且学生的基础知识有多有少,理解能力也因人而异,编程能力更是千差万别,这也就更不可能要求仅仅凭借着在课堂上几十个学时传统内容的教授和学生的认真听讲就能学好数据结构。如此,研究并构建一个适合不同学生学习能力的数据结构层次化学习系统显得尤为重要,它可以让学生们轻松学习,整理出自己薄弱的环节,选择适合自己学习的基础知识和应用知识,然后有针对性地学习,真正的学好数据结构。
2. 多层次学习系统的学习内容
在数据结构课程的教学和学习过程中,以往的大都由教师按教材单元统一组织进行,先理论后实践,实践只是对理论知识的简单验证,结果是能力好的学生觉得内容太简单,而能力稍弱的学生又觉得内容太复杂,最后导致学生对学习和实验都越来越没兴趣,不利于学生学习知识的扎实性及学生创新意识的培养和实践能力的提高。不少教师学者也对数据结构的教学方法进行了改革性探索,比如基于CDIO的数据结构教学的探索 [1] [2] ,面向应用型人才培养的的数据结构教学研究 [3] [4] ,基于PBL和LBL的数据结构教学模式研究 [5] 等。也有教师从项目驱动角度去研究和改革数据结构教学,比如文献 [6] 。本文从理论、实践、应用、综合多角度综合考虑,以学生的视角出发,研究数据结构的多层次教学及学习。
在进行数据结构的教学及学习过程中,针对学生的基础知识掌握水平的不同,学习和接受能力的不同,动手实践编程兴趣的差异,以及对将来自身定位规划的差异来设计制定不同层次的学习内容,以适应千差万别的学生,这样才能更加促进学生合理和高效的学习。针对数据结构课程抽象性强、难度大的特点,构建一个渐进式、层次化的教学学习体系,按基础性、实用性、综合性和创新性四个层次构建“数据结构”课程的教学过程,通过强化理论和实例结合、实验和项目结合、课程设计和企业实践结合及开放实验项目和程序竞赛结合等多方面,全方位的培养学生掌握知识的能力、理论联系实际的能力、实践动手能力和科研开发能力。
2.1. 基础学习内容
所谓基础学习内容,就是所有学生都应掌握的基础知识,比如数据结构的基本概念,线性表、二叉树、图的基础定义及操作,查找排序的基本方法等。这些内容主要是上课理论学习中学习的,也是要求学生理解掌握的。基础学习内容与上课讲授的内容将有所重复,这有助于学生巩固上课所学知识,或者弥补一些学生因某些原因而无法上课造成的知识缺失。
2.2. 实用学习内容
实用学习内容包括对基本数据结构的应用,比如线性表的应用、栈和队列的应用、字符串的检索、二叉树的应用、图的应用及查找排序的应用等。这些内容是中理论学习基础上的实用化。学习的目标是将学到的知识进行应用,而如何应用成为困扰教学的瓶颈。很多同学学完一门课程后,理论都了解了,但是就是和实践结合不起来,就是不会变成程序去使用。这如何去解决?实用学习内容就是为了解决理论实践的结合问题的。这个层次的学习内容需要学生在第一层次——基础学习的后进行,当学生把基础知识理解消化后,结合不同的应用设计使用的数据结构及算法,使用不同的程序语言去实现它们。
2.3. 综合学习内容
综合学习主要是针对多种数据结构的综合,包括两种以上数据结构的结合使用及算法的设计。这个层次的学习是学生在对每一种数据结构都学会的基础上进行的。在实际应用中,一般不会只用一种数据结构去解决某个问题,而是多种数据结构结合,或者数据结构和某种算法结合,这就要求在数据结构学习中能将各个结构灵活运用,并结合一些简单算法一起去解决问题。这部分的学习内容可以根据学生自身的水平选择学习。
2.4. 创新学习内容
创新学习内容是学生自选学习的内容,主要是为了培养学生自己分析问题解决问题的能力以及遇到新问题的时候的创新能力。比如这部分学习内容可以是一些学科竞赛的内容,将比赛题目引入进来,结合学过的知识,开拓学生的思维,激发学生的潜力。
3. 层次化学习系统的设计
数据结构层次化学习系统中分为基础学习及深入学习两部分,而深入学习部分又分为应用内容、综合内容、创新内容等,同时还增加了对喜爱知识点的收藏,还有对老师进行重点推荐的热点内容进行着重的学习,与老师进行交流等。
数据结构层次化学习系统要突出一个层次化学习的特点,因此在设计中将所有的学习内容进行分层次处理。并且为了突出学习重点,在基本学习中添加热点知识内容导航功能。为了方便学生记录学习过程,允许其对自己喜欢或者难以弄懂的章节进行标记并收藏。接下来,将从基础学习功能、深入学习功能、收藏功能三个方面进行全方位的设计。不要使用空格、制表符设置段落缩进,不要通过连续的回车符(换行符)调整段间距。
3.1. 层次化学习系统的总体设计
该学习系统主要针对学生用户来设计,其中还包括教师用户和管理员用户。这三类用户的功能权限划分为:管理员可进行用户管理和新闻管理;教师可进行教学资料的管理及维护,可以查看新闻、回复学生提问、修改学生资料等功能;学生可以进行学习定制、咨询教师问题、修改个人资料、查看新闻等。具体系统用例图如图1。

Figure 1. The simplified use case diagram of system
图1. 系统简单用例图
3.2. 层次化学习系统中学习功能详细设计
3.2.1. 基础学习部分的设计
基础学习主要对应数据结构课程课上所讲的内容,给上课的学生以辅助的学习途径及无法上课的学生以自学的学习机会。这部分内容设置上参考数据结构课程中的理论教学内容,按照章节依次进行设置,并给予学生适当的巩固练习。教师可以在每次上课前布置要预习的任务,学生根据任务去进行预习,如此可以带着疑问和目标上课,接受授课知识的能力也自然会更强。课后教师可以提供疑问解答及布置适当的习题,以促进学生对所学知识的理解。学生可以对所学内容再次进行在线学习,以加深记忆,消化吸收所学的知识。基础学习部分流程图如图2所示。
在这个学习过程中,学生可以更具自身学习的特点,进行知识点的收藏,对收藏的知识点系统提供知识点导航功能,可以在学生需要的时候随时翻看。
3.2.2. 深入学习部分的设计
层次化学习系统除了进行应用学习、综合学习和创新学习三个层次的学习外,它还有一个重要的特色,就是学习的权限功能,即解锁了下一个内容的权限。当一个章节的基础学习完成了,才能进行后面进阶(深入)内容的学习。类似的,在深入学习中的三个层次也是只有完成了上一次层次的内容学习,才能

Figure 2. The learning process of basic knowledge
图2. 基础知识的学习过程
进行下一个层次内容的学习。深入学习部分的流程如图3所示。
这个过程中,上一层次的学习内容如未完成则不允许进入下一层次进行学习。当某一层次学习完成后,即可以进行下面层次内容的学习,也可以进行上一层次的学习。具体的比如基础学习完成并通过测验后可开始进入深入学习第二层应用内容,在应用内容学习中,系统会首先给出一些应用分析设计及编程的实例,学生可以一步一步的跟着学习应用编程。经过学习后当学生认为学会了,可以开启应用内容测验,系统给出一些题目,学生在系统中依据实例完成测验,系统根据测验成绩决定是否能进入下一层次的学习。其他层次的进阶是类似的,这里不再一一赘述。
4. 层次化学习系统的实现
4.1. 基础学习功能的实现
进入基础学习,它是学习的第一层次。首先进入导航界面,将数据库中的基础学习内容取出显示出来,包括知识点内容和基本内容,如图4所示。
学生可以根据自身的学习水平和兴趣选择自己想要学习的内容,然后点击该内容或知识点进入详细学习内容,如图5所示。
4.2. 深入学习
深入学习是指的应用内容学习、综合内容学习以及创新内容学习这三个层次,当完成基础学习后,

Figure 3. The learning process of advanced knowledge
图3. 深入学习的学习过程

Figure 4. The navigation page of basic knowledge learning
图4. 基础学习导航页面
学生点击“完成本章学习”的按钮,可以解锁下一层次学习内容,在深入学习导航页面就会显示可以进入学习的层次,如图6所示。

Figure 5. The learning page of basic knowledge
图5. 基础内容学习页面

Figure 6. The navigation of advanced knowledge learning
图6. 深入学习导航页面
深入学习中如只完成了基础内容学习,则可以进入应用内容学习(如第一行所示);如完成了基础内容学习和应用内容学习,则可以进入附加内容学习(如第二行所示),此时应用内容仍然可以重新进入学习。其他类似。具体过程为:点击按钮后跳转到一个SERVLET,其中通过Session取得用户名(username)、章节(chapter)、学习类型(type),然后调用Study rights (username, chapter, type)方法,设置用户权限数据并保存在数据库表中。最后该SERVLET又跳转回当学生学习(studycontent.jsp)界面,该界面中的“完成本章学习”的按钮将不复存在,并且解锁了下一个内容的权限,在导航页面该章节对应内容下方便会出现进入学习的选项。
5. 总结与展望
为了适应不同学生的不同知识基础,提高学生走向社会后的综合竞争力,锻炼学生的学习能力和编程能力,在教和学的过程中因材施教的制定不同的学习内容,使学生在使用计算机解决实际问题时能有效地组织、存储和处理数据,能事半功倍的学到需要的知识,锻炼相应的实践能力,是教学的最终目标。该系统对数据结构理论教学和实践教学进行改革,围绕如何培养学生解决问题的能力来设计分层次、阶段化的教学内容,研究和探索阶段化的教学模式,对督促和激励学生更主动的学习,使学生能真正学懂、学会、掌握知识具有重要的实际意义。
基金项目
本项目得到网络文化与数字传播北京市重点实验室开放课题资助(ICDD201610);2015课程建设“数据结构教学方式改革的研究项目”资助。