郁庭
寧波市鎮(zhèn)海蛟川書(shū)院,浙江寧波315201
當(dāng)今時(shí)代,能培養(yǎng)出信息化前沿技術(shù)人才的國(guó)家才能在走在世界前列,這些前沿技術(shù)、熱點(diǎn)領(lǐng)域包括區(qū)塊鏈、大數(shù)據(jù)、云計(jì)算、人工智能(無(wú)人駕駛技術(shù))、5G、工業(yè)互聯(lián)網(wǎng)、物聯(lián)網(wǎng),涉足這些領(lǐng)域離不開(kāi)算法、數(shù)據(jù)庫(kù)、數(shù)據(jù)結(jié)構(gòu)等程序設(shè)計(jì)課程基礎(chǔ)知識(shí)。因此程序設(shè)計(jì)課程的終極目標(biāo)就是為了國(guó)家培養(yǎng)信息技術(shù)前沿領(lǐng)域的人才。
總體來(lái)說(shuō),程序設(shè)計(jì)課程在不同年齡段應(yīng)有各自的側(cè)重點(diǎn),小學(xué)階段只要打下基本語(yǔ)法基礎(chǔ),著力培養(yǎng)興趣和習(xí)慣,初高中階段重在傳授數(shù)據(jù)結(jié)構(gòu)、算法,鍛煉一定的代碼功底,大學(xué)階段注重應(yīng)用能力,在開(kāi)發(fā)軟件過(guò)程中培養(yǎng)綜合運(yùn)用程序設(shè)計(jì)水平解決問(wèn)題的能力。
由于知識(shí)水平和認(rèn)知能力有限,程序設(shè)計(jì)課程不能過(guò)多的涉及算法,也不能出現(xiàn)過(guò)長(zhǎng)的代碼編寫(xiě)任務(wù),程序語(yǔ)言上的選擇也最好不要選擇純結(jié)構(gòu)化編程語(yǔ)言,要有面向?qū)ο蟮膬?nèi)容。
有了小學(xué)打下的編程基礎(chǔ)后,可以開(kāi)始接觸數(shù)據(jù)結(jié)構(gòu)、算法等知識(shí),代碼量也可以適當(dāng)增加,語(yǔ)言的選擇上可以是純代碼的C、C++、Python 等,尤其是信息學(xué)競(jìng)賽,不用過(guò)多考慮孩子興趣,因?yàn)楦?jìng)賽編程本來(lái)就是存在自然淘汰,不是每個(gè)孩子都適合一直學(xué),它需要足夠的理科思維,所以初中信競(jìng)可以開(kāi)始嘗試讓學(xué)生掌握遞歸、樹(shù)、圖論、動(dòng)態(tài)規(guī)劃等算法知識(shí)。
有了之前打造的數(shù)據(jù)結(jié)構(gòu)、算法基礎(chǔ),就可以正式開(kāi)啟計(jì)算機(jī)相關(guān)課程,主要包括《數(shù)據(jù)結(jié)構(gòu)》、《操作系統(tǒng)》、《數(shù)據(jù)庫(kù)》等,這一階段的語(yǔ)言可以是java、C++,java 負(fù)責(zé)電腦端和移動(dòng)端安卓系統(tǒng),C++負(fù)責(zé)蘋(píng)果系統(tǒng)。
2.1.1 什么是計(jì)算思維
最早提出計(jì)算思維廣義概念的是美國(guó)卡內(nèi)基·梅隆大學(xué)Jeannette M.Wing 教授,他表示:計(jì)算思維是運(yùn)用計(jì)算機(jī)科學(xué)的基礎(chǔ)概念進(jìn)行問(wèn)題求解、系統(tǒng)設(shè)計(jì)以及人類(lèi)行為理解等涵蓋計(jì)算機(jī)科學(xué)之廣度的一系列思維活動(dòng)。
2.1.2 為什么說(shuō)程序設(shè)計(jì)課程能培養(yǎng)人的計(jì)算思維
(1)提出一個(gè)問(wèn)題
從上述定義可以看出計(jì)算思維其實(shí)就是用計(jì)算機(jī)的方法去考慮并解決問(wèn)題,我們不妨來(lái)看這樣一道題目:有一個(gè)詞典包含N 個(gè)以h 開(kāi)頭的單詞(ha hack had half hag hell help)請(qǐng)問(wèn)hag這個(gè)單詞有沒(méi)有在詞典里出現(xiàn)過(guò)?
(2)人和計(jì)算機(jī)在解決該問(wèn)題上的思維差異
人的思路當(dāng)然是遍歷每一個(gè)單詞,看看在單詞表里有沒(méi)有要查找的hag,那計(jì)算機(jī)可以怎么做?它可以使用一種數(shù)據(jù)結(jié)構(gòu)——“樹(shù)”,把所有的單詞按照它們的字母前綴構(gòu)建成這樣一棵樹(shù),上述例題的解決過(guò)程,其實(shí)就是學(xué)生學(xué)會(huì)使用計(jì)算機(jī)方法去對(duì)問(wèn)題進(jìn)行分解,模式識(shí)別、抽象、產(chǎn)生算法,最終解決問(wèn)題的過(guò)程,當(dāng)然計(jì)算思維的形成需要做題量的積累,老師要精選一些有代表性的題目,做好引導(dǎo)者的角色,盡可能縮短學(xué)生的成長(zhǎng)期。
2.2.1 從賦值語(yǔ)句看學(xué)習(xí)程序設(shè)計(jì)的思維轉(zhuǎn)換
在數(shù)學(xué)中,x=y 和y=x 是等價(jià)的兩個(gè)等式,而在程序設(shè)計(jì)課程中,這兩個(gè)式子具有不同的含義,其中的“=”叫做賦值號(hào),x=y 的意義就相應(yīng)的變?yōu)榘褃 的值賦值給x,y=x 的意義就是把x的值賦值給y,在數(shù)學(xué)中“=”是沒(méi)有方向的,而在程序設(shè)計(jì)中“=”(賦值號(hào))是有方向,它的過(guò)程總是把“=”右邊的值賦值給“=”左邊的變量。
再比如x=x+1,這個(gè)式子在數(shù)學(xué)中是毫無(wú)意義的,因?yàn)闊o(wú)論x 是多少,左右都不可能相等,然而在程序設(shè)計(jì)課程中,這個(gè)式子不但有意義,而且是程序設(shè)計(jì)中出場(chǎng)率極高的式子,它每執(zhí)行一次,x 這個(gè)值就會(huì)增加1,以此來(lái)改變我們的運(yùn)算結(jié)果,我們把這種x 變量叫做累加器。
2.1.2 計(jì)算機(jī)的速度優(yōu)勢(shì)讓窮舉方法變得可行
(1)看一道題
我們先來(lái)看這樣一道題:警察抓了A、B、C、D 四名罪犯,其中一名是小偷,審訊的時(shí)候,A 說(shuō):“我不是小偷”,B 說(shuō):“C 是小偷”,C 說(shuō):“小偷肯定是D”,D 說(shuō):“C 是冤枉人”,現(xiàn)在已經(jīng)知道四個(gè)人三個(gè)人說(shuō)真話(huà),一個(gè)人說(shuō)假話(huà),請(qǐng)你判斷下誰(shuí)是小偷?
用計(jì)算機(jī)方法解決此題可以這樣轉(zhuǎn)化:首先對(duì)A、B、C、D四個(gè)人分別用1~4 四個(gè)數(shù)字進(jìn)行編號(hào),接著將四個(gè)人的描述結(jié)果用數(shù)字量化,如果描述是真,則結(jié)果是1,如果是假,則結(jié)果是0。我們假設(shè)小偷的編號(hào)是X,對(duì)于四個(gè)人的描述,數(shù)字化的結(jié)果如下表。

