公安院校基于python语言的程序设计网络课程教学探索

2019-10-29 06:20杨兴春张明旺
四川警察学院学报 2019年4期
关键词:爬虫面向对象程序设计

刘 衍,王 刚,杨兴春,张明旺,徐 红

(四川警察学院 四川泸州 646000)

一、问题的提出

随着互联网的蓬勃发展,网民规模不断壮大,新型网络犯罪大量产生,涉网案件数量在不断增加,监控、维护网络安全的工作面临巨大挑战。国务委员、公安部部长郭声琨在全国公安机关网络安全保卫工作会议上强调:“各级公安机关要深入学习贯彻习近平总书记关于维护网络安全的重要指示及网络安全和信息化工作座谈会精神,深刻认识新形势下加强网安工作的重要意义,着力提升维护网络安全能力,积极推动网络社会治理创新,坚决维护网络公共安全,为营造风清气正的网络空间、推进网络强国建设作出新的更大的贡献[1]。作为培养预备警官的公安院校,有义务为公安机关输送合格的网络安全执法技术人才,打击日益高发的网络犯罪,维护网络空间安全。

近年来,公安院校积极探索适合公安技术类专业面向实战的网络课程改革,大力提升培养具备信息化实战知识技能人才的能力,取得了显著成效。但是,在大数据、云计算、人工智能等新技术快速兴起的背景下,如何紧紧跟上技术进步的节奏,仍然需要不断探索。例如,面向网络安全与执法专业开设的面向对象程序设计课程,普遍讲授的是C++语言。由于C++语言语法繁琐、入门困难、多用于软硬件系统开发、设备驱动等,对网安实战需要来说,适用性不是很强,应适时进行调整补充。我们考察,国内外很多高校已经开展python 程序设计语言教学。Python 语言,既支持面向过程也支持面向对象,功能强大且入门简单,是目前最流行的程序设计语言。网络安全从业者与网络黑客在网络攻防较量中基本都在使用Python,甚至人工智能的实现也需用使用Python。因此,网安储备技术人才应当具备Python 技能。鉴此,本文就面向对象程序设计课程的开设提出几点初步探索。

二、Python语言的优势

(一)Python语言特点

Python语言自诞生以来,作为一种“胶水”语言,在统计分析、科学计算可视化、人工智能、机器学习、深度学习、系统运维等几乎所有专业和领域得到了广泛使用,是最受欢迎的程序设计语言之一。近年来国内有几百所高校的多个专业选择使用Python作为程序设计入门教学语言或者作为各专业扩展课程。

Python语言具有简单易学,免费开源的特点。用python编写程序,无需关心硬件底层细节,无需编译链接。它既支持面向过程编程也支持面向对象编程,可以移植到多个平台与其他语言例如c、c++进行扩展和嵌入。它提供了丰富强大的标准库,无论实现什么功能,都有现成的、相似的类库可以使用。随着版本的不断更新和语言新功能的添加,越来越多被用于独立的、大型项目的开发。

(二)Python的开发环境

Python 可在多平台上使用,比如Windows、Linux、Unix 和Mac 等,它也可以在Java 和.NET 虚拟机上使用。在Linux中写的Python程序,也能在Windows中运行。

学习Python程序设计,首先需要搭建开发环境。安装Python后,自带内置的解释器,可以命令行交互环境中编写代码运行程序。

除此之外,支持Python的集成开发环境(IDE)有很多,例如PyCharm软件是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高效率的工具,支持Django框架下的专业Web开发,也方便跟相关GUI进行配合界面开发。例如Eclipse软件可以集成多个插件实现多种开发环境搭建,使用各种编程语言不需要切换IDE。

(三)开设Python程序设计网络课程教学的必要性

Python 是最好的程序设计入门语言,是最先进的程序设计语言,也是国际上最流行的程序设计语言。在大数据时代背景下,各行各业都在加速人工智能替代演变。Python 的分布式爬虫用于网络数据采集,分布式计算、机器学习用于数据分析,已在各高校课程中陆续开展。据中国互联网信息中心《中国互联网络发展状况统计报告》显示,截止2018 年12 月,我国网民规模为8.29 亿,互联网普及率达59.6%,普及率呈逐年增加的趋势[2]。随着“互联网+”的飞速发展,网络安全问题日益严峻,涉网犯罪案件数量趋势逐年上升。公安工作模式需要做出相应转变,积极应对。公安院校在公安专业人才的培养中,也需要积极探索,紧跟科技进步,顺应时代发展。以四川警察学院为例,其网络安全与执法专业开设计算机网络、网络安全技术、网络攻防等系列专业课程,在常规教学的同时,师生积极开展参与各类网络安全技能竞赛。在此过程中,有关教学环节经常用到专门用于网络安全渗透和测试的开源操作系统Kali Linux,效果甚佳。由于Kali Linux系统中已经安装配置好python 环境,这为我们进行安全测试实验和维护(例如主机扫描,数据包注入,数据嗅探,远程攻击主机等等[3])提供了极大的便利。

目前,以“课堂教学”和“网络课程”优势相结合的混合式教学方式得到了越来越多院校的推广,也取得了良好的教学效果。比如,使用音频、视频、微课、协作学习等多种网络技术,用交互的形式设计课程协作学习。线下学生通过网课学习Python的语法和程序设计流程的知识点,学生通过角色分工、组队协作的方式完成代码开发、运行调试、程序发布等任务,促使全体学生充分参与课程。再比如,网络课程师生可以共同分享课件、案例、课程资料等,随时随地进行教师与学生以及学生与学生之间的在线互动,有利于学生根据自己的掌握程度自主高效的学习,教师也能实时掌握学生学习的反馈情况。

