当前位置:巨优公文网>范文大全 > 公文范文 > 面向能力培养的网络编程技术课程教学方法探讨

面向能力培养的网络编程技术课程教学方法探讨

时间:2022-10-27 11:30:08 公文范文 来源:网友投稿

摘要:针对网络编程技术课程的具体特点和要求,在剖析课程内容、整理教学实践经验、总结应用需求的基础上,提出以课程项目为驱动、以问题为线索组织教学内容,展开专题性与综合性相结合的实践教学,综合课程考核方法,以此提高学生对网络编程技术课程的学习兴趣,提升学生问题求解能力。

关键词:能力培养;网络编程技术;教学方法;教学改革

网络编程技术作为“计算机网络”的后续课程,在计算机类专业课程体系中占有十分重要的位置,是理论与实践相结合的关键课程。本课程要求学生在理解计算机网络、操作系统等基本理论的基础上,掌握客户/服务器模型,掌握TCP/IP协议簇中链路层、网络层、运输层等网络应用程序的设计思想和编程模型,运用高级语言进行开发,同时能够利用相关网络知识解释程序运行中的现象,解决实际问题。

目前,高校本科生的选修课程学时普遍被压缩,如何在有限的学时内,让学生最大限度地了解网络编程技术,增加课程信息量,提高学生学习兴趣,培养学生的问题求解能力是非常值得思考的问题。本文结合笔者多年的教学经验,总结了一些有效的教学方法。

1课程项目在教学过程中的驱动作用

传统的教学模式以讲授法为主,只是针对程序设计语言的语法进行讲解,内容枯燥无味,教师注重讲授,学生被动接受,学习积极性不高,效果也不好。

网络编程技术是一门与实际应用结合紧密的课程,课程项目可以在教学过程中产生积极的驱动作用。教师在教学过程中逐步将所教内容对应于项目中,既调动了学生学习的积极性,又使学生能够系统地学习所需要的知识[1]。具体做法是:

1) 在课程学习之初,教师就向学生布置若干与网络编程相关的课程项目,要求学生学习完本课程之后能设计出对应的软件。学生根据自己的兴趣,以小组为单位选择其中一个作为本课程考核的项目,提交项目申请书。

2) 在项目的实施过程中,教师将项目进度简化为申请—设计—实现三个基本步骤,每个步骤要求学生根据阶段进展写出相关文档——《课程项目申请书》、《课程项目设计文档》和《课程项目结题报告》。学生在动手实践过程中锻炼了对较大问题的模块划分、编码、分工协作、科技文档写作等技能。

3) 在教学过程中,教师全程指导、策划,负责各个模块之间协调进展,同时负责解惑答疑,及时修正存在的问题,在涉及到课程项目实施细节处及时与教学知识点联系起来,由此达到将案例教学与项目驱动教学相结合的目的。

在项目开发的每个阶段,各开发小组完成相应模块后,以讨论课形式展示自己的作品。肯定成绩,找出不足,学生能够在积极融洽的环境中相互学习、取长补短,不断完善自己的作品;而对于一些创意新颖、主题突出、有独创性的作品,则及时给予表扬和鼓励,这样可以不断加强学生的信心,让学生能长期保持饱满热情。

2以问题为线索的教学内容设计

网络编程课程涉及的知识面很广,从TCP/IP四层体系结构来看,每个层次都存在多种编程方法,如直接网卡编程技术、基于Packet Driver的网络编程方法、基于NDIS的网络编程方法、WinPcap编程、WinSock编程、基于WWW应用的网络编程、Web Service编程等等。如果将每种方法都面面俱到,不一定会起到好的教学效果,一方面,每种编程方法使用的开发环境不同、函数库不同,使得学生短时间难以掌握;另一方面,网络编程的核心在于程序设计思路和传输过程中关键问题的解决,在课时有限的情况下过于关注函数使用方法,无法透彻地将这些核心思想灌输给学生。

