APP下载

以问题为主导的计算机程序设计课程教学浅谈

2020-11-02陈浩强吴红燕许龙珠梁振

电脑知识与技术 2020年26期
关键词:教学思想计算思维

陈浩强 吴红燕 许龙珠 梁振

摘要:文章以培养学生计算思维能力的方法策略为出发点,提出了以问题为主导的计算机程序设计课堂教学思想。这种教学思想着重训练学生围绕问题展开学习的思维模式,培养学生在面对问题、分析问题、解决问题和预防问题的决策能力和行動能力。文章对以问题为导向的教学思想在实际教学中可能出现的问题提出了一些建议和措施。对教学过程中帮助学生构建良好的知识应用能力有非常重要的意义,为计算思维的“落地”实施提供了一个思路。

关键词: 计算思维;计算机程序设计;教学思想

中图分类号:TP393        文献标识码:A

文章编号:1009-3044(2020)26-0123-02

Abstract:In order to train students' ability of computing thinking, this paper puts forward the problem-based classroom teaching idea of computer programming. This kind of teaching thought focuses on training students' thinking mode of learning around problems, and cultivating students' decision-making ability and action ability in facing, analyzing, solving and preventing problems. This paper puts forward some suggestions and measures for the possible problems in the practical teaching of the problem-oriented teaching thought. It is of great significance to help students build a good knowledge application ability in the teaching process, and provides a way for the "landing" implementation of computing thinking.

Key words:computational thinking; computer programming; teaching thought

计算机程序设计基础课程是教育部规定的公共基础课,无论是否计算机专业都必须开设,是大学计算机基础教学系列中的核心课程,主要讲授程序设计语言的基本知识和程序设计的技术与方法[1]。

随着计算机和计算机应用技术的不断发展和普及,高校公共课计算机程序设计课程面临的情况也发生了较大的变化。学生们已经不再是普遍零基础的状态,对于计算机的陌生感和新鲜感也越来越少。虽然学生对计算机技能的掌握还有较大的差异性,很多的学生能快速掌握常用软件的技能技巧,于是也越来越倾向于把计算机程序设计课作为纯粹的考试课程。甚至有不少对计算机领域不甚熟悉的老师们也愈加倾向于把计算机课程当作是纯粹的工具软件学习[2]。

本文从问题出发,针对学生的认知规律进行了以问题为教学核心的一些尝试,获得了不错的效果。

1 以问题为主导的教学思想

当前高校计算机相关课程的教学,已经从单纯的知识学习转向以计算思维为总的培养目标[3]。作者认为计算思维的培养,就是在通过程序设计解决问题的过程中进行最为恰当。计算思维的能力体现也应该是落实在解决问题上[4]。从“问题”这一思路来看,程序设计课程的最大特色就是“基础知识—分析问题—解决问题”得到了非常充分的体现。这个过程需要根据已有知识对问题建立模型并多层次、多角度分析。从思维模式方面看,程序设计也是一个在不断重复的思考训练的过程,非常接近计算思维的重要特点。[2]从这个角度看,程序设计相关的课程更加适合对计算思维进行一系列有效训练。

作者从“问题”这个关键点入手进行了课程设计,把问题作为教学的主导关键词。在以问题为主导思想的教学活动中,强调发现问题、分析问题、解决问题、总结问题,在总结问题的环节还会不断强调“预防问题”的重要性[5]。通过科学的、不断重复的编程解决问题思考训练,能使学生深刻体会计算机程序设计解决问题的特点,从而进一步形成计算思维。

在以“问题”为主导的教学实践过程中,作者在基础知识的学习前,先把实际项目的具体问题需求抛出给学生思考和讨论,让学生明确地意识到,接下来的基础知识都是在为解决这些问题做准备。中间穿插的例题,都可以被认为是大问题分解出来的一个个小问题,是基础知识在问题中的体现。这些问题同样可以按照 “问题提出-问题分析-问题实施-问题总结”这一流程展开。学习完成这些例题(问题)后的总结中,可以按实际生产环境中大的软件项目的一部分带入思考,也可以把人文思政相关的内容穿插导入。