图1 2004年1月至2018年4月关键词Python搜索热度[4]

三、课程设计

Python 语言简单易学,零基础学生适用。其丰富的标准库,能满足不同层次教学。可以对网络安全与执法专业开设必修课Python程序设计,替换原有的C++程序设计课程,满足面向对象程序设计教学需要;其他公安专业以选修课的形式,开设Python编程基础与应用、Python爬虫入门、Python信息提取与数据分析、Python机器学习应用等课程。

(一)Python面向对象程序设计课程目标

网络安全与执法专业开设专业必修课——Python面向对象程序设计,教学目标设定为通过介绍Python语言的基本语法、程序结构、类与对象、文件操作、标准库及第三方库的使用,使学生熟悉面向对象程序设计的基本概念与方法,得到程序设计方面的基本训练,掌握一门高级程序设计语言,培养学生程序设计的能力和调试程序的基本技能,提高学生利用计算机解决问题的能力,为后续网络安全技术、网络攻防等课程奠定编程基础。

(二)Python面向对象程序设计课程计划

采取讲授和实验相结合的方式,依托现有的网络学习平台比如蓝墨云、超星学习通等,发布课程学习日历和教学大纲等。将每个章节的知识点细化,以小视频或资料的形式提前一周发布,布置针对该章节的实验或题目(不给出答案),要求学生按时完成阅读与练习,同时开放本章在线互动,方便学生交互研讨;上课前统计每位学生的学习时间、学习进度、练习和互动情况。课堂上主要讲解该章节的重难点、解答线上发布的实验和试题、针对学生的学习和交互情况反馈进行现场答疑。以限定时间内网络平台上的实验完成度和期末考试,构成整个课程的最终成绩。期末根据学生对整个课程的评价,以及对学生的考核结果分析,对课程进行教学改进,为下一次开课做好准备。

(三)Python面向对象程序设计课程内容

Python面向对象程序设计课程内容采用分层结构由基本到深入再到提高,循序渐进。穿插案例和编程练习,激发学生学习的积极性,提高课程的趣味性。课程共64个学时,占4个学分,教学内容和章节课时分配可以参考表2,其中包含实验教学。

第一部分主要讲授Python的基本语法元素、基本图形绘制、基本数据类型、程序结构、函数与模块[5]。第二部分异常处理和调试程序,学习如何纠正程序错误,加强代码的可操作性,提高编程效率。第三部分学习文本文件的读写操作,数据库的连接和各种系统操作以及如何 存储对象。第四部分以面向对象为基础,讲授类和对象、封装、继承、多态、接口和模板等。第五部分以案例的形式,学习Python程序综合应用,web开发、图像处理、网络爬虫与数据可视化处理,AI人工智能机器学习算法等。

表1 Python程序设计课程的教学内容及课时分配

(四)选修课设计

从Python自身强大的功能来说,Python语言程序设计不止包含以上的基本应用,还有面向不同领域的高级应用,包括GUI编程、网络编程、大数据处理、线程编程与进程编程、多媒体编程与游戏编程、逆向工程与软件分析、密码学编程、统计分析与可视化、人工智能与机器学习编程等。这些应用分支可以根据需要,开设相关选修课程。

相对于理科背景学生,文科学生逻辑思维和计算思维能力相对薄弱,也没有开设C语言、数据结构课程这类前导课程,在选修课中,如果直接讲授语法规则和如何使用第三方库,学生可能无从下手[6]。因此,选修课可以用只讲案例的形式,增加学生学习兴趣,按照编码模块逐步融入知识点,一步步由简入深、由少到多带领学生编写代码,调动学习积极性。

例如“Python爬虫入门”,可以用Python设计爬取热搜关键字舆情分析;爬虫程序爬取图像智能识别、淘宝物品比价等做课程引入,可以参考图2,围绕第三方库进行讲解。主要通过讲解Requests 第三方库使学生掌握HTTP/HTTPS协议自动从互联网获取数据并向其提交请求的方法;讲解Beautiful Soup第三方库,使学生掌握从爬取的HTML页面中解析完整Web信息的方法;讲解标准库Re,使学生掌握从爬取的HTML页面中提取关键信息的方法;讲解Scrapy第三方库,介绍通过网络爬虫框架构造专业网络爬虫的基本方法。

图2 Python爬虫教学案例:爬取图像识别

四、结语

python语言被广泛使用在互联网中的各个领域。python语言该课程是培养学生程序设计能力的有效手段,可以培养学生的计算思维和问题求解能力。目前Python程序员人数排名世界前三,受欢迎程度紧随在C/C++语言和Java语言之后。国内外高校开展python程序设计语言教学的经验表明,其收获了良好的教学效果,受到了学生们的欢迎。在大数据、云计算、网络时代,公安院校大学生除了具备计算机基本操作能力外,还应具备一定的编程能力。对未来从事打击网络违法犯罪的预备警官来说,加强专业技术知识的学习和实践显得更为重要。用网络课程的形式革新程序设计课程是一个技术迭代的过程,也是契合时代发展趋势的必经之路。

猜你喜欢
爬虫面向对象程序设计
利用网络爬虫技术验证房地产灰犀牛之说
基于Python的网络爬虫和反爬虫技术研究
基于Visual Studio Code的C语言程序设计实践教学探索
从细节入手,谈PLC程序设计技巧
面向对象方法在水蓄冷PLC编程中应用分析
大数据背景下校园舆情的爬虫应用研究
大数据环境下基于python的网络爬虫技术
高职高专院校C语言程序设计教学改革探索
峰丛洼地农作物面向对象信息提取规则集
基于面向对象的车辆管理软件的研制与开发