网络工程专业“网络程序设计”课程的案例教学实践

2013-12-29 00:00:00蒋峥峥陈晓红王进彭志娟
计算机教育 2013年2期

摘要:从网络工程专业“网络程序设计”课程的教学特点入手,在案例设计、上课讲解、上机实践、总结评价等环节中详细阐述案例教学的具体实施过程。

关键词:网络工程专业;网络程序设计;案例教学

在网络工程专业中开设“网络程序设计”课程是为了让该专业的学生在学习计算机网络理论知识的基础上,理解网络程序设计的基本原理,掌握基本的网络程序设计模型,具备网络应用软件与系统开发的能力。然而,在笔者多年的教学过程中发现,这门课程内容多、学时少、实践性强,而编程调试的难度又令很多动手能力差的学生失去了学好这门课程的信心。如何充分利用有限的课堂教学时间使学生完成理论与实践的有机结合,掌握网络程序的设计思想和开发方法,是亟待解决的问题。因此,笔者提出以案例为主线,将案例教学法应用于课程的多个教学环节中的教学方法,取得了良好的教学效果。

1 教学现状

1.1课程地位

作为本科院校的网络工程专业,培养目的不能局限于“组网工程”,而要根据各种类型的用人单位对网络工程专业人才需求的不同层次,坚持理论和工程实践结合,知识与能力并重,强化工程素养训练,培养基础知识扎实的,具有较强的分析问题和动手解决问题能力的,能从事和网络相关的科研、工程和应用工作的多层次综合性人才。因此,该专业不仅要求学生掌握与网络工程相关的基础知识与理论,以及各种网络系统设计、建设与维护技术,如网络协议体系、网络互联技术、网络服务、信息安全、组网实践、网络测试与管理等相关知识,也要求学生掌握基本的网络应用软件与系统开发的知识与技术,这样才能满足学生在以后的工作与学习过程中的多元化需要。

在网络工程专业的课程体系中,“网络程序设计”这门课程属于专业选修课,目的是让学生在学习了“计算机网络”等理论课程和“C#程序设计”或“JAVA程序设计”等基本编程技术的基础上,了解网络程序设计的基本概念,深入系统地学习计算机网络编程技术,从网络编程实现的角度更深层次地理解计算机网络的理论和协议,同时,培养学生开发实用且具有网络通信功能系统的能力。

1.2课程内容

“网络程序设计”课程与一般的程序设计课程不一样。一个网络通信程序必须由客户端与服务端相互通信来实现,因此,“网络程序设计”课程侧重于“网络通信”,在教学上不能像一般的程序设计课程那样偏重于程序设计语言的基本语法和用法,而应强调网络程序的编程思想和开发方法。

从课程内容来说,本门课程以某种具体的程序设计语言为基础(如c≠}程序设计语言),结合一些高级编程技术,如多线程编程、数据流处理、异常处理机制等,实现对网络中的各类协议进行编程开发,如图1所示。

1.3存在问题

1)学时有限。

由课程内容可以看出,“网络程序设计”课程涉及多种网络编程技术,涵盖的知识点非常多。同时,随着技术的不断进步,内容还在不断地加深和丰富。但由于这门课程属于专业选修课,学时安排一般比较少(大部分院校该课程安排在48学时左右),其中还包括学生上机实验,因此课堂讲授时应尽可能兼顾编程思想、开发方法和各种网络编程的技术,以最少的学时让学生掌握尽可能多的知识。

2)学生动手能力差。

这门课程的工程实践性非常强,对学生使用程序设计语言的能力要求非常高。前期的“C#程序设计语言”课程中,教师受学时限制,往往会降低难度,在高级程序设计技术方面介绍较少,大部分学生只局限于掌握老师上课讲的内容,不会课后主动花大量时间深入研究,动手调试程序的能力比较弱,不具备软件项目开发所需要的各项综合能力,理论与实践严重脱节。

2 案例教学的可行性

案例教学法是指教师根据教学内容及目标,通过创设案例,组织学生开展分析、研究、表达等活动,让学生在具体的问题情境中积极思考、主动探索,从而培养学生综合素质的一种教学方法。起初,案例教学主要应用在管理学、法学等学科的课堂教学中。目前,案例教学在程序设计语言课程中也有很多应用,但主要集中在对一些具体技术的讲解,在案例处理及选择方面缺乏连续性,各章节知识点的案例相互割裂,无法体现各知识点之间的联系,在“网络程序设计”课程中的应用仍然较少。

