面向软件工程专业的Python课程建设
2019-01-23董付国冯烟利谢青松宋英杰
李 博,董付国,冯烟利,谢青松,宋英杰,徐 猛
(1.山东工商学院 计算机科学与技术学院,山东 烟台264005;2. 山东工商学院 山东省高等学校协同创新中心,山东 烟台264005)
0 引 言
当今是大数据的时代。预计到2022年,大数据软硬件以及服务的整体开支的年增长率为12%,将达到约952亿美元,潜力巨大。从医药到教育,再到其他各个领域,大数据应用出现在生活的各个方面[1-4]。作为软件工程专业的学生,掌握大数据分析的基本技能已成为迫在眉睫的要求。近几年,Python语言以其开发快、语法较为简单以及海量的第三方开发库[5-7]在大数据领域越来越受到国内外学生和教师的欢迎。2017年,在国际权威调查组织TIOBLE和权威期刊IEEE Spectrum对编程语言流行度的调查中,Python均名列前茅,在IEEE Spectrum的调查中更是排名第一,如图1所示。国内很多高校也已经纷纷开设Python课程,甚至在非计算机专业中也将Python作为必修课开设。因此,软件工程专业开设Python课程势在必行,但同时也要针对软件工程专业的特点进行课程建设。
图1 TIOBLE 和 IEEE Spectrum 2017编程语言调查
1 体系标准建设
建设一门课程首先要建设该课程的体系标准。为了使课程建设更加规范化、标准化和国际化,并且同软件工程专业本身的特点紧密结合,课程建设体系标准参照了2014年IEEECS/ACM发布的软件工程学位课程本科生指南(Software Engineering 2014)[8]。该标准给出了软件工程专业本科教育知识体系SEEK(Software Engineering Education Knowledge)。SEEK包括计算必要性(CMP)、数学和工程基础(FND)、专业实践(PRF)、软件建模与分析(MAA)、需求分析和规范(REQ)、软件设计(DES)、软件验证与检验(VAV),软件过程(PRO)、软件质量(QA)和安全性(SEC)10个核心知识区域。每一种知识区域都有一个简短的描述和一个概括该区域相关的单元和主题的表格以及15个扩展的系统与应用领域。基于SE2014,山东工商学院软件工程专业结合Python和专业特点,抽取了Python所对应的知识区域,见表1。
表1 Python 知识域与教学目标
其中k,c,a表示认知技能水平,分别为:Knowledge,能够记住所学的知识,如日期、事件、地点、中心思想和主题等;Comprehension,理解,例如能够将所学知识翻译成新的上下文,能够举一反三进行对比,推断原因,预测后果等;Application,在新场景下使用所学知识,例如使用信息、方法、概念和理论解决需要的新的问题。E,D表示该部分与课程的关系,分别为E:核心部分;D:非核心部分。课程教学计划内容要同表1相对应,共48学时,如表2。其中分别给出了各内容所覆盖的知识单元。课程共48课时,包括9个部分。每个部分又分别包括目标、内容、重点、难点、讲授提示等。从表1和表2可以看出,Python课程体系标准建设既考虑了国际上对软件工程专业的要求又兼顾了Python课程本身的内容以及对大数据应用的需求,体现了针对软件工程专业所设置的Python课程的特点。
2 课程资源建设
2.1 依托教学名师
课程资源建设如果能够依托教学名师,则可以借鉴教学名师的新经验、新方法、新思路以及大量丰富的资源,因此会有事半功倍的效果。教学名师拥有丰富的经过长时间实践验证的课程建设经验,课程建设应在名师的指导下,针对软件工程专业对这些经验进行整理,加以整合。例如,山东工商学院软件工程专业Python课程建设带头人是董付国老师。董老师在Python领域国内具有较高知名度,曾于2016年在“第6届高等学校计算机程序设计课程研讨会”上作大会报告;2017年担任“全国高校Python课程高级研修班”主讲教师;同年11月入选第二届“中国大数据创新百人榜单”,获“中国大数据学术创新奖”;2018年2月担任全国高校“数据科学与大数据技术”专业教学研讨会主讲教师之一等。近年担任超过30期全国高校/中学教师或IT企业员工“Python编程与应用”培训班的主讲教师,并应邀到多所高校作报告。软件工程专业的Python课程借鉴了董老师大量的授课经验以及课程建设体会,并在他的带领和指导下,针对软件工程专业建设总结和整理了相关经验。
表2 Python授课计划
2.2 线上和线下教学资源
线下教学资源可以分很多种类,如教材、讲座等,但从实际效果来看,还是应该以教材为主,以讲座、培训等为辅,因为要实施课程设置教学改革必须要以教材为依托。例如,当山东工商学院准备开设Python课程时,发现已有教材难以满足要求,有的教材语法较多案例较少;有的教材包含大量截图和代码运行结果,知识密度小;有的教材还是沿袭C语言的风格。虽然也有几本书内容较好,但只面向特定领域而不适合作为软件工程专业教材。因此,在董老师的策划和组织下,先后编写并出版了10部Python系列教材,其中有4部教材[9-12]被北京大学、中国石油大学、复旦大学、中国农业大学、中国政法大学等国内近百所高校选作专业课程教材[13]。
线上资源要利用当今比较流行或者受众量大的工具例如微信、QQ群等。例如山东工商学院Python课程线上资源主要包括一个微信公众号“Python小屋”和12个长期维护的QQ群。微信公众号“Python小屋”已经免费分享了600多篇Python技术文章,目前关注人数超过2.4万,访问量超过100万。公众号中包括出版的一系列教材的配套课件PPT、源代码、习题答案、教学大纲、教案等配套资源。其中教学课件多达1 900多页,堪称Python大全,主要包括基础知识(106页)、Python序列(154页)、选择与循环结构语法案例(96页)、字符串与正则表达式(109页)、函数设计与应用(134页)、面向对象程序设计(86页)、文件操作(132页)、异常处理与结构调试测试(70页)、课程群建设探讨与实践(163页)等。公众号还包括包含多达1 000道的Python题库和一个包含100多个免费教学视频的网络地址(https://pan.baidu.com/s/1jJeAs8Q)。
QQ群以其中一个包括全国诸多高校教师、企业员工和高小学生的QQ群“Python技术交流教师群”(群号:150784726)为例。该群目前共有902人,囊括了工学、医学、农学、文学、艺术等各类数百所高校教师和数十家科技公司员工以及部分积极活跃的在校大学生。群里的资源主要包括一个使用Python编写的课堂管理系统,一个和北京红亚华宇科技有限公司联合开发Python的实训系统。群里每天信息交流活跃,很多教师和学生因此受益匪浅。
大量的教学资源为软件工程专业的Python课程建设和开展提供了丰富的素材,让课程建设能够顺利、快速地开展。
3 注重案例式融合教学
要想让软件工程专业同学对Python课程有丰富的兴趣,教学案例的选择尤为关键。有了丰富的资源支撑,教师在选择案例时就会得心应手,能够用生动的案例搭建Python程序设计与实际解决问题之间的桥梁,使理论知识能够更好地与实践应用相结合。学生对问题感兴趣,自然会提升学习Python来解决问题的兴趣,学以致用,用以促学,从而达到学好Python的目的,取得了很好的实际效果。Python的优势之一在于书写快速而简单,很多Python对象都体现了这一点,例如Python中的集合,使用集合快速提取出序列中所有不重复元素。如果使用传统思维方式编写代码为:
但如果使用集合只需要一行代码,极大简化了工作量:
理解了集合的方便之处,进一步扩展实例,可以使用集合来方便快速解决用户电影喜好问题:对于一个用户甲来说,系统向其推荐电影,可以采用的策略是找到与甲用户喜好相近的用户,例如乙,再找出乙用户喜欢看的电影推荐给甲。前提是系统中已经建立好了一部分用户和电影的喜好对应关系。
代码清单如下:
除了以上的案例,在进行案例选择时也要注意同大数据的结合,这也是软件工程专业学生开设Python课的主要目的。例如Python中的SciPy是专门用来进行科学计算和数据处理的模块。可以选取学生喜欢的动物并使用SciPy中的函数来进行处理,如图2是使用SciPy模块中的函数进行不同处理后的效果。
从以上两个例子可以看出,如果教学实例选择合适,既能引起学生的兴趣,使同学们深入理解Python语言,又能使用Python解决实践中遇到的问题。
图2 SciPy模块中的函数进行不同处理后的效果
4 结 语
当今大数据时代,国内很多高校都已经充分认识到Python语言的重要性,并纷纷开设Python语言课程。对于软件工程专业来说,在建设Python课程的同时也要兼顾软件工程专业对学生的能力要求。本文介绍了面向软件工程专业的Python课程建设方法。根据软件工程本科教育的国际标准来制定Python课程的体系结构,建设丰富的课程课外资源,以专业能力培养为导向,让学生把所学的Python知识融于实践,再针对实践中遇到的问题来学习新知识进行求解,这样相互促进,不断提高解决问题的能力。山东工商学院软件工程专业的课程建设已经取得了一定的成果,例如,建设了大量的线上线下教学资源,大大增强了学生对该课程的兴趣。软件工程专业的同学选择Python作为毕业设计开发工具的比例,从课程改革之前的20%提高到了目前的60%,且有超过一半的同学对Python处理大数据也产生了浓厚的兴趣。课程改革另一个目的是为新一轮软件工程专业建设和认证提供更好的支撑。