我们在教学内容设计时,本着“授之以渔”的目标,从网络程序设计中提炼出编程中涉及到的若干关键问题,并围绕这些关键问题重新组织教学内容,帮助学生更清晰地把握知识点。

2.1从应用出发选择授课内容

首先,将现有的诸多网络编程方法按照其操控的数据内容在TCP/IP体系结构中找到相应位置,如图1所示。在此基础上,结合学生的实际工作需求,授课内容选择了可操控链路层、网际层、运输层三个层次上的常用编程方法:WinSock编程和WinPcap编程。

2.2从问题出发组织授课内容

考虑到两台主机间互联通信主要涉及到以下若干关键问题。1)会聚:解决对等的应用程序以何种顺序、什么时间进行交互的方式。2)接口:解决应用程序如何使用操作系统的TCP/IP协议栈功能进行网络操作。3)异步:解决套接字在非阻塞模式下如何确定可读/可写的时机问题。4)测试:解决如何进行网络应用程序的调试问题。5)传送:在数据传输过程中,我们可以为应用程序选择不同的底层传输服务,在课程中将涉及到数据流(对应于流式套接字)、数据报(对应于数据报套接字)、协议分组(对应于原始套接字)和数据帧(对应于WinPcap)等4种方法实现数据传输。每种方法都有其特点,学生要在明确其适用场合的基础上学会基本的通讯功能和处理细节。

因此,网络编程的授课内容被组织为网络通讯过程中的5大问题:会聚、接口、调试、传送和异步,如图2所示,教师针对每个问题分专题进行讲解,使课堂内容更加清晰。

2.3从效果出发设计教学过程

在课程规划上,强调基本概念的理解与实践相融合,网络编程作为应用型课程,其理论基础部分已在计算机网络、网络协议分析课程中学习过,但课程偏重理论介绍,学生难以与实际相结合,因此,网络编程课首先要帮助学生完成理论到实践的衔接。

上课时采用案例式教学,每讲到一种编程模型,将常用的网络扫描、网络游戏、文件下载等实例的分析与实现以案例的形式出现在课堂中,既形象地将理论与实践结合起来,又提高了学生的学习兴趣。

从教学效果上看,案例式教学启发了学生的兴趣,丰富了学生的知识结构,鉴于课堂上的少量案例仍然不能涵盖大量的实际应用,为了避免学生在学习过程中过于注重细节,造成“只见树木不见森林”的问题,在教学方法上,教师注重由点及面的教学思路,在每一讲结束后进一步启发学生思维,跳出简单的程序编写细节,举一反三。如教师在介绍数据填充时,从最简单的字符型数据,启发学生考虑稍复杂的携带固定含义字段的数据(如四字节的ICMP的时间戳字段),再考虑更复杂的结构体数据,更进一步思考如何设计一个新的协议。通过这种方法,使得课堂教学内容与实际的关联性更加密切,引导学生自主学习。

3专题性与综合性相结合的实践教学设计

网络编程技术课程的实践性很强,学生只听不练很难达到学习该课程的目的[2],因此在理论教学的同时还要加强上机实践教学,将上机实践环节贯穿于课程教学的全过程。在实验内容选择上,教师要充分考虑实验题和理论教学的衔接,以及实验题目的综合可操作性、趣味性和难度,为此,将实践教学部分分为专题实验和综合实验两部分。

3.1专题性实践教学设计

专题实验的目的在于对课堂讲授理论的验证和运用,为此,结合教学内容,将专题性实践教学设计为6个必做实验,如表1所示。

6个实验围绕一个回射程序展开,基于流式套接字实现的回射客户端和服务器是基础,在此基础上,后续实验稍加改动就可以完成,修改内容侧重于程序的可靠性、并发性和功能性。修改的内容与课堂讲述的重点内容一致,更有针对性地锻炼学生编程能力。

