張睿敏 張甲艷 陶冶
摘要:為建設(shè)創(chuàng)新性社會,應(yīng)該高度重視當(dāng)前大學(xué)生計算創(chuàng)新思維的培養(yǎng),提出基于信息技術(shù)競賽培養(yǎng)大學(xué)生計算創(chuàng)新思維的方法。先分析最能培養(yǎng)計算創(chuàng)新思維的課程程序設(shè)計語言的地位與現(xiàn)狀;針對競賽題型密切聯(lián)系實際、靈活多變、算法復(fù)雜等特征,給出能很好提升培養(yǎng)大學(xué)生計算創(chuàng)新思維的方法;最后通過各種成績說明以信息技術(shù)競賽培養(yǎng)計算創(chuàng)新思維效果明顯。
關(guān)鍵詞:信息技術(shù);創(chuàng)新思維;計算
中圖分類號:TP311? ? ? 文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2021)01-0099-03
1 背景
大學(xué)生多參加各類信息技術(shù)競賽的好處是顯而易見的,總體來說有以下幾方面的體現(xiàn):1)信息技術(shù)競賽有助于實踐能力的培養(yǎng):通過信息技術(shù)競賽,讓大學(xué)生對所學(xué)的理論知識進(jìn)行應(yīng)用,并且利用信息技術(shù)解決專業(yè)領(lǐng)域中的實際問題。這樣計算思維、創(chuàng)新思維在實踐中就會逐漸得到鍛煉,進(jìn)而學(xué)生的綜合能力得到提高。2)信息技術(shù)競賽有助于創(chuàng)新能力的培養(yǎng):各種信息技術(shù)競賽從題目設(shè)置、競賽流程安排等都是符合大學(xué)生創(chuàng)新能力的組成要素要求的,它將創(chuàng)新觀念落實到學(xué)生的學(xué)習(xí)和生活中。3)信息技術(shù)競賽有利于團(tuán)隊合作精神的培養(yǎng):所謂團(tuán)隊是為實現(xiàn)共同目標(biāo)而自覺合作、積極努力的一個凝聚力很強(qiáng)的群體。實際工作生活中很多事情都是通過和別人通力合作、協(xié)調(diào)來完成的[1]。而在校大學(xué)生一般都是個性較強(qiáng)的獨立個體,通過參加信息技術(shù)競賽能很好地鍛煉他們的團(tuán)結(jié)、合作的團(tuán)隊精神。
2 程序設(shè)計語言課程地位
隨著IT信息技術(shù)突飛猛進(jìn)的發(fā)展,不僅大數(shù)據(jù)、云計算、物聯(lián)網(wǎng)等專業(yè)性很強(qiáng)的領(lǐng)域需要精通幾門程序設(shè)計語言,而且在智能化、嵌入式、機(jī)電、建筑、交通等各行各業(yè)也需要精通一門程序設(shè)計語言。因此程序設(shè)計語言不管是對計算機(jī)專業(yè)還是非計算機(jī)專業(yè)的同學(xué)來說,都是相對比較重要的一門課程。學(xué)寫程序最重要的是學(xué)習(xí)計算機(jī)科學(xué)背后的思考方式和邏輯思維即:計算創(chuàng)新思維,最終通過科技來解決生活上的問題。但程序設(shè)計語言課程也往往是學(xué)生覺得“怕”的一門課程,為什么怕呢?一是難、枯燥;二是沒興趣。究其原因,傳統(tǒng)的學(xué)習(xí)程序設(shè)計語言課一般都存在以下問題。
2.1 內(nèi)容枯燥、難度較高
程序設(shè)計語言課的知識點繁多、瑣碎,并且很多只有通過學(xué)生自己實踐操作,才能深刻理解、掌握和應(yīng)用。而實踐調(diào)試程序過程顯得枯燥、乏味,有時一個很小的錯誤對初次接觸的學(xué)生可能要找很長時間,這就需要學(xué)生要有足夠的耐心。另外程序設(shè)計語言課中很多問題涉及一些算法,這對從沒有計算思維基礎(chǔ)的同學(xué)來說,會感到難學(xué)[2]。
2.2 知識內(nèi)容多、課時量有限
不管是非計算機(jī)專業(yè)開設(shè)的C語言程序設(shè)計課程,還是計算機(jī)專業(yè)開設(shè)的Java語言程序設(shè)計課程,課程囊括的內(nèi)容都是很多的,C語言基本內(nèi)容有12章,Java語言基本內(nèi)容有15章,而課時安排一般有限。例如C語言程序設(shè)計課程總共是64學(xué)時,理論32學(xué)時,實驗32學(xué)時;Java語言程序設(shè)計課程總共是64學(xué)時,理論48學(xué)時,實驗16學(xué)時。有限的課時局限了很多學(xué)生掌握的是最簡單、最基本的概念,而無法對很多內(nèi)容進(jìn)行深入的學(xué)習(xí)。
2.3 學(xué)生參差不齊,兩極分化
進(jìn)入高校的學(xué)生,大部分會繼續(xù)保持強(qiáng)烈的求知欲,積極好學(xué);而有少部分同學(xué)則會徹底放松、把精力投入到其他地方,這樣造成學(xué)生學(xué)習(xí)兩極分化現(xiàn)象[3]:學(xué)習(xí)能力強(qiáng)、自律性好的學(xué)生,能快速掌握所學(xué)知識和技能,而學(xué)習(xí)能力弱、散漫的學(xué)生則對相應(yīng)的知識和技能掌握一般甚至不會。
3 程序設(shè)計競賽題型特征
3.1 競賽的任務(wù)要求
一般參賽選手在4個小時內(nèi)要求完成競賽給定的題目,例如全國藍(lán)橋杯競賽的題型包含三種類型:“結(jié)果填空”“代碼填空”與“程序設(shè)計”,總計100分。
3.2 競賽題型特點
題目描述文字多,蘊含信息量大,靈活且有很多數(shù)學(xué)知識。如蘭頓螞蟻題:正方形格子里不規(guī)則地填上黑色或白色,有一只“螞蟻”在其中一個正方形內(nèi),如圖1所示。螞蟻的頭部朝向為上、下、左、右其中一方。螞蟻的移動規(guī)則是:
1)若螞蟻在黑格,右轉(zhuǎn)90度,將該格改為白格,并向前移一格;
2)若螞蟻在白格,左轉(zhuǎn)90度,將該格改為黑格,并向前移一格。
要求:根據(jù)初始狀態(tài),編寫程序模擬求解“蘭頓螞蟻”在走過第n步后所處的位置。
輸入數(shù)據(jù)格式要求:第一行輸入的數(shù)據(jù)是格子的行數(shù)和列數(shù),m表示行數(shù)(3 接下來一行輸入數(shù)據(jù)x y s k, 其中x y表示螞蟻所在行號和列號,行號和列號都是從0開始編號,并且x y必須是整數(shù);s表示螞蟻頭的朝向,必須是UDLR中的一個大寫字母表示上、下、左、右;k 表示螞蟻走的步數(shù),也必須是整數(shù)。以下數(shù)據(jù)就是一個樣例輸入的例子: 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 輸出數(shù)據(jù)格式要求:輸出數(shù)據(jù)為兩個空格分開的整數(shù) p q,表示螞蟻在走過k步后,所處格子的行號和列號,如下輸出數(shù)據(jù): 1 3 表示螞蟻所處格子的行號是1,列號是3。 Java語言實現(xiàn)代碼如下: 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 計算創(chuàng)新思維培養(yǎng)方法
在程序設(shè)計的教學(xué)實踐過程中,應(yīng)該充分發(fā)揮技能競賽的導(dǎo)向促進(jìn)作用,讓技能競賽面對全體學(xué)生。競賽的內(nèi)容進(jìn)入課堂教學(xué),形成競賽與教學(xué)互動機(jī)制,以賽促教,以賽促學(xué),將知識與實踐任務(wù)整合,實現(xiàn)知識、技能一體化;教、學(xué)、做一體化[4]。筆者從事多年的程序設(shè)計語言教學(xué)工作和技能競賽的培訓(xùn)輔導(dǎo)工作,為更好地提高教學(xué)效果,更有效地促進(jìn)學(xué)生的專業(yè)成長,結(jié)合“以賽促教”“行動導(dǎo)向”等教學(xué)思想,提出如下幾點計算創(chuàng)新思維培養(yǎng)方法:
1)夯實程序設(shè)計基礎(chǔ)知識、基本技能。教學(xué)過程注重“雙基”,做到“基礎(chǔ)知識扎實,基本技能熟練”,采用“精講多練,自主探究”的方法[5]。只有具備了扎實的“雙基”能力,才有學(xué)生質(zhì)的飛躍的可能。
2)教學(xué)內(nèi)容與競賽內(nèi)容銜接[6]。在夯實基礎(chǔ)知識和基本技能之后,學(xué)生課后練習(xí)當(dāng)中應(yīng)該結(jié)合競賽內(nèi)容給一些難度適中的課后練習(xí)題,讓學(xué)生課后自己練習(xí),在應(yīng)用中不斷鞏固和深化所學(xué)知識,通過這種方式能夠很好地鍛煉學(xué)生應(yīng)用知識的能力。
3)教學(xué)過程采用“任務(wù)教學(xué)法”及“項目教學(xué)法”。分解項目涉及的各個知識點和技能點,以學(xué)習(xí)任務(wù)書的形式引導(dǎo)每個學(xué)生獨立自主探究,逐個理解掌握,從而奠定開發(fā)項目的基礎(chǔ)[7]。
4)在具體任務(wù)和項目完成中融合一些數(shù)學(xué)知識的應(yīng)用[8]。解答競賽的有些題目,首先要將題目轉(zhuǎn)化成數(shù)學(xué)模型(即建模)來解決。
5)分組組織學(xué)生完成任務(wù)和項目。采用3-4人小組合作形式,靈活運用掌握的知識和技能,共同完成項目的設(shè)計、程序的編寫調(diào)試,以及項目的介紹和展示[9],這樣學(xué)生既能扎實地掌握知識和技能,又能在實際項目開發(fā)中獲取經(jīng)驗和成長。
5 計算創(chuàng)新思維培養(yǎng)效果與反思
通過多年的教學(xué)改革實踐,程序設(shè)計語言教學(xué)取得了不錯的效果,在第九屆藍(lán)橋杯全國軟件和信息技術(shù)專業(yè)人才大賽JAVA語言、C/C++語言程序設(shè)計大賽中,本校同學(xué)榮獲國家二等獎1名,國家三等獎1名,省級一等獎3名,省級二等獎8名,省級三等獎12名;在第八屆藍(lán)橋杯全國軟件和信息技術(shù)專業(yè)人才大賽JAVA語言、C/C++語言程序設(shè)計大賽中,本校同學(xué)榮獲國家三等獎1名,省級一等獎2名,省級二等獎6名,省級三等獎9名;在第二屆大廣賽中本校同學(xué)榮獲國家三等獎1名,省級二等獎3名。不僅僅競賽取得了成就,關(guān)鍵是同學(xué)們對枯燥、難學(xué)、難懂的JAVA語言、C/C++語言課程學(xué)習(xí)態(tài)度發(fā)生了巨大的變化:以前上課睡覺、玩手機(jī),或者直接曠課,現(xiàn)在大部分同學(xué)的學(xué)習(xí)積極性得到提高,在項目任務(wù)完成中能互相交流幫助、互相督促借鑒,變被動學(xué)習(xí)為主動學(xué)習(xí)。同時學(xué)生逐步克服了項目開發(fā)的畏懼心理,以前提起項目開發(fā),同學(xué)們都覺得是很難完成的事情,而現(xiàn)在經(jīng)過團(tuán)隊協(xié)調(diào)、合作、努力,完成的項目由簡到難,并在項目完成之時獲得的成就感,幫他們建立了很強(qiáng)的學(xué)習(xí)自信心。
總之,實踐證明,在教學(xué)過程中引入技能競賽的項目,將枯燥、難懂的程序設(shè)計語言教與學(xué)實例化、應(yīng)用化、趣味化;這在很大程度上提高了學(xué)生的學(xué)習(xí)積極性,能夠很好地鍛煉學(xué)生分析問題、解決問題的思維和能力,即通過信息技術(shù)競賽能有效培養(yǎng)大學(xué)生計算創(chuàng)新思維。
參考文獻(xiàn):
[1] 袁春蕾.基于大數(shù)據(jù)競賽的大學(xué)生創(chuàng)新思維培養(yǎng)[J].計算機(jī)教育,2018(11):25-28.
[2] 于世潔,徐寧漢.高校多元招生錄取模式的構(gòu)建與實踐[J].中國高等教育,2017(1):61-63.
[3] 唐培和,秦福利,王宇,等.加強(qiáng)計算思維教育 提升創(chuàng)新創(chuàng)業(yè)能力[J].中國高等教育,2018(8):47-48.
[4] 楊俊,高祥,孔慶彥,等.培養(yǎng)計算思維提升大學(xué)生創(chuàng)新創(chuàng)業(yè)能力研究[J].高教學(xué)刊,2016(21):5-6.
[5] 朱建峰.拓展計算思維 培養(yǎng)創(chuàng)新能力——基于計算思維的“汽車總動員”項目教學(xué)實踐與研究[J].中國信息技術(shù)教育,2017(Z2):151-153.
[6] 袁春蕾.基于大數(shù)據(jù)競賽的大學(xué)生創(chuàng)新思維培養(yǎng)[J].計算機(jī)教育,2018(11):25-28.
[7] 生詩蕊.基于PBL的計算思維培養(yǎng)研究[D].錦州:渤海大學(xué),2016.
[8] 孔德宇,徐久成,孫全黨,等.基于計算思維的大學(xué)計算機(jī)基礎(chǔ)課程教學(xué)改革與創(chuàng)新研究[J].計算機(jī)教育,2014(17):16-19.
[9] 杜敏,文海英.優(yōu)質(zhì)競賽資源下高校學(xué)生計算思維能力培養(yǎng)的初探[J].湖南科技學(xué)院學(xué)報,2014,35(10):94-95.
【通聯(lián)編輯:謝媛媛】