張睿敏 張甲艷 陶冶

摘要:為建設創新性社會,應該高度重視當前大學生計算創新思維的培養,提出基于信息技術競賽培養大學生計算創新思維的方法。先分析最能培養計算創新思維的課程程序設計語言的地位與現狀;針對競賽題型密切聯系實際、靈活多變、算法復雜等特征,給出能很好提升培養大學生計算創新思維的方法;最后通過各種成績說明以信息技術競賽培養計算創新思維效果明顯。
關鍵詞:信息技術;創新思維;計算
中圖分類號: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.
【通聯編輯:謝媛媛】