【摘 要】程序設計課程實驗教學重點在于培養學生使用語言解決實際問題的能力,本文從闡述計算思維的內涵出發,提出了在程序設計實驗過程中引入計算思維的教學思路,將實驗教學由程序語言語法掌握轉變為在具體問題求解的操作過程中掌握程序語言語法、培養思維創新素養、提高問題算法求解能力。
【關鍵詞】C++程序設計 問題求解 計算思維 課程實驗
【中圖分類號】G642 【文獻標識碼】A 【文章編號】1674-4810(2013)23-0015-02
隨著我國計算機及互聯網技術的廣泛應用,加強計算機綜合能力的培養,提高大學生使用程序語言解決問題的能力已成為當代大學生計算機基礎教育的重要組成部分。根據《中國高等院校計算機基礎教育課程體系2008》的規定,高校程序設計基礎課程的學習目標是:(1)學習問題求解的思路和方法,即算法。(2)理解計算機是如何具體實現算法的,即如何才能有效利用計算機編程。因此我們認為在高校非計算機專業的C++程序設計課程中,學習的重點不僅是掌握程序語言的語法和編寫各類經典算法程序,而且重點要掌握算法思想與問題求解的思路。計算思維是運用計算機科學的基本概念進行問題求解、系統設計以及人類行為理解的一種思維方法和問題求解能力。因此,在C++程序設計實驗教學中強調計算思維實踐,訓練學生問題求解的上機操作過程,培養學生形成計算思維,使他們能潛移默化地養成用計算思維方式配合C++程序解決各類專業問題的習慣,成長為21世紀國家需要的復合型創新人才。
一 計算思維與C++程序設計實驗
計算思維是一種思維方式和問題求解技能,它能幫助我們更好地去定義問題、求解問題、控制風險、規劃調度、平衡資源和提高效率。其概念最初是在2006年3月由美國卡內基梅隆大學計算機系主任周以真教授提出的,根據周以真教授在計算機權威雜志Communication of the ACM上首次定義的計算思維,計算思維是運用計算機科學的基礎概念進行問題求解、系統設計以及人類行為理解等的一系列思維活動。但是計算思維不是狹義的計算機程序設計能力,而是運用計算機程序語言去求解問題、設計系統和理解人類行為的能力。
C++程序設計是大學計算機教育的第二個層次,但目前該課程的教學還停留在狹義工具論的框架下,課程實驗教學也僅僅要求學生掌握C++程序語法,以能使用C++編寫簡單算法程序為目標,這樣的實驗教學流于形式,導致實驗內容僵化,教學收效甚微,與學校開設課程的真正目標相背離。因此,應在C++程序設計實驗教學中引入計算思維,在實驗內容中為學生提供足夠的思維空間,設法激勵和引導學生自主思考,去發現問題、分析問題和通過編寫程序解決問題。引入計算思維后的C++程序設計實驗教學的目標應調整為:讓學生通過上機實踐,以鞏固C++的基本語法知識并熟練使用為基礎,重點培養學生掌握C++程序設計的計算思維,提高解決問題的思維能力。
二 引入計算思維的C++實驗教學思路
引入計算思維后的C++實驗教學應從三個方面逐步開展:
1.問題求解與語法知識上機實踐相結合
結合課堂教學中的語法知識點基礎理論,在實驗教學中引入“問題或案例”,將“問題或案例”的解決方案與課堂教學的語法知識點相結合,一方面可以加深學生對知識點的理解,一方面也可以讓學生認識到程序語言的各個知識點能做什么,不能做什么,適合做什么,不適合做什么。如用“拋硬幣”游戲作為案例,要求學生分別實踐單分支的if語句、雙分支的if-else語句和switch語句,然后通過對比分析,引導學生理解單分支的if語句、雙分支的if-else語句和switch語句能做什么,適合做什么;然后以“抽獎”游戲為案例,要求學生分別實踐單分支的if語句、雙分支的if-else語句和switch語句,然后通過對比分析,引導學生理解單分支的if語句、雙分支的if-else語句和switch語句不能做什么,不適合做什么。
2.思維多樣性與算法求解上機實踐相結合
通過課程實驗,鼓勵同學們根據自己的理解和思維方式,從不同角度發現問題和分析問題,用不同的算法求解同一問題或任務,或用不同的程序實現某一算法,然后給出一些可供學生重構的程序片段,培養他們的思維創新能力,最后通過分享和交流不同算法的程序,對比分析各類程序的優缺點和思考重構優化,培養同學們計算思維的多樣性和重構性。
3.實驗教學中的規范化、興趣化和簡優化相結合
建立規范化實驗流程,要求學生按“理解問題→分析問題→設計算法→編寫程序→上機調試→重構優化→對比分析”的順序進行,讓學生養成一個好的學習和思維習慣,養成良好的編程習慣,并逐步訓練、提高學生分析問題、解決問題的能力和培養創新思維。
常規的、數學化的問題很難引起學生的求解興趣。現實性和趣味性是激起學習興趣的一個可行手段。因此在編制實
驗內容時,應多選取貼近生活、專業和具有娛樂性的內容。如讓學生把地鐵的分段計費問題用if結構來求解,把所得稅的計算問題用switch結構來求解等。
在實驗過程中鼓勵學生開放思維,在進行算法多樣化分析的同時,還要注重引導學生思考和分析各類算法的優缺點,并提出簡化或優化的重構方案。如“百雞百錢”問題,最簡單的機算法是采用三重循環的算法來實現。教師通過提出或引導學生思考采用二重循環的方式如何實現,然后對比兩種算法的性能,發現循環次數從三重循環的100萬次,降為二次循環的1萬次,性能提升了99%。一個簡單的重構就可以讓學生認識到算法優化的魅力,教師還可以讓學生進一步思考如何優化算法,通過生活分析,公雞數量不可能超過32,因此可以將公雞的循環值從100降到32。同樣的,母雞的循環值也可以降到98,這樣循環次數又減少了10000-32×98=6864次,同樣是二重循環,但性能又提高了70%左右。通過這一系列的簡優化實驗,充分調動了學生的思維能動性和主動創新性,給予學生創新的問題求解方案和探索未知問題的滿足感,激發他們的學習積極性,對于培養和增強計算思維與程序語言實踐能力有積極的作用。
三 結束語
通過在C++程序設計實驗課程中引入計算思維訓練,可以有效改變現在的知識、技能灌輸型的教學方式,提高學生興趣,鍛煉學生思維,提升實踐教學效果,對于培養各學科高素質的綜合型創新人才十分重要。計算思維引入C++程序設計實驗教學,不僅可以幫助學生理解程序語言求解問題的實現機制,還有利于他們進行實踐和創新。因此,我們不僅要在C++程序設計課程中不斷強化計算思維的培養,還要盡快把它推廣到其他計算機教育課程中去,不斷提高大學生計算機基礎教育的計算思維素質培養的水平。
參考文獻
[1]Jeannette M. Wing. Computational Thinking[J].Communica
-tions of the ACM,2006(3):33~35
[2]何欽銘等.計算機基礎教學的核心任務是計算思維能力的培養——《九校聯盟(C9)計算機基礎教學發展戰略聯合聲明》解讀[J].中國大學教學,2010(9)
[3]董榮勝.計算機科學導論——思想與方法[M].北京:高等教育出版社,2007
〔責任編輯:龐遠燕〕