突出问题求解能力训练的Python课程设计
2022-03-21于宁聂清林
于宁 聂清林
摘 要: 针对大学计算机基础课程教学基本要求中程序设计基础(Python语言)的课程定位,结合2019版北京联合大学指导性培养方案(普通本科教育),研究与实践课堂教学+SPOC课程混合式教学模式,提出以案例导入、经典算法为基础,以Python123在线编程平台为训练,以综合实验为应用的教学设计,培养学生的编程兴趣,突出问题求解能力训练,为后续学习Python纵深课程打下基础。
关键词: Python语言; 问题求解; 能力培养; 课程设计
中图分类号:G642 文献标识码:A 文章编号:1006-8228(2022)03-110-04
Abstract: According to the position of the fundamentals of programming (Python language) in the teaching of college computer basic courses, and the 2019 Beijing Union University instructive training plan (general undergraduate education), the blended teaching mode of classroom teaching and SPOC teaching is studied and practiced. A teaching scheme is proposed based on case introduction and classic algorithms, with Python123 online programming platform for training, and general programming experiments as an application, to cultivate students' interest in programming, highlights the problem solving ability training, and lays the foundation for subsequent learning of Python in-depth courses.
Key words: Python language; problem-solving; ability training; course design
0 引言
Python语言作为一种最接近自然语言的通用编程语言,历经30余年的发展,已经成为全球最流行、产业最急需的程序设计语言。2016年,教育部高等学校大学计算机课程教学指导委员会发布《大学计算机基础课程教学基本要求》,首次将Python 语言作为首门程序设计课程的教学语言,在其推动下,国内高校先后开设Python 语言课程,增长十分迅速,成为当前教学改革热点[1]。
2019年,北京联合大学指导性培养方案(普通本科教育)中,根据专业需求,将Python 程序设计课程纳入培养方案。目标预期是学生在毕业时能够掌握数据统计分析、数据抓取与分析、可视化展示等技能和方法,会选择、使用适当的技术手段、资源、现代专业工具和信息技术工具,解决专业领域问题。为此,北京联合大学程序设计课程群以实施教学品质提升为抓手,以理解并实践计算思维,突出问题求解能力训练为导向,开始对Python语言程序设计课程进行建设。
1 课程设计指导思想
面对不知道编程是什么、编程很难、不感兴趣、不知能为专业解决什么问题的非计算机专业学生讲授Python语言,如何组织教学内容、设计教学案例,采用何种教学模式…都是课程建设面临的挑战。依据BLOOM认知模型科学合理的确定课程的教学目标,结合BOPPPS教学模型来设计课程教学环节,为设置合理的教学目标和有效的教学过程提供理论指导和启示。
BLOOM(美国当代著名的心理学家、教育家)将认知领域的教学目标按由简单到复杂的顺序划分为知识、领会、运用、分析、综合、评价/创新六个层次[2]。这六个层次对知识的理解和把握的程度是逐步加深的,前一个水平是后一个水平的基础。较低的三个层次(知识、领会、运用)描述了聚合思维的过程,较高的三个层次(分析、综合、评价/创新)描述了发散思维的过程。前者使学生回忆起来知道和理解的内容并用以解决问题,后者使学生们创造出经验中不存在的新见解和新发现。
BOPPPS 教学模型是近年来北美地区高校教学技能培训机构提出一种教学模型。BOPPPS教学模型针对教学目标的达成将教学内容分为前后衔接的六个模块,依次为导入(Bridgein)、学习目标(Outcomes)、先测(Pre-Assessment)、参与式学习(Participatory Learning)、后測(Post-Assessment)以及总结(Summary)[3]。这种教学互动和反思的闭环反馈教学模式遵循以学生为中心,以目标为导向的教学理念,注重教学互动和反思,指导学生开展自主学习。该模型也能帮助教师分解并分析教学过程,从而更有效地设计教学内容,改善并提升教学质量[4]。
2 Python课程设计与实施
非计算机专业程序设计课程定位是掌握程序设计的基本方法,了解从问题分析到程序维护的整套程序设计流程,初步具备利用Python语言解决各类实际问题的能力[5]。基于课程定位,结合专业培养目标,课程组经过一系列调研讨论后,提出“以理解计算思维,强化对问题的分析和程序设计过程”的Python语言教学思路,采用问题导向、案例驱动的课堂精讲+SPOC混合式教学模式。选用北京理工大学嵩天老师主编的教材《Python语言程序设计基础》作为主要教材,同时引进中国大学MOOC嵩天老师主讲的国家精品课程《Python语言程序设计》和Python123教学辅助平台,在此基础上,建设北京联合大学《Python语言程序设计》SPOC课程,图1给出Python课程全体系教学资源。
2.1 课前—领取自主学习任务单,观看讲解视频
在中国大学MOOC嵩天老师主讲课程基础上建设北京联合大学SPOC,针对我校学生特点,以夯实程序设计基本概念,训练学生对程序设计方法、程序设计逻辑的理解和掌握利用程序解决实际问题的能力为出发点,增加七个教学单元,补充33段视频,如图2所示北京联合大学SPOC课程讲解视频示例。利用SPOC提供的授课视频、学习指导、在线讨论、拓展知识等功能,延伸课堂教学,强化学生自主学习与合作学习能力培养,开展课堂教学与在线课程混合式教学模式的实践。
每周课前,发给学生一份自主学习任务单,包括学习内容、达成目标、学习建议与方法、学习任务、思考与讨论、课后作业等内容。要求学生在课前了解学习目标,观看本周学习视频,完成课前知识前测,并带着问题进入课堂学习。
2.2 课中—问题导向、案例驱动的课堂精讲
Python语言的教学内容分为三个阶段:基础部分(读懂程序)、能力部分(会写程序)、应用部分(会解决问题)。基础部分包括基本语法和基本程序结构,引导学生通过SPOC自主学习并掌握。能力部分包括基础算法和高级程序结构,通过SPOC课程+课堂讲解掌握。应用部分是面向专业需求组织不同的专题应用,这部分内容多由教师指导,学生结合学科需要,学习不同专题内容,为后续解决专业问题打下基础。
案例教学是围绕一定目标把实际中真实的情景加以典型化处理,形成供学生思考分析和决断的例子[6]。凝练Python程序设计中基础知识、程序结构、经典算法,将教学内容组织成相应案例,构建基于问题求解的教学方法。教学案例设计注重知识性、实用性和趣味性,表1所示给出部分教学案。
依照BOPPPS模型指导教学过程。课堂教学采用问题导向式、案例驱动式的精讲多练,设计真实的情境、案例贯穿每一章内容。以问题引入、验证实现、排除错误、思考总结四个步骤展开教学。首先引导学生理解问题需求,将问题转化成计算机所能接受的表达方法。再运用抽象、概括、分类、比较等思维活动,找出解决问题的方法及最有效的方案。每完成一个任务,都要归纳总结,再一次强化教学活动成果。
对于程序的语法细节,学生通过SPOC课程学习,教师在课堂上答疑解惑,讲授重点、难点及共性问题。在编程训练环节,帮助学生分析问题与排查错误是其中的重要内容,学生编写程序出错是正常的,要正确对待,不怕出错。其次是帮助学生学会如何调试程序,通过对语法和逻辑错误的查找与排除,使学生进一步认识程序设计语言语法要求,加深对程序结构和基本算法的理解。经过多次训练,学生逐步减少错误,也能较快查出错误原因,增强了编程的信心和能力。在解决实际问题时,鼓励学生产生质疑,从不同角度思考问题,探求多种解题答案。最终要让学生明白,程序设计语言只是工具,求解问题的方法及思维过程才是解决问题的根本所在。
2.3 课后—运用Python123在线平台助力编程训练
Python123是嵩天老师带领团队开发和管理的一个在线编程平台,向学生和老师免费开放。教师通过平台认证后,就可以使用在线题库,也可以自己创建课程,按照Bloom 教学目标分类法,组织教学相关的知识点,发布知识点与习题,测评学生的学习进度。Python123在线平台还具有自动评阅功能,提高了教师的工作效率。平台根据课程教学管理、教学研究的实际需求,提供教学研究数据支撑。基于数据的学情分析,帮助教师及时发现教学过程中存在的问题和盲区,不断优化和改进教学。
每周的编程训练题给出题目描述、编程点拨、主要步骤、拓展功能等要求。题目的设计主要考虑知识运用的综合性、实用性和适当地趣味性,尽可能让学生全身心参与到练习中。训练重点放在解题思路上,故增设了编程点拨,帮助学生读懂题目,找到问题,构思算法步骤等,如图3所示给出的基础算法编程训练示例。编程点拨可以启发学生,给学生预留一些思考的空间,让学生带着各自的理解和问题完成程序设计,同时鼓励学生从教材或互联网上获取更多求解问题的方法。学生在Python123平台以“互助学、总结学”的形式,营造编程氛围,主动反思和互评,达到构建新的思想和知识体系的目的[7]。
教学过程的前一阶段重点引导学生在编程的实践中掌握规律性的知识,最终将感性认识升华到理性的高度。在教学的中后期,要求学生独立设计一个具有一定实用性的Python小程序,可以自拟题目或选择教师指定的题目。学期末统计学生提交的综合作业,有使用习近平总书记的五四讲话精神生成的词云图,有使用字典键值对查询学生喜爱的足球联赛当家球星及所属球队,有编制个人通讯录、击球游戏,有用turtle库绘图等,如图4所示。这些小程序具有新颖独特、美观实用、信息丰富的特点。学生在完成作业的过程中,会遇到一些困难,但通过教师指导,学生间的互帮互助,不断探究,最终完成综合作业设计。学生一致表示,综合作业设计使他们亲身实践了课堂所学、课堂外拓展的知识,提高了动手编程能力,同时也锻炼了独立学习与协作学习能力,达到理论与实践互相渗透有机结合的目的。
有了Python语言程序设计的基础,学生在面向专业解决实际问题时,重在掌握Python第三方库的应用,进一步通过Python纵深课程、MOOC或自学等方式,掌握科学计算和可视化、数据抓取与分析、图像处理等应用,真正达到学以致用。
3 结束语
编程语言本质上是解决问题的工具,问题能否被解决,更多的在于解决问题的思路和专业知识。Python语言正是这样一种工具,优雅简洁的语法、易学易用和丰富的开源库带给初学者一个全新的程序设计认识,让初学者从语法细节中摆脱出来,而专注于解决问题的方法、分析程序本身的逻辑和算法[8]。
Python语言程序设计课程作为北京联合大学一门新开设的课程,在BLOOM认知模型和BOPPPS教学模型的指导下,以能力培养为出发点建设Python课程,从课程定位、教学内容组织、教学案例设计和教学模式等方面进行研究实践。目前课程正在建设中,課程群将结合专业培养目标和学生的特点不断实践,努力提升程序设计课程的教学品质和效果。
参考文献(References):
[1] 嵩天,黄天羽.Python语言程序设计教学案例新思维[J].计算机教育,2017,12:11-14
[2] B.S.Bloom等.教育目标分类学:第一分册认知领域[M].上海:华东师范大学出版社,1986
[3] 张礼廉,于瑞航,潘献飞,等.“BOPPPS+BLOOM”模型在课程教学设计中的应用[J].科教导刊,2018,17:125-127
[4] 吴昌东,江桦,陈永强.BOPPPS教学法在MOOC教学设计中的研究与应用[J].实验技术与管理,2019,36(2):218-222
[5] 教育部高等学校大学计算机课程教学指导委员会.大学计算机基础课程教学基本要求[M].北京:高等教育出版社,2016.85
[6] 杨彩云,詹国华.引导性问题案例在Python数据分析基础课程的教学[J].计算机教育,2021(1):154-157
[7] 童玲.基于元认知的文科专业Python课程教学设计[J].计算机教育,2020(1):148-150
[8] 刘卫国.Python语言程序设计[M].北京:电子工业出版社,2016
3965501908294