穆靜 白小軍 陳芳
摘要:針對計(jì)算機(jī)專業(yè)大一新生在《C語言程序設(shè)計(jì)》的實(shí)踐教學(xué)中存在的問題,深刻體會到計(jì)算思維在C語言的實(shí)踐教學(xué)中的作用越來越大,因此在C語言實(shí)踐教學(xué)中培養(yǎng)學(xué)生具有計(jì)算思維能力也越來越重要,而對學(xué)生計(jì)算思維能力的培養(yǎng)是使C語言實(shí)踐教學(xué)從單純的一種編程工具向培養(yǎng)學(xué)生的計(jì)算思維和問題求解能力轉(zhuǎn)變。該文介紹了計(jì)算思維的定義及包含的內(nèi)容,然后通過以往的教學(xué)經(jīng)驗(yàn)深刻分析了計(jì)算思維在C語言實(shí)踐教學(xué)中的體現(xiàn)。
關(guān)鍵詞:C語言程序設(shè)計(jì);計(jì)算思維;實(shí)踐教學(xué)
中圖分類號:G642 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2016)36-0151-02
1 引言
目前計(jì)算機(jī)基礎(chǔ)教育已成為當(dāng)代大學(xué)生的一門必修課程,而對于計(jì)算機(jī)專業(yè)的學(xué)生,《C語言程序設(shè)計(jì)》是一門特別重要的且實(shí)踐性很強(qiáng)的專業(yè)基礎(chǔ)課程。對于一名新生來說,在實(shí)踐教學(xué)環(huán)節(jié)(實(shí)驗(yàn)和課程設(shè)計(jì)兩個環(huán)節(jié))中的思考問題的思維轉(zhuǎn)變覺得很困難。目前,國內(nèi)外的最新研究成果發(fā)現(xiàn)計(jì)算思維在計(jì)算機(jī)基礎(chǔ)課程教學(xué)的地位和作用越來越突出,許多國外頂尖大學(xué)的知名學(xué)者,以及國內(nèi)許多院士和教授的注意,在信息的時代,網(wǎng)絡(luò)和互聯(lián)網(wǎng)+時代,如何改革的思維方式,更新教學(xué)理念,特別是改變教師的教學(xué)和學(xué)生的學(xué)習(xí)風(fēng)格,值得每一份工作.在《C語言程序設(shè)計(jì)》的實(shí)踐教學(xué)中,如何要求學(xué)生具有計(jì)算思維,顯得尤為重要。
實(shí)際上,對于一個大學(xué)一年級學(xué)生,計(jì)算思維是很難理解的,下面首先介紹什么是計(jì)算思維和包含的內(nèi)容。而學(xué)生只簡單地了解計(jì)算思維的內(nèi)容還是不夠的,讓學(xué)生首先知道計(jì)算思維在C 語言課程的實(shí)踐教學(xué)中的體現(xiàn),進(jìn)而真正理解計(jì)算思維的內(nèi)涵并培養(yǎng)在C語言課程的實(shí)踐教學(xué)中培養(yǎng)計(jì)算思維的能力。
2 計(jì)算思維的定義和內(nèi)容
2006年3月,美國卡內(nèi)基梅隆大學(xué)教授、周真的電腦在美國權(quán)威雜志的計(jì)算提出了ACM通訊”思維的概念和定義。計(jì)算機(jī)思維是使用計(jì)算機(jī)解決問題的基本概念,系統(tǒng)設(shè)計(jì)、理解人類行為和一系列的思維活動,其本質(zhì)是抽象和自動化,即如何根據(jù)計(jì)算機(jī)解決職業(yè).
計(jì)算思維主要包括內(nèi)容[1]:
1) 通過簡約、嵌入、轉(zhuǎn)化和仿真等方法,把一個困難的問題闡述成一個我們知道問題怎樣解決的思維方法;
2) 是一種遞歸思維和并行處理,把代碼譯成數(shù)據(jù)又能把數(shù)據(jù)譯成代碼,是一種基于多維推廣的類型檢查方法;
3) 是一種采用抽象和分解來控制龐雜任務(wù)或進(jìn)行巨大的任務(wù)系統(tǒng)設(shè)計(jì)的方法,是一種基于關(guān)注點(diǎn)分解的方法;
4) 是一種選擇合適的方法陳述一個問題,或?qū)σ粋€問題的相關(guān)方面建模使其易于處理的思維方法;
5) 按照預(yù)防、保護(hù)及通過冗余、容錯、糾錯的方式,并從最壞情況進(jìn)行系統(tǒng)恢復(fù)的一種思維方法;
6) 利用啟發(fā)式推理尋求解答,也即在不確定情況下的規(guī)劃、學(xué)習(xí)和調(diào)度的思維方法;
7) 利用海量數(shù)據(jù)來加快計(jì)算,在時間和空間之間,在處理能力和存儲容量之間進(jìn)行折衷的思維方法。
3 計(jì)算思維在《C語言程序設(shè)計(jì)》的實(shí)踐教學(xué)中的體現(xiàn)
《C語言程序設(shè)計(jì)》課程的實(shí)踐教學(xué)目的是希望通過上機(jī)實(shí)驗(yàn)和課程設(shè)計(jì)兩個環(huán)節(jié),使學(xué)生全面掌握《C語言程序設(shè)計(jì)》的語法規(guī)則、算法的基本知識以及面對具體的問題如何設(shè)計(jì)算法,使學(xué)生掌握如何應(yīng)用C語言解決一個具體的應(yīng)用問題。使用C語言實(shí)現(xiàn)算法時,具備排除邏輯錯誤,調(diào)試并成功運(yùn)行的能力;在排除邏輯錯誤時,培養(yǎng)學(xué)生分析問題能力,最終使學(xué)生運(yùn)用C語言知識解決專業(yè)領(lǐng)域的實(shí)際問題。
下面以一個具體的學(xué)生成績管理系統(tǒng)的例子分析計(jì)算思維在實(shí)踐教學(xué)中的體現(xiàn)。
利用鏈表設(shè)計(jì)學(xué)生成績管理系統(tǒng)。具體的功能模塊如下:1)輸入記錄模塊:從鍵盤逐個輸入學(xué)生記錄;2)查詢記錄模塊;4)更新記錄模塊;5)統(tǒng)計(jì)學(xué)生的某門課程的平均成績和方差;6)輸出記錄模塊:顯示所有學(xué)生的信息。
3.1 C語言實(shí)踐教學(xué)中的抽象計(jì)算思維
抽象計(jì)算思維是如何把實(shí)際的問題進(jìn)行抽象,建模成計(jì)算機(jī)識別的過程。建模過程是建立客觀事物的一種抽象的表示方法是用來表示事物和事物本身的理解,同時組織這種概念和邏輯概念的理解,形成的表達(dá)目標(biāo)對象的內(nèi)部結(jié)構(gòu)和工作原理。如何將抽象計(jì)算思維在《C語言程序設(shè)計(jì)》課程的實(shí)踐教學(xué)中教給學(xué)生呢?由于面對的是大一新生,因此需要在授課時盡量理論聯(lián)系實(shí)際,使用通俗易懂的實(shí)例進(jìn)行解釋,然后就一個具體的問題進(jìn)行講解,進(jìn)行實(shí)際的運(yùn)行和數(shù)據(jù)測試,使用這種教學(xué)方法以語法教學(xué)為中心的編程轉(zhuǎn)換成面向問題解決程序設(shè)計(jì)教學(xué)中,從這個問題開始,抽象的算法來解決這個問題,然后用C語言實(shí)現(xiàn)自動化,解決這個問題通過這樣一個常見的線程來計(jì)算思維的本質(zhì),抽象和自動化,貫穿于C語言的實(shí)踐教學(xué)中,使得C語言實(shí)踐教學(xué)從驗(yàn)證語法的知識點(diǎn)轉(zhuǎn)變?yōu)橹v授計(jì)算思維和問題求解的過程,以達(dá)到突出思維方法訓(xùn)練的目的。如例子中的學(xué)生我們可以根據(jù)實(shí)際要求可以將學(xué)生信息抽象為具有學(xué)號,姓名,性別,成績和班級等信息。然后根據(jù)問題的需要,將學(xué)生建模為包含學(xué)號,姓名,性別,成績和班級等信息的結(jié)構(gòu)體,然后在此基礎(chǔ)上,設(shè)計(jì)實(shí)現(xiàn)問題的算法。
3.2 C語言實(shí)踐教學(xué)中的分而治之的計(jì)算思維
如何對大的問題分而治之,逐步細(xì)化,設(shè)計(jì)出功能比較單一的模塊。為了解決一個大問題,可以:1)它是分成兩個或兩個以上的小問題;2)分別每個小問題;每個小問題解決方案3)相結(jié)合,可以得到答案。小問題往往類似于最初的問題,可以遞歸地使用分而治之的策略來解決。
如例子中的查詢功能模塊可包括查找最高分和不及格的學(xué)生并把該學(xué)生信息顯示出來。更新模塊可以分解成修改某一個學(xué)生的信息,對學(xué)生按照學(xué)號和成績就行排序(升序或者降序);求出每個學(xué)生的平均成績。插入一個學(xué)生信息;刪除一個學(xué)生的信息。
3.3 改變主體思維——從以“我”為中心到以計(jì)算機(jī)為中心
改變學(xué)生的主體意識,從以我為主體改變成以計(jì)算機(jī)為主體。通過我這幾年的教學(xué),我發(fā)現(xiàn)學(xué)生在遇到問題的時候總是試圖按照自己的慣性思維找錯誤,而不是通過計(jì)算機(jī)的思維去尋找錯誤,所以有時多個人只是按照自己在書本上提供的語法規(guī)則找錯誤,浪費(fèi)了大量的時間,到最后也沒找到錯誤,所以要改變以計(jì)算機(jī)為主體,而不是以人為主體,充分利用斷點(diǎn)單步運(yùn)行,一步一步觀察和分析計(jì)算機(jī)怎么運(yùn)行程序的,邏輯順序是如何的,通過對變量值進(jìn)行一步一步地監(jiān)控,才能把錯誤分析到。
通過研究C語言實(shí)踐教學(xué)中的“計(jì)算思維”體現(xiàn),將實(shí)踐教學(xué)中涉及的計(jì)算思維,通過計(jì)算機(jī)實(shí)驗(yàn)和課程設(shè)計(jì)學(xué)生使用這些獨(dú)立思考解決實(shí)際問題,幫助他們理解“思維是什么?如何應(yīng)用計(jì)算思維解決問題,解決問題的獨(dú)立建設(shè)和計(jì)算思維,鍛煉自己的計(jì)算能力,在以后的學(xué)習(xí)與創(chuàng)新思維為他們打下堅(jiān)實(shí)的基礎(chǔ)。
4結(jié)論
在C語言編程的過程中,引入計(jì)算思維的實(shí)踐教學(xué),可以有效地促進(jìn)學(xué)生學(xué)習(xí)“C語言程序設(shè)計(jì)”課程的主動性,同時也能培養(yǎng)學(xué)生的思維能力,使學(xué)生使用C語言課程知識實(shí)際問題更感興趣的是設(shè)計(jì)和編程,能夠產(chǎn)生更多的計(jì)算機(jī)程序設(shè)計(jì)人才。
雖然通過一門C語言的實(shí)踐教學(xué)培養(yǎng)學(xué)生的計(jì)算思維能力是遠(yuǎn)遠(yuǎn)不夠的,但《C語言程序設(shè)計(jì)》作為一門計(jì)算機(jī)專業(yè)基礎(chǔ)課程,卻肩負(fù)著提高一個初入大學(xué)的學(xué)生的編程興趣和培養(yǎng)其求解實(shí)際問題的思維轉(zhuǎn)變,因此教師深刻理解計(jì)算思維的內(nèi)涵和本質(zhì),潛移默化地將計(jì)算思維貫穿到程序設(shè)計(jì)的實(shí)踐教學(xué)中,從而提高C語言程序的實(shí)踐教學(xué)的質(zhì)量。另外,計(jì)算思維的培養(yǎng)是一項(xiàng)長期的工程,需要不斷研究和實(shí)踐,隨著對“計(jì)算思維”理論知識與實(shí)踐知識認(rèn)識的深化,將會更好地指導(dǎo)教學(xué)實(shí)踐,真正培養(yǎng)學(xué)生的計(jì)算思維和計(jì)算素養(yǎng),提高他們的計(jì)算能力。
參考文獻(xiàn):
[1] Jeannette M.Wing.Computational Thinking[J].Communications of the ACM,2006, 49(3):33-35.
[2] Peter J.Denning.Great Principles of Computing[J].Communications of the ACM,2003,46(11): 15-20.
[3] 陳國良,董榮勝.計(jì)算思維與大學(xué)計(jì)算機(jī)基礎(chǔ)教育[J].中國大學(xué)教學(xué),2011(1):7-11.
[4] 龔沛曾,楊志強(qiáng).大學(xué)計(jì)算機(jī)基礎(chǔ)教學(xué)中的計(jì)算思維培養(yǎng)[J].中國大學(xué)教學(xué), 2012(5): 51-54.
[5] 賈茹,郝長勝,裴衣非.Visual Basic程序設(shè)計(jì)課程的計(jì)算思維教學(xué)實(shí)踐[J].電腦知識與技術(shù),2011(25): 6266-6268.