在设计网络程序时,不再是简单的单机程序,而是由多个用户程序互相通信来实现。因此,一个网络程序更类似于一个小型项目系统的设计。案例教学对于几乎没有项目开发经验的学生来说,是掌握这门课程的最佳途径。设计好的案例可以将学生引入特定的情境中,启发学生思考,拓宽学生分析问题的思路,培养学生解决问题的能力、实际动手能力与创新能力,让学生最终学会网络程序的设计思想和开发方法,符合“网络程序设计”这门课程理论与实践并重的基本要求。

3 案例教学的实施

本课程内容多、学时少、工程实践要求非常高。因此,在教学过程中,要以解决实际的网络程序设计问题为中心,立足协议的运用,设计合理的案例,注重理论与实践的紧密结合。

3.1案例设计

在案例设计时要兼顾以下几点:

1)一个案例中要包含尽可能多的知识点,兼顾知识点之间的联系。例如,设计一个网络聊天的案例,由客户端和服务器端进行通信,功能包含打字聊天、语音对话、传送文件等。这个案例中包含了Socket编程技术,TCP、UDP、FTP协议编程,以及多线程编程技术、数据流和异常处理机制等知识点,在这些知识点和技术的配合下实现这个网络聊天系统。

2)在设计案例时要从实际应用的项目中寻找,激发学生的学习兴趣。例如,设计一个网络管理的案例,包括ping、主机扫描、端口扫描、活动主机发现等功能。这个案例的功能在“360安全卫士”中都有,容易使学生产生主观感受,激起开发热情。

本课程的教学中,设计的案例如表1所示,6个案例涵盖了图1中的所有知识点。

3.2实施步骤

设计好合理的课程案例后,整个教学过程以案例为主线进行,具体的教学实施分3个阶段:上课讲解、上机实践、总结评价。下面从3个教学环节具体介绍案例教学法在整个授课过程中的应用。

3.2.1上课讲解

在理论教学时,首先通过案例引出授课内容,演示案例的运行效果,让学生对案例有个全局认识,引起学生的兴趣。然后,教师以项目开发的方式,对案例进行分析和设计,以软件工程的思想画出案例的设计框图,为学生日后进行项目开发打下基础。再针对案例中涉及的知识点逐个进行理论讲解,将先修课程中的计算机网络及协议的理论知识应用于程序设计中,让学生在网络程序设计的过程中进一步加深对理论知识的理解。在讲课时要注意以下几点:

1)由浅入深、循序渐进。

例如,在网络聊天案例中,介绍TCP编程的知识点时,首先结合TCP协议的理论,归纳TCP编程的一般步骤;然后以C#语言为例,介绍实现TCP编程所用到的类;根据编程步骤,由C#类实现一个简单的客户端发送“hello”消息给服务器端的小程序,利用投影仪当堂演示小程序的编写和调试。在调试时,可以故意设置一些障碍,例如不运行服务器端,故意造成客户端连接失败,从而逐步培养学生的程序调试能力。同时,可以在此基础上引申出异常处理这个知识点,循序渐进地引出TCP消息边界问题、多线程编程、数据流等知识点。

2)注意知识点的融合与比较。

课程设计的案例往往包含较多的知识点,要注意不要将知识点相互孤立,要加强对这些知识点的融合和比较aaeW8CcU6iYKW87vdPw7VneFrRZ1uJjUI+8br16pJyo=。例如,在文件传输的案例中,FTP编程知识点和数据流知识点就要融合起来讲,不能割裂。在讲计算机编程时,结合FTP文件传输协议仔细讲解FTP协议传输的网络数据流和文件数据流之间的区别和联系,并实际编写课堂小程序展示两者之间的关联,加深学生对这些知识点的融合与比较。另外,在后面的课程中,介绍网络下载案例时,可以与之前的文件传输案例进行比较,从实际编程的角度比较分析P2P技术的文件传输与FTP协议的文件传输,并用多台机器配合演示两个案例的实际运行效果,让学生在掌握P2P技术与FTP协议的理论知识后,从实际编程项目的角度加深对理论知识的理解。