比如以程序设计课程中常见的问题“求一维数组最大值、最小值”为例。

可以先请同学们描述一下平时生活中有哪些类似的场景,自己是如何解决这个问题的,然后把这个问题解决的过程细化,分解成一个个步骤(子问题):先把第一个数作为“最大值”,再把后面的数据和这个“最大值”逐个比较,如果某一个数比“最大值”还要大,那就把目前为止真正的最大值作为“最大值”记录下来,直到最后,就能得到最大值;

那么解决问题就需要逐个访问数组的每一个元素、需要一个保存“最大值”的变量、需要在逐个访问数组元素的时候进行比较,根据需要修改“最大值”,最后还需要输出这个最大值。最大值能够求解出来,最小值同样可以以类似的步骤求得。接着就可以把这些子问题的解决方案,按程序设计语言的语法规则进行描述得到代码,运行测试。

在总结的时候,要求同学们回顾整个问题得到解决的过程,反复查看各个子问题以及它们是如何被组合在一起的。

主导思想进行了一系列调整,例题就变得充实起来,可以把相关的系列基础知识以点带线连成一片。既能让学生体会到基础知識在解决实际问题中的有效作用,也能把相关的思考分析过程、调试技术在问题过程中的作用充分展示。在总结回顾问题的过程里,还可以利用程序设计自顶向下的设计特点让学生体会到全局—局部思考方式。进一步可以引入日常工作、生活中可能遇到的类似事例,让课堂变得轻松活跃。

面向问题的教育教学总体目标是希望学生面向任何问题,能根据现有知识合理地解决它的一系列子问题,然后逐个攻克这些子问题,从而完成这个大问题。换句话说,就是让学生能够具备独立发现问题、解决问题的能力,并且可以把这种能力灵活运用到日常生活中去。

2 教学中可能出现的问题

在作者开展以“问题”为主导的教学活动以来,也遇到了一些问题,主要包括以下几个方面。

2.1 可能会造成以教师为主导的情况

这个问题是因为“问题”的全过程都需要老师进行铺垫、引导和展开,老师就是事实上的主导。要想缓解这个问题,需要教师根据自己的教学经验充分利用当前主流的MOOC、翻转课堂等教学手段,需要老师按照学生的认知规律安排教学。老师要努力让学生也能积极参与进教学环节,尽量避免老师台上讲,学生木然听的情况。作者就经常设计互动环节,对于无法回答的学生,也可以请他们邀请“外援”给出相应问题的“线索”。这也是一个“有意义的学习经历[6]”中的重要部分,是学生开始时惧怕,但事后又觉得喜闻乐见的。

2.2一个普通的问题,可能会变得“复杂”起来

当问题、子问题一个个被提出、展开和总结的时候,问题就会变得比较“复杂”,对教学时间占用较多;甚至引起部分学生对问题的惧难心理。

这是以问题为主导的教学围绕着问题精讲的特点,解决思路是适当安排知识的先后逻辑,抓大放小。基础知识可以少讲、在实际问题中讲,甚至可以不讲,也可以以作业的方式布置给学生,老师尽量在“问题”(应用例题)中讲解基础知识的用法和特点。

为了不让“问题”场景变得过于复杂,授课参考材料的安排应该尽可能以学生实际使用的教材为基础进行展开,这样的安排也有利于同学们课余学习和深入思考。

另外,作者也特别强调把问题变成“故事”的思考方式:解读问题可以变成讲故事、分析问题可以变成讲故事、解决问题也可以变成讲故事、查阅程序代码也一样可以变成讲故事。作者在介绍问题的全程,尽可能用朴素自然的语言去描述,中间尽可能穿插该问题在生活中的类似场景,从而把“问题”分析过程变得比较形象化。

