秦董洪,葛丽娜
(广西民族大学信息科学与工程学院,南宁 530006)
《网络编程》教学改革研究与探索
秦董洪,葛丽娜
(广西民族大学信息科学与工程学院,南宁 530006)
针对《网络编程》课程特点,结合学生实际情况以及用人单位的技能需求,分别在教学内容组织、教学方法、编程实践、考核方式四方面进行教学改革研究与探索,在实际教学中取得较好的教学效果。
网络编程;教学内容组织;教学方法;编程实践;考核方式
随着互联网技术及其应用蓬勃发展,对计算机类专业学生来说,除了熟练掌握当前主流的编程语言(如C++)以外,还需要掌握相关网络编程技术。《网络编程》作为《计算机网络》的后续课程,在计算机类专业课程体系中占有十分重要的位置,是计算机类专业的必修课。本课程要求学生在理解计算机网络的基本理论的基础上,运用Java语言进行软件开发,具备开发网络软件系统的能力。
2.1 理论教学
《网络编程》是一门理论性与实践性相结合的课程,它不仅涉及到计算机网络理论,如网络分层模型[1],而且涉及到与各层有关的网络系统开发。根据我校学生的专业情况和就业需要,课题组只针对网络分层模型中的应用层和传输层进行了重点讲授;开发语言选择了支持互联网、具有跨平台特性的Java语言。为统一学生的编程知识,我们对Java的基础知识进行了简要的回顾复习,增加了多线程、I/O数据流以及界面设计等内容,并根据课题组的教学改革共识,重新编制了理论教学的知识结构(如图1所示)。
图1 课程内容体系结构图
为了便于教学,我们根据《网络编程》教学大纲,筛选了一些核心知识点。
●界面设计(UI Design):介绍如何编写用户与系统交互的操作界面,以实现信息的录入与系统结果的显示。
●多线程技术(Multi Thread):介绍在网络环境下多任务并发操作的实现技术。
●流套接字(Stream Socket):是基于TCP/IP协议的传输层接口,提供面向连接的可靠的数据传输服务。
●数据报套接字(Datagram Socket):是基于UDP协议的传输层接口,提供面向无连接的、“不可靠”的数据传输服务。
●数据库连接(JDBC):是Java进行数据库设计的编程接口。
●后端应用程序(Servlet):是一种接收客户端请求并构建动态Web页面的Java程序。
●组件模型(JavaBean):是一种Java语言编写的可重用组件。
●Structs是一个MVC框架,包括3个核心的模块:模型(Model)、视图(View)和控制器(Controller)。模型是由实现业务逻辑的JavaBean组件组成,在Struts框架中对应的是ActionForm;控制器由ActionServlet和Action来实现;视图就是由一组JSP文件构成。
●Hibernate是一个基于Java的开源的持久化中间件,它对JDBC做了轻量的封装,它提供了对象-关系的映射服务(Object/Relation Mapping,ORM),把关系数据库转化为对象。
●Spring是一个支持J2EE开发的轻量级框架,它由IoC(反转控制)、AOP(面向方面编程)和Spring抽象服务构成。
2.2 实验教学
《网络编程》的首要目标是提升学生的网络系统开发能力。软件开发水平的高低取决于知识掌握程度及其运用能力的高低,因此知识运用或实验教学也将成为课程所关注的重要环节。
为了增强学生编写实际项目的体验以及培养团队合作能力,课题组选择了我校的合作企业“广西应龙高科技公司”的“互联网订餐交易系统平台”作为课程的实训项目。针对实际教学需要,课题组按照知识点设置情况将项目划分成若干基于知识点的模块程序,以达到对相关知识点的巩固和运用。实训项目的具体分解与模块程序的设计详见表1。模块程序的设计遵循了两条基本原则:(1)与课程的重要知识点一一对应,要有较强的针对性与启发性。程序是针对某类知识点设计的,可以解决特定的技术问题;同时也要有一定启发性,能触类旁通地解决其他相关的技术问题;(2)程序要有明确的目标和完整的结构。学生应在确保程序完成特定目标以及具有输入、处理、输出的完整结构以外,要自觉养成探索意识,利用各种知识灵活解决实际问题。
传统教学通常采用“教师主讲、学生受听”的教学模式,其弊端在于它是一种“填鸭式”教学,无法充分发挥师生的主观能动性。为此,课题组探索了“以教师为主导,以学生为主体”教学模式。该教学模式要求教师和学生都应成为教学活动的积极参与者,即教师负责课程知识点的讲授与梳理;学生课后根据教师的要求自主地进行巩固和拓展学习。为了充分发挥师生的主观能动性,我们将整个教学划分为四种基本活动类型:理论讲授、专题汇报、成果演示、自主学习。理论讲授是在课堂上以教师为主并由师生共同完成,教师通常概括、选择性讲授一些重要的知识点,要求学生课后拓展学习。专题汇报就是教师安排某些学生就某个专题进行文献调研,分析并整理学习材料,然后在课堂上进行汇报。成果演示是在实验室以学生为主并由师生共同完成,学生在掌握理论知识的基础上,结合教师布置的任务要求,通过自主探索、同学讨论、互相帮助等完成初步作品,然后将该作品提交给教师验收。自主学习就是要求学生利用课余时间进行探索式学习,对教师讲授内容的深入研讨和拓展,或者运用知识编程实践。在这四类教学活动中,自主学习是以学生为主体的重要教学活动,学生要有深刻认识,因为自主学习活动开展的质量将最终决定学生的学习效果与收获。
3.1 教师讲授
在传统教学中,教师通常要讲完课程所有知识点并试图让学生理解和掌握。在有限的时间(课时)和空间(课堂)内要求教师有效完成这些任务是非常困难的,也是不现实的。为了鼓励学生自主探索学习,教师应在课堂上采用“概括讲授”的方法,即教师串讲有关重要的核心知识点,重点布置学生需自学巩固的内容以及待完成的作业。学生在课后可以探索学习:通过上网搜索相关知识、到图书馆参阅相关文献,达到熟练掌握课堂教学内容;通过与同学讨论交流,增进对知识的理解;通过动手编程实践,运用所学的技术编写高质量的软件程序。
3.2 学生团队组建与汇报
课程开课后,教师将全班学生分成若干学习小组。根据教师布置的课程任务,小组成员之间要分工合作,交流讨论,然后在课堂上集体汇报学习成果。具体任务包括:(1)确定成员分工。各小组在获得教师布置的项目开发和课堂讲授的任务后,根据任务的实际情况,成员之间要做好合理分工,明确各成员的具体职责,确保整个任务顺利完成。(2)讲授内容的选择与组织。学生要顺利完成课堂讲授,具有一定的挑战。这需要团队成员认真研读课程内容,选择汇报内容,在充分交流讨论的基础上对汇报内容要达成共识。(3)课件制作。要精心设计演示文稿(PPT),对于报告内容,既要重点突出,又要条理清楚。(4)课堂汇报。要求成员在课堂上介绍有关技术知识和项目开发情况,并面向其他同学进行答疑。
在小组报告后,教师和其他同学可以进行提问和点评。其他学生可以对本报告的重点或难点、或者自己不清楚的问题,进行提问并要求回答,也可以直接指出报告中存在的问题。在教师点评阶段,针对整个报告的组织与演示进行评价,例如报告内容的选择,PPT课件制作、项目开发的可行性等。另外,教师可以针对学生没有讲到的重点内容进行补充说明。
表1 项目及其程序模块一览表
为了有效地巩固课堂教学效果,培养学生运用技术知识解决问题的能力,需要在整个教学过程中进行针对性的编程训练。根据多家用人单位对实验教学的要求,课题组精心编制了实验模块,如表1所示。首次上课时,教师除了介绍课程教学目标、教学内容、考核要求之外,还要完成两项工作:(1)介绍课程项目情况及其程序模块的划分;(2)要求学生自行组建团队。为了便于统一考核,课题组选择了“互联网订餐交易系统平台”作为实训项目,然后将项目分解成7个模块程序,这样保证了项目与实验程序的合理性,也有利于实验程序的重用,在不增加任务的情况下,达到对各技术知识的单项训练和综合训练的目的。关于团队组建,考虑到团队的合作效率与质量,团队人数设定为5人,每个团队都要完成项目开发和5个模块程序,每个成员至少要参与2个模块程序编写。第一次上课结束后,教师要将相关的技术资料与项目资料发给学生,以便尽早进入项目开发阶段。
在具体编程实践方面,课题组要求学生按时按质完成教师布置的各项任务。实验设计包括了7个程序模块和1个软件项目,前者是以巩固和应用专题知识的小型程序设计,后者是用于整合的网络软件项目。为了提高学生的编程效率和质量,课题组针对两类实验分别设计了相应的开发框架模型。
4.1 面向小型程序的开发框架
为了简化编程逻辑,课题组开发了IPO开发框架模型,强调以输入(I:Input)、处理(P:Process)和输出(O:Output)为思维重点的开发框架模型。
图2 简易程序的开发框架
从逻辑上讲,软件程序通常包含输入(Input)、输出(Output)和数据处理(Process)三部分。数据输入I的来源可以是输入设备(如键盘、鼠标等),磁盘文件或网络设施。数据输出O的目地可以是输出设备如屏幕、磁盘文件或网络。对于数据输入输出,系统还可能包括交互界面的设计与开发,即UI编程。数据处理P一般是指业务处理,以可以称为算法。在比较复杂的程序设计中,数据处理P分为数据访问处理、业务处理、逻辑处理等。编程实践中采用了IPO框架模型来对简单程序进行分析、建模,IPO模型将一个程序从逻辑上划分为三部分,将有助于理清程序设计与实现的思路,使得学生对整个程序的分析与开发演变为从输入、输出和算法三个角度入手,简化了程序的设计。然后有重点地去分别考虑使用那些中间件或组件来设计和实现这三部分。
4.2 突出项目实战的网络系统开发框架
项目实战有利于培养学生组织项目开发的能力,为此按照软件项目的生命周期来进行项目开发,包括需求分析、系统设计、系统编码三个阶段。
需求分析。该阶段主要目的是根据项目情况分析项目的功能需求并制定需求清单。项目开发中最重要的环节之一就是对软件系统进行需求分析和功能分解。需求分析是行业领域知识与需求工程相互结合的产物。尽管这两者不属于纯粹的“网络编程”的技术,但对于项目开发是至关重要的。需求分析要在充分掌握和行业领域知识和需求工程的基础上进行,而功能分解就是在需求分析的基础上,编写系统总体功能结构图,并对功能结构图中各模块功能进行准确的描述说明,为系统设计奠定坚实的基础。
系统设计。系统设计就是绘制软件系统的结构蓝图,包括三方面工作:一是系统架构和设计模式的选择。例如采用P2P、CS还是B/S架构。二是界面设计,包括输入和输出界面。初步的界面设计可以使用Pho⁃toshop等画图软件绘制。三是核心算法设计。核心算法一般指对于系统的安全、可靠和效率有重要决定性的代码。根据项目情况,要精心选择并编制核心算法。系统编码。按要求编写系统要求的各个模块。为了编写高质量的程序代码,养成良好的编程习惯,学生应做到如下三点要求:(1)严格遵守编程规范,包括变量、函数命名,友好的程序注释等;(2)统一函数模块接口要求,便于接口的使用和修改;(3)可重用的组件开发。在日常编程中,学生要有意识地编写一些公共组件,并重复用于以后的项目开发中。
考核评价是测量学生知识与技能掌握程度、考核其能力的重要手段。考核评价体系主要包括测量项与指标项的设置以及互相之间比例关系的确定。网络编程课程的测量项目主要包括作业、测验、实验、专题汇报、课程报告。设测量项为pi,i=1…n(n为测量项的数目),ai表示测量项目的权值。最后课程成绩S可由如下公式计算:
表2 测量项与权值
在考核评价体系中,许多高校都将沟通、表达能力的培养作为培养目标的重要组成部分。鉴于此,我们也将沟通与表达能力的考察引入到成绩评价体系中。例如,在项目演示测试项中,考虑用技术、写作与口头表达三指标来综合评价,其权重分配如下:技术占30%,写作占35%,口头表达占35%。今后计划将这种细化评价也推广到其他测试项目之中。
针对《网络编程》课程教学中存在的挑战,课题组通过学生代表座谈、用人单位现场走访等方法,梳理了教学中可能存在的原因,提出相应的教学改革共识:精心选择教学内容、采用“以教师为主导,以学生为主体”教学模式、以项目实战为载体的编程实践。通过与学生座谈并结合实际考核结果发现,与课程教学改革之前相比,学生对网络编程课程的认识以及软件工程师的素质教育得到了一定程度的锻炼,经过该课程的学习,具备了未来软件工程师的一些基本素质。这表明课题组提出的教学改革方法在网络编程课程教学中已经取得了预期的良好效果。
[1]叶树华.网络编程实用教程[M].北京:人民邮电出版社,2015.
[2]郭珍,王国辉.JSP程序设计教程(第2版)[M].北京:人民邮电出版社,2013.
[3]刘永华,于春花.Java网络编程技术[M].北京:清华大学出版社,2009.
[4]杨磊,陈凌云.精通Eclipse Web开发-Java体系结构、工具、框架及整合应用[M].北京:人民邮电出版社,2006.
Abstract:According to the characteristics of network programming course,combining with the student current situation as well as job skill needs,shows some research and exploration in the following aspects such as teaching content organization,teaching method,programming experi⁃ence and assessment way.And all these reforms have achieved some better results in the teaching quality.
Keywords:Network Programming;Content Organization;Teaching Method;Programming Experience;Assessment Way
Research and Exploration of Network Programming Teaching Reform
QIN Dong-hong,GE Li-na
(School of Information Science and Engineering,Guangxi University for Nationalities,Nanning 530006)
1007-1423(2017)25-0036-05
10.3969/j.issn.1007-1423.2017.25.010
广西高等教育本科教学改革工程项目(No.2015JGA193)
秦董洪(1974-),男,广西全州人,博士,副教授,研究方向为计算机网络、算法设计
葛丽娜(1969-),女,广西南宁人,博士,教授,研究方向为计算机网络
2017-08-11
2017-08-30