网络编程实践课程的探索

时间:2022-02-10 11:04:25

网络编程实践课程的探索

摘要:针对在网络编程实践课程中存在的学生动手能力差距较大的问题,论述笔者以授课实践为基础,在课程的组织上结合精选推荐选题和自行选题两种方式,力求兼顾两类学生的需求和特点。从课程完成的情况看,取得了一定的效果,对相应的课程建设也有一定的借鉴作用。

关键词:网络编程;实践教学;网络工程专业

计算机网络是现展最为迅速的技术领域,特别是近年来,网络上的新应用和新技术不断涌现,而现代工作与生活对网络的依赖也越来越大,各种计算机软件的开发及使用也主要集中在网络平台上。因此,无论是网络工程专业还是计算机专业的高校毕业生都应具有较强的网络编程能力,否则无法满足当今社会的需求。而网络编程能力的提高主要依赖课堂教学和课程实践,其中课程实践占有更重要的位置,我院的“网络编程课程设计”就是集课堂教学和实践为一体的网络编程综合课程设计。

通过网络编程综合课程设计的学习,特别是由自己完成一款网络软件的设计、开发和部署的全过程,使学生掌握基于网络平台的软件开发技术,了解相应的网络通信原理和实现机制,是学生学习网络编程最有效的方式。同时也可以充分培养学生的自主学习能力、协作精神和创新能力,课程设计环节是网络专业高校学生能力培养非常重要的环节。

1课程概述

“网络编程课程设计”在本科第3学年秋季学期开设,网络工程专业必修,计算机专业选修。前导课程包括:计算机程序设计、计算机网络、数据库原理。总学时32学时,其中课堂教学16学时,上机实验16学时。教学内容并不固定,需要根据当前的网络应用及网络技术的发展不断更新。目前教学的主要内容包括:

互联网及网络应用的发展和现状、当前各种主流网络开发模式和开发技术。重点讲解B/S和C/S模型,简要介绍网络计算及分布式开发技术(J2EE、CORBA、Web Service、ActiveX组件技术、P2P计算、网格计算等)和移动计算技术等。

各主流平台上TCP/IP通信的编程实现方法,重点介绍基于socket的网络软件开发。

Web编程:介绍WWW、HTML、CSS、HTTP协议、客户端和服务端语言。

B/S应用的服务端语言学习,重点学习ASP编程(也可选择PHP),简要介绍JSP编程。

网络数据库的访问方法。

由于课堂教学仅有16个学时,因此不能将上述教学内容全部充分展开讲授,特别是其中有很多难点,系统学习需要大量的时间,课程仅仅能够对其工作原理进行简单的介绍。同时,课程教学的目的并不是让学生全面掌握这些知识,其主要作用是引导和帮助学生在课程的实践部分中合理选择题目和快速进入状态。

在课程实践部分,由学生选择题目,并通过分组编程实现(一般3人左右为一组),最终需交出可实际运行的软件作为课程成绩评价的依据。课程实践部分的目的是使得同学们熟练掌握有关网络程序设计的基本方法,了解网络应用软件的基本框架、体验网络软件设计与开发的主要过程,获得较强的基于网络环境进行编程的能力,同时培养同学们的自学能力、创新精神和团队协作能力。

虽然课程安排了16个学时的上机实验,不过一个适当的课程设计每个学生实际需要50至100个小时的编程开发时间,同时还需要查阅和自学大量的资料,16个学时的上机实验仅仅是为老师帮助和指导学生选题和选择熟悉开发环境等初步工作提供一个合适的场所,其主要工作还是依靠课下完成。课程的考核安排在课程开设的下一个学期进行,保证学生有较充足的时间完成实践内容。

2课程组织

如何更好地安排网络编程综合课程设计,合理地设置课程目标,充分准备学习资料和相关资源,引导学生快速上手,建立方便快捷的交流平台,使得在有限的课程时间内达到充分的锻炼效果,这些都是本课程的重要研究内容。随着计算机网络技术的不断发展,网络软件的工作模式和开发手段也在迅速变化发展,如何紧跟这发展的步伐,在课程中不断更新和优化课程的内容和结构,以适应最新的应用需求和开发技术,这也是本课程的教学研究中应予以重点关注的内容。

