原 虹
(晉中學(xué)院 計算機(jī)科學(xué)與技術(shù)學(xué)院,山西 晉中 030600)
目前,自然科學(xué)領(lǐng)域公認(rèn)有三大科學(xué)方法:理論方法、實驗方法與計算方法。與這三大科學(xué)方法對應(yīng)有三大科學(xué)思維,即理論思維、實驗思維與計算思維。理論思維又叫推理思維,主要通過對理論的推理練習(xí)獲得,可以在數(shù)學(xué)學(xué)習(xí)中獲得和提高。實驗思維也叫實證思維,主要通過實驗中的觀察和總結(jié)獲得,可以在物理實驗的操作與學(xué)習(xí)中獲得和提高。實證思維和推理思維,我們在初高中的學(xué)習(xí)中已經(jīng)得到了很好的培養(yǎng)。計算思維是2006年由周以真教授提出的。雖然計算機(jī)已經(jīng)深入到我們生活中的方方面面,許多問題都需要計算機(jī)的輔助才能解決。如:數(shù)據(jù)的大量存儲、排序、篩選等。計算思維在生活中越來越重要,卻不被人們所熟知,甚至很多人認(rèn)為計算思維就是數(shù)學(xué)思維。因此明確計算思維的概念,系統(tǒng)的培養(yǎng)計算思維在現(xiàn)在的教育中顯得尤為重要。計算思維的獲得可以通過相關(guān)計算機(jī)課程的學(xué)習(xí)來獲得,對于非計算機(jī)專業(yè)的學(xué)生來說,大學(xué)計算機(jī)基礎(chǔ)的學(xué)習(xí)是獲得計算思維的主要途徑之一。本文將從基本概念著手,結(jié)合具體的教學(xué)實踐和經(jīng)驗,淺談在大學(xué)計算機(jī)基礎(chǔ)教學(xué)中如何來提高學(xué)生的計算思維能力。
2006年3月,美國卡內(nèi)基·梅隆Jeannette M.Wing教授在美國著名期刊Communications of the ACM上發(fā)表了題為《eannette M.Wing.Computational Thinking》的論文,在文中第一次明確指出了計算思維的概念,計算思維(Computational Thinking)是運(yùn)用計算機(jī)科學(xué)的基礎(chǔ)概念進(jìn)行問題求解、系統(tǒng)設(shè)計、以及人類行為理解等涵蓋計算機(jī)科學(xué)之廣度的一系列思維活動。這個定義是高度概括,比較晦澀難懂的。之后Jeannette M.Wing教授又對計算思維進(jìn)行了具體的描述,把計算思維概括為七大類具體的實現(xiàn)方法??偨Y(jié)來說就是通過計算機(jī)技術(shù)的快速發(fā)展,計算方法的改進(jìn)和模型的構(gòu)造使我們敢于并且能夠處理一些原本個人無法獨立完成的問題和設(shè)計。
大學(xué)計算機(jī)基礎(chǔ)是必修課程,課程分兩個階段講授和學(xué)習(xí)。第一學(xué)期主要講授計算機(jī)的系統(tǒng)構(gòu)成,Windowsxp或Windows 7操作系統(tǒng),Office2003或 Office2007等內(nèi)容。第二學(xué)期文科專業(yè)主要講授計算機(jī)網(wǎng)絡(luò)相關(guān)的基礎(chǔ)知識,F(xiàn)lash動畫制作等多媒體相關(guān)知識和Internet基本操作等。理科專業(yè)講授一門高級程序設(shè)計語言,具體內(nèi)容主要包括開發(fā)環(huán)境、編程基礎(chǔ)、程序設(shè)計結(jié)構(gòu)、文件操作及解決實際問題。
大學(xué)計算機(jī)基礎(chǔ)的教學(xué)內(nèi)容包含了大量的基本概念和具體的實例,這些定義和實例中很多都含有比較明確的計算思維。教師在課程內(nèi)容的講授中對計算思維也有初步的涉及。但是,由于計算思維定義的提出較晚,很多教師不了解計算思維的具體概念和培養(yǎng)計算思維的具體方法,因此在實際教學(xué)中關(guān)于計算思維的傳遞具有以下幾個誤區(qū):
(1)計算思維的傳遞是盲目的,不系統(tǒng)的。
(2)在傳遞中過于注重程序設(shè)計語言的語法,忽視了算法及解決方法的傳遞,導(dǎo)致學(xué)生不能舉一反三。不同的程序設(shè)計語言語法雖然不同,但其中所包含的算法很多是大體一致的,掌握一種程序設(shè)計語言后,其他的語言學(xué)起來應(yīng)該就簡單多了。在實際的學(xué)習(xí)中,大部分學(xué)生不會變通,只注重課程本身的內(nèi)容,沒有學(xué)到程序設(shè)計語言共同的精髓算法,因而計算思維方法沒有得到提高。
(3)教師沒有充分認(rèn)識計算思維的重要性。在未來,計算思維將像閱讀、寫字一樣成為人類生活中最基本的不可或缺的思維方式。
在教學(xué)大綱中,大學(xué)計算機(jī)基礎(chǔ)的第二階段理科學(xué)生學(xué)習(xí)的是VisualBasic程序設(shè)計(以下簡稱VB)或C程序設(shè)計語言。筆者有多年的VB程序教學(xué)經(jīng)驗,因此以下將以VB為例來說明如何培養(yǎng)和提高計算思維。
程序設(shè)計語言的教材各個出版社都有,甚至有些出版社還會有好幾個不同的版本。有些教材會在前面的章節(jié)講解算法的概念以及算法在計算機(jī)解決實際問題中的作用。有些教材一開始就直接介紹程序設(shè)計語言的具體工作環(huán)境、語句、語法等,忽略了算法的重要性。有些教材在介紹知識點之前,都會以一個貼合實際的具體實例作為引例。在學(xué)習(xí)之初,學(xué)生通過對例子的分析,列出自己的算法。但由于理論知識的欠缺,算法中的有些步驟現(xiàn)有知識解決不了,促使學(xué)生進(jìn)一步學(xué)習(xí)新的知識,同時計算思維也得到培養(yǎng)。如:講解DO循環(huán)之前,先給出一個問題:我國人口13億,增長率為0.8%,多少年后我國人口將翻一番。學(xué)生在遇到問題時先進(jìn)行算法分析:
第一步:設(shè)兩個變量x和y,分別用于存放現(xiàn)有人數(shù)和增長率。同時給x和y賦初值13和0.008.
第二步:設(shè)一個變量n用于存放年數(shù),并賦初值為0.
第三步:計算一年后新人口數(shù)量并且年數(shù)加一。
第四步:如此循環(huán)直到人口超出26.
第五步:輸出變量n的值。
算法確定之后,開始寫出具體的實現(xiàn)過程時會發(fā)現(xiàn),以前學(xué)習(xí)的循環(huán)語句解決不了這類問題,于是引入新的循環(huán)語句。學(xué)生對算法和具體實現(xiàn)過程的思考是計算思維最好的培養(yǎng)方法。
所以,在課程中培養(yǎng)學(xué)生的計算思維要從選擇教材做起。在選擇教材時,一定要多比較,盡量選擇內(nèi)容全面,編排合理的教材。
在對VB課程的實施中,教師傾向于系統(tǒng)地進(jìn)行講授。從數(shù)據(jù)類型、表達(dá)式、函數(shù)開始,到語法、控件、過程、數(shù)組,再到順序、選擇、循環(huán)結(jié)構(gòu),最后舉例說明講解的內(nèi)容。經(jīng)過這樣傳授后,學(xué)生的基本功比較扎實,但是掌握的知識與實踐結(jié)合不緊密,計算思維得不到提高。解決實際問題時,最重要是使用什么算法,怎樣用語句來實現(xiàn)算法。要想提高學(xué)生的計算思維,在講授時就需要注意使用合適的教學(xué)方法開發(fā)學(xué)生,讓學(xué)生的思維活躍起來,積極參與到其中。組織課堂活動時積極引導(dǎo)并鼓勵學(xué)生提出可行的算法,然后對這些算法進(jìn)行討論,詳細(xì)分析其優(yōu)缺點,從中找出最佳算法。比如:要做到兩個變量的值互換。學(xué)生會提出很多算法。直接交換賦值即a=b;b=a;引入第三個變量即c=a;a=b;b=c;借助某個控件的屬性即form1.caption=a;a=b;b=form1.caption等等。先對學(xué)生的思考給出肯定,然后分析其正確與否。直接交換賦值是不能實現(xiàn)的,類似兩個杯子里裝滿飲料要互換,如若直接倒,最后必有一個杯子為空。借助某個控件的屬性,實現(xiàn)時有條件限制,若變量的數(shù)據(jù)類型與該屬性的數(shù)據(jù)類型一致,則能實現(xiàn)操作。如果不同,則可能出錯。最適合的方法是引入第三個變量,并且變量類型為變體型,這樣就能實現(xiàn)題目的要求。在確定有效的實施算法之后,對實現(xiàn)算法中需要用到的語法和語句一一進(jìn)行講解并鼓勵學(xué)生自己寫出語句,最后教師對這些語句進(jìn)行分析,指出其中不合理或者不合適的地方,給出最簡潔的實現(xiàn)語句。如上面所述的兩個變量互換,要用到的語句就是賦值語句。需要詳細(xì)講解賦值語句的結(jié)構(gòu)與功能。直接賦值不能實現(xiàn)時如果對一個變量多次賦值,變量將保留最后一次的值,以前的值將丟失。借助控件的屬性不能實現(xiàn),是因為不同的數(shù)據(jù)類型在賦值時,有的可以兼容,有的就會出錯。這樣講授不僅調(diào)動了學(xué)生的積極性,更主要的是讓學(xué)生的思維隨著課堂的進(jìn)度逐步活躍起來。讓學(xué)生參與解決問題的整個過程,而不是被動的聽教師的枯燥講解,是提高計算思維的主要途徑之一。
程序設(shè)計課程都有大量的上機(jī)實驗練習(xí),合理的貼合實際的實驗練習(xí)有助于學(xué)生學(xué)習(xí)思維的增強(qiáng)。在上機(jī)練習(xí)時,應(yīng)該分三個步驟布置實驗內(nèi)容。
首先,要求學(xué)生對理論課時的例子進(jìn)行實際操作。
理論課上已經(jīng)討論好算法和具體的實現(xiàn)步驟,這樣的程序?qū)懫饋砭妥兊帽容^容易,成功率也會提高很多。通過熟悉示例的成功解決,可以增加學(xué)生解決問題的自信心。
其次,提供和前面實例相類似的問題,要求學(xué)生寫出算法和具體的實現(xiàn)步驟,使學(xué)生能做到舉一反三。
布置和理論課的實例具有共同主要特征的實驗題,讓學(xué)生通過實際上機(jī)操作完成對實際問題的解決。實驗內(nèi)容最好是基本算法變化不大,讓學(xué)生在有了前面的解題經(jīng)驗時能對新的內(nèi)容作出基本框架的編寫,詳細(xì)的書寫過程可以有區(qū)別。這樣學(xué)生在做這些實驗時,不會感到吃力也不會覺得太簡單而失去興趣。
最后,布置添加了適量新內(nèi)容的實驗,讓學(xué)生自己利用課余時間研究算法,然后在下次課時討論具體的算法和編程語句。
在布置新實驗時要注意新增加內(nèi)容的比例,應(yīng)該在30%左右。同時注意實驗內(nèi)容盡可能地貼近實際生活,注重實用性。比如:在講解了IF語句之后,SELECT語句之前,可以布置相關(guān)成績界定的實驗內(nèi)容。輸入某課程的成績,要求在窗體上顯示對應(yīng)的評價結(jié)果。評定條件為:成績≥90為優(yōu),成績≥80且<90為良,成績≥70且<80為中等,成績≥60且<70為及格,成績<60不及格。成績的界定與學(xué)生的實際學(xué)習(xí)息息相關(guān),且本題用以前學(xué)過的IF語句也能解決,只是解決起來較復(fù)雜。學(xué)生自己研究了算法,編寫了語句解決了問題,同時也會發(fā)現(xiàn)書寫非常繁雜。這時引入新的知識內(nèi)容,如果用SELECT語句來完成此問題就容易多了,大大減少語句的數(shù)量,同時書寫也簡單很多。學(xué)生在經(jīng)過思考和實踐之后,既對原有的知識進(jìn)行了鞏固,也有學(xué)習(xí)新知識的渴望。經(jīng)過自己的仔細(xì)思考后,在以后教師講解時可以達(dá)到對新知識更加關(guān)注的目的。
通過這三個步驟的實驗練習(xí),讓學(xué)生從自身的實踐中總結(jié)計算機(jī)解決問題的要點及主要步驟,體驗計算機(jī)解決問題的主要方法。同時讓學(xué)生在學(xué)習(xí)知識的過程中,計算思維得以增強(qiáng)。
2010年的C9研討會上形成了決議,在大學(xué)計算機(jī)基礎(chǔ)教學(xué)中要以培養(yǎng)學(xué)生計算思維能力為教學(xué)核心。在實際教學(xué)中也要以培養(yǎng)學(xué)生計算思維為指導(dǎo),通過對計算機(jī)基礎(chǔ)的學(xué)習(xí)使學(xué)生的計算思維得以提高,為以后的學(xué)習(xí)生活帶來便利。
[1]陳國良,董榮勝.計算思維與大學(xué)計算機(jī)基礎(chǔ)教育[J].中國大學(xué)教學(xué),2011,(1).
[2]李廉.計算思維——概念與挑戰(zhàn)[J].中國大學(xué)教學(xué),2012,(1).
[3]何欽銘,陸漢權(quán),馮博琴.計算機(jī)基礎(chǔ)教學(xué)的核心任務(wù)是計算思維能力的培養(yǎng)[J].中國大學(xué)教學(xué),2010,(9).
[3]陳杰華.程序設(shè)計課程中強(qiáng)化計算思維訓(xùn)練的實踐探索[J].計算機(jī)教育,2009,(20).