李志圣 邢振祥 唐國峰
摘要:針對程序設(shè)計中的計算思維能力培養(yǎng),國內(nèi)外學(xué)者進行了大量的理論研究和教學(xué)實踐,但尚未在教學(xué)中形成清晰的表達體系。文章分析計算機基礎(chǔ)教學(xué)中的程序設(shè)計過程,明確提出程序設(shè)計的三個階段,并針對各階段闡述教學(xué)內(nèi)容和評價標準,為培養(yǎng)計算思維能力的引導(dǎo)式教學(xué)形成步驟明確、可操作性強的標準化方案,使所有教師都能找到學(xué)生在程序設(shè)計中所遇到問題的思維根源,進而實施有效的引導(dǎo)教學(xué)。
.
關(guān)鍵詞:程序設(shè)計;計算思維;引導(dǎo)式教學(xué);標準化
引言
2010年,清華大學(xué)等高校在西安召開了首屆“九校聯(lián)盟(C9)計算機基礎(chǔ)課程研討會”。在會議發(fā)表的聯(lián)合聲明中,旗幟鮮明地把“計算思維能力的培養(yǎng)”列為計算機基礎(chǔ)教學(xué)的核心任務(wù)。
計算機基礎(chǔ)教學(xué)中的核心內(nèi)容是程序設(shè)計教學(xué)中的計算思維能力培養(yǎng)問題。綜觀近年來的相關(guān)國內(nèi)文獻,主要有兩大類代表性的工作:
一類是闡述針對具體程序?qū)嵗M行編程教學(xué)工作,例如:文獻關(guān)注從具體編程案例出發(fā)討論計算思維能力的培養(yǎng)。此類工作存在的問題是缺乏對一般性問題的求解體系步驟的歸納和概括。另一類工作如文獻,關(guān)注程序設(shè)計教學(xué)的一般性規(guī)律,提出的見解具有理論上的指導(dǎo)意義,但在運用于具體程序設(shè)計教學(xué)時,尚有賴于教師理解水平和實踐經(jīng)驗的豐富程度。
馮博琴教授在《對于計算思維能力培養(yǎng)“落地”問題的探討》中提到:“關(guān)于計算思維的理解多停留在‘哲學(xué)或者‘科學(xué)層面,在‘教學(xué)層面上沒有形成一個清晰的表達體系,其內(nèi)涵、外延還沒有得到清楚的描述”。
本文通過建立對計算思維能力培養(yǎng)教學(xué)的標準化方案,來嘗試解決馮博琴教授提到的問題。主要工作為:對計算機基礎(chǔ)教育中的程序設(shè)計過程進行分析和抽象,提出編程的具體步驟;為每個步驟提出精確的評價標準,使教師在進行引導(dǎo)教學(xué)時,有分階段可實施的明確目標,在保障引導(dǎo)教學(xué)順利實施的同時,強化學(xué)生的計算思維能力培養(yǎng)。
1相關(guān)研究基礎(chǔ)
蔣宗禮教授提出:為培養(yǎng)計算機學(xué)科的計算思維能力,可采用適應(yīng)計算機求解問題的基本方式和有效方法考慮問題的求解(描述、分析和構(gòu)建);
龔沛曾教授也相似地認為:計算思維中問題求解的步驟包括問題抽象化的描述一尋找解決方案(設(shè)計算法)—程序編制(編碼)。
綜合上述兩篇文獻意見,本文將編程的過程細化為以下三個階段:
第一,理解問題的自然語言描述;
第二,采用規(guī)范的自然語言描述解題過程;
第三,采用計算機語言替換自然語言描述2。
2分階段教學(xué)內(nèi)容和評價標準
1)理解問題的自然語言描述。
教學(xué)內(nèi)容1教師引領(lǐng)學(xué)生閱讀使用自然語言描述的問題。
評價標準1要求學(xué)生用自己的語言轉(zhuǎn)述問題,若無歧義或者誤解,則評價為合格。
2)采用規(guī)范的自然語言描述解題過程。
教學(xué)內(nèi)容2教師要求學(xué)生按以下步驟得出自然語言的解題描述。
步驟2.1要求學(xué)生針對具體問題給出具體解答。例如在求n!問題時,要求學(xué)生給出5!的計算結(jié)果。
評價標準2.1學(xué)生得出正確計算的結(jié)果。
步驟2.2要求學(xué)生使用自然語言詳盡描述之前求解的過程。
評價標準2.2
2.2.1實詞:都能確定性地求值,且求值過程是可直接計算的。
錯誤示例:從1連乘到4。
錯誤原因:不可直接計算。
教師應(yīng)向?qū)W生指出錯誤原因,引導(dǎo)學(xué)生關(guān)注到從1到5的計算過程的分解。
2.2.2虛詞:只允許作用于計算(1)流程控制(2)邏輯判斷(3)指向?qū)嵲~等意義明確的用途。教師尤其要及時要求學(xué)生刪除“大概”“可能”“很”等含混的虛詞表達。
步驟2.3詞匯的規(guī)范化:要求其中出現(xiàn)的詞匯及其搭配方式必須前后一致。禁止人為省略。
評價標準2.3檢查所有詞匯及其相關(guān)搭配。保證每個詞匯及其相關(guān)搭配的使用前后一致。
錯誤示例:
將1和2相乘,得到2;
和3相乘,得到6;
和4相乘,得到24;
錯誤原因:后兩個相乘的用法存在人為省略問題,與第一個相乘不一致。
改正后得到規(guī)范的自然語言描述:
將1和2相乘,得到2;
將2和3相乘,得到6;
將6和4相乘,得到24。
步驟2.4泛化到一般性問題。
評價標準2.4自然語言描述正確地表達了任意問題的求解。
規(guī)范的自然語言描述:
將1和2相乘,得到2;
將2和3相乘,得到6;
將6和4相乘,得到24;
重復(fù)以上步驟,直到將中間結(jié)果與n相乘。
3)采用計算機語言替換自然語言描述2。
本標準化方案適合各種面向過程的高級程序設(shè)計語言。在實例中,將采用c語言進行示例。
教學(xué)內(nèi)容3教師要求學(xué)生觀察自然語言描述2,并按以下步驟進行操作。
步驟3.1觀察是否存在以“重復(fù)以上步驟”為表達的任意次計算。如果存在,那么根據(jù)描述確定其直接關(guān)聯(lián)變化的數(shù)據(jù)序列,為其定義變量,并確定其初值、變化規(guī)則和執(zhí)行條件,同時替換原自然語言描述。
評價標準3.1值序列確實能由定義的變量根據(jù)初值、變化規(guī)則來生成。
此變量之后將作為循環(huán)結(jié)構(gòu)的控制變量而存在。
正確示例:
以上自然語言描述中,隨“重復(fù)以上步驟”而關(guān)聯(lián)變動的值序列是1,2,3,4,…,n。定義變量為x,其初值為1,變化規(guī)則為x=x+1。執(zhí)行條件為x<=n。
替換后的自然語言描述變?yōu)椋?/p>
設(shè)變量x,初值為1;
將1和x相乘,得到2;x=x+1;
將2和x相乘,得到6;x=x+1;
將6和x相乘,得到24;x=x+1;
若x<=n,重復(fù)以上步驟,將中間結(jié)果與x相乘。
步驟3.2對于其他數(shù)值,判斷是否具有同樣的意義;如果是,則定義同一變量。并替換其對應(yīng)的所有數(shù)值。如果某數(shù)值在描述中沒有變動,那么保留它作為常量。
評價標準3.2該值序列中的各值指向相同的意義。
正確示例:
中間結(jié)果序列為:1,2,6,…,設(shè)變量名為mul。
替換后的描述變?yōu)椋ù藭r已經(jīng)向程序語言過渡了):
設(shè)變量x,初值為1;
設(shè)變量mu1,初值為1;
將mul和x相乘,得到mul;x=x+1;
將mul和x相乘,得到mul;x=x+1;
將mul和x相乘,得到mul;x=x+1;
若x<=n,重復(fù)以上步驟,將mul與x相乘。
特別要注意,若存在循環(huán)嵌套,只需利用步驟3.1先確定外層循環(huán)變量,然后再依次確定內(nèi)存循環(huán)變量,并替換相關(guān)自然語言描述,最終將形成嵌套結(jié)構(gòu)。
步驟3.3替換所有的動作為程序語言的基本語句。
評價標準3.3所有動作應(yīng)該能替換為基本語句。若不能,則意味著評價標準2.2未滿足,重新退回步驟2.2。
正確示例:
之前的計算步驟描述中,將?與?相乘,得到?,該動作搭配已被確認過是可直接計算的,其c語言的語句為:?=?*?。
替換后的描述變?yōu)椋?/p>
設(shè)變量x,初值為1;
變量mul,初值為1;
mul=mul*x;x=x+1:
mul=mul*x;x=x+1:
mul=mul*x;x=x+1:
若x<=n,重復(fù)以上步驟,將mul與x相乘。
步驟3.4替換所有變量定義描述為語句。
評價標準3.4檢查所有變量的定義類型符合問題原意。
替換后的描述為:
intx;x=1;
int mul;mul=1:
mul=mul*x;x=x+1:
mul=mul*x;x=x+1:
mul=mul*x;x=x+1;
若x<=n,重復(fù)以上步驟,將mul與x相乘。
步驟3.5替換所有的循環(huán)結(jié)構(gòu)、消除循環(huán)中重復(fù)的語句、替換選擇結(jié)構(gòu),得到程序。
評價標準3.5若描述無法替換,重新退回步驟2.2或者步驟3.1。
最終描述為:
int;x=1;
int mul;mul=l;
while(X<=n)
{
mul=mul*x;
x=x+1:
}
3標準化方案對培養(yǎng)學(xué)生計算思維能力的意義
筆者認為:程序設(shè)計課程中最核心的內(nèi)容是培養(yǎng)出學(xué)生的計算思維能力:學(xué)生善于使用精確的符號化和有限的動作來刻畫和描述現(xiàn)實問題。但這對于初次接觸編程的學(xué)生來說并不是容易做到,因此,在計算機基礎(chǔ)教學(xué)中,教師進行有效的引導(dǎo)式教學(xué)就顯得非常重要。
引導(dǎo)式教學(xué)中最突出的問題是:當學(xué)生在過程中遇到某個問題而難以解決時,若教師對問題出現(xiàn)的背景以及與求解過程的關(guān)系沒有清晰認識,那么引導(dǎo)教學(xué)將無法繼續(xù)。此時教師可能會過于強調(diào)學(xué)生個人的領(lǐng)悟,卻不知這實質(zhì)上是對學(xué)生的學(xué)習(xí)熱情和信心的傷害。
在本標準化方案的不斷完善的過程中,筆者進行了大量的實踐和探索。為驗證標準化方案的有效性,筆者針對一些學(xué)習(xí)成績較差的學(xué)生,進行了多人次的教學(xué)實踐。學(xué)生反饋表明:當教師能夠隨時指出學(xué)生當前狀態(tài)所存在的問題根源,并能夠引導(dǎo)學(xué)生按照標準化方案進行下一步思考時,學(xué)生所收獲的不僅是會編寫程序,還有對專業(yè)學(xué)習(xí)的信心。
4對馮博琴教授在文獻中提出的若干問題的探討
馮博琴教授在文獻中針對計算思維能力培養(yǎng)的“落地”提出了多個問題。其中具有代表性的有:
第一,“啟發(fā)式教學(xué)是否就能夠培養(yǎng)學(xué)生的計算思維能力”?
筆者認為:啟發(fā)式教學(xué)與引導(dǎo)式教學(xué)類似,其有效的前提在于教師對學(xué)生的計算思維過程有清晰的把握,本文提出的標準化教學(xué)方案有助于教師有效開展啟發(fā)式教學(xué)。
第二,“如何在1~2門課程之內(nèi),用有限的課時,在很多學(xué)生計算機基礎(chǔ)很薄弱的條件下,采用何種不同尋常的教學(xué)手段和教學(xué)方法,使得他們突破學(xué)習(xí)之瓶頸,更好地掌握計算思維”?
筆者認為:使學(xué)生突破學(xué)習(xí)瓶頸的方法,就是教師實施有效的引導(dǎo)式教學(xué)。引導(dǎo)教學(xué)應(yīng)按照任務(wù)分段化、目標標準化來開展,教師能清楚地把握學(xué)生思維過程中各種可能的細節(jié),對各個水平層次的學(xué)生都能給予有效的幫助。
5結(jié)語
目前本標準化方案能適用于針對多重循環(huán)的程序設(shè)計的引導(dǎo)教學(xué)工作,但尚存在以下問題:
第一,對具有復(fù)雜的數(shù)據(jù)結(jié)構(gòu)的程序編制是不適合的。這包含程序的初始數(shù)據(jù)為非線性結(jié)構(gòu)、程序的流程控制采用復(fù)雜的?;蜿犃械惹樾危?/p>
第二,當循環(huán)層次較多和涉及變量較多時,使用標準化方案顯得繁瑣;
第三,對自然語言中的詞法和語法現(xiàn)象研究尚不夠全面。
下一步將針對上述問題進行研究,通過適度地降低實施步驟的精確性,來提高對程序復(fù)雜度的描述能力。