除了老师自己按“讲故事”的方式描述问题,作者还要求学生在遇到问题的时候要尽可能第一时间使用“讲故事”的思考方式,以有逻辑的、形象化的故事代替严谨却稍显枯燥的逻辑推理。只要“故事”讲得好、讲得通,就是比较容易长久留存在记忆里的信息,程序设计也就不再那么“复杂”和“枯燥”[7-8]。

基于这个“讲故事”的思考方式,结合程序设计解决问题的特点,作者常常把程序设计课比喻为“刑事侦查”课,深得学生们的赞同。

2.3 只有美好的过程,考核怎么办?

这个解决也同样可以适用“问题”为主导的教学思路,那就是把各种考核也当成是一个个问题,按照“问题”的解决四步推进,先把这个问题分解为一个个子问题:怎么考、考什么、要不要考好、怎么才能考好、需要准备哪些、怎么推进……能提出合适的子问题,那就可以一步步解决了。

而且,事实上当前各大高校积极不断地深耕教学改革,已经充分考虑到过程考核占比的问题,不少高校的计算机程序设计课程考核已经优化培养方案,适当提高了过程考核的比重。即使过程考核占比不足的情况下,教师也能制定一个过程占主导的平时成绩策略,让课堂教学过程更具有吸引力。

3 结束语

本文提出的以问题为主导的程序设计课程教学思想,着重把精力放在引导学生发现问题、分析问题、解决问题并进行一系列总结分析。事实上,以问题为导向的教学过程本身,也是计算思维的一种应用。是把培养学生计算思维能力的这个目标作为了问题,在平常的教学活动中充分利用比较成熟的教学思想、教学技术和教学手段朝着完成这个目标进行的教学设计。

以问题为主导的计算机程序设计课程教学活动以对学生多次重复进行思维训练的方式让学生逐渐养成习惯,以求达到本能情况下就能拿来使用的目的,这与计算思维的运用特点不谋而合。[4]以问题为主导的程序设计课堂教学活动可以让计算思维这一目标以比较自然的方式往前推进,又便于融入人文思政元素,不失为一种切实可行的教学思路。本文是在作者在多年软件开发经验、不断进行计算思维训练的基础上形成的一些想法,也在实际教学活动中进行了一部分实践尝试和探索,希望能对高校计算机程序设计课程的教学提供些许思路。

参考文献:

[1] 教育部高等学校计算机基础课程教学指导委员会.高等学校计算机基础教学发展战略研究报告暨计算机基础课程教学基本要求[M].北京:高等教育出版社,2009.

[2] 陈国良,董荣胜.计算思维与大学计算机基础教育[J].中国大学教学,2011(1):7-11,32.

[3] 鲍洁.新时期大学计算机教育改革前沿动向——第八届全国高等学校计算机教育改革与发展高峰论坛(计算机基础教育部分)综述[J].计算机教育,2013(7):17-20.

[4] 赵蔚,李士平,姜强,等.培养计算思维,发展STEM教育——2016美国《K-12计算机科学框架》解读及启示[J].中国电化教育,2017(5):47-53.

[5] 周艳丽.基于“问题主导”的翻转课堂教学模式在医用高等数学的探究[J].教育教学论坛,2020(13):254-255.

[6] 贺利坚.一种融入课程思政的理工类专业课教学设计方法[J].计算机教育,2019(11):7-10,15.

[7] 刘列斌.大脑记忆规律在英语词汇教学中的运用[J].安徽工业大学学报(社会科学版),2004,21(2):85-86.

[8] 王雪莉.记忆心理学与外语教学——利用记忆机制提高外语课堂教学效果[J].北京第二外国语学院学报,2002,24(3):16-20.

【通联编辑:唐一东】

猜你喜欢

教学思想计算思维
浅论小学语文教学思想的革新
基于计算思维的软件类研究生高级算法课程教学研究
基于计算思维程序设计的军事案例研究
程序设计课程中计算思维和应用能力培养问题研究