您好, 访客   登录/注册

项目驱动的程序设计课程改革与实践

来源:用户上传      作者:

  摘 要:程序设计类课程是计算机专业基础课程,也是非计算机本科的基础选修课程。通过分析语言教学现状,针对传统程序设计课程中学生参与度不高的问题,提出基于项目驱动的团队协作教学模式。课堂教学以网络爬虫系统设计为模拟项目,通过改变语言教学体系,不仅激发了学生學习兴趣,而且提高了学习效果,有效培养了学生的计算思维与综合协作能力,使学生课堂参与度接近90%。
  关键词:项目驱动;团队协作;程序设计课程;爬虫系统
  DOI:10. 11907/rjdk. 192344 开放科学(资源服务)标识码(OSID):
  中图分类号:G434 文献标识码:A 文章编号:1672-7800(2020)002-0180-04
  英标:The Reform and Practice in Project-Driven Programming Course
  英作:CAO Xiao-ye
  英单:(School of Computer Science and Engineering, South China University of Technology, Guangzhou 510640,China)
  Abstract: Programming course is the basic course of computer specialty. It is also the basic elective course for non-computer undergraduate. Based on the analysis of the current situation and problems in language teaching, in order to solve the problem of insufficient participation of students in traditional programming courses, this paper proposes a project-driven teamwork teaching model. Classroom teaching takes the design of web crawler system as a simulation project to change the language teaching system. This model not only stimulates students’ interest in learning, but also improves their mastery of classroom content, so that students can constantly improve their computational thinking and comprehensive collaborative ability in the process of learning. Students’ participation in the classroom is close to 90%.
  Key Words: project driven; team cooperation; programming course; crawler system
  0 引言
  计算机课程特点决定了教学需要以实践为基础,培养学生的创新能力与动手能力。目前高校程序设计类课程主要采用传统教学模式,以理论指导实践为原则,以教师为中心,而忽视了对学生应用能力的培养。基于项目的教学法就是为解决这一问题而提出的。本文通过在计算机课程,主要是程序设计类课程中选取合适的项目,将传统教学方法与现代教学方法进行有机结合,以激发学生的学习积极性;从结构、算法及代码等不同方面培养学生的实践能力以及分析、解决问题的能力;教学以学生为中心,提升学生的学习主动性。
  项目驱动的教学是基于建构主义理论发展起来的,其核心教育理念是让学生学会积极解决问题,并构建自己的知识框架;强调在“做中学”,认为一切学习都源于经验,主张学校学习要与实际生活相联系,按照人类解决问题的思维方式安排教学活动。项目驱动教学法在国外已成为一个研究热点,并形成一种教育教学理论。1979年,博雷泊最早将这种教学理论应用于语言教学实践中;1987年,耶登提出应用任务型教学法设计课堂教学的过程、具体步骤与相关技巧。目前国内对项目驱动教学法的研究大多集中于一线教育工作者,一线教师根据自己的教学实践提出各自的教学模式与教学过程。虽然在操作过程上有所差异,但都是以学生为中心,强调项目设置与小组协作[1,3]。
  针对国内外目前主要教学案例,本文参考探究式教学、案例教学等教学模式,提出以学生为中心,以项目为载体。在教学活动中,学生在教师的组织与引导下,自主完成一个具体且有实际应用价值的产品设计开发。学生在设计开发过程中学习专业知识,实现对所学知识的融会贯通,并对其作进一步深入探索。
  1 项目驱动教学模式
  1.1 项目驱动教学模式涵义
  项目驱动教学模式是教师通过设计一个典型“项目”而开展的教学实践活动。项目选取以从简单到复杂、从单一到综合为原则,将教学知识点融入其中。引导、启发、鼓励学生以小组为单位,通过教师的理论讲解先掌握相关基本知识点,然后分配学习任务,开展项目实践活动,使学生在实践中发现问题,从而加深对知识的理解。完整的项目实践使学生能够将相关知识点融会贯通,并将理论与实践相关联,在真实情景中学习,增强知识迁移能力[1]。
  1.2 教学模式特点
  项目驱动教学模式以学生为中心,在整个教学活动中,学生是完成项目的主体,教师是项目设计者,以项目为主线,将知识点包含在整个项目过程中,学生通过项目接收与掌握知识点。其主要特点如下:①对于学生而言,提供了发展如计算思维、合作沟通能力等综合技能的机会,相比传统课堂教学,其对学生自主学习能力的要求更高,培养了学生的学习自信心,改善了其学习态度;②对于学习过程而言,学生带着问题寻找解决方案,在学习活动中不断对方案进行评估,不断反思学习活动中的失误,在特定框架内作出决定,可活跃课堂气氛,提升学生学习热情;③在知识传授方面,教师从关注知识与技能转变为关注学生,从给出知识与技能转变为引导学生进行自主学习,学生从被动学习变为主动学习,从个体学习转变为合作探索学习;④在课程教学内容修订方面,在原有课程内容中强化课程理念,在项目案例设计中注重调动学生的主动性与积极性,强调对学生科学研究精神与职业道德的培养[2]。   2 项目设计与实施
  项目选择对于课程改革效果起着至关重要的作用,教师在项目选择上要遵循以下原则:①项目一定要能用到课程相关知识点,使学生能将理论知识与实践技能相结合;②项目要有一定的实际应用价值,让学生在完成项目过程中获得成就感;③项目要难易适中,太难的项目学生可能会选择放弃,太容易则缺乏挑战性,无法调动学生的积极性。项目选定之后,教师首先要通过一定理论讲解让学生掌握基本知识点,然后让学生以小组为单位,根据不同分工划分角色,明确各个角色的学习任务,引导学生开展项目实践活动。让学生按照软件生命周期,完成需求分析、软件设计、编码实现及软件测试等环节,通过小组答辩展示课程学习成果[3]。
  整个项目设计与实施包括项目设计、项目实施与答辩几个环节,在每个阶段要求学生提供关键性文档材料或完成作品,比如设计阶段要有需求说明文档,实施阶段要有详细功能设计文档,答辩环节要有完成作品的系统展示。这些关键性的验收资料确保教师能全过程地跟踪学生学习进度和学习情况,并进行阶段性检查与控制,以保证学生按照计划完成项目。
  3 项目改革实践
  在高级语言程序设计课程中,课堂教学以网络爬虫系统设计为模拟项目,改变了传统语言教学体系,不仅激发了学生学习兴趣,而且提高了对课堂内容的掌握程度,有效培养了学生的计算思维和综合协作能力。
  网络爬虫是一种自动抓取网页,并解析与提取网页内容的程序。网络爬虫从一个给定的URL(Uniform Resource Locator)种子集出发,下载种子集中URL对应的网页并解析网页,提取新的URL加入URL队列,同时存储目标资源,如文字、图片、视频等,逐条访问队列中的URL,直到URL队列为空或爬虫任务目标达成为止[4]。
  爬虫项目实施步骤一般分为数据采集、数据处理与数据存储3个阶段[9]。第一步数据采集是指获取想得到内容URL中的html内容,然后经过第二步处理得到相应字段,最后通过第三步存储到数据库表中。爬虫功能详细设计流程实例如图2所示。
  本设计中爬虫功能实现主要流程如下:①访问百度题库考研政治目录,获取各个章节题目数量及章节ID等信息;②通过对各章的chapterid等参数进行拼接,形成各章节题目对应的URL链接;③将各章题目的qid等信息存储到临时变量中;④通过对qid和题目详情信息URL的拼接,获取unicode 编码题目信息的html文本信息;⑤通过手写一个工具类UnicodeToCN 将unicode字符转化成中文字符;⑥通过Java正则表达式获取题目各字段信息;⑦利用上述试题信息建立相应试题类对象,并插入到数据库中。
  主题爬虫在常规爬虫基础上添加了主题相似度计算模块。主题爬虫设计目标是优先爬取与主题最相关的网页,过滤与主题无关的网页,以此限定主题爬虫搜索范围,提高工作效率。主题爬虫一般工作流程如下:由用户预先指定目标主题,给定URL种子集;下载种子集中URL对应的网页,解析网页并提取新的URL;根据主题相似度计算算法预测URL与主题相关度,过滤与主题无关的URL;将与主题相关的URL加入URL队列,并且根据主题相似度从高到低排序,优先爬取与主题相似度高的URL对应页面,同时储存任务目标资源,如文字、图片、视频等,直到URL队列为空或爬虫任务目标达成为止[5-6]。
  融合LDA的卷积神经网络主题爬虫适用于有充足标签化语料,且目标主题属于语料标签集范围内的情形[7]。如图3所示为主题爬虫工作流程:①设定URL种子集和目标主题,URL调度器初始化URL队列;②从URL队列中取一条URL,记录URL相似度,爬取URL对应网页,交给HTML解析器;③HTML解析器解析网页,提取所有符合设定提取规则的URL,以及主题相似度计算依据的文档;④用训练好的LDA主题模型计算文档主题向量,用训练好的word2vec模型将文档转化为词向量矩阵,输入卷积神经网络文本分类器;⑤得到网页文档的主题相似度,如果相似度高于设定阈值,从当前网页保存目标资源,同时赋予提取的URL相似度权重,加入URL队列,如果相似度低于设定阈值,则舍弃该网页与所有URL;⑥URL队列进行URL去重,按照URL的相似度排序;⑦重復步骤②~⑥直至URL队列为空,或爬虫任务目标达成为止。
  其中,URL去重是爬虫不可或缺的部分。爬虫记录已爬取过的URL列表,并对后续提取到的相同URL进行过滤,以避免重复爬取同一页面。实验中使用的方法来自python爬虫框架scrapy,对URL进行MD5处理再存储到哈希表中。MD5是一种消息摘要算法,能将较长的URL字符串转化成128位散列值。该方法能较好地避免冲突,对内存需求也较低。URL队列使用的数据结构是优先级队列,能快速查找相似度最高的URL并自动进行排序[8]。
  分类问题评价指标主要有召回率(recall)、精确率(precision)和F1 Score。
  主题爬虫相关文档可以分成4组:主题爬虫爬取到的相关文档(A)、主题爬虫爬取到的不相关文档(B)、相关但主题爬虫没有爬取到的文档(C)、不相关且没有被主题爬虫爬取到的文档(D)。
  则召回率recall:
  [recall=AA+C]
  精确率precision:
  [precision=AA+B]
  F1 Score:
  [F1Score=2*recall*precisionrecall+precision*100%]
  召回率体现主题爬虫爬取与主题相关文档的能力,精确率体现主题爬虫判断文档是否属于该主题的能力,两者通常呈负相关,所以同时采用F1 Score值作为综合评价查全率与查准率的指标。
  4 项目实验与评价
  为了验证项目系统在实际网络环境中运行的性能,设计了简单的验证实验。实验爬取目标是百度百科词条页面,设定爬取主题为“体育”。使用python模块requests爬取网页,然后使用python模块BeautifulSoup解析爬取到的网页,以提取想要的内容。   用于判定相似度的文本取自页面的词条说明文本,其HTML标签为<div class=“lemma-summary” label-module=“lemmaSummary”>,提取URL的逻辑采用URL链接中包含‘/item/’的URL,总计爬取1 000个页面。
  注意到每个页面都有一个内置的关键词列表,位于HTML标签<meta name=“keywords” content=“”>的content属性中。因为没有确切的网页标签,所以将该关键词列表中包含“体育”关键词的页面作为主题相关页面。
  在运行过程中将词条说明文本输入主题相似度计算模块,计算网页主题相似度并加入URL队列,对后续提取到的相同URL进行过滤去重。URL队列是优先级队列,会自动按照权重排序。URL调度器每次选取相似度权重最高的URL优先进行爬取。
  实际运行结果统计如表1所示。
  从实验结果可以看出,融合LDA的卷积神经网络(LDA-CNN)相比传统卷积神经网络(CNN)主题爬虫具有一定性能优势。
  5 效果与结论
  通过采用基于项目驱动的教学方法,实施改革的班级与以往班级相比,学习效果明显提高,突出表现在:①学生学习主动性高于传统课堂,气氛活跃,学生参与性高;②学生程序设计综合能力提高,很多学生在程序设计大赛中取得优异成绩;③学生创新意识增强,个别小组对项目提出改进与创新方案,培养了学生自我构建知识、运用知识与知识创新的能力。项目驱动教学模式有力推动了计算机课程教学的创新发展,对于其它课程的教学改革也有一定参考价值。
  参考文献:
  [1] 张文晓. 任务驱动法在计算机文化基础中的应用[J]. 中国教育技术装备, 2013(12):88-90.
  [2] 许太安. 高校《计算机文化基础》课程教学改革探究[J]. 教育教学论坛, 2014(36):285,289.
  [3] 张敏. 以计算思维为导向的C语言程序设计课程案例教学法研究[J]. 微型电脑应用,2015,31(9):63-65.
  [4] 王金峰,彭禹,王明,等. 基于网络爬虫的新浪微博数据抓取技术[J]. 中小企业管理与科技(上旬刊),2019(1):167-168.
  [5] 于娟,刘强. 主题网络爬虫研究综述[J]. 计算机工程与科学,2015(2):231-237.
  [6] GUO S,BIAN W,LIU Y,et al. Research on the application of SVM-based focused crawler for space intelligence collection[J]. Electronic Design Engineering,2016,17:28-30.
  [7] 汪岿,费晨杰,刘柏嵩. 融合LDA的卷积神经网络主题爬虫研究[J]. 计算机工程与应用,2019(11):123-128.
  [8] 田磊. 主题爬虫搜索策略的设计与实现[D]. 北京:北京邮电大学,2017.
  [9] 卢爱臣,魏建宇,马文彬. 以项目为牵引的计算机CDIO创客教学模式研究[J]. 软件导刊(教育技术),2019, 18(3):36-37.
  [10] KALCHBRENNER N, GREFENSTETTE E, BLUNSOM P. A convolutional neural network for modelling sentences[C]. Proceedings of the 52nd Annual Meeting of the Association for Computational Linguistics,2014:655-665.
  [11] 蔡光波. 面向主題的多线程网络爬虫的设计与实现[D].兰州:西北民族大学,2017.
  [12] 赵涛,张恩旭,黄家才,等. 基于项目驱动的混合式教学探索与实践[J]. 电气电子教学学报,2017,39(5):89-92.
  [13] 谢方方,谢志英,李艳. 基于“思维导图”的《C语言程序设计》课程教学改革探讨[J]. 软件导刊(教育技术),2019,18(3):26-28.
  [14] 王欣,张毅. 基于“项目驱动”的新型教学模式研究[J]. 东北电力大学学报,2012(2):112-115.
  (责任编辑:黄 健)
转载注明来源:https://www.xzbu.com/8/view-15224377.htm