计算机科学导论课程中计算思维培养的探索
作者: 方璐 严明 梁波
摘要:计算机科学导论是计算机相关专业的一门基础导论课程,课程目标是让学生掌握计算机科学的基本理论知识,同时培养学生的计算思维和解决问题的能力。该文从如何在该课程中培养学生的计算思维出发,分析了现有教学中存在的问题与挑战,提出了课堂教学案例讲解与课后编程练习相结合的混合式教学方法,以问题推动思考,以实践促进理论,培养学生的综合能力。
关键词:计算机科学导论;计算思维;算法
中图分类号:TP311 文献标识码:A
文章编号:1009-3044(2022)13-0149-03
1引言
计算机科学导论是计算机相关专业的一门基础导论课程,课程内容主要涉及计算机科学与技术的基本知识和专业知识体系。通过授课使学生掌握计算机科学的基本理论知识和基本方法,同时培养学生的计算思维能力和解决问题的能力[1]。
计算思维(Computational Thinking)是利用计算机科学的思维方式来进行问题求解、系统设计和理解人类行为等一系列的思维活动[2]。随着计算机技术的不断普及和深入,计算思维在各个领域都展现了强大的应用。如计算思维运用在数学领域,可以帮助解决各种复杂的计算和定理的证明[3];在医学领域中,计算思维可以用于医学影像处理和生物信息大数据分析[4];在人工智能领域,计算思维帮助实现人脸识别[5]。越来越多的行业都提出了对程序设计和计算思维应用的要求,因此计算思维的培养也是顺应国家实施创新驱动发展战略和培养创新人才的技能需求[6]。
本文将探讨在计算机科学导论课程授课过程中计算思维培养存在的问题和改革方法,以期帮助学生更好地理解和掌握计算思维,并将其应用于工程问题的实践中。
2当前课程教学中存在的问题与挑战
2.1学生基础千差万别
学生的计算机基础存在较大的差异,随着计算机技术的普及,有的学生在初高中就接触过计算机知识,也进行过编程训练,已经掌握了一些的计算知识。部分基础较好的学生也会利用课余时间学习编程相关知识,参加相关竞赛或项目,对计算思维能的培养也是很好的锻炼。然而在很多偏远地区,由于教学条件差、资源匮乏,计算机课程无法进入到义务教育环节。由于学生的教育背景和基本素质的差异,对教学内容的接受和理解力也有较大的差异。对于部分完全没有计算机科学基础的同学,计算思维是全新的概念,同时由于计算思维的抽象性和复杂性,在短时间内难以理解和掌握。在这种情况下,如果采用统一的标准和要求进行教学,会造成学习效果的差异化明显。同时由于计算思维的养成和训练是一个长期、循序渐进、潜移默化的过程,不可能一蹴而就,这就与以往的教学有着不同的要求和目标,这些要求和目标对现有的教育观念和方式提出了新的挑战[7]。
2.2教学内容抽象而复杂
计算机科学导论课程内容多而广,包括计算机存储结构、程序运行工作原理、计算思维、操作系统、计算机网络、编程语言等的相关内容。传统的计算机科学导论教学往往比较注重计算机知识的传授和编程技能的培养,而忽略计算思维的培养[7]。同时,由于计算思维相关内容理论知识偏多,概念抽象,枯燥难以理解,传统的教学通常采用概念讲解+程序分析的方式,对其真正体现出来的计算机思维缺乏很大程度的创新意识以及总体的规划意识。教育部高等学校大学计算机课程教学指导委员会主任委员李廉教授认为[8],在传统的教学中,计算思维是隐藏在能力培养内容中的,要靠学生“悟”出来,现在要把这些明白地讲出来,让学生自觉地去学习,提高培养质量,缩短培养的时间,这对教师的教学内容设计和教学方法都提出了新的挑战。同时,如何将计算思维融入实际工程问题中,在解决问题的过程中培养学生的思维能力,也是教师在教学过程中需要注意和改进。
2.3教学方法单一
计算机导论的特点及在计算机专业中承担的角色,决定了在教学中需要采取多种灵活的教学方法。然而在传统的计算机教学中,主要采用课堂讲授的教学方式,但是由于计算思维的内容抽象而枯燥,采用讲解的方式进行授课,学生的注意力很难长时间集中,易产生课堂疲惫,对教学内容的理解和掌握就会大打折扣。对于计算思维的教学,我们应采用理论结合实践的教学方法,引导学生将思维方式运用于实际问题的解决中,以问题推动思考,以实践促进理论。因此课堂教学方式可以丰富多样,如用视频教学吸引学生兴趣,引出问题;增加课堂讨论,通过思维的碰撞启发灵感,得到问题的多种解决方案;课堂编程实践,对于简单的编程练习,可以在课堂上带领学生进行编程实践,在发现问题和讨论解决的过程培养学生的综合能力。
3基于混合式教学的计算思维培养探索
计算思维的培养是计算机科学导论课程的核心目标,把计算思维融合到计算机知识中,让学生掌握基于计算机科学的问题求解思路与方法,培养学生应用计算思维处理实际问题的能力和创新能力。但是计算思维的内容抽象而复杂,为了能在有限的时间内将其教授给学生,我们采用了课堂教学理论讲解与课后编程练习相结合的混合式教学方法(图1)。笔者将课堂教学分为计算思维概念及思维过程讲解,经典案例分析,思维训练三个部分,结合课后的编程练习以及作业反馈,形成闭环,使学生在课堂讲解中了解计算思维的基本概念和思维方式,在案例分析中体会计算思维在实际应用中的解题思路,并且在编程实践中实现算法的具体步骤,在发现和解决问题的过程中加深对计算思维的理解。
3.1课堂概念及思维方式讲解
计算思维的课堂概念讲解主要是介绍计算思维的概念和基本思想步骤。计算思维并不是某一种具体的计算机算法,而是一种解决问题的思维方式,这种思维方式通过将需要解决的大问题分解为小问题,然后找到问题之间的共同规律,再通过具体的算法来解决问题。计算思维需要在不断解决问题的过程中循序渐进地形成。应用计算思维来解决问题,主要包括以下几个步骤[9-10]:(1)分解:把数据、过程或问题分解成更小的、易于管理的部分;(2)模式识别:观察数据的模式、趋势和规律;(3)抽象:识别模式形成背后的一般原理;(4)算法设计:为解决某一类问题撰写一系列详细步骤。
抽象和自动化是计算思维的两大核心特征[8]。抽象指的是把实际的问题抽象为数学问题,并建立数学模型;自动化是指通过计算机语言将结题思路的逻辑过程写成算法,并对问题进行求解。通过对计算思维概念和解题步骤的简介,让学生对计算思维有初步的了解。
3.2课堂案例分析
笔者选取了几个经典的课堂案例来对计算思维的解题步骤进行分析,帮助学生掌握计算思维在实际工程问题中的应用。比如汉诺塔问题、排序问题、找零钱问题、最短路径问题和背包问题等。在案例分析的过程中,我们首先引导学生运用计算思维进行独立思考,从实际工程问题中抽象出数学问题,然后再将大问题分解为小问题并寻找出大问题与小问题,小问题与更小问题之间的规律,构建出问题的数学模型,推导出数学表达式,这样就完成了计算思维应用的关键步骤——抽象,这也是计算思维应用中最重要的步骤,当得到问题的求解的数学表达式之后,就可以借计算机语言,将其转换为具体的程序,从而对问题进行求解和验证,实现工程问题的自动化求解。
为了帮助学生将实际工程问题的抽象过程,笔者借助视频动画和流程图帮助学生理解问题的求解过程,从而将大问题分解为小问题,寻找到问题之间的规律,将其进行算法分类,再推导出问题求解的数学表达式。通过对经典案例引导式的讲解分析,大部分学生都能领悟到计算思维的要点。我们在课堂上还将算法的具体实现程序进行解读,将其中的重要函数和实现过程与思维过程的流程图相对应进行讲解,帮助学生理解算法的实现方法与步骤。
3.3计算思维的课堂训练
为了帮助学生进一步理解和掌握计算思维,笔者在课堂案例分析后设置了课堂思维训练环节。选取了与案例中解题思路类似的工程问题,引导学生用计算思维进行思考和讨论,最终得到问题的数学表达式。思维训练过程中,问题的分类是关键,对问题进行正确分类后,就能用相应的数学模型进行建模和表达式推导[11]。而问题的分解和规律的寻找可以帮助找到问题的类别。比如通过问题分解,知道汉诺塔问题属于递归问题,与之类似的兔子繁殖问题,爬楼梯问题和排序问题也都可以用递归思维来解决;背包问题属于动态规划问题,最短路径和找零钱问题也可以用动态规划的思路进行求解。通过反复的课堂思维训练,有利于提升学生的逻辑思维和抽象能力,使学生在面对实际工程问题时,用计算思维的方法对问题进行分解和抽象,寻找到合适的算法对问题进行求解。
3.4以Python为平台的编程练习
使用计算思维来解决工程问题最终需要通过算法和程序来实现。Python语言语法简单,入门容易,可扩展性高且有着丰富的标准库,已成为近年来最受欢迎的程序设计语言之一,广泛应用于科研和工程技术领域各种大型项目的开发中。本课程选用Python作为计算思维实现的平台。在完成了课堂的思维训练,得到了问题求解的数学表达式后,我们要求学生在课后挑选其中一个思维训练题,画出流程图,并通过程序实现算法,解决问题。在算法实现的过程中,我们要求学生打印出过程变量,如使用二分法进行排序,我们可以打印出数组在二分和排序过程中的动态变化过程,使用递归算法解决爬楼梯问题时,可以打印出各层递归结构中的输入和输出变量,通过观察过程量的变化,有助于学生理解算法思路。
在学生完成了程序练习后,我们会对学生的程序进行检查和反馈,选取具有代表性的程序,从算法流程,正确性和复杂度几个角度进行解读和分析,帮助学生进一步加深对计算思维的理解。
4 总结
随着科技的发展,计算机技术迅速融入于各行业领域。计算思维的培养对于培养高素质的计算机领域人才非常重要,我们将计算思维的培养贯穿于计算机科学导论的整个教学过程中,通过潜移默化的课堂思维训练,结合课后的实践练习,以问题推动思考,以实践促进理论,提高了学生的学习兴趣,充分调动学生的积极性和主动性,为后续相关课程的学习奠定基础。
参考文献:
[1] 石云,陈声波.培养计算思维的“计算机导论”混合式教学评价指标体系的构建与实施[J].教育教学论坛,2016(5):209-210.
[2] Wing J M.Computational thinking[J].Communications of the ACM,2006,49(3):33-35.
[3] 白珍,王煜.以数学建模为核心算法设计教学中的计算思维实践[J].中国信息技术教育,2017(S3):45-47.
[4] 张志欣,岳根霞,邢宁浩,等.如何提高医学生的计算思维[J].新课程研究(中旬刊),2017(7):67-68.
[5] 阮静.基于计算思维培养的人工智能课程设计实践探究——以《人脸识别》一课为例[J].中国现代教育装备,2021(22):18-20,23.
[6] 陈晓彬.计算思维能力培养视角下中职Python程序教学实践探究[J].现代职业教育,2021(51):224-225.
[7] 陈利平,高金华.以计算思维为导向的计算机导论课程研究[J].福建电脑,2015,31(6):145-146.
[8] 陈国良,董荣胜.计算思维的表述体系[J].中国大学教学,2013(12):22-26.
[10] 郭永光.灵活计算,思维创新——浅析大学计算机基础课程计算思维能力的教学策略[J].山西青年,2021(22):51-52.
[11] 郦丽.计算思维在计算机科学导论课程改革中的作用[J].电子商务,2018(6):91-92.
【通联编辑:闻翔军】