APP下载

以信息技术创新计算思维研究

2021-03-15张睿敏张甲艳陶冶

电脑知识与技术 2021年1期
关键词:计算创新思维信息技术

张睿敏 张甲艳 陶冶

摘要:为建设创新性社会,应该高度重视当前大学生计算创新思维的培养,提出基于信息技术竞赛培养大学生计算创新思维的方法。先分析最能培养计算创新思维的课程程序设计语言的地位与现状;针对竞赛题型密切联系实际、灵活多变、算法复杂等特征,给出能很好提升培养大学生计算创新思维的方法;最后通过各种成绩说明以信息技术竞赛培养计算创新思维效果明显。

关键词:信息技术;创新思维;计算

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

文章编号:1009-3044(2021)01-0099-03

1 背景

大学生多参加各类信息技术竞赛的好处是显而易见的,总体来说有以下几方面的体现:1)信息技术竞赛有助于实践能力的培养:通过信息技术竞赛,让大学生对所学的理论知识进行应用,并且利用信息技术解决专业领域中的实际问题。这样计算思维、创新思维在实践中就会逐渐得到锻炼,进而学生的综合能力得到提高。2)信息技术竞赛有助于创新能力的培养:各种信息技术竞赛从题目设置、竞赛流程安排等都是符合大学生创新能力的组成要素要求的,它将创新观念落实到学生的学习和生活中。3)信息技术竞赛有利于团队合作精神的培养:所谓团队是为实现共同目标而自觉合作、积极努力的一个凝聚力很强的群体。实际工作生活中很多事情都是通过和别人通力合作、协调来完成的[1]。而在校大学生一般都是个性较强的独立个体,通过参加信息技术竞赛能很好地锻炼他们的团结、合作的团队精神。

2 程序设计语言课程地位

随着IT信息技术突飞猛进的发展,不仅大数据、云计算、物联网等专业性很强的领域需要精通几门程序设计语言,而且在智能化、嵌入式、机电、建筑、交通等各行各业也需要精通一门程序设计语言。因此程序设计语言不管是对计算机专业还是非计算机专业的同学来说,都是相对比较重要的一门课程。学写程序最重要的是学习计算机科学背后的思考方式和逻辑思维即:计算创新思维,最终通过科技来解决生活上的问题。但程序设计语言课程也往往是学生觉得“怕”的一门课程,为什么怕呢?一是难、枯燥;二是没兴趣。究其原因,传统的学习程序设计语言课一般都存在以下问题。

2.1 内容枯燥、难度较高

程序设计语言课的知识点繁多、瑣碎,并且很多只有通过学生自己实践操作,才能深刻理解、掌握和应用。而实践调试程序过程显得枯燥、乏味,有时一个很小的错误对初次接触的学生可能要找很长时间,这就需要学生要有足够的耐心。另外程序设计语言课中很多问题涉及一些算法,这对从没有计算思维基础的同学来说,会感到难学[2]。

2.2 知识内容多、课时量有限

不管是非计算机专业开设的C语言程序设计课程,还是计算机专业开设的Java语言程序设计课程,课程囊括的内容都是很多的,C语言基本内容有12章,Java语言基本内容有15章,而课时安排一般有限。例如C语言程序设计课程总共是64学时,理论32学时,实验32学时;Java语言程序设计课程总共是64学时,理论48学时,实验16学时。有限的课时局限了很多学生掌握的是最简单、最基本的概念,而无法对很多内容进行深入的学习。

2.3 学生参差不齐,两极分化

进入高校的学生,大部分会继续保持强烈的求知欲,积极好学;而有少部分同学则会彻底放松、把精力投入到其他地方,这样造成学生学习两极分化现象[3]:学习能力强、自律性好的学生,能快速掌握所学知识和技能,而学习能力弱、散漫的学生则对相应的知识和技能掌握一般甚至不会。

3 程序设计竞赛题型特征

3.1 竞赛的任务要求

一般参赛选手在4个小时内要求完成竞赛给定的题目,例如全国蓝桥杯竞赛的题型包含三种类型:“结果填空”“代码填空”与“程序设计”,总计100分。

