APP下载

多维一体的“数据结构”实践教学系统的构建

2011-12-31

计算机教育 2011年10期

  摘要:教学实践是决定“数据结构”课程学习成效的重要环节。以“数据结构”的教学目标和学生创新能力的培养为前提,将课程的实践活动分为验证、设计、综合和创新四个层次;按学生和教师两种角色讨论实践活动的实施方法;介绍服务于多层实践活动的辅助教材和教学网站;提出构建多维一体的数据结构实践教学系统。
  关键词:数据结构;实践;多维;教材
  
  “数据结构”是在20世纪60年代中期才设立的一门课程。它主要讨论在软件开发过程中的分析、设计与实现中的若干基本问题[1]:1)问题的建模。如何把客观世界的问题映射到计算机世界中?如何在计算机世界中表述和存储客观世界中的对象?它是算法处理的对象。2)问题的求解方法,即算法。3)算法的评价。评价算法的优劣。算法是数据结构的主要研究内容。算法是计算机科学的核心,也是一种一般性的智能工具。“学习算法有助于人们对其他学科的理解,不管是化学、控制、甚至音乐,即使非计算机专业的学生,学习算法的理由也是非常充分的[2]。”因此,数据结构是高级程序设计、编译原理、操作系统、数据库、人工智能等课程的基础,它不仅被作为计算机相关专业(如计算机科学与技术、软件工程、网络工程等)的一门核心的专业基础课;也是工科、理科、医科等学科中许多专业的必修或选修专业基础课。
  “数据结构”课程具有抽象性和实践性。客观世界中的问题在计算机中的表示与算法描述是抽象的,但算法的实现是实践的,惟有通过实践才能真正掌握课程内容,达到学习目标。通常在有限的课时内,教师主要讲授的是抽象部分,此种情况下如果没有相应的实践,课程的学习将如同在沙漠建房,难以落成。
  因此,如何构建能够有效的实践环节,一直是教师关注的问题。
  笔者结合“数据结构”课程建设,就多维一体的“数据结构”实践教学系统的构建与实现进行总结,以期为“数据结构”实践教学提供一定的参考和借鉴。
  1 “数据结构”实践活动层次
  实践是一切认识活动和知识的前提[3],学生的认识主要是在实践活动中发展起来的[4]。笔者根据由浅入深、循序渐进和创新能力获得的规律,将课程实践活动按层次由低到高分为验证型实践、设计型实践、综合型实践和创新型实践。
  1.1验证型实践
  荀子说:“闻之,不若见之;见之,不若知之;知之,不若行之……行之,明也。”验证型实践指通过运行已实现的算法对书本知识及算法进行对错性的验证。验证理论的实践活动使学生充分领悟知识的内在意蕴,加深学生对基础知识的理解,掌握基本实验技能,为后续较高层次的实践活动奠定基础。验证型实践活动从内容上来讲,它依附于课堂教学,是课堂教学的延伸和补充。
  1.2设计型实践
  设计型实践指用所学的一个或若干个知识点去解决特定的问题。通过对问题的求解,了解知识的应用场景,获取知识的初步应用能力。智慧来源于知识,但知识不会自然而然地达成智慧,需要通过实践活动对知识“内化”和“活化”,起关键作用的是人的实践经验[5]。这里的知识是局部的,是一个个知识点。大量的设计练习是解决较复杂的问题的基础。
  1.3综合型实践
  综合型实践是指将所学的数据结构思想与方法,应用到软件开发的分析、设计与实现等方面。综合型实践要用到课程的许多知识点。能力与智慧的获得,绝不是简单的累积,此处,1+1≠2。学习者可能掌握各个知识点及其各自的应用,但不等于具备解决复杂问题的能力,盲人摸象的典故正说明这一点。通过综合实践,引导学生从全局的观点,认识数据结构课程的精髓和本质;指导学生如何综合地将所学的知识应用于软件开发过程中。
  1.4创新型实践
  创新型实践是指能够激发和培养学生创新能力的实践活动。培养具有创新精神和实践能力的有较高综合素质的人才是当代教育的目标,也是学校教学的出发点和归宿。但“人的发展以人在不同经验方式中发展为前提[5]”,创新型实践旨在通过实践活动培养学生的创新能力,由旧知识建构新知识,达到学习的目标。
  2数据结构实践活动的实施
  实践活动的参与者有教师和学生两方。学生是实践的主体,旨在运用所学的知识和理论发现问题、分析问题、尝试解决问题,目的是提高解决问题的能力。教师是引导者,为学生提供必要的实践环境和条件,当学生遇到困难时,给予指导;对学生的实践成果给予评定,使他们不断进取。
  2.1验证型实践
  对验证型实践的处理方式有两种。一种是作为课程实验内容。此法的不妥之处在于:1)在有限的实验课时内,只能完成验证工作的很少一部分;2)如果把验证作为课程实验的主要内容,那高一层次的设计型实验就没有时间了。另一种方式是完全由学生自我解决。持该观点者认为,算法的实现是学生在学过高级程序设计语言后应该能解决的问题,不是本课程应该关注的。其实,算法描述和算法实现之间是有距离的,这如同一台机器的构造和机器生产工艺流程之间的区别一样,能够跨越这个距离的学生很少,即使有的学生具备这个能力,但因时间、精力所限,也不可能实现教材中的所有算法。
  一个人接受科学教育的最大收获是那些能够受用一生的智能工具。数据结构正属于这类教育的内容。通过学习算法,学生一方面开扩眼界,培养正确的思维方法,更重要的是数据结构介绍的典型数据模型和实现,是一种可以用于解决复杂问题的工具。如果学习者的学习只是纸上谈兵,就不可能学会工具的使用,就无法用工具去解决问题呢?所以,无论从学习者的认知所需还是从课程的学习目的来看,以适当的方式帮助学生掌握典型的数据模型的实现是必须的。因此,上述两种方法均不可取。我们的做法是由教师实现这些数据模型并把源程序提供给学生,学生利用课余时间自行进行验证实验,具体任务如下。
  1) 教师。①给出教材中相应算法实现后的源程序;②给出程序设计说明,方便学生理解程序的结构与功能;③给出思考题,引导学生阅读源程序和理解源程序;④给出操作说明和测试用例,引导学生进行正确性地验证和更全面地理解算法。
  2) 学生。①理解相关背景知识;②根据程序设计说明和思考题阅读源程序;③根据操作说明运行源程序的测试用例,并进行结果分析;④回答思考题。
  为了督促学生进行验证实践,要求学生将任务③、④的工作记录作为作业上交;教师利用课堂提问,抽检和讨论部分源程序的运行结论。
  2.2设计型实践
  设计型实践活动分为两个部分,一是课程实验,二是作业。
  2.2.1课程实验
  鉴于实践对数据结构学习的重要作用,一般会拿出课时的1/5~1/4用于课程实验。针对课程实验,教师与学生的工作分别如下。
  1) 教师。①给出问题描述,提出问题解决的基本要求,如采用的知识点、输入输出要求、算法复杂度等;②对问题进行初步分析,必要时给出逻辑设计和存储设计的建议;③酌情给出算法描述;④给出若干测试用例,引导学生进行功能测试,领会健壮的程序设计;⑤给出实验报告撰写要求,包含问题描述、数据结构设计、功能划分和算法设计、界面设计、运行与测试、总结与心得、源程序等。
  2) 学生。①分析问题;②定义数据结构;③给出算法描述;④编程实现算法;⑤用测试用例测试程序,记录运行结果;⑥写出符合要求的实验报告。
  教师通过检查源程序运行情况和批阅实验报告,了解和评定学生的实验情况。
  2.2.2作业
  作业题分为两类:基本概念题和算法设计题。部分算法设计题要求学生编程实现,以弥补课堂设计实验的不足。对于这部分实践活动,教师布置题目,通过批改作业,检查学生的完成情况。学生编程实现题目,将设计思路、算法和运行结果形成作业上交。
  
  2.3课程设计
  课程设计对应于综合实践活动。对于计算机相关专业的学生来说,在“数据结构”课程学习结束后,通过前期的验证和设计实践,具备一定的综合使用课程知识解决问题的能力和规范的程序设计能力。所以,一般在课程结束后,单独有1~2周的“数据结构”课程设计,教师与学生的工作分别如下。
  1) 教师。①制定课程设计实施计划书。给出课程设计的目的和要求、日程安排、考核方法及分组情况等。②给出问题描述。区别于设计题,这里的问题一般较复杂,实现的源码,一般均在500行以上,甚至千余行。③提出设计要求,引导学生进行概要分析。可分为基本要求和较高要求,与不同层次的学生的能力相对应。④设计提示。综合设计的问题解决,通常包含多个算法,对其中特别难的、学生不易想到的要点给出提示。⑤提出课程设计报告的写作要求。包含需求分析、概要设计、详细设计、调试分析、测试分析、总结与体会、使用说明及源程序等。
  2) 学生。①根据实施计划书的进度要求、问题描述和设计要求进行“概要设计→详细设计→调试测试”的问题求解;②接受系统检查;③撰写符合要求的课程设计报告。
  教师通过作品检查和批阅课程设计报告给出学生的课程设计成绩。教师通常在课程设计的最后一天,通过运行系统和提问,检查学生的系统设计与完成情况。
  2.4科技活动
  学生的创新能力来自科研实践。科研实践要因人而异,针对学有余力的学生,通过下列三种途径提供科研实践活动。
  2.4.1项目开发
  通过项目锻炼,培养学生进行科学研究的工作方法和相互协作的精神。
  1) 辅研。教师积极向学生介绍自己的研究方向和课题,吸纳有特长和兴趣的学生参加自己的项目研究,根据其知识结构,给学生布置力所能及的任务,逐步深入。
  2) 项目申报。积极鼓励学生参与各级项目的申报。学生作为申报人并获得资金的资助,能有效增加其完成项目的责任感与投入其中的热情。
  2.4.2社会实践
  “没有经验”被企业视为大学毕业生的最ovwHDD1q0Iylry6gmHuOKyCa3O+ZMKp+Zpi6dlOQu3s=大弱项。参加社会实践,是学生获取经验的最好途径。学习数据结构的学生基本上是大二和大三的,这样,他们有1~2个暑假,可以进行社会实践。教师向学生宣传社会实践的好处,介绍社会实践场所。学生在寒暑假或平时课余时间,到某个单位短期工作或兼职工作,参与单位具体项目的工发。
  2.4.3竞赛
  竞赛是学生用理论知识解决实际问题的有效载体,是检验、锻炼、提高和展示学生科技创新能力的很好平台。竞赛所带来的荣誉感,能够有效激励学生的创新热情。常见的竞赛有:校级的“希盟杯”电脑技能设计大赛、网页设计大赛等;市级的“天翼杯”电脑技能大赛、科技创新大赛等;省级的“富士通”杯网页网站设计大赛、大学生软件设计大赛等;国家级的数学建模大赛、“挑战杯”全国大学生科技作品竞赛、软件人才设计大赛等。
  教师及时地把各种竞赛信息通报给学生并组织学生申报;组织好竞赛作品的创作与指导工作;对参赛者和获奖者给予一定的奖励,并对参赛作品进行展示和宣传,扩大活动效果,以吸引更多的学生参与竞赛活动。
  3 “数据结构”实践平台
  为了使数据结构的实践活动能够顺利进行,我们编写了《数据结构实践教程》[6],创建了“数据结构实践教学网站”作为实践教学实施平台。
  3.1 《数据结构实践教程》教材建设
  本书含盖了1—3层的实践活动的素材和实施指导。全书分为三篇:验证篇、设计篇和综合篇。
  1) 验证篇。详述《数据结构》[1]教材中相关算法的实现。本篇首章介绍算法到程序转换的基本步骤及需要注意的问题;给出了进行验证性实验的步骤;同时介绍了实验环境。其余各章按教材教学内容进行编排。每个应用程序的叙述采用一致的结构,由如下四个部分组成:①程序设计。给出数据的类定义和程序结构图。②源程序。方便学习者研习程序设计思路、程序结构、改进程序以及更好地操作程序。③程序运行。给出程序操作方法介绍及程序运行界面。④思考题。引导学习者更深入地理解程序、程序所实现的算法、程序所采用的存储结构以及可改进之处。
  2) 设计篇。针对一定的知识点给出不同难易程度的设计题,作为课程实验和课后程序设计素材。本篇介绍了设计型实验的实验步骤、设计内容;提供了实验报告格式,并给出一个实验报告案例。其余各章按教材教学内容进行编排,每个设计题由以下五个部分组成:①问题描述。给出问题背景,提出需要解决的问题。②基本要求。给出算法实现时对数据逻辑结构、存储结构、功能设计、数据输入或输出上的要求。③实现提示。对算法设计给出必要的提示或伪码描述。④测试与运行。给出测试案例。⑤思考题。提出相关问题或更高设计要求。
  3) 综合篇。针对一个以上的知识点给出综合设计题,可以作为课程设计素材。全篇首章给出有关综合设计项目涵盖的内容、综合设计报告格式以及综合设计成绩评定准则等。其余各章按设计任务编排,每个项目任务的叙述由以下三个部分组成:①问题描述。给出问题背景,提出需要解决的问题。②设计要求。提出项目设计与实现时功能上需求,分为基本要求和较高要求。③实现提示。对数据组成形式、相关算法设计上给出必要的提示。
  该教材充分考虑了学习者进行1—3层次的实践活动的可能需求。验证程序使用菜单界面,结构统一,操作简单;设计篇和综合篇内容丰富,提供了各种难易程度、且有一定实用性或趣味性的题目,可以为学习者提供全程指导。
  3.2数据结构实践教学网站
  该网站分为用户管理、学生主页和老师主页三个部分,其功能如图1所示。
  图1 “数据结构实践教学平台”系统功能
  3.2.1学生主页
  以学生身份登录系统后进入学生主页,从中查看实践教学内容、联系教师,上传作业、在线交流等。页面中包括课程实验、课程实训、课程设计、作品展示等。
  1) 课程实验:提供实验教学大纲、实验指导书及实验上传功能。
  2) 作品展示:提供经典算法设计案例、优秀学生作品展示、典型数据结构及其基本操作的算法动画演示等。
  3) 课程实训:提供习题、试题、典型题解、最新题库等。
  4) 课程设计:提供课程设计指导书、课程设计作品上传等。
  3.2.2教师界面
  以教师身份登录系统后进入教师主页。教师通过该页面,发布公告,进行实验、实训(即课外设计)、课程设计、作品、学生、教师等相关信息的管理。
  1) 公告管理:实施公告的编辑、发布及公告的数据库管理等。
  2) 课程实验:发布实验指导相关内容;查看学生上传的课程实验源程序与报告。
  3) 课程实训:发布实训设计问题及对问题库的数据库管理。
  4) 课程设计:发布课设指导相关材料;对学生上传作业进行管理。
  数据结构实践教学系统的开发为学生和教师带来了很大的方便,通过网络突破时间和空间的限制,方便教师与学生之间、学生与学生之间的专题交流,为学生提供丰富的素材。
  4结语
  实践教学是“数据结构”教学中不可缺少的环节,对课程学习成效起着决定性的作用。笔者根据课程特点和创新人才培养目标,提出按验证、设计、综合和创新四个层次的实践活动,对教材和网站的建设进行了积极探索,构建了一个多维一体的数据结构实践教学体系。经过多年的实践,已经取得了明显的成效,考研率逐年提高;学生在各级比赛中获奖越来越多,等级也逐步提高。
  参考文献:
  [1]