基于新文科的Python程序设计基础课程的建设与研究
2021-11-28冯桂尔
冯桂尔
摘要:在5G、人工智能、虚拟社会等信息技术高速发展的今天,对文科专业学生进行计算思维的培养也显得越来越重要。作为这些年的新起之秀Python,被普遍作为非计算机专业首选编程语言。文章以本校为文科专业开设的Python程序设计基础课程为依据,从教学大纲设置、教学方案设计和考核方面分析进行阐述,旨在探索如何更好地进行跨学科融合,提升学生学习编程语言的兴趣,培养信息技术解决问题的能力,让学生学有所用。
关键词:Python语言;新文科;课程建设;计算思维;解决问题
中图分类号:G642 文献标识码:A
文章编号:1009-3044(2021)30-0199-03
开放科学(资源服务)标识码(OSID):
Construction and Research of Basic Courses of Python Programming Based on New Liberal Arts
FENG Gui-er
(School of Journalism and Communication, Shanghai International Study University, Shanghai 200082, China)
Abstract: With the rapid development of information technology such as 5G, artificial intelligence, and virtual society, the cultivation of computational thinking for liberal arts students is also becoming more and more important. As a rising star in recent years, Python is widely regarded as the programming language of choice for non-computer majors. Based on the basic course of Python programming provided by our school for liberal arts majors, the article analyzes and elaborates on the setting of syllabus, teaching plan design and assessment, and aims to explore how to better integrate interdisciplinary, enhance students' interest in learning programming languages, and cultivate the ability of information technology to solve problems.
Keywords:Python; new liberal arts; curricula construction; computational thinking; solve the problem
1引言
2019年4月29日,“六卓越一拔尖”計划2.0启动,要求大力发展新工科、新医科、新农科、新文科,建设高水平本科教育。其中新文科被认为是发展社会主义先进文化的重要载体。新文科运用的是跨界思维,使用“文文互鉴”“文理交叉”“文工融合”的思维方法解决问题[1]。所以新文化的推动不能闭门自造孤立化,需要与其他学科交叉容融合才会有突破。浙江大学人文学院教授徐永明表示,要重视跨学科人才的培养,文科生要学习编程(如Python)、新媒体技术等课程,这些应该作为文科生的必备技能和素养。美国超过100所知名大学,例如斯坦福大学、卡耐基梅隆大学、普林斯顿大学等都将Python作为面向非计算机专业学生的教学语言。目前国内外普遍认为Python是一种比较适合非计算机专业学生培养计算思维入门学习的编程语言。
Python语法简洁而清晰,具有丰富类库和强大的数据处理能力。除了标准库之外,Python官网列出了超过12万个第三方库的基本信息,这些库覆盖信息领域技术所有技术方向。近年来逐渐受到高校非计算机专业的认可。在这种背景下,越来越多文科专业在培养方案中开始增设Python程序设计课程。经过全面调研,上海外国语大学在2020-2021学年第二学期也对所有文科类专业开设了Python程序设计基础这门课。以期在建设实施过程中,不断探究出适合文科类专业学习的Python语言课程。
2 教学大纲设置
Python程序设计基础的教学大纲设置为基础和进阶两部分[2]。基础部分包括Python运行环境、基本语法、内置函数、基本数据类型(数字、字符串、列表、元组、字典、集合等)、基本流程控制语句(分支结构、循环结构)等内容,进阶部分主要是对基础部分的拓展以及实际案例应用,包括函数设计、类的设计、文本文件读写、词频分析、matplotlib图形绘制、网络爬虫应用等内容。
针对文科类专业学生,学习程序设计的目的并不是去做开发、跟计算机专业学生比拼编程能力,而是运用计算机科学的基础概念进行问题求解、系统设计以及人类行为理解等一系列思维活动[3]。所以在实施上述教学大纲的过程中,除了理论授课之外,还会配备大量实践应用性强的案例,且案例会多注重思维分析、问题求解和强化学生训练。
整个课程的总教学时长为64课时,每周一次,每次总课时为4课时,包括理论和实验,如表1所示。理论和实验的课时配比根据具体上课内容和学生学习效果分配。
3课堂教学方案设计
为了增强学生的学习兴趣、更好的理解教学内容,就需要引入接地气的教学案例。在社会科学研究中,常常需要通过文章中高频出现的词汇来把握文章的语义与思想。下面以“2021年3月5日李克强总理代表国务院在十三届全国人大四次会议上作《政府工作报告》”内容为素材,介绍如何利用Python对当下热门新闻内容进行词频词云的分析,来得到关键词以及可视化效果。此案例也是对教学大纲基础部分知识的综合实践运用。教学中采用需求引入、循序渐进方式讲解知识点,教学过程总体分为3步。
1)理论知识做铺垫,介绍jieba库和wordcloud库的特点和使用方法
中文文本需要通过分词获得单个的词语,jieba库是优秀的中文分词第三方库。jieba库的分词原理:利用一个中文词库,确定汉字之间的关联概率,汉字间概率大的组成词组,形成列表的分词结果。jieba库分词有3种模式:精确模式lcut(s)、全模式lcut(s, cut_all=True)和搜索引擎模式cut_for_search(s)[4]。此案例中重点搞清楚精确模式lcut(s)的使用方法。
Wordcloud也是Python的第三方库,根据文本中词语的出现频率等参数,将枯燥呆板的词语渲染成大小、颜色不一的可视化词云艺术效果。创建词云主要通过三步骤完成:首先实例化词云对象WordCloud(),并设定基本参数信息;接着根据jieba分词并将处理后的词频生成词云generate_from_frequencies();最后将词云保存为图片to_file()。
2)绘制流程图,分析教学思路
流程图是对解决问题的方法、思路或算法的一种描述。所以在让学生编程前,先为案例绘制开发流程图,有助于为学生理清案例思路。如图1所示。
3)书写注释和编写代码
為了鼓励学生主动思考,要求学生先根据流程图思路在代码行中用中文注释功能,然后根据注释写代码,从而降低长篇代码的编写难度。下面是完整的注释和代码。
# 导入第三方库
import jieba
import wordcloud
# 读取“3月5日李克强总理代表国务院在十三届全国人大四次会议上作《政府工作报告》.txt文件”内容,得到的结果为文本字符串。
with open('government_report.txt', 'r') as f1:
s = f1.read()
# 用jieba库的lcut函数对字符串中文词汇分割,精确返回词汇列表,列表中的元素为切分好的中文词汇。
lst = jieba.lcut(s)
#此时需要对列表中的各个元素即词汇进行个数统计。统计列表中元素个数的方法有多种,可以尝试一一编写,分析利弊。这里用字典推导式统计词汇个数。
dic = {i: lst.count(i) for i in lst}
#对字典中的键值对进行降序排序并打印结果,此时可以发现,出现次数最多的是标点符号、代词等,故接下来需要从字典中去除干扰词汇。
dic_new = dict(sorted(dic.items(), key=lambda x:x[1], reverse=True))
print(dic_new)
#将干扰词汇作为列表的元素放置在列表中存储到一个记事本中,命名为stopword.txt。接着读取该记事本内容,通过遍历,从字典中移除干扰词汇。最后打印字典,可以看到政府工作报告的词频情况,得到热门词汇。此处代码实现的方法也有很多种,仍然可以一一尝试,作为对以前所学知识回顾和复习。
with open('stopwords.txt', 'r') as f2:
stop_wds = eval(f2.read())
for kword in list(dic_new.keys()):
if kword in stop_wds:
dic_new.pop(kword)
print(dic_new)
# 利用wordcloud库绘制词云,生成可视化效果。
w = wordcloud.WordCloud(background_color='white', width=300, height=250, max_font_size=60, font_path='C:/Windows/Fonts/simhei.ttf')
w.generate_from_frequencies(dic_new)
w.to_file('D:/政府工作报告.png')
4)知识拓展、深入学习
在学生理解吃透上述内容且在充分调动学生学习兴趣的前提下,对知识点进行加深拓展,并发挥学生自主学习的能力。教师提供有效的资源供学生查阅,学生根据资料自主探究如何制作个性化的词云展示。
4课程考核情况分析
课程考核的目的是督促学生的平时学习以及客观反映学生对Python程序这门课的掌握情况。既能考察大部分一般学生的实际水平,又能考察少数优秀学生的水平,同时也能反映少数较差学生的学习状况。本轮共有1241名语言类专业学生(来自英语、日语、法语、德语、翻译、俄语、西班牙语、政治学与行政学、外交学、新闻学等专业)必修Python程序设计这门课。课程考核从平时成绩(过程性评价)和期末考试(终结性评价)两方面进行。
1)平时成绩
平时成绩占总成绩的40%,由出勤率(10%)、每次课后作业(15%)、课堂表现(5%)组成。以百分制计算平时成绩,经过统计,Python程序设计课程平时成绩平均分为91.7分。相较于2020-2021学年第一学期的计算机应用基础课程的平均分90.88分,还要高出0.82分。通过对平时成绩各项的细分统计和对学生的问卷调查,究其原因,主要有以下两点:
①极大部分学生从来没有接触过程序设计语言,对它心存“敬畏”,不敢请假甚至旷课,因为落下一次课,就意味着知识的断层,影响后续学习。因此出勤率和课后作业提交率要高于第一学期的计算机应用基础课程。
②课程内容的设置更接地气
通过理论指导实践案例、案例加深理论理解和专业知识融合,切实提高了学生学习程序设计语言的热情,课堂学习氛围、学生表现欲跟第一学期相比,明显高涨。很多学生在学期末尾向学校了申请了创新创业项目,运用信息技术来解决本专业领域问题。
2)期末成绩
期末考试占总成绩的60%,考查学生对Python程序设计这门课的整体掌握情况。期末考试试卷由20题选择题、10题填空题、10题判断题和3题编程题组成(编程题难度分别为易、中、高),学生在Python考试系统中随机抽一套完成期末考试(每套试题难度相当)。正常的高校课程考试,一般要求基础课平均分落在参考值70-80范围之内,标准差在参考值5-12范围之内。对此次考试进行定量分析,发现百分制下平均分为77.45,在参考正常值范围内;标准差为17.66,大于参考值。可以反映出试卷平均分达到要求,但是学生间的学习差异较大。造成这种情况的原因一个可能是学生间确实存在着较大的差异,还有一个可能是试卷相对偏难。但共有340名学生期末成绩是在90~100之间,占比达到总人数的27.4%,726名在60~90之间,占比达到总人数的58.5%,低于60分的占比为14,1%,基本符合成绩的正态分布,故试卷难度应属于正常。
对于Python语言的学习学生间存在差异的问题,也是后续课程建设中研究的重点:如探究存在哪些差异,什么原因造成的差异,如何让教学内容跟专业知识更好的融合在一起、激发文科生学习Python课程的更高兴趣等。另外,随着后期对Python程序设计基础课程建设的不断深入和完善,過程性评价和终结性评价的考核方案还会不断摸索改进,来更好、更全面的反映学生掌握Python语言的情况。这些问题都值得在后续Python课程开设过程中长期研究实践,为新文科培养出更多优质复合型人才做努力。
参考文献:
[1] 张盖伦. 新文科来了 这是场跨界融合的探索[R].科技日报,2019.06.13.
[2] 杨军, 张岳, 刘燕峰. 基于Python语言的数据挖掘课程的建设与研究[J].电子信息,2021(5):80-82.
[3] 童玲. 基于元认知的文科专业Python课程教学设计[J]. 计算机教育, 2020(1):148-150.
[4] 徐博龙.应用Jieba和Wordcloud库的词云设计与优化[J]. 福建电脑, 2019(6):25-28.
【通联编辑:王力】