摘 要:Python语言作为适应新技术时代的程序设计语言,被广泛应用于科学计算、数据处理、人工智能等领域,开设Python程序设计课程已成为高校的共识。在此形势下,以数据处理与问题求解自动化为例,面向应用,结合教学实践,提出了在课堂教学中运用敏捷式任务驱动模式,可提高课堂学习效率,有利于高校培养复合创新型人才。
关键词:Python;程序设计;任务驱动;课堂教学
中图分类号:TP39;G434 文献标识码:A文章编号:2096-4706(2021)15-0190-03
Abstract: As a programming language to adapt to the new technology era, Python language is widely used in scientific computing, data processing, artificial intelligence and other fields. It has become a consensus in colleges and universities to set up Python programming courses. In this situation, taking the automation of data processing and problem solving as an example, facing the application, combined with teaching practice, this paper puts forward the application of agile task driven mode in classroom teaching, which improves the classroom learning efficiency and is conducive to the cultivation of compound innovative talents in colleges and universities.
Keywords: Python; programming; task driven; classroom teaching
0 引 言
隨着社会向网络化、信息化、智能化发展,高校迫切需要进一步提升学生的信息化素养和技能,以应对各领域对实践能力强、创新能力强、复合型、数字化人才的需求。基于Python语言在人工智能与大数据领域的优势,我国诸多高等院校将Python语言程序设计作为必修或选修的技术型通识课程,培养学生运用程序设计方法来解决实际问题的能力。
Python程序设计是一门应用性、实践性、创新性很强的课程。在课堂教学中,运用任务驱动教学模式,面向产业需求调整教学内容,对培养高素质复合型人才具有积极意义。
1 Python语言特点
Python语言是一种面向对象的解释型计算机程序设计语言[1],语法简洁优雅,贴近人类自然语言,易学易用,有利于学习者专注于应用计算机解决问题的思路和方法。Python语言开放、开源,生态良好,拥有大量功能丰富且强大的标准库和扩展库,几乎覆盖所有领域,避免重复编程,有利于解决各学科领域的问题,提升编程效率。Python语言可以嵌入到C/C++语言中,提供脚本编程的功能,并且支持跨平台,源程序可以移植到Linux、Windows、MacOS等常见操作系统上直接运行。
Python语言作为适应新技术时代的轻语法程序设计语言,面向应用,被广泛应用于各行业、各领域。因此,在教学过程中一定要轻语法、重应用,加强对学生实际问题求解能力的培养,从而达到让学生具备应用程序设计技术解决专业问题的能力的目的[2]。
2 任务驱动教学法
任务驱动教学法是以情境为基础,以任务为载体,将知识与技能融合在学习者任务中完成教学过程的教学法[3]。“任务驱动”紧紧围绕任务活动中心,创设情境激发学生的学习动机,唤起学生原有认知结构中的相关知识、经验及表象,积极主动筛选利用学习资源,进行自主探索和互动协作的学习,在完成既定目标任务的同时,引导学生完成一定的学习实践活动[4]。
从本质上说,任务驱动教学法是建立在建构主义学习理论之上的一种教学法[5]。建构主义学习理论强调以学生为主体,以教师为主导。学习是一种学习者对目标建构和对其理解的过程,学生是知识意义的主动建构者,教师是学生在主动建构知识意义过程中的引导者、促进者。
任务驱动教学法在理论和实践研究的发展中,呈现出各具特色的教学流程,比较著名的是何克抗教授提出的“分析教学目标、创设真实情境、设计信息资源、构建自主、协作学习环境、评价学习效果、强化知识练习”[6]的教学流程。
在教学实践中,针对教学目标,往往需要综合运用多种教学方法,或者灵活运用某一种教学方法。课堂教学是学校教育的主战场,将传统的任务驱动教学法以敏捷方式应用于Python程序设计课堂教学,让学生在完成任务的过程中体会和掌握利用计算机解决问题的方法与过程,并将其迁移到其他学科的问题解决当中,对于培养和提高学生的实践能力、自主创新能力具有积极意义。
3 教学案例
结合企业实际应用需求,融合知识点,设计任务。整个教学活动围绕着教师设计的任务展开,在此过程中,以任务为主线,学生是实现任务的主体,教师则是指导者、帮助者的角色。在Python程序设计课堂教学实践中,以敏捷方式运用任务驱动教学法,主要包含以下几个教学环节:设计任务、分析任务、实现任务、思考与拓展。应用于Python程序设计的敏捷式任务驱动教学模式流程图如图1所示。
3.1 设计任务
教学目标:熟悉Python与Excel协同进行数据处理的方法。
情景設计:某公司人事部门需要采集员工信息进行分析处理。
具体任务:将不同学历员工的信息归类,按学历建立多个新文件;分别为每名员工制作一份个人履历文件,文件格式均为Excel。
数据资源:个人履历模板文件一份、各部门提交的具有相同数据结构的员工信息文件若干份,文件类型均为Excel。
员工信息文件格式:
文件名格式:2021年-科技公司-XX部-人员信息.xlsx。
数据内容:序号、部门、姓名、性别、年龄、学历、身份证号、手机号码、备注。
履历表文件格式如图2所示。
3.2 分析任务
Python程序设计的学习原则是轻语法、重应用,培养学生解决实际问题的能力。在分析任务阶段,通过唤起学生原有认知结构中的相关知识、经验,使学生主动利用学习资源,进行自主探索和互动协作式的学习,探索思考问题的方式和解决问题的办法。
首先,学生使用已习得的Excel知识寻找方法,发现可以通过在各文件中进行数据的复制、粘贴完成任务,操作简单、可行。此方式适合于数据规模较小的情况,如果所针对的数据量较大,比如十几个部门、几百名甚至几千名员工的信息,显然应用这种方式是比较耗费时间的,效率低下。由此,学生必然会对Python数据处理能力抱以期待。
然后,引导学生探索著名的第三方库Pandas。学生通过阅读书本、查阅网络资料,了解到Pandas是一种用于数据处理和数据分析的工具,包含大量处理数据的函数和方法,可以方便快捷地处理Excel、CSV、TXT和HTML等文件数据,广泛应用于金融、统计、数理研究、物理计算、社会科学、工程等领域。
针对本任务,引导学生以小组形式进一步探索Python与Excel进行文件交互的方法,各小组很快便汇集出多个库(如xlwings、xlrd、xlwt、openpyxl等)可以支持Python与Excel交互。由小组内成员自行选择使用哪个库,从而继续探索实现任务的具体方法。学习思路始终是围绕问题想办法、找方法,重应用,轻语法。
3.3 实现任务
经过有针对性、逐层深入的查阅、了解,根据个人获取的知识,以及组内讨论,相互分享设计思路,通过分析、比较,最终明确较为合理的算法:
(1)将各部门的员工信息汇总为一个Excel文件。
(2)从汇总文件中筛选不同学历的员工信息,同一类学历生成独立文件。
(3)从汇总文件中提取各人所需信息,生成各人的履历文件。
无论数据规模如何,运用此算法皆可实现高效的自动化数据处理。结合以上算法的思考与设计,某小组成员组内分工、合作,将各步骤分别编写出三段程序代码:
#由各部门人员信息表批量合并汇总为一个Excel文件
import os
import pandas as pd
data_list = []
for fname in os.listdir("."):
if fname.startswith("2021年-科技公司-") and fname.endswith("人员信息.xlsx"):
data_list.append(pd.read_excel(fname))
data_all = pd.concat(data_list)
data_all.to_excel("2021年-科技公司-人员信息汇总表.xlsx",index=False)
#以“学历”字段为条件,批量生成新文件
Import os
Import pandas as pd
df=pd.read_excel("2021年-科技公司-人员信息汇总表.xlsx")
products=df["学历"].unique()
for product in products:
df_product=df[df["学历"]==product]
df_product.to_excel(f"学历-{product}.xlsx",index=False)
#批量从汇总表提取数据,填写模板表,并生成单独命名文件
Import os
Impor tpandas as pd
Import xlwings as xw
app=xw.App(visible=False,add_book=False)
wb1=app.books.open(r'履历表.xlsx')
worksheet=wb1.sheets['Sheet1']
data=pd.read_excel('2021年-科技公司-人员信息汇总表.xlsx')
for index,row in data.iterrows():
worksheet.range('B2').value=row['部门']
worksheet.range('B3').value=row['姓名']
worksheet.range('D3').value=row['性别']
worksheet.range('B4').value=row['年龄']
worksheet.range('D4').value=row['学历']
worksheet.range('B5').value=row['手機号码']
wb1.save(row['部门']+'_'+row['姓名']+'_履历表'+'.xlsx')
wb1.close()
app.quit()
基于以上分析,将子任务的代码进行综合,调整为总任务的代码,完成既定目标任务。本任务批量生成Excel文件的执行效果如图3所示。
教师要鼓励学生积极完成每一个步骤,充分认可学生的个体努力与团队合作,善于捕捉学生的闪光点,并激励学生不断努力。
3.4 思考与拓展
在完成总任务之后,与学生总结本次任务习得的知识点,让学生反思学习过程中遇到的问题,并启发学生探索发现新问题。例如:问题1,本次以学历为条件生成多份新文件,如果以任意字段生成新表格文件,应该如何调整?问题2,本例以已经收集到的各部门文件为前提,而在实际工作中,员工信息往往是以各种形式分布在人事部门与各部门,如何通过技术手段高效处理数据的收集与分发工作?由学生在课外进行自主探索,由已完成任务迁移到新问题,逐步拓宽学生思维的广度与深度,激发学生的主动性与创新性,以积极的心态应对未来多样需求的工作环境。
经过本次在任务驱动下完成程序设计,学生感受到Python生态圈的强大,以及与Excel强强联合在处理数据方面的优势。使学生在分析任务、实现任务的过程中培养计算思维;完成任务之后进行思考,帮助学生拓展思维的广度与深度,将形成的思维与方法进行迁移,培养学生的融合创新能力。
4 结 论
随着全球数字化转型步伐的加快,在实际工作中,数据的处理需求更具多样性、多变性,Python语言能够助力各专业领域高效完成工作任务。在Python程序设计课程的教学实践中采用敏捷方式的任务驱动教学法,结合实际需求设计案例,能够赋能学生的计算思维能力。学生在课堂上既有独立思考,又有相互交流,提高了学生自我探索的主动性,学生在分析任务、完成任务中获得成就感,全过程思维活跃,参与度高。
教学是一个动态的过程,结合产业需求、实际应用,进行教学改革、创新,使学生成为学习的主体,主动探索,主动实践,主动构建知识体系,对培养学生创新实践能力具有重要意义。
参考文献:
[1] 嵩天,彭远红,宋文婷.理解和运用计算生态推动Python语言教学改革 [J].计算机教育,2017(8):6.
[2] 赵广辉.面向新工科的Python程序设计交叉融合案例教学 [J].计算机教育,2017(8):23-27.
[3] 郭绍青.任务驱动教学法的内涵 [J].中国电化教育,2006(7):57-59.
[4] 雷钢.“目标导向、问题求解、任务驱动”三位一体的双创实践教学平台研究 [J].实验室研究与探索,2021,40(1):221-225+299.
[5] 范建新,李剑.任务驱动的课程学习质量保证机制创设——开放大学有效学习模式与机制探索 [J].中国远程教育,2013(4):69-72.
[6] 何克抗.建构主义的教学模式、教学方法与教学设计 [J].北京师范大学学报(社会科学版),1997(5):74-81.
作者简介:贾凌(1980—),女,汉族,山东潍坊人,讲师,硕士,研究方向:计算机应用。
3167500338260