3)理论联系实际、培养动手能力。

在理论课讲授过程中注意理论知识的讲授与程序的编程、调试的演示要交叉进行,给学生一个良好的起点,激发学生自己动手的兴趣。在讲课时要注意控制好节奏,留给学生一定的思考时间与空间;在编程或调试的过程中要不断地抛出问题,引导学生思考、分析和讨论,从而帮助学生逐渐增强在编程时分析问题、解决问题的能力。由于讲课课时有限,对每个案例不可能都尽善尽美地在课堂上讲解调试完成,因此,每节课结束后都要留几个问题,让学生课后去思考,主动查找资料完善程序,然后在上机实践环节中编程调试。学生上机的内容,由传统的验证型编程改为综合型、设计型项目的编程。这样可以引导学生的发散性思维,进一步激发学生的学习兴趣,让学生课后主动探索,寻找问题的解决方案。

3.2.2上机实践

在程序设计类课程中,上机实践环节是必不可少的。让学生亲自动手编程,学会程序的分析、设计、编程以及调试,提高实际动手的能力。本门课程涉及比较难的程序设计内容,在调试程序时又需要多个通信主机配合,因此,在上机实践环节,可以打破传统,由3~4个学生组成一个小组,共同完成每个案例的编程调试,这样做有几个优点:

1)增强团队意识,提高上机效率。

学生的动手能力参差不齐,有的善于查找资料,有的善于编写代码,有的善于程序测试等。让他们3~4人组成一个小组,由组长带领,发挥各人的特长,共同讨论,互帮互助,相互配合,可以在有限的上机课时中更好地完成案例内容,提高上机的效率。

2)激发学生的编程兴趣和斗志。

传统的上机课时有限,上机内容一般是每个学生独立完成,而网络程序设计的编程、调试难度比较大,大部分动手能力差的学生遇到错误无法找到出错的地方,产生极大的失落感,慢慢地就失去了对网络程序设计的开发热情。采用小组合作的方式,小组内成员互相探讨共同完成一个项目的开发,容易产生成就感,激发编程的兴趣。小组之间还可以互相竞争,比比看谁的系统更好,这样,又避免了上机抄袭的现象,比传统的独立完成验证型实验能收到更好的效果。

3.2.3总结评价

在每个案例的上机实践环节结束后,要求每个小组撰写提交实践总结报告,内容包括:案例的功能描述、总体设计思路与框图、详细设计、问题及解决方案、编程技巧与心得体会等。撰写总结报告一来是对每个案例的总结与回顾,加深学生对案例及相关理论知识的理解;二来是为日后撰写毕业设计论文做准备,锻炼学生的写作能力。

在最后评定成绩时,不再以传统的卷面考试方式来评判,而是结合同学们的理论和实践能力,综合考评,成绩以优、良、中、及格、不及格5个级别给出。因为上机实践是以小组的形式进行的,因此在考评时也以小组为单位进行考核。在此基础上,综合考量每个学生在小组中的角色和工作量的多少,最终评定出每个同学的成绩。

3.3效果分析

“网络程序设计”课程选择具有启发性、典型性且来源于实际的案例,将理论知识应用于具体的编程实践,让学生在上机编程的过程中进一步体会理论知识,提高了学生的学习兴趣和学习主动性。在上机实践环节以小组形式加强互助合作,增强编程成就感的同时,提高了学生的编程、调试能力,培养了学生分析问题、解决问题的能力和进一步学习新的网络编程知识与技术的能力。

4 结语

在“网络程序设计”这门课程中采用案例教学的方式,是一次有益的尝试。让教师在有限的课堂教学时间里讲授更多的知识点,将理论与实践更紧密结合,促进学生构建良好的知识体系;在上机实践环节采用小组方式,充分发挥学生的主观能动性,增强学生的动手能力、写作能力,有效地解决了以往教学中存在的学时少、学生动手能力差、理论与实践脱节等教学难题,取得了良好的教学效果,对规范网络工程专业“网络程序设计”课程的教学和实践具有重要的指导意义。

(见习编辑:刘丽丽;编辑:郭田珍)