A 說(shuō):“我不是小偷”X!=1 B 說(shuō):“C 是小偷”X=3 C 說(shuō):“小偷肯定是D”X=4 D 說(shuō):“C 是冤枉人”X!=4
通過(guò)這樣的轉(zhuǎn)化,我們就可以窮舉X 的值(誰(shuí)是小偷),再來(lái)驗(yàn)證說(shuō)真話(huà)、謊話(huà)的數(shù)量是否和題目條件一致就能成功解決此題,而不需要邏輯推理。
例題精選,培養(yǎng)計(jì)算思維,培養(yǎng)學(xué)生模塊化程序設(shè)計(jì)的習(xí)慣,要系統(tǒng)性地精選題目,要貼近學(xué)生,難度要遞進(jìn),同時(shí)也要有代表性,能夠準(zhǔn)備地傳遞知識(shí),例如在講解搜索算法時(shí),下述例題就特別合適。
給你一個(gè)H 行W 列的泡泡,發(fā)射進(jìn)去一個(gè)指定位置的泡泡,如果周?chē)B著有三個(gè)(算上自己),則連著的一起爆炸,如果剩下的沒(méi)連著頂行也會(huì)掉下來(lái),問(wèn)最終有多少個(gè)掉下來(lái)?這道題的價(jià)值主要在于泡泡相鄰要看成六相鄰,從而把題目建模成適合計(jì)算機(jī)解決的類(lèi)型。
再比如填數(shù)獨(dú)題,人的解法往往是觀(guān)察法居多,比如第二行第三列的這個(gè)3 是直接可以觀(guān)察出來(lái)的,但計(jì)算機(jī)解決此問(wèn)題用候選數(shù)法建模更合適。
系統(tǒng)性講授是線(xiàn)下更好,因?yàn)閹熒?dòng)更好,但特殊時(shí)期上課也可以轉(zhuǎn)到線(xiàn)上進(jìn)行,訓(xùn)練則更自由,可以完全放在線(xiàn)上進(jìn)行,但要拓寬題源。
綜上所述,我們要關(guān)注熱點(diǎn)領(lǐng)域、意識(shí)到當(dāng)今時(shí)代信息化前沿技術(shù)人才需要的迫切性,努力開(kāi)發(fā)程序設(shè)計(jì)課程,嚴(yán)謹(jǐn)治學(xué),線(xiàn)下互動(dòng)教學(xué)與線(xiàn)上訓(xùn)練結(jié)合開(kāi)展,營(yíng)造理想的教學(xué)氛圍,使得程序設(shè)計(jì)課程能夠提升學(xué)生的學(xué)習(xí)力、培養(yǎng)學(xué)生的計(jì)算思維和綜合應(yīng)用能力、拓寬學(xué)生的思維方式,拔高學(xué)生的創(chuàng)新能力,為國(guó)家培養(yǎng)更多的技術(shù)人才,從而提升國(guó)際競(jìng)爭(zhēng)力。