然而,目前在我院的“网络编程课程设计”中需要面对的一个新的重要问题则是学生能力的两极分化日益严重,如果还按照传统的教学和组织方式,只能保证普通学生得到基本的锻炼,而无法让已经具备了较强编程能力的学生进一步得到提高。几年前,学生能力的差异化问题还不突出,能力突出者的比例大概只占10%左右,占绝大多数的普通学生,除了在计算机程序设计课程上编写过简单的程序外,很少会动手编程,动手能力普遍较差。为了照顾占据绝大多数学生的水平,在以往的网络编程课程设计的课程组织中[1],老师往往会精选几个题目,提供这些题目的较详细的需求分析文档、需要完成功能的完整说明、相应的开发工具和学习资料,同时还提供一些相关的源码供学生学习和参考,以帮助学生快速上手。在老师这一系列措施作用下,学生可以得到较为系统和规范的锻炼,这样也减少了学生在选题和编程初始阶段的困惑,节省了学生的时间和精力。从以往的经验看,效果也很不错。

然而,随着学校越来越注重在低年级对学生的能力进行重点培养,包括为低年级的优秀学生配指导老师,积极组织和开展各种竞赛和活动,同时其他课程的老师也经常组织优秀学生参加课外学习小组,进行更多的课外研究和实践活动,这些都极大的促进了学生的学习热情,使得有相当多的同学进入大三时已经积累了较多的编程和实践经验,同时形成了各自的兴趣方向和特长。现在这部分学生所占比例已经达到30%左右,并呈现逐年递增的趋势,而且,他们与普通的学生们在编程能力上差距也日趋扩大,这些变化为本课程的教学和组织提出了新的挑战。

在这样的情况下,继续采用原有的课程组织方式,明显不适合这部分较优秀的学生。他们实际上已经达到了本课程希望达到的培养目标,具有了相应的编程能力,如果按照以往的安排,显然不能调动这些学生的学习积极性,这些学生多半会简单应付了事,导致他们无法在本课程得到进一步的学习提高。

为了应对这个问题,我们需要在课程的组织上充分考虑到学生基础的差异,即要能够保证普通学生得到系统的训练,也要使优秀学生能够一展所长,在完成课程实践后网络编程的能力能够又上一个台阶。因此,如何引导这部分优秀学生挑战更难、更新颖、自己更有兴趣的选题,并提供技术支持和指导,是一项艰巨但是具有重要意义的研究课题。

针对这种变化,我们改变了课程内容的组织模式。具体的方式包括以下几点:

1) 继续提供精选题目及相关资料。在最近的课程中我们共提供了10个较为常见的、工作量和难度适中、紧扣网络编程主题的实践题目。

网络聊天程序(需支持群聊)

网络白板软件

某些协议和服务(如FTP、Telnet,NFS等)的客户端

Web搜索引擎

网络五子棋或其他简单规则的游戏

网络桌面软件(能够获取和综合若干固定的网络服务)

网络机器人(网络爬虫)

能够下载整个网站的离线浏览器

基于网络的MIS系统(提供样例为“公安笔录管理系统”)

某电子商务网站(提供样例为“网上书店”)

2) 提倡学生自选题目。鼓励学生自选实践题目,特别提倡选择新颖的、采用新技术、新方法的题目,并承诺选择了这样的题目,完成即可获得高分。即使最终没有全部实现题目要求,也会根据实际的进展和学生对技术的掌握情况打分,消除学生对难度大的题目选择的后顾之忧。这样选题的方式是为了给动手能力强、有创新意识的学生展现自己能力的机会。同时鼓励学生一人一组,使学生得到全面的锻炼。

3) 组织学生交流研讨。在课堂教学内容完成后,实践部分开始前,组织学生在课堂上讲解选择的题目,包括需要完成的功能,大体的设计方案,技术难点,尚不能确定的解决方法等。老师负责点评题目的难易程度、工作量,并提供一些在解决方案和技术上的建议和意见,学生也可以充分参与,发表自己的看法。

4) 建立网上答疑平台。与限定题目的方法相比,鼓励学生自选题目的做法导致实践的题目五花八门,做什么的都有。涉及的技术领域、所选用的开发环境和工具也各不相同。这大幅度增加了老师和教辅的辅导难度,我们常常无法现场回答学生提出的问题。为此我们建立了一个QQ群,用于老师和教辅在课堂教学之外对学生进行指导,讨论技术问题,共享收集的技术资料等,事实证明作用明显。

