冉娟++张钢
摘 要:针对独立学院非计算机专业的教学现状,分析程序设计课程目前存在的问题,提出“以思维培养为主体,以能力培养为核心,以服务专业为目标”的教学改革目标,结合天津大学仁爱学院Python程序设计课程的教学情况,探讨以程序设计思想为重心的“精讲导学+课堂翻转,RAPTOR流程图+程序设计,实例贯穿”等多元化教学模式。
关键词:独立学院;计算思维;精讲导学;实例贯穿;RAPTOR流程图+程序设计
0 引 言
2017年,教育部启动“新工科”发展研究工作,即针对新技术、新产业与社会新形态的变化,推进面向可持续竞争力的新型工科人才培养模式改革[1]。基于此人才培养模式改革,计算机基础教育的任务和目标更要注重培养各专业学生在理解知识的基础上,掌握和应用知识,从而达到能力和素质的提升[2]。程序设计作为计算机基础教学的核心课程之一,正是在实践中培养学生逐步掌握程序设计的思想和方法,培养学生解决问题的思维习惯和能力,让学生真正掌握利用计算机解决专业问题的通用方法。面向非计算机专业开设第一门程序设计课程时,要考虑以下几点:①非计算机专业学生学习本课程后,可能不再学习其他计算机课程,要通过该课程尽可能激发学生对程序设计的学习兴趣,并让学生今后能够以此为基础,自学其他计算机知识;②非计算机专业学生通过学习该课程,应该掌握程序设计的思想和方法,重点是学会利用计算机解决问题,而不是关注其底层实现;③非计算机专业学生除了要学习程序设计的一些基本概念外,还要学习今后可能用到的专业技术和知识,以更好地为专业服务。
1 独立学院程序设计课程面临的问题
长期以来,我国高校针对非计算机专业普遍开设C语言程序设计课程,实际教学内容围绕数据类型、指针、内存、字符操作等开展[3]。由于非计算机专业学生缺少计算机体系结构相关知识、没有专业需求、认识程度不高、学习困难等诸多因素,C语言程序设计课程教学出现前所未有的困难,无法满足非计算机专业学生在后续计算机应用中继续使用该语言解决问题。对此,2015年开始,天津大学仁爱学院尝试用Python语言替代非计算机专业的C语言,主要出于以下几个原因:①语言代码简洁,不要求程序通过函数封装,代码行数比C语言简短;②语法简单,没有C语言中的指针、地址等涉及计算机系统结构的元素,能降低非计算机专业学生的学习难度;③拥有丰富的图形库和科学计算库,能够完成各种实用程序,特别是具有图形界面的应用程序能够很好地提高学生学习程序设计的兴趣,如艺术图形绘制;④强大的标准库可以实现大数据处理、机器学习、网络爬虫等,有助于学生学会一种终身受用的编程语言。用Python语言替代非计算机专业的C语言是程序设计课程发展的必然趋势[3],但在教学实践中仍然面临以下问题。
(1)Python语言成为C语言的替代品,教学内容和教学案例却都照搬C语言,仍然围绕编程语言展开教学,无法体现Python语言自身的优势,课程内容“换汤不换药”。
(2)课程教学内容没有针对不同专业做适当调整,学生仍然认为学习程序设计课程没有用处,与其专业的后续课程没有必然联系,学习本课程只追求拿到学分。
(3)教学模式没有随程序设计语言的改变而改变,仍然是“以教师为中心”,且采用“课堂讲授理论—上机操作—课后练习”的传统教学方式,导致学生学习兴趣仍然不高、学习了编程却不会编程,也不会利用计算机解决问题。
综上所述,用Python语言替代非计算机专业的C语言,初衷是一方面可以降低学生学习程序设计的难度,提高学生的学习兴趣;另一方面在“互联网+”时代,非计算机专业学生能够运用Python语言解决实际问题,以更好地服务于专业。然而,教学实践反映出学生对该课程仍然很迷茫,他们认为只是更换一种语言,与本专业联系不大,课程用处不大,学习程序设计课程目的只是获得学分,从而失去替换的真正意义。
2 Python程序设计课程教学改革探索
2.1 课程定位和目标制订
在深入分析研究“教指委”提出的“大学计算机基础课程教学基本要求”有关Python程序设计课程教学目标的基础上[4],2016年,天津大学仁爱学院重新探讨和研究面向非计算机专业开设Python語言程序设计课程的教学定位和目标,确定“以思维培养为主体,以能力培养为核心,以服务专业为目标”的课程教学定位,突出不同专业的特点与需求,突出学生创新思维能力和计算机实际应用能力培养的教学目标,探索该课程新的教学内容体系、研究和实践新的教学模式与教学方法,让学生能将所学知识转化为能力,以达到培养学生计算思维能力,让学生真正掌握利用计算机解决专业问题的通用方法。
2.2 课程教学内容改革
根据课程定位与目标,我们对该课程教学内容改革并重新规划,将其分为基础部分、能力部分以及应用部分。其中,基础部分主要包括基础语法和基本程序结构;能力部分包括基本算法和高级数据结构;应用部分根据专业需求不同设计不同的专题应用,让学生结合所学专业综合系统地开展程序设计,达到学以致用的效果。这种课程内容组织形式不仅有利于教师在教学过程中把握教学知识点,还有利于学生理解课程的总体结构;同时,遵循循序渐进的原则,让学生逐步提高计算思维能力和系统能力。课程所涉及的语法知识在课堂上简单讲解,并利用SPOC给学生提供自主学习平台。课程教学内容划分[5]见表1。
2.3 教学过程组织和教学模式改革
程序设计课程是一门实践性很强的课程,针对该课程的特点和学习理念,整个教学过程组织将传统“理论+实践”相融合,即充分体现“理论教学融于实践、实践贯穿教学全过程”。在教学学时不变的情况下,授课地点全部安排到机房,教师讲完理论知识,学生可以立即实践验证,并配合相应练习以巩固对知识点的理解。这种教学过程组织能够及时解决学生对教学内容的疑惑,使教师更容易开展计算思维教学活动,使学生在思维和技能两方面都受益。endprint
程序设计课程的教学重点是让学生能将所学知识转化为能力,真正掌握利用计算机解决问题的通用方法,从而培养计算思维能力。在前导课程RAPTOR可视化程序设计的基础上,教师要进一步培养学生的学习兴趣和计算思维能力,积极推行“以学生为中心”的教学理念,改变以往传统的教学模式,建立以程序设计为重心的“精讲导学+课堂翻转,RAPTOR流程图+程序设计,实例贯穿”等多元化教学模式,以激发学生的学习兴趣,引导学生按照“提出问题—分析问题—解决问题”的方法进行主动学习。
3 基于计算思维的多元化教学模式
3.1 精講导学+课堂翻转
传统程序设计课程的教学方式是“课堂讲授理论—上机操作—课后练习”,教师花费大量时间用于课堂讲解语法结构和基础理论知识,学生在实践课上按照教师布置的实验题目将程序录入,调试程序就算完成任务[6]。这种教学模式下,教学过程枯燥无味,学生只能一味地接受知识,容易失去学习兴趣。为了解决这个问题,我们认为教学过程在体现“理论教学融于实践,实践贯穿教学全过程”的同时,教师还应将教学重心转移为程序设计的思想和方法。对此,我们借助北京理工大学Python语言程序设计MOOC课程资源,采用“精讲导学+课外自主学习+自测”的方式完成理论知识的教学,教学模式包括创建SPOC、课前自主学习、课堂精讲、课后自测4个教学环节。
(1)创建SPOC。我们基于北京理工大学Python语言程序设计MOOC课程资源,建设本校SPOC;根据课程教学需求,为学生建立学习资源、提供网络交流平台并设置课前引导问题,让学生带着问题进行课前学习。
(2)课前自主学习。根据教师指定的教学任务和引导问题,学生在课前通过SPOC资源和“雨课堂”智慧教学工具,对课程视频和课件进行自主学习,可以提前发现自己难以理解的知识点,并在自主学习过程中利用“雨课堂”及时反馈给教师,让教师准确了解学习的程度,以便在课程讲解时做到有的放矢。
(3)课堂精讲,主要完成课前小测——编程——实践。教师利用“雨课堂”教学工具,在课前5~10min对学生课前自主学习内容进行小测试,如图1所示,以及时获知学生的答题和知识掌握情况,有针对性地开展课堂教学;将更多课堂时间用于引导学生讨论和分析问题,提出解决问题的方法和途径;将理论知识融于程序设计中,让学生在课堂上开展编程实践,及时理解并解决问题。教师在整个教学过程中只需要讲解重点与难点,提高课堂利用率。
(4)课后自测。学生在课后除了要完成必要的基础编程题目外,还需要完成SPOC资源中的课后自测题目,以巩固所需理论知识点。
3.2 以“RAPTOR流程图+程序设计”为框架
程序设计是计算思维的教学重点,对于大一新生而言,理解和掌握程序设计是学习中的难点,对于“三本”院校的学生更是如此。为了让学生更好地理解和掌握,在前导课程RAPTOR可视化程序设计的基础上,与Python程序设计相结合,既能强化学生的思维训练,又能辅助学生更好地理解Python程序设计语法结构。以实现“PM2.5空气污染指数分级问题”为例,讲解Python的分支嵌套结构,学生往往在理解分支嵌套结构上容易出现困难,即如何给出一个清晰的嵌套结构,对此,教师在教学过程中不应急于讲解Python分支嵌套语法结构,而应该先让学生使用RAPTOR给出解决该问题的流程图。由于思维模式不同,学生可能会给出图2所示的2种流程图;教师可以根据前面所学的if-else结构,引导学生对照RAPTOR流程图逐步写出分支嵌套结构,以图3(a)为例写出Python代码,如图3(b)所示,并在此流程图的基础上,引出为避免程序代码缩进越来越多,给出Python特有的分支嵌套结构if-elif-else以一次性写完程序条件,如图3(c)所示,从而让学生了解程序设计的不同方法,引导学生从流程图角度理解程序设计,具有更直观、更感性的认识。
3.3 以“实例化”贯穿
教学过程中要实现“以思维培养为主体,以能力培养为核心”的目标,必须根据教学内容和学生特点精心选取并设计教学案例,以“实例化”引导学生从基本问题到综合问题逐步深入学习,充分利用Python语言优势,让学生感受到Python语言与其他语言的不同,培养学生的编程兴趣,掌握利用计算机解决问题的方法,提升学生的计算思维能力。因此,教学案例选取要从以下两方面着手:一是以图形化案例培养学生对Python程序设计课程的学习兴趣;二是案例既要典型,又不要过于复杂,还要具有趣味性,可以融会贯通知识点,能实现提高学生综合应用能力的目标。
例如,利用Turtle库绘制一个简单等边三角形,首先引出如何使用Python库和程序顺序结构设计;其次讲解如何利用循环结构方法简化代码行,进一步引出循环结构;最后扩展使等边三角形旋转形成螺旋等边三角形且每个等边三角形边颜色不同,引出高级数据结构列表的概念和使用。这样由一个简单绘制等边三角形,就让学生由浅入深地学习同类问题。
此外,还有一些实例可以联系起来,如根据某人出生年份判断其属相。学生初学时,可以让其使用if-else结构或者if-elif-else结构方法实现,之后使用列表结构方法实现,引导学生比较这两种方法的不同,进一步引出是否所有if-elif-else结构实现的代码都可以使用列表结构实现。教师除了精选教学案例解决问题之外,还要引导学生发挥创造力和想象力,制作更有趣的教学案例,如利用Turtle库绘制精彩艺术图“火柴人”等。
4 教学效果分析
通过对学生进行网上问卷调查,我们共收集了285份问卷,如图4所示,将多元化教学模式运用于Python程序设计课程的教学实践中,教与学双方都有了较大转变。从学生角度分析,65.96%的非计算机专业学生不再认为程序设计是计算机专业特有的课程内容,并认为可以在今后工作中帮助其解决专业问题;63.86%的学生认为程序设计有利于培养计算思维能力;32.28%的学生认为“RAPOTR流程图+程序设计”教学模式使编写程序变得容易;47.72%的学生愿意开展SPOC课堂翻转,认为这种教学模式对课程学习有帮助;52.98%的学生认为以“实例化”引导其从基本问题到综合问题逐步深入,对于学习该课程有很大的帮助。从教师角度分析,教师不再仅仅是教授知识,而是从单一知识传授者转变为教学设计者、引导者和管理者。不仅如此,这种教学模式还有效提升了学生的主动学习能力和问题求解能力,学科之间的差异也让他们相互之间有了更多的学习机会[7]。
5 结 语
针对非计算机专业的Python程序设计课程,实施以程序设计为重心的“精讲导学+课堂翻转,RAPTOR流程图+程序设计,实例贯穿”等多元化教学模式,有效激发了学生的学习兴趣,提高了学生的主动学习能力和问题求解能力,并在一定程度上突出了不同专业特点与需求。下一步,我们将继续以学生为教学主体,持续探索如何将程序设计课程与专业实践应用更好地结合,以最大限度地提高程序设计课程的教学质量和学生程序设计的实践能力。
参考文献:
[1] 徐晓飞, 丁效华. 面向可持续竞争力的新工科人才培养模式改革探索[J]. 中国大学教学, 2017(6): 13-17 .
[2] 中国高等院校计算机基础改革课题研究组. 中国高等院校计算机基础教育课程体系[M]. 北京: 清华大学出版社, 2014: 9-10.
[3] 嵩天, 黄天羽, 礼欣. Python 语言: 程序设计课程教学改革的理想选择[J]. 中国大学教学, 2016(2): 42-47.
[4] 教育部高等学校大学计算机课程教学指导委员会. 大学计算机基础课程教学基本要求[M]. 北京: 高等教育出版社, 2016: 85-91.
[5] 嵩天, 礼欣, 黄天羽. Python语言程序设计基础[M]. 2版. 北京: 高等教育出版社, 2017:34-278.
[6] 许丽娟, 黄冬梅, 王爱继. 以计算思维为导向的非计算机专业程序设计课程创新教学[J]. 计算机教育, 2015(12): 31-34.
[7] 张莉, 金莹, 张洁. 基于MOOC的“用Python玩转数据”翻转课堂实践与研究[J]. 工业和信息化教育, 2017(3): 70-76.
(编辑:宋文婷)endprint