3.2 竞赛题型特点

题目描述文字多,蕴含信息量大,灵活且有很多数学知识。如兰顿蚂蚁题:正方形格子里不规则地填上黑色或白色,有一只“蚂蚁”在其中一个正方形内,如图1所示。蚂蚁的头部朝向为上、下、左、右其中一方。蚂蚁的移动规则是:

1)若蚂蚁在黑格,右转90度,将该格改为白格,并向前移一格;

2)若蚂蚁在白格,左转90度,将该格改为黑格,并向前移一格。

要求:根据初始状态,编写程序模拟求解“兰顿蚂蚁”在走过第n步后所处的位置。

输入数据格式要求:第一行输入的数据是格子的行数和列数,m表示行数(3

接下来一行输入数据x y s k, 其中x y表示蚂蚁所在行号和列号,行号和列号都是从0开始编号,并且x y必须是整数;s表示蚂蚁头的朝向,必须是UDLR中的一个大写字母表示上、下、左、右;k 表示蚂蚁走的步数,也必须是整数。以下数据就是一个样例输入的例子:

5 6

0 0 0 0 0 0

0 0 0 0 0 0

0 0 1 0 0 0

0 0 0 0 0 0

0 0 0 0 0 0

2 3 L 5

输出数据格式要求:输出数据为两个空格分开的整数 p q,表示蚂蚁在走过k步后,所处格子的行号和列号,如下输出数据:

1 3

表示蚂蚁所处格子的行号是1,列号是3。

Java语言实现代码如下:

import java.io.*;

public class Main {

static int n, m;

static int s, e;

static char[] chs = { 'L', 'U', 'R', 'D', 'L' };

static int count = 0;

public static void main(String[] args) throws IOException {

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

String s1[] = br.readLine().split(" ");

n = Integer.parseInt(s1[0]);

m = Integer.parseInt(s1[1]);

int[][] arr = new int[n][m];

for (int a = 0; a < n; a++) {

String str[] = br.readLine().split(" ");

for (int b = 0; b < m; b++) {

arr[a][b] = Integer.parseInt(str[b]);

}

}

int x, y;

String s2[] = br.readLine().split(" ");

x = Integer.parseInt(s2[0]);

y = Integer.parseInt(s2[1]);

char dec = s2[2].charAt(0);

int z;

z = Integer.parseInt(s2[3]);

s = x;

e = y;

while (count < z) {

if (arr[s][e] == 1) {

for (int i = 0; i < chs.length; i++) {

if (dec == chs[i]) {

dec = chs[i + 1];

break;

}

}

arr[s][e] = 0;

func(dec, s, e);

}

if (arr[s][e] == 0) {

for (int j = 1; j < chs.length; j++) {

if (dec == chs[j]) {

dec = chs[j - 1];

break;

}

}

arr[s][e] = 1;

func(dec, s, e);

}

}

System.out.print(s + " " + e);

}

public static void func(char dec, int x, int y) {

if (dec == 'L') {

e -= 1;

count++;

}

if (dec == 'U') {

s -= 1;

count++;

}

if (dec == 'R') {

e += 1;

count++;

}

if (dec == 'D') {

s += 1;

count++;

}

}

}

4 計算创新思维培养方法

在程序设计的教学实践过程中,应该充分发挥技能竞赛的导向促进作用,让技能竞赛面对全体学生。竞赛的内容进入课堂教学,形成竞赛与教学互动机制,以赛促教,以赛促学,将知识与实践任务整合,实现知识、技能一体化;教、学、做一体化[4]。笔者从事多年的程序设计语言教学工作和技能竞赛的培训辅导工作,为更好地提高教学效果,更有效地促进学生的专业成长,结合“以赛促教”“行动导向”等教学思想,提出如下几点计算创新思维培养方法:

1)夯实程序设计基础知识、基本技能。教学过程注重“双基”,做到“基础知识扎实,基本技能熟练”,采用“精讲多练,自主探究”的方法[5]。只有具备了扎实的“双基”能力,才有学生质的飞跃的可能。

