郑秋华等
摘要:本文分析了“网络编程”课程教学中存在的问题,针对相关问题提出了具体的教学改革措施,编写了合适的教材,引入了“演示过程,讲练结合”“案例引导,任务分解”和“设疑自学,设错分析”等教学模式,并针对前期教学过程中考核评价出现的问题进行了改进。实践证明,上述教学模式比原有教学方法能让学生得到更多的动手操作锻炼,提高了网络编程能力。
关键词:网络编程;讲练结合;案例引导;教学改革
中图分类号:G434 文献标识码:A 论文编号:1674-2117(2016)10-0083-03
引言
随着计算机技术和通信网络技术的迅速发展,社会对网络人才的需求越来越强烈,网络编程在程序设计开发领域变得越来越重要。“网络编程”课程已成为计算机专业人才培养过程中的关键课程之一。[1-2]
目前,杭州电子科技大学计算机学院在计算机科学技术、网络工程和物联网工程三个专业开设了“网络编程”课程,该课程是计算机类专业中重要的专业课程,每学年选课学生有200多人。
现状分析
杭州电子科技大学计算机学院的“网络编程”课程,主要讲述基于C和C++语言利用socket API实现网络客户端和网络服务器编程,着重于底层socket接口的关键细节讲解和各种模型的服务器设计和实现。笔者所在学校的“网络编程”课程组的教师具有个人能力较强、理论基础扎实、知识面广、项目实践经验丰富和大型服务器程序开发经历的特点。在教学过程中,任课教师对课程的内容和知识点讲授比较到位,课堂内容设计也较符合社会实际需求,学生在学习过程中可以更深入地理解网络理论,熟悉各种网络编程技术,提高实践动手能力。但是,在教学实践过程中,笔者也发现了许多问题。主要有以下几个方面。
1.学生兴趣不持久
网络编程的学习在初期很容易引起学生的兴趣,但由于网络编程对学生的基础课程要求较高,随着学习的深入,学生所遇到的困难也越来越多。与其他课程相比,网络编程的程序代码量较大,普通的一个程序就可能在千行以上。而且很多大三学生仅仅具有程序设计的基础知识,没有编写过大型程序,解决实际问题的能力还很弱。程序过大,就会出现各种编程问题,这让很多学生产生了畏难情绪,使得他们不愿意更加深入地去学习。
2.缺乏合适的教材
市面上各种编程类书籍内容参差不齐,如何从中选择合适的教材是一件困难的事情,这个现象在“网络编程”课程中特别严重。总的来说,目前网络编程类书籍可分为以下几类。
(1)高校教师为了评职称或其他原因而编写教材。此类教材价格相对比较便宜,难度较为适合“网络编程”课程,但也存在许多问题,主要有:①内容过全、过多,重点不明确;②编写者缺乏工程经验,思维落伍,教材中所用技术已经淘汰。
(2)业界人员编写的网络编程书籍。此类书籍对编程者来说,有较强的工程实际经验,思维较先进,所用技术符合当前技术发展潮流,重点内容突出。但因为其面向对象不同,也存在一些问题,主要有:①价格高;②内容过全、过多;③内容过难,不适合初学者。
3.课时设置不合理
目前,“网络编程”课程虽然在网络工程专业中被列为专业核心课程,但课时只有48学时,因课程涉及简单TCP客户服务器模型、简单UDP客户服务器模型、多路复用客户服务器模型、多线程客户服务器模型、WSAAsyncSelect客户服务器模型、WSAEventSelect客户服务器模型、高级IO模型、协议设计、套接字选项设置等多项内容,教学课时明显不够,学生缺乏足够的课内学习时间。
网络编程教学改革实践
鉴于目前“网络编程”课程存在的上述问题,笔者提出对其教学模式进行改革,主要改进之处有以下几点。
1.结合各教材优势,自编教材
教材的选用,直接影响学生的兴趣和教学质量。因此,要尽量选用注重实践、有较多实例的教材。笔者发现目前并没有很适合笔者所在学院学生的教材,因此笔者通过借鉴《Windows Sockets网络编程》《UNIX网络编程》和《TCP/IP网络编程》等书籍,综合各家之长,结合学院学生的实际进行内容筛选,目前已经完成了自编教材的初稿,并在这学期进行了试用,效果较好。
2.优化教学模式
教学中要注重培养学生的实践能力、创新能力,因此必须要创新教学方法,采用多种教学手段,以达到良好的教学效果。在几年的网络编程教学中,笔者主要采用了以下教学模式。
①演示过程,讲练结合。在“网络编程”课程中,教师不仅要对知识内容进行讲授,而且还要对IDE环境和UI开发进行讲解。对用于演示知识点的系统代码,也在课堂上进行现场编写,从而提高了学生的动手能力和思考能力。
②案例引导,任务分解。[3]教学过程中多采用实例,利用step by step的方式来培养学生解决问题的能力。目前“网络编程”课程设计采用的主案例是C/S模式的聊天室开发。讲解简单的UDP客户服务器模型时,利用UDP方式实现相关程序;讲解多线程客户服务器模型时,则通过将UDP方式实现的聊天室程序修改为利用TCP和多线程方式;讲解多路复用客户服务器模型时,则将多程序TCP实现方式修改为多路复用方式实现,并加入多数据包重组功能;WSAAsyncSelect客户服务器模型阶段,则将聊天室程序客户服务器端都改为WSAAsyncSelect模型方式实现;讲解WSAEventSelect客户服务器模型知识时,则将服务器改为用WSAEventSelect实现。使用上述方式,让学生能学会用多种技术模型来实现系统,并了解它们之间的优缺点,同时使得学生在学习每个知识点时工作量不太大,能将精力集中在模型知识本身。
③设疑自学,设错分析。在教学过程中,教师要求学生实现上述所有编程模型,并通过上机验收。与此同时,在程序实验中,教师人为加入一些Bug,要求学生进行改进并实现私聊、文件传输等其他功能。利用这些方式培养学生的自学能力,让其进行自学摸索。
3.完善考核评价体系
教学过程中的一个重要环节就是教学效果评价,教师对学生能否做出正确、客观、科学的评价,将在很大程度上影响学生的学习态度和学习兴趣。[4]
为了保证学生在课后主动动手编程,课程组设置了6个知识点的编程小作业,并要求对各知识点的程序进行上机验收。在前期实践过程中,笔者由于没有规定验收截止时间,导致很多学生在后期才完成实验,使知识点的衔接不连贯,给课程讲解带来了一定的困难。
为了解决这个问题,课程组在后续教学实践中加入了验收截止时间,并在课程学习群中及时公布验收情况。
参考文献:
[1]吴博.“任务驱动教学法”在“网络编程”课程教学中的应用[J].中国大学教学,2010(7).
[2]郑秋华,胡维华,姜明.基于复杂网络的课程体系分析方法[J].计算机教育,2014(20).
[3]高应波.《计算机软件技术与应用基础》教学中案例任务驱动教学法的应用研究[J].软件导刊:教育技术导刊, 2007(04):23-25.
[4]郑秋华,张祯,姜明,徐明.基于项目驱动的“网络编程”教学模式[C].浙江省计算机教学研究与实践2015学术年会论文集.
项目资助:本文为浙江省“十二五”新兴特色专业“网络工程”(重点方向:网络安全)建设项目(编号:GK140105205048)研究成果。