围绕计算思维培养的程序设计课程改革

时间:2022-06-15 02:50:31

围绕计算思维培养的程序设计课程改革

摘要:为了在程序设计课程中主动地、有意识地培养学生的计算思维,文章提出“建立计算思维的概念,掌握计算思维的方法,培养计算思维的能力”的教学目标,即对C/C++程序设计课程的理论和实践教学中的各个环节进行改革,弱化对程序设计语言的讲解,强化程序设计方法、问题求解过程和方法的讲解与实践。

关键词:计算思维;程序设计;课程改革

计算思维是指运用计算机科学的基础概念进行问题求解、系统设计以及人类行为理解等涵盖计算机科学之广度的系列思维活动。在信息社会中,计算思维是人类进行问题求解的有效工具,是每个人都应该掌握并学会使用的。近年来,由于计算机教育在中学阶段的普及,高校新生的计算机操作水平和计算机应用能力普遍提高,“大学计算机基础”课程教育的核心由原先的以计算机应用能力培养为核心转为以计算思维的培养为核心。

在大学计算机通识教育阶段,我们对计算思维的培养应当有效地融入每一堂课之中,即在大学阶段计算机基础课程学习的过程中,逐步培养非计算机专业学生在计算机环境下进行问题求解的思路、方法,使学生能用计算机学科独特的思想、方法来解决专业领域和实际生活中碰到的各种问题,并为将来创新性地解决专业问题奠定基础。

“C/C++程序设计”是大学生入校第一学年所学的计算机类基础课程,课程内容能够较好地体现语言级问题的求解方法,因此这门课也是学生最容易理解计算机求解问题的特点与方法的课程。如何在这门课程中培养学生的计算思维能力,是非计算机专业学生计算思维培养的重要内容,目前已经引起了众多教育者的关注,并进行了有意义的探索。在本次教学改革中,围绕计算思维培养这个核心,我们明确了“建立计算思维的概念,掌握计算思维的方法,培养计算思维的能力”的教学目标,有意识地将计算思维的培养融入教学的各个环节,使一系列的教学活动上升到了一个新的高度。

1.建立计算思维的概念

刚刚入学不久的新生在一年级下学期时,对程序设计还是陌生的。作为初学者,他们在学习中往往容易走人误区,将全部的注意力放在程序设计语言本身,而忽略了学习程序设计课程最应该关注的,也是最能让自己受益的事情:大脑的思考过程,即如何利用已知的信息解决问题的过程。

针对上述情况,在开学的第一次课上,我们并不涉及C/C++程序设计语言本身,而是从计算思维讲起。通过介绍什么是计算思维,计算思维的主要特点以及培养计算思维的重要意义等方面,引导学生建立起计算思维的概念。通过百元买百鸡、割园法求圆周率等经典问题的展示,引导学生感受和领悟计算机分析问题和求解问题的过程、思维模式和基本方法,从而让学生在学习程序设计之初,就在主观上明确程序设计课程的学习目标不仅仅是学习程序设计语言本身,更重要的是学习计算机分析和解决问题的基本过程和思路,即学会如何把实际的问题转化为计算机可以解决的问题,如何用计算机的方法求解问题,从而在以后学习的过程中,主观上积极主动地注重计算思维的培养。

2.掌握计算思维的方法

掌握计算机求解问题的各类方法,是培养学生计算思维的关键。以计算思维培养为核心的程序设计课程的重要任务之一,就是要在学习的过程中教会学生程序设计的方法和各类问题求解的算法,让学生更加深刻地理解计算机解决问题的思路和方法,提升计算思维的能力。C/C++程序设计课程中涉及的程序设计方法和算法如表1所示。

1)教学上以程序设计方法为主导,结合C/C++语言,把程序设计方法学中成熟的理论和方法,如结构化程序设计方法、基于功能抽象的程序设计方法(自顶向下逐步求精的程序设计方法、自底向上程序设计方法)、递归程序设计、面向对象程序设计方法等用通俗易懂的语言描述出来。

2)将程序设计中常用到的算法进行了归类,即枚举类、排序类、查找类、字符串处理类、字符图形打印类、数值计算类、递归算法等。在教学过程的不同阶段,分别引入这些算法。

3)注重通过算法的多样性使学生深入理解到计算机求解同一问题可用不同的方法,不同的方法适用于不同的情况。例如对数据排序的算法,我们会将选择排序、冒泡排序、插人排序、合并排序都介绍给学生,并让学生体会这些算法的不同之处。

3.围绕计算思维能力培养的教学实践

在程序设计课程的教学活动中,与计算思维培养相符合的教学方法,如案例教学法、问题驱动教学法等一直在被无意识地使用。在提出了计算思维的背景下,我们对理论教学和实践教学的各个环节进行了改革,并在教学活动中,主动地、有意识地培养学生的计算思维能力,取得了良好的效果。

3.1理论教学

在理论教学上,我们进行了两个方面的改革。

1)从计算思维的角度出发,按照问题求解的一般步骤重组经典案例。问题求解的一般步骤为:

问题抽象化的描述,问题表示(如何建立模型);

寻找解决方案,问题求解(如何设计算法);

计算机实现过程,效率(如何有效地求解);

现实问题的延伸。

将问题求解提升到计算思维的高度,使学生在求解问题的过程中,更加深刻地理解计算思维的本质,即抽象化和自动化。

2)将程序设计的语言与问题求解的过程分开。在讲解案例时,我们先提出具体问题,后引导学生去体会为了解决问题而产生的大脑思考过程:已知哪些信息,这些信息怎样转化为计算机可以理解的形式,要求的结果是什么,怎样通过已知的信息来求解,并将求解问题的方法,即算法作为教学的重点,让学生通过算法来理解计算机求解问题的思路。算法的描述可以用自然语言、伪代码或者流程图等。学生理解了算法的基本思想后,再引入程序设计语言来实现这一算法,编写代码并调试执行。这一方法加强和促进了算法的构建,训练了学生的程序设计水平,从而简化了对程序语言的复杂性的理解。

3.2实践教学

实践教学以学生自我学习为主,教师提供辅导和答疑。在实践教学内容的设计上,我们将每一章的教学内容分为程序调试、模仿写程序和问题求解3个层次,逐步提升学生的问题求解能力。

1)程序调试的案例中,根据以往的教学经验,将学生容易忽略的细节和易犯的错误预设在程序中。通过对预设的语法和逻辑错误的查找与修正,使学生更为深刻地理解程序设计语言的特点,夯实学生的语言基础。由于理论教学中,对语言细节的讲解不再作为重点,程序调试得尤为重要。

2)模仿写程序要求学生对老师已经讲解过的算法,能用相同的思想解决类似的问题,从而加深学生对知识的理解。例如讲解了用枚举法解决百元买百鸡的问题后,要求学生用枚举法解决学生课表排课、水仙花数求解等问题。实践课上,要求学生在上机之前先将算法以流程图的形式写在本子上,然后将算法转成程序代码,上机时只做代码的调试。这一方法能迫使学生思考,逐步理解计算机求解问题的方法和思路。

3)问题求解则要求学生能灵活运用所学知识,求解新的问题。例如在学习完数组和函数后,问题求解的题目为“编程求解农夫过河问题的解决方案”,要求学生按照问题求解的一般步骤,即问题的表示、求解的算法、代码编写与调试来操作。通过问题求解,不仅提高了学生的学习兴趣,巩固了所学知识,更重要的是提升了学生的分析问题和解决问题的能力。

3.3课程设计

为提升课程的教学质量,我们增加了课程设计环节,引入了应用程序开发,要求学生将数组、结构、链表和文件操作有机地结合起来,完成一个应用型、综合性强的大作业。

在课程临近结束时,学生用一个月的时间完成课程设计,任课教师会给出若干题目供学生选择,例如本学期课程设计的题目有八数码游戏、模拟手机通讯录管理系统、飞机票订票退票系统、日历打印与日期查询系统等12个题目。学生也可根据自己的专业和兴趣自己指定题目。例如今年同济大学交通专业的学生自我选择的题目为停车库车辆管理与查询系统。该题目设计的过程要求学生按照软件开发的步骤进行功能设计、数据结构设计、模块设计、代码编写、代码测试,并完成设计报告。

在课程设计环节中,学生不仅要将一个学期所学的内容融会贯通,编写一个完整的系统,还要考虑程序的正确性、容错性、算法的效率、对用户的友好性等,这样有助于引导学生探究问题求解的思路和方法,提高学生的计算机素质。

3.4考核

我们对考核进行了改革,在学习的不同阶段实施不同形式的考核,考核内容中增加了对问题求解能力的考核。具体做法是保留原来的期中和期末考试,考试内容为基本概念、程序调试和小程序的编写,考核学生对基本知识的掌握情况。在课程设计结束时,增加了综合编程考试,要求学生在规定的时间内,编程解决给定的问题,考核学生的问题求解能力。学生最后的成绩由3次考试成绩、课程设计成绩和实践作业成绩综合评定给出,使得学生成绩能更客观地反映学生的学习过程和学习效果。

值得一提的是,尽管在教学过程中我们弱化了语言细节的讲解,将讲解的重点转向了程序设计的方法和各类算法,但学生通过大量调试程序的练习,同样很好地掌握了语言本身的特点,能够正确地编写程序,在考核中取得的成绩不亚于往年。而通过课程设计,学生的分析问题、解决问题的能力也大大提高了,考核结果令人满意。

4.结语

在C/C++程序设计课程中,通过程序设计方法和算法的传授来培养学生的计算思维是本次课程改革的重点。实践证明,我们主动地、有意识地将计算思维培养融入到理论教学和实践教学的各个环节,不仅有利于学生理解计算机的实现机制和约束,更有利于学生用计算机学科的独特思维方式来求解问题,对提高学生的信息素养和创造性地解决问题的能力都有积极的作用。

上一篇:工作现场电子化安全监督的推广和应用 下一篇:基于智能交通技术的县域城镇道路交通管理策略...