3考核方法

课程考核是通过考核检查评判学生的学习效果,达到督促学生学习知识的目的。科学的评分也是对学生学习热情的一种鼓励,但学生获取高分不是教学的最终目的,教学的最终目标还是提高学生的网络编程能力。我们通过对学生的系统设计能力、实践动手能力、创新能力和综合总结能力的综合评价,使成绩能比较合理地全面反映学生的实际能力。

我们的考核依据包括两个部分:一是学生提交的文档占30%;二是软件的功能、难度及完成情况占70%。同时,对于选题新颖、完成技术难度大及一人一组这三种情况还会予以相应的加分奖励。

其中文档部分包括:

1) 实验报告。包括实验题目、实验内容、小组分工及完成情况、实验遇到的问题、实验收获和感想等。

2) 需求分析文档。

3) 概要设计和详细设计文档。

4) 数据库设计文档(如果包括数据库的使用)。

5) 测试文档。

6) 用户使用手册。

7) 系统源程序。

这部分成绩主要根据文档的完成质量评分,包括文档的完整性和规范性、系统结构和数据库设计的合理性、源代码的规范性等。为了让学生较好的完成这些文档,我们提供了标准的模板和多份完整的例子供学生参考。

对完成的软件进行综合评判是课程考核的主体部分,我们的要求是小组的所有成员必须承担足够的编程工作,考核的主要依据是学生在网络平台上的编程能力。为此,老师和教辅(教辅均为编程经验非常丰富的博士生)组成的考核小组对每个学生的工作都进行了详细的考量:首先,由组长在计算机上介绍和演示完成的软件的各项功能,然后小组的每个成员介绍其在该软件中完成的具体工作,并找出相应的程序代码,由评分小组针对其完成的部分提出关于系统架构、技术路线、程序代码和实践感想等的各类问题。为了防止少数学生未进行相应的编程工作却妄图蒙混过关,我们还会要求部分学生现场对软件的功能或运行逻辑进行简单修改,以考察其实际的编程能力。最终评分主要根据其工作的难易程度、软件功能的合理性、新技术新方法的采用程度、开发工作量、界面的美观和友好程度进行评定;最后对于题目新颖、技术难度大的和一人一组的会根据情况给予加分奖励。

考核结束后,有部分学生因工作难度低,工作量较少而未能达到及格标准,我们本着教学目标为培养和锻炼学生能力宗旨,给予这些学生10天的时间来进一步完善和提高其工作,再组织第二轮评测,对于达到标准的给予及格成绩。

4教学效果

在2009年秋季学期的“网络编程课程设计”中,全部119名学生全都选修了本课程,其中网络工程专业48人,其他专业71人。学生自行分成了43个组。从完成情况看,其中选择给定题目的占多数,达到28个组,主要集中在聊天软件、白板软件、网络五子棋对弈和网站的开发上,而其他15个组学生为自选题目。

考核成绩呈现出较明显的两级分化现象。部分学生完成得非常好,选题新颖,工作难度大,完成情况也非常令人满意。部分学生明显敷衍了事,工作量小、难度低。极个别学生还妄图抄袭他人代码蒙混过关。最终的成绩是:选修本课程的119人中,第一轮评测中20人成绩不合格,25人成绩优秀(90以上),其中7人给了100分。在成绩不合格的20个学生中,有7人为网络工程专业,他们经过10天的努力,在第二轮评测中成绩达到合格;其余13人为其他专业学生,他们未做进一步的努力,最终成绩为不合格。