2)教学内容与竞赛内容衔接[6]。在夯实基础知识和基本技能之后,学生课后练习当中应该结合竞赛内容给一些难度适中的课后练习题,让学生课后自己练习,在应用中不断巩固和深化所学知识,通过这种方式能够很好地锻炼学生应用知识的能力。

3)教学过程采用“任务教学法”及“项目教学法”。分解项目涉及的各个知识点和技能点,以学习任务书的形式引导每个学生独立自主探究,逐个理解掌握,从而奠定开发项目的基础[7]。

4)在具体任务和项目完成中融合一些数学知识的应用[8]。解答竞赛的有些题目,首先要将题目转化成数学模型(即建模)来解决。

5)分组组织学生完成任务和项目。采用3-4人小组合作形式,灵活运用掌握的知识和技能,共同完成项目的设计、程序的编写调试,以及项目的介绍和展示[9],这样学生既能扎实地掌握知识和技能,又能在实际项目开发中获取经验和成长。

5 计算创新思维培养效果与反思

通过多年的教学改革实践,程序设计语言教学取得了不错的效果,在第九届蓝桥杯全国软件和信息技术专业人才大赛JAVA语言、C/C++语言程序设计大赛中,本校同学荣获国家二等奖1名,国家三等奖1名,省级一等奖3名,省级二等奖8名,省级三等奖12名;在第八届蓝桥杯全国软件和信息技术专业人才大赛JAVA语言、C/C++语言程序设计大赛中,本校同学荣获国家三等奖1名,省级一等奖2名,省级二等奖6名,省级三等奖9名;在第二届大广赛中本校同学荣获国家三等奖1名,省级二等奖3名。不仅仅竞赛取得了成就,关键是同学们对枯燥、难学、难懂的JAVA语言、C/C++語言课程学习态度发生了巨大的变化:以前上课睡觉、玩手机,或者直接旷课,现在大部分同学的学习积极性得到提高,在项目任务完成中能互相交流帮助、互相督促借鉴,变被动学习为主动学习。同时学生逐步克服了项目开发的畏惧心理,以前提起项目开发,同学们都觉得是很难完成的事情,而现在经过团队协调、合作、努力,完成的项目由简到难,并在项目完成之时获得的成就感,帮他们建立了很强的学习自信心。

总之,实践证明,在教学过程中引入技能竞赛的项目,将枯燥、难懂的程序设计语言教与学实例化、应用化、趣味化;这在很大程度上提高了学生的学习积极性,能够很好地锻炼学生分析问题、解决问题的思维和能力,即通过信息技术竞赛能有效培养大学生计算创新思维。

参考文献:

[1] 袁春蕾.基于大数据竞赛的大学生创新思维培养[J].计算机教育,2018(11):25-28.

[2] 于世洁,徐宁汉.高校多元招生录取模式的构建与实践[J].中国高等教育,2017(1):61-63.

[3] 唐培和,秦福利,王宇,等.加强计算思维教育 提升创新创业能力[J].中国高等教育,2018(8):47-48.

[4] 杨俊,高祥,孔庆彦,等.培养计算思维提升大学生创新创业能力研究[J].高教学刊,2016(21):5-6.

[5] 朱建峰.拓展计算思维 培养创新能力——基于计算思维的“汽车总动员”项目教学实践与研究[J].中国信息技术教育,2017(Z2):151-153.

[6] 袁春蕾.基于大数据竞赛的大学生创新思维培养[J].计算机教育,2018(11):25-28.

[7] 生诗蕊.基于PBL的计算思维培养研究[D].锦州:渤海大学,2016.

[8] 孔德宇,徐久成,孙全党,等.基于计算思维的大学计算机基础课程教学改革与创新研究[J].计算机教育,2014(17):16-19.

[9] 杜敏,文海英.优质竞赛资源下高校学生计算思维能力培养的初探[J].湖南科技学院学报,2014,35(10):94-95.

【通联编辑:谢媛媛】

猜你喜欢

计算创新思维信息技术
新一代信息技术征稿启示
新一代信息技术征稿启示
新一代信息技术征稿启示