浅谈程序设计课程对学生素质的培养

2021-06-21 08:06郁庭
赢未来 2021年1期
关键词:数据结构式子赋值

郁庭

宁波市镇海蛟川书院,浙江宁波315201

1 程序设计课程的目标和内容

1.1 程序设计课程的终极目标

当今时代,能培养出信息化前沿技术人才的国家才能在走在世界前列,这些前沿技术、热点领域包括区块链、大数据、云计算、人工智能(无人驾驶技术)、5G、工业互联网、物联网,涉足这些领域离不开算法、数据库、数据结构等程序设计课程基础知识。因此程序设计课程的终极目标就是为了国家培养信息技术前沿领域的人才。

1.2 各学龄段的程序设计课程

总体来说,程序设计课程在不同年龄段应有各自的侧重点,小学阶段只要打下基本语法基础,着力培养兴趣和习惯,初高中阶段重在传授数据结构、算法,锻炼一定的代码功底,大学阶段注重应用能力,在开发软件过程中培养综合运用程序设计水平解决问题的能力。

1.3 小学阶段

由于知识水平和认知能力有限,程序设计课程不能过多的涉及算法,也不能出现过长的代码编写任务,程序语言上的选择也最好不要选择纯结构化编程语言,要有面向对象的内容。

1.4 初高中阶段

有了小学打下的编程基础后,可以开始接触数据结构、算法等知识,代码量也可以适当增加,语言的选择上可以是纯代码的C、C++、Python 等,尤其是信息学竞赛,不用过多考虑孩子兴趣,因为竞赛编程本来就是存在自然淘汰,不是每个孩子都适合一直学,它需要足够的理科思维,所以初中信竞可以开始尝试让学生掌握递归、树、图论、动态规划等算法知识。

1.5 大学阶段

有了之前打造的数据结构、算法基础,就可以正式开启计算机相关课程,主要包括《数据结构》、《操作系统》、《数据库》等,这一阶段的语言可以是java、C++,java 负责电脑端和移动端安卓系统,C++负责苹果系统。

2 程序设计课程能够培养人的哪些素质

2.1 程序设计课程养成学生的计算思维

2.1.1 什么是计算思维

最早提出计算思维广义概念的是美国卡内基·梅隆大学Jeannette M.Wing 教授,他表示:计算思维是运用计算机科学的基础概念进行问题求解、系统设计以及人类行为理解等涵盖计算机科学之广度的一系列思维活动。

2.1.2 为什么说程序设计课程能培养人的计算思维

(1)提出一个问题

从上述定义可以看出计算思维其实就是用计算机的方法去考虑并解决问题,我们不妨来看这样一道题目:有一个词典包含N 个以h 开头的单词(ha hack had half hag hell help)请问hag这个单词有没有在词典里出现过?

(2)人和计算机在解决该问题上的思维差异

人的思路当然是遍历每一个单词,看看在单词表里有没有要查找的hag,那计算机可以怎么做?它可以使用一种数据结构——“树”,把所有的单词按照它们的字母前缀构建成这样一棵树,上述例题的解决过程,其实就是学生学会使用计算机方法去对问题进行分解,模式识别、抽象、产生算法,最终解决问题的过程,当然计算思维的形成需要做题量的积累,老师要精选一些有代表性的题目,做好引导者的角色,尽可能缩短学生的成长期。

2.2 程序设计课程能够扩宽思维方式

2.2.1 从赋值语句看学习程序设计的思维转换

在数学中,x=y 和y=x 是等价的两个等式,而在程序设计课程中,这两个式子具有不同的含义,其中的“=”叫做赋值号,x=y 的意义就相应的变为把y 的值赋值给x,y=x 的意义就是把x的值赋值给y,在数学中“=”是没有方向的,而在程序设计中“=”(赋值号)是有方向,它的过程总是把“=”右边的值赋值给“=”左边的变量。

再比如x=x+1,这个式子在数学中是毫无意义的,因为无论x 是多少,左右都不可能相等,然而在程序设计课程中,这个式子不但有意义,而且是程序设计中出场率极高的式子,它每执行一次,x 这个值就会增加1,以此来改变我们的运算结果,我们把这种x 变量叫做累加器。

2.1.2 计算机的速度优势让穷举方法变得可行

(1)看一道题

我们先来看这样一道题:警察抓了A、B、C、D 四名罪犯,其中一名是小偷,审讯的时候,A 说:“我不是小偷”,B 说:“C 是小偷”,C 说:“小偷肯定是D”,D 说:“C 是冤枉人”,现在已经知道四个人三个人说真话,一个人说假话,请你判断下谁是小偷?

用计算机方法解决此题可以这样转化:首先对A、B、C、D四个人分别用1~4 四个数字进行编号,接着将四个人的描述结果用数字量化,如果描述是真,则结果是1,如果是假,则结果是0。我们假设小偷的编号是X,对于四个人的描述,数字化的结果如下表。

A 说:“我不是小偷”X!=1 B 说:“C 是小偷”X=3 C 说:“小偷肯定是D”X=4 D 说:“C 是冤枉人”X!=4

通过这样的转化,我们就可以穷举X 的值(谁是小偷),再来验证说真话、谎话的数量是否和题目条件一致就能成功解决此题,而不需要逻辑推理。

3 程序设计课程如何培养人

3.1 人机思维模式接合,各取所长

例题精选,培养计算思维,培养学生模块化程序设计的习惯,要系统性地精选题目,要贴近学生,难度要递进,同时也要有代表性,能够准备地传递知识,例如在讲解搜索算法时,下述例题就特别合适。

给你一个H 行W 列的泡泡,发射进去一个指定位置的泡泡,如果周围连着有三个(算上自己),则连着的一起爆炸,如果剩下的没连着顶行也会掉下来,问最终有多少个掉下来?这道题的价值主要在于泡泡相邻要看成六相邻,从而把题目建模成适合计算机解决的类型。

再比如填数独题,人的解法往往是观察法居多,比如第二行第三列的这个3 是直接可以观察出来的,但计算机解决此问题用候选数法建模更合适。

3.2 线上与线下结合

系统性讲授是线下更好,因为师生互动更好,但特殊时期上课也可以转到线上进行,训练则更自由,可以完全放在线上进行,但要拓宽题源。

综上所述,我们要关注热点领域、意识到当今时代信息化前沿技术人才需要的迫切性,努力开发程序设计课程,严谨治学,线下互动教学与线上训练结合开展,营造理想的教学氛围,使得程序设计课程能够提升学生的学习力、培养学生的计算思维和综合应用能力、拓宽学生的思维方式,拔高学生的创新能力,为国家培养更多的技术人才,从而提升国际竞争力。

猜你喜欢
数据结构式子赋值
L-代数上的赋值
活用根表示系数巧求多参数式子的取值范围
强赋值幺半群上的加权Mealy机与加权Moore机的关系*
三九变九三
“翻转课堂”教学模式的探讨——以《数据结构》课程教学为例
高职高专数据结构教学改革探讨
利用赋值法解决抽象函数相关问题オ
TRIZ理论在“数据结构”多媒体教学中的应用
《数据结构》教学方法创新探讨
P2×Cn的友好标号集