在程序运行过程中,模拟正常交互、服务器关闭、客户端异常退出、服务器主机崩溃、大量客户端请求等情况,结合嗅探器和netstat命令监视程序运行过程,要求学生结合网络理论来解释和解决编程实现过程中的实际问题。从实践教学效果来看,学生在分析通信流量和主机网络状态的过程中,既锻炼了网络测量方法的应用和网络应用程序调试的技巧,又有效地将计算机网络相关理论应用于实际问题的处理和分析,同时也直观地感受到各种方法开发出的网络应用程序在实际交互过程中的优势和劣势。

由此,通过一个实例在各种网络环境下的实现,帮助学生理解不同类型通讯方式在实现中的差别,并进一步明确编程方法的选择策略。实验内容前后衔接,递进安排,工作量适中,达到了理论与实际相结合的目的,充分发挥了学生的主观能动性,培养了学生分析问题、解决问题的能力。

3.2综合性实践教学设计

课程项目作为实践教学的综合设计环节,目的在于模拟真实项目开发过程,培养学生团队意识,锻炼学生分析问题、解决问题的能力。

结合网络编程技术的教学要求,设计6个综合类教学项目,分别是简单聊天程序、多线程网络文件传输、基于C/S的密码验证程序、traceroute的设计与实现、半开端口扫描器的设计与实现和ARP欺骗。

在教学项目实施过程中,以学生为主体,教师负责组织协调和必要辅导的工作,学生以小组为单位,共同围绕某个项目进行分析和研究,查阅、自学相关的文献资料,确定技术路线、实施方案和小组分工,最后以小组为单位进行答辩。

综合实验环节模拟实际的软件开发过程,提高学生的兴趣,也培养了学生的探索创新能力和团队协作精神。

4综合课程考核方法

传统基础理论课的考核方法通常采用卷面笔试考核,这种考核方法强调的是学生对知识点的理解和综合问题的分析能力,但是对于实践类课程而言,它更强调学以致用,因此,一味要求学生对知识点的死记硬背无疑起不到好的效果,考核应贯穿学生的整个学习过程,比如课程项目实施进度、小组分工协作情况、疑难问题的解决等。如果能够对整个过程的若干关键环节进行衡量,那么,网络编程技术的考核也就完成了。

综合考虑以上因素,本课程成绩评定没有采用卷面笔试形式,而是采用教师评定与学生打分相结合、课程项目成绩与平时成绩相结合的方法。综合成绩=课程项目成绩(50%)+平时成绩(30%,包括实验成绩、考勤情况等)+学生评定成绩(20%)。课程项目成绩考核学生对整个课程内容的掌握和运用,平时成绩主要针对学生上课出勤率和每个专题实验的完成情况,学生评定是对小组内成员工作情况的肯定,采用无记名方式提交,在一定程度上遏制了个别同学复制别人劳动成果的现象,同时也提高了学生的学习动力。

5结语

以上是我们在该课程实际教学中实施的一些具体做法。课程项目促进了学生加强网络编程学习的动力,它能够在培养学生的学习能力和实践能力的同时,加强项目维护、分工协作等多方面技能的培养,更真实地展现实际工作的需求和实施过程。同时,有效的教学内容设计、专题性与综合性相结合的实践教学环节和综合课程考核方法在教与学的各个环节都起到了有效的促进作用。实践证明,通过上述教学方法和手段,大多数学生的学习兴趣明显增强,实践动手能力得到很大提高。

参考文献:

[1] 魏惠茹,李晓东. 基于“项目驱动”的Java语言教学[J]. 黑龙江科技信息,2009(27):157.

[2] 刘汉兴,刘才兴,邝颖杰,等. “网络编程”教学方法的探索[J]. 计算机教育,2010(3) :91-93.

推荐访问:教学方法 编程技术 探讨 面向 培养

版权所有:巨优公文网 2018-2024 未经授权禁止复制或建立镜像[巨优公文网]所有资源完全免费共享

Powered by 巨优公文网 © All Rights Reserved.。备案号:沪ICP备18054162号-1