□缪海燕
网络编程技术是网络工程专业的必修课程。该课程通过网络编程实践,使学生掌握网络编程技术的概念、编程方法、系统组成及设计方法[1]。其目标是培养学生的动手能力、分析和解决网络编程问题的能力,并提升学生的创新能力。该课程涉及的知识面广,对逻辑性和实践性要求较高,使得课程的教学难度较大。在该课程的教学上,高校普遍采用课堂逐章讲授、课后实验验证、期末闭卷考试的教学方法。存在重理论轻实践、重记忆轻应用、强调个人能力忽视团队协作等问题,对学生创新能力和工程能力培养不足。因此对该课程教学模式的改革势在必行。
(一)教学内容存在问题。网络编程技术课程以网络协议为基础,编程语言为载体,通过编程实现网络通信。因此该课程对前驱的计算机网络、程序设计等课程的要求比较高。教师首先面临如何巩固这些旧知识的问题。该课程涵盖网络通信的编程方法,知识面广,且逻辑性强,难度较大,教师又面临着课程内容如何取舍的巨大挑战。因此旧知识点的巩固,新知识点的选取以及各项内容的组织衔接都显得至关重要。
(二)教学方法和教学手段存在问题。因为课程知识点多,逻辑性强,教师为提高教学效率,普遍采用以自我为中心的“灌输式”教学法,将大量教学时间运用在基础理论的讲解上,缺乏互动,极易使学生走神;由于课程难度大,稍一走神又导致后续内容听不懂;即使听懂了课程内容,看懂了程序,但由于没有及时进行编程练习,课后学生独立编程时常常感觉无从下手。目前教师已普遍认识到实践的重要性,增加了实践课时,但只是简单采用“先理论,后实践”的授课模式,导致教师对学生的编程实践无法及时作出反馈,最终导致学生仍屡遇问题,兴趣下降、教学效果不理想。
(三)学生的学习方法存在问题。由于该课程需要具有一定的编程能力,如果学生对前驱课程《程序设计基础》掌握不好,非常影响这门课程的学习信心,导致学习畏惧心理,对课程不感兴趣,不愿学习。另外学生不愿意利用课余时间进行编程练习。
(四)考核评价方法存在问题。目前的考核方法以闭卷考试为主,项目考核为辅。这种方法只能考核学生对协议的记忆和理解,不能真正有效地考查学生的网络编程能力。
CDIO 工程教育模式是近年来国际工程教育改革的最新成果。学院基于“教育创造学生价值”的理念,在继承CDIO 工程教育理念的基础上,创造性地将CDIO 理念中国化和本校化,对CDIO 能力培养大纲进行了继承性基础上的创新,提出了具有东软特色的TOPCARES-CDIO。其核心是“项目教学”,理论实践“一体化”,以项目带动教学,在做中学,学中做[2]。
针对目前网络编程技术教学中存在的问题,将TOPCARES-CDIO 工程教学理念融入本课程的教学过程中,以“项目带动教学,做中学,学中做”理念为中心,并结合学校学生的实际情况,在教学内容、教学方法和手段、考核等三方面进行立体化的教学改革,以改善教学状况,培养具备高技术、高素质、符合现代企业需求的应用型高科技人才。
(一)创新教学内容。网络编程技术课程知识面广而杂,其前驱课程较多。基于TOPCARES - CDIO 的项目化理念,对课程知识体系重新组织,将新旧知识点划分到项目中去,用项目串通知识点,确保重点知识被覆盖,被实践。
将该课程知识体系划分成三个部分(如表1),第一部分简单回顾TCP/IP 的常用协议及基本工作原理。第二部分重点讲解网络编程常用工具,主要包括Socket 的基本概念及编程原理、常用API 函数等,为后续具体的网络编程提供工具。第三部分将综合前两个部分的工具,针对各个网络层次实现相应的协议编程。通过这样的知识划分,知识点从易到难、循序渐进。有了前面TCP/IP 协议的回顾,及API 工具的铺垫,让第三部分网络编程实践水到渠成,提升学生学习兴趣,培养学生编程能力。
表1 网络编程技术课程内容
(二)项目化的教学方法和手段。TOPCARES -CDIO 提出以学生为中心,由“老师教什么”转变为“学生学会做什么”。这要求教师转变角色,变为课堂的引导者,引导课堂的主体学生,自主地运用知识、发现问题、分析问题、解决问题。在课程教学中重点进行了如下教学方法和手段的改革。
1.少讲多练,还课堂给学生。课程讲授突出“少而精”,重点讲思路、讲线索、讲重点和难点,对一些了解性的知识要求学生课外自学。把大量的课堂时间留给学生进行编程练习,让学生在实践中学习,在实战中提高。
2.以问题为中心,激发学生主动学习,避免满堂灌。每讲授一个协议之前,教师先提出问题“下一个协议是什么格式?协议原理?”学生带着问题先课下自主学习。到第二次上时,随机抽点学生讲解协议,教师重点针对容易混淆或理解错误的部分提问,启发学生思考。例如学习ARP 协议时,首先安排学生讲解ARP 协议格式,教师针对ARP 报文长度进行提问。ARP 报文长度与硬件类型和协议地址长度相关,在协议编程实现时,需要将ARP 报文数据结构设计为变长,而不是简单的设计为固定字节数。通过组织学生进行这样的思考分析,既可锻炼学生的思维,让学生积极表达自己的观点、提升自信,又可以透彻理解协议,达到良好的教学效果。
3.分组教学法提升学生的团队意识,互帮互助,共同进步。由于该课程既涉及到网络协议,又涉及到编程技术,课程知识广难度大,特别对于基础不太扎实的学生是巨大的挑战,极易让他们产生畏难情绪。通过分组的形式,将5~6 人组织成一个学习团队,学生自主选举一名技术带头人。教师重点指导技术带头人,技术带头人再协助其他同学解决问题完成项目。当遇到技术带头人也无法解决的问题时,再由教师出面解决。这样提高了同学自主分析问题,解决问题的能力,并且提高了他们的团队协作意识。
4.立体化的实验教学,理论与实践一体化。TOPCARES-CDIO 提倡“做中学”,强调学生主动学习。因此,实验教学是该课程的核心。在课程实验的总体设计上,遵循协议顺序由底层到高层、实验步骤由简单到复杂、实验组织由独立到协作的原则,做到实验教学体系的模块化和多层次、实验教学类型的多样化。引导学生主动进行实验和探索学习。学校为每位学生都配备了笔记本电脑,教室每个座位都配备了网络接口,学生在教室就如进了实验室一样,可随时编写网络程序,遇到问题可以及时向老师和同学求助。
在第三部分的网络编程实践教学中,按照协议由底层到高层的顺序讲解。每层协议学习初期,先使用抓包软件在网络中随意抓一些包,给学生直观印象,加深学生对本层协议的理解,然后为学生布置简单的单层协议编程实验项目,随着学习的深入,再布置难度更大的多层协议组合的编程实验项目。每个项目完成后,挑选完成较好的学生作品做点评,让学生更加深入地掌握学习内容。表2是在第三部分网络编程实践中针对各层协议设计的多个网络编程实践项目。
表2 课程第三部分网络编程实践的实验项目[3]
(三)一体化的考核方法。根据网络编程技术课程的教学目标,结合TOPCARES-CDIO 的“项目带动教学”理念,对学生学习成绩的评价不再采用单一的笔试,而是根据平时的形成性考核和最后的终结性考核进行一体化评价[4]。形成性考核从学生的出勤、作业、各章的项目完成情况对学生进行平时成绩的考核,占总成绩的50%;终结性考核占总成绩的50%,期末以小组大项目的形式完成。整个考核以“项目”为中心。特别是最后的大项目考核,需要学生提交项目需求分析、概要设计和详细设计,并最终编写代码实现项目功能。考核时,小组成员先介绍各自在项目中所担任的角色,完成的工作;再随机抽取组内成员讲解项目的协议原理,设计思路;最后进行现场演示。整个过程中能考查学生的编程、团队协作、口头表达等多项能力。该项目成绩可由老师评价及组间互评,组内互评共同来衡量。这样能较准确地反映出学生学习效果,体现课程考核的有效性、公平性和合理性。此外,为了促进学生养成良好的编程风格,是否符合编程规范也被纳入课程考评范畴。
基于TOPCARES-CDIO 理念的网络编程技术课程改革,通过“项目带动教学”的方法,通过在教学内容、教学方法和手段、教学考核等三方面的改革,充分实现让学生在做中学,学中做。从教学效果来看,提高了学生学习兴趣,增强了学习的积极性和主动性。在掌握课程知识的基础上,学生提高了网络编程能力,以及发现问题、解决问题的能力,此外还增强了团队协作意识。
[1] 李鹏.网络编程技术课程的教学改革思路[J].西安邮电学院学报,2010,15(2):166~168
[2] 温涛.基于TOPCARES-CDIO 的一体化人才培养模式探索与实践[J].计算机教育,2010,11:23~29
[3] 胡静.网络工程专业的网络编程课程教学与改革[J].计算机教育,2014,18:35~38
[4] 刘琰,常斌,罗军勇等.面向能力培养的网络编程技术课程教学方法探讨[J].计算机教育,2010,18:52~55