完成情况优秀的工作包括:基于某特定手机平台开发了纸牌拱猪游戏;基于目前非常流行的大型网游开发了游戏插件,可以帮助玩家自行调用和组合相应的必杀技帮助打Boss;开发的网络版三国杀纸牌游戏,逻辑非常复杂,其界面也非常美观;在计算机同时连接多个网络时,可以自动启动的支持并行网络传输的文件下载软件;针对国外某著名大学的题库网站开发的爬虫程序,能自动获取和更新题库的内容;能够自行收集多个网站的固定栏目,集新闻、天气、股市指数等为一体的网络桌面软件;针对多个邮箱开发统一的邮件提醒软件等。还有学生开发使用手机通过接入Internet进行语言聊天的软件,虽然最终没有成功,但是创意非常棒,且完成了相当的工作内容;这些工作有创意、有难度,且都有非常强的实际应用价值,对完成这样工作的学生,我们基本上都给了接近100分的高分。这些优秀的作品让我们也看到了,让学生自选题目以及我们给予的鼓励和帮助非常好地激发了部分优秀学生的学习热情,这些学生确实利用这次课程实践的机会进一步提升了编程能力。

从选题和成绩的分布上看,网络工程专业学生选择给定题目偏多,自选题目的学生绝大部分集中在其他专业上。网络工程专业的学生成绩集中在中等,而高分和低分更多地分布在其他专业。这表明,学生对待必修课有压力,选择相对保守,致力于确保通过;而对待选修课则心态比较轻松,可以选择自己更感兴趣的题目,把兴趣爱好和完成课程学习结合起来,在兴趣的激励下有的人可以做的很努力,结果也很好,不过也有人遇到挫折后由于缺少指导导致完成状况不佳。另外,自选题目主要集中在游戏上,而手机平台的软件开发也是新的热点,我们老师在这个方面的能力往往比较欠缺,应予以加强。最后,成绩最差的一些学生往往是在初始阶段不得要领,到了最后时刻才开始突击工作,导致工作量和工作难度严重偏低,这也要求我们要进一步加大初期的辅导力度,同时建立跟踪检查机制,以避免学生掉队。

5结语

根据“网络编程课程设计”课程的完成情况,我们认为还可以有针对性地做进一步努力,让课程的效果更上一个台阶。具体措施如下:

1) 根据上一年课程中学生的自选题目,对其中难度较大、但学生普遍较感兴趣网络应用,如网络游戏、手机软件开发等提供全面的支持,包括有关的学习资料、开发工具、典型案例和相关代码等。

2) 每年选定1~2个网络开发的新技术进行调研,做到全面了解,收集整理相关资源,并能用开发工具进行软件开发。

3) 在学校的教学平台上建立网络课程,由老师和学生在这个平台上共享资源,并进行交流。QQ群可以继续使用,但是有很多学生较少有机会使用国际互联网,可以利用往年由学生开发的局域网聊天软件,在校内网络中使用,使得交流更加快捷方便。

4) 建立一定的跟踪和监督机制,定期检查小组的工作进展和遇到的问题,防止某些小组长时间处于停滞状态,不得不最后时刻突击完成,而质量达不到课程要求。

总的来说,由于目前学校各个方面都更加注重学生实践能力的早期培养,使得越来越多的学生能够脱颖而出,具备了较强的创新意识和工程实践能力。因此,在一些课程的组织过程中,需要针对这些变化,更合理的安排课程的任务和组织方式,让这部分学生在课程中也能够得到更好的学习和锻炼。因此,我们在“网络程序课程设计”这门课程上,针对该情况对课程组织进行了一些探索,目前看取得了一定的效果,而且还有进一步完善和提高的可能,希望能够对本课程的建设提供一定的借鉴作用。

参考文献:

[1] 蔡志平,姚丹霖,周丽涛,等.“网络程序课程设计”的教学研究与探索[J]. 计算机教育,2007(10):18-21.

Research on the Teaching of Practice Course of Network Programming

REN Hao, ZHU Pei-dong, XU Ming

(Department of Network Engineering, School of Computer, National University of Defense Technology, Changsha 410073, China)

Abstract: This paper aim at the problem that the differences of student’s ability in programming are enlarged every year, which bring some puzzles to the teaching of network programming course. If the teachers take some well-chosen subjects as the work of students, all students will get normative and systemic training, but some good students already having such degree of ability will make no progress in this course. On the other hand, if allowing students choose subject according to their interests, some students with a weak foundation may be failed as the teacher can’t provide enough instruction for these subjects. In this paper, the authors propose some exploration and analysis for this course, which may be a good solution and a useful experience for those courses that have similar issues.

Key words: network programming; practice teaching; network engineering specialty(编辑:白杰)

上一篇:网络工程本科专业“3+1”培养模式 下一篇:计算机网络基础教学体验