前言:想要寫出一篇引人入勝的文章?我們特意為您整理了計算思維的程序設計課程改革研究范文,希望能給你帶來靈感和參考,敬請閱讀。
摘要:通過分析程序設計課程教學現狀,提出了基于計算思維的程序設計課程教學改革方向。探討將計算思維引入程序設計課程教學,并進行強化訓練的教學方法與實踐。教師從計算思維的角度重新審視和組織程序設計基礎的課堂和實踐教學,可以讓學生樹立用計算機求解問題的意識,實現教學由傳授知識到培養能力的轉變。
關鍵詞:程序設計課程;計算思維;教學改革;教學方法與實踐
0引言
程序設計課程屬于高校非計算機專業的必修公共課,主要基礎課程有“C語言程序設計”、“VisualBasic程序設計”、“VisualFoxPro程序設計”、“VisualC++程序設計”等,對于培養大學生的邏輯思維、抽象思維、創新精神與創新能力,以及提高綜合素質起著十分重要的作用。在我校,非計算機專業學生占全體學生比例約為90%,其程序設計課程一般采取大班上課,學生剛開始對程序設計課程頗有興趣,但隨著知識點的增多,難以理解和記憶的新概念、新術語、新規則大量出現后,逐漸感覺課程難度加大,且認為與后續專業課程結合不夠緊密,未正確認識到計算科學在本專業領域中的重要作用,所以學習的主動性、自覺性不斷下降,學習效益低。最終導致學生實踐能力不足,綜合分析能力及創新能力欠缺,難以滿足當今社會對人才的要求。因此,程序設計課程的教學改革勢在必行。
1計算思維
目前,計算思維的培養成為國際和國內計算機教育界關注的熱點。計算思維概念的提出,國際上廣泛認同的是2006年美國卡內基•梅隆大學計算機系主任JeannetteM.Wing教授在ACM上發表的《ComputationalThinking》(計算思維,簡稱CT),她提出:“CT是運用計算機科學的基礎概念進行問題求解、系統設計,以及人類行為理解的涵蓋計算機科學之廣度的一系列思維活動[1]”,她認為計算思維是除閱讀、寫作、算數外,每個人必須掌握的技能之一。在我國,2010年《九校聯盟(C9)計算機基礎教學發展戰略聯合聲明》的核心要點也強調“需要把培養學生的‘計算思維’能力作為計算機基礎教學的核心任務[2]”。從國家層面上講,大學計算機基礎教育這門課程的定位就是基礎課程,也就是與數學、物理同等地位。既然是基礎課程,其教學方法和教學理念就應該像數學與物理一樣,將學科的基本理論、基本思維教授給學生。計算和計算思維是計算機基礎課程的基本理論和基本思維,科學家已將計算思維和理論思維、實驗思維并列為人類三大科學思維。因此,在大學計算機基礎教育中強調和深化“計算思維”的培養,既有助于計算機基礎教育學科的健康、持續發展,又有助于國家戰略型人才的培養。程序設計課程是大學計算機基礎課程的重要分支,也是許多高校非計算機專業進行計算機基礎教育的重要課程之一。程序設計課程的學習主要有二個內容:第一,算法學習,即學習問題求解的方法;第二,編程實現,即理解計算機是如何實現算法的,利用計算機編程實現算法。課程學習不只是編寫程序,而是算法思想與問題求解的思路。總之,要教會學生使用計算機編程,逐步形成計算思維。
2程序設計教學與計算思維
程序設計課程是訓練學生思維能力的一個最直接最重要的平臺,而計算思維則提供了重新審視程序設計教學的視角,將計算思維融入到程序設計教學中是改革的必然趨勢。計算思維的本質是抽象和自動化,計算思維的抽象是使用符號代替實際問題中的各種變量,每個程序包括各種標識符、常量、變量、數組、函數和結構體等符號語言,這些組合在一起就構成了程序設計語言。計算思維的自動化則體現在程序的機械式執行,這也是馮•諾伊曼計算機體系的本質特征。要實現自動化,就必須要設計精確的算法和嚴格的程序語言體系。計算思維的主要特征有三點。⑴嚴謹規整。完備的算法是計算機程序解決問題的基本要求,它的實現必然要使用嚴格的數學符號描述。計算思維要求用確定、形式化并且無二義性的語言描述問題,這就要求在程序設計課程教學過程中強化計算思維訓練。例如學生在編寫程序時使用了錯誤的符號或者語法,都會在編譯或運行時提示錯誤,教師要引導學生糾正自己的錯誤,培養他們嚴謹的科學實證精神和編程的良好習慣,這些都屬于強化計算思維嚴謹性的范疇[3]。⑵目標明確。計算思維是用來解答問題的,它將實際生活中的問題以抽象化和程序化的形式表示出來。通常解答問題的過程如下:發現問題—分析問題—思考問題—解決問題—反思。程序設計課程要注意培養學生依據已有的知識體系,提出問題、解決問題的能力,著重強化利用計算思維的方式描述問題和使用機器語言解決問題的訓練。例如,成績5級計分制就是我們在日常生活中感受到的問題,學生可根據自己對成績等級計分的理解寫出數學式,然后用多分支結構算法進行描述,最后上機實現。⑶機械化。用來描述問題和解決問題的算法有三種形式[4]。①生活算法:完成某項任務的計劃,例如一個學期的學習計劃。②數學算法:對一類計算問題確定統一的求解方法,例如一元二次方程組的求解公式。③計算思維算法:精確描述問題和求解問題的自動化形式語言,比如高級程序設計語言。計算思維算法強調利用計算機的速度和存儲優勢,通過嚴格機械化的操作時序解決實際問題。比如“雞兔同籠”問題可以使用兩個二元方程組進行數學求解,但是計算機算法則可以使用窮舉法進行簡單重復的操作求解,充分利用了計算機的計算速度優勢。在程序設計課程中強化計算思維訓練,可以讓學生掌握使用機械化思維進行信息處理的能力[5]。
3基于計算思維的程序設計課程教學實踐
對于非計算機專業的學生來說,學習程序設計的目的是學會用計算機去分析問題和解決問題的思維方法,因此計算思維可以貫穿于程序設計課程的整個教學過程。
3.1計算思維視角下的課程引入
首先,在引入程序設計類課程之前告訴學生編程能力是計算思維的具體表現。學生不僅要掌握計算機語言的相關知識,而且要能夠應用程序設計的思想與方法分析和解決問題。例如,VisualBasic程序設計基礎就是VisualBasic語言。正像自然語言的產生是人類社會活動發展的客觀要求和必然結果,同樣,計算機語言的產生和發展則是人類使用計算機的客觀要求和必然結果。從計算機語言的基本語法到其整體結構,都滲透著許多計算思維。因此,將“計算思維”引入“VisualBasic程序設計”教學就是:在講解相關知識點的同時,也要講授其中所反映的計算思維,通過思維強化知識,通過知識培養思維。人們利用計算機就是為了處理信息數據,而不同類型的信息數據,其表達方式不盡相同,其處理方式也會有所不同,那么,計算機是如何實現信息數據的表示、存儲和處理的,這其中蘊含的計算思維又是什么。首先,根據馮•諾依曼計算機體系結構:從軟件方面考慮,可通過聲明或定義不同類型數據以表示不同類型的信息;從硬件方面考慮,可通過存儲元件可實現信息數據的存儲,不同類型的數據占用不同長度的存儲單元。但僅僅完成信息數據的表示和存儲是遠遠不夠的,而要真正實現數據處理,由此便產生了計算機語言,即利用計算機語言編寫的數據處理程序指揮CPU(中央處理器)完成相應的數據處理。這個通過人、機共同努力完成的“問題求解”過程,就是一個計算思維的實現過程。顯然,實現這樣一個信息處理的計算思維,是需要計算機語言的技術支持即:數據表示(數據類型)、數據存儲(變(常)量)和數據處理(表達式和控制結構),并由此引出VisualBasic語言基礎知識的學習。
3.2梳理內容,加強基于計算思維的關聯案例庫建設,創新教學方法
筆者在深入研究非計算機專業學生認知規律、思維模式和專業背景后,站在計算思維的層面上按照課程知識的內在體系結構梳理教學內容,突出“案例化、實用化”,強調基于計算思維的關聯案例庫的建設。關聯案例,一方面是指案例中的知識點相互關聯,另一方面是指案例和生活、專業領域中的應用相關聯。例如,在“VisualBasic程序設計”課程中,可以根據課程知識點,按代表性、實用性、趣味性原則來設計關聯案例,如計算器、字幕、鬧鐘、文本編輯器、菜單、數據庫管理系統等,將設計全過程呈現在大屏幕上,讓學生親身感受并參與其中,激發了學生的求知欲。筆者在“VisualBasic程序設計”課程第一堂課中就展示經典案例及上屆學生的優秀作品,使學生對本課程產生濃厚的興趣,接著以一個簡單實用的例子展示了“VB”小程序的制作,介紹了VB編程環境和VB編程四部曲,說明VB編程上手的容易,克服學生的畏難情緒,幫助學生更快地入門。在課堂教學中,筆者貫穿“案例引導,精講多練,教學互動”的教學原則,探索和自創出一套適合程序設計課程的關聯案例式教學方法(“關聯案例展示—案例剖析—講解相關知識點-知識點在實踐中的應用”),即在傳統教學方法的基礎上,將關聯案例式教學法引入到課堂教學中來。例如,在VisualBasic程序設計課程教學中,可以用案例“登陸界面的制作”講解基本控件(form、label、text、command等),用案例“出租車計費問題”講解分支結構,用案例“計算器”講解控件數組,用案例“成績管理系統”講解菜單和多重窗體程序制作等。這些實例滲透了“知識來源于生活”的教學思想,能使學生意識到學習知識的目的是為了解決生活中的實際問題。此外,還可以嘗試從社會實際、學生實際出發,采取多種直觀、具體、多樣化的教學方法,去激發、調動學生的學習熱情和興趣。比如講授for循環語句時,盡量采用啟發式教學,老師多提問,引導學生積極思考答案,自己得出結論,最后再由老師補充完善。例如,我們可以從最簡單的計算1+2+3+……+10這個問題開始,然后讓學生計算10!=1×2×3×……×10,再讓學生計算1!+2!+……+10!,這樣不斷地制造問題,讓學生不斷地想辦法去解決問題,用改變循環體的方法,化特殊為一般;用比喻的方法降低學生對累加器的理解難度,化抽象為具體,不斷地感覺到學習程序設計的用途和樂趣,積極地思考、分析、歸納,從而使計算思維得到訓練。又如講到數組中對數據的排序問題時,可以采用啟發式、游戲法和課件演示教學法,游戲法是讓幾個同學上來,站成一排,然后按身高進行排序,課件演示教學法師則用Flash動畫把排序過程詳細展示,幫助學生更好地理解,促使學生利用自己已有的知識結構和邏輯思維對問題進行分析和歸納。通過這樣的思維訓練,讓學生在思考中學習,在學習中運用新的方法破解難題,培養學生分析問題、解決問題的能力,鍛煉學生數學建模能力,鞏固知識的同時拓展技能和技巧。
3.3以上機實驗為重點,思維多樣化的計算思維強化訓練
⑴以上機實驗為重點筆者在講授程序設計課程的教學過程中,采用以上機實驗為重點的計算思維訓練模式,讓學生在動手實踐中掌握知識、消化知識,強化計算思維。實驗內容采用“驗證-調試-設計”的形式進行設計;上機實驗采用流程化管理的方式,對于任何實驗內容,都要求學生按照“閱讀題目-分析總結-設計算法-編寫實現代碼-上機調試-優化程序”的順序進行,引導他們養成良好的思維能力和編程習慣;在實驗過程中遇到困難和錯誤,不輕易否定和批評學生,而是指導他們分析難點和錯誤,自己解決。同時,給學生提出新的解決方案或排除未知問題的滿足感,激發他們的學習積極性,大膽創新。強化計算思維,實驗內容的設計非常重要。教師要不斷學習和創作適合學生知識和心理特點的實驗內容。實驗內容不應是課堂內容的簡單復習,要給學生提供計算思維的創新空間。課堂內容要符合實驗內容,要給學生留問題,讓他們自己分析總結,在實驗上機時解決,提高自主思維能力。例如,實驗案例:公主出嫁。美麗的公主伊麗莎白長大成人,鄰國的六個王子來提親,公主有三位侍女,她們猜測哪位王子會得到公主的芳心。侍女一說:“我認為公主會嫁給科爾王子,或者是威廉王子。”侍女二說:“我想公主一定不會選擇亞瑟王子,因為他的身材實在太矮了。”侍女三說:“不管怎么說,公主肯定不會嫁給菲利普、查理、路易斯三位王子,因為他們的國家正準備和我們打仗。”事實上,三個侍女中只有一人猜對了。試編寫程序,找出哪位王子能與公主喜結良緣。為了找出伊麗莎白的白馬王子,從計算思維的角度進行邏輯推理。首先引入邏輯運算符和邏輯表達式,規定一些符號變換規則,將三個侍女的話分別轉換成邏輯表達式,給出綜合判斷條件,再借助這些符號和規則將邏輯推理過程在形式上變得像代數演算一樣。比如定義6個整型變量——A、B、C、D、E、F分別代表6位男嘉賓,變量取值為0表示不是伊麗莎白的白馬王子,為1表示是白馬王子。每位男嘉賓都有兩種可能:“是(1)”或者“不是(0)”,6位男嘉賓按A、B、C、D、E、F順序,有64種取值:000000,000001,…,111111。對案例分析的目的是讓學生懂得:①掌握解題的重要一步是將人的想法寫成計算機能夠處理的表達式或操作步驟,要用到關系運算、邏輯運算和算術運算;②用計算機解題經常需要從多種可能性中尋找其中的一種或幾種,因此,要用“枚舉法”,當遇到大量重復計算時,自然就引出了循環結構;③分支是計算思維的重要方式。筆者借助這個案例題把程序設計的基本概念和方法傳授給學生,當學生建立起這種認識之后,在潛移默化中也就培養了邏輯思維和計算思維。學生通過上機實踐可以體會到計算思維的精髓[6]。上機實踐要有目的地訓練五種能力:①分析題目,找到問題,并將其抽象為數學模型;②構思算法;③編寫程序;④調試程序;⑤分析運行結果,一旦出錯,應該仔細認真找出原因,提出改正的意見。大多數學生對許多問題的看法是在實驗課的討論中逐漸清晰和升華,對思想啟發、計算思維的培養起到推動作用。依據非計算機專業學生認知的規律,我們設計了生活化、趣味化的實驗內容,如俄羅斯方塊游戲、計算器、打字游戲等。⑵以思維多樣化為核心點由于學生認知方式和心理特征存在個體差異,在程序設計課程的教學過程中必然會出現思維多樣化的現象。教師要尊重這種認知方式的差異,倡導多樣化的算法思維,即“一題多解”,鼓勵學生根據自己的興趣,從不同角度發現問題和分析問題,用不同的算法解決問題,用不同的程序實現算法,培養學生的探索精神和創新意識。強調多樣化的算法思維,可以有效地強化計算思維,讓學生明白“條條大路通羅馬”的道理。好的算法不一定適用于每個問題和每個學生,并且幾乎所有的算法都有局限性。在設計上機實驗內容時,教師要考慮給出一些可供學生重構的程序片段,培養他們的思維創新能力。所謂重構,就是在已有的程序基礎上衍生出的新的解決問題算法實現。這種通過分析已有程序的優缺點,修改并把自己的思維融入新程序的過程,就是最好的鍛煉計算思維的訓練手段。教師還應引導學生進行反思和創新聯系,達到簡化和優化算法的目的。這個簡化和優化算法的過程可以很好地強化計算思維訓練,幫助學生舉一反三地學好程序設計課程。比如“百雞百錢”問題,大多數學生都采用三重循環的算法實現。我們就可以提出改進方案,鼓勵學生積極思考如何采用二重循環的方式實現,然后再比較兩種算法的性能,三重循環的次數達到了100萬次,而二次循環是1萬次,性能提升了99%。一個簡單的循環就可以讓學生認識算法優化的魅力,這就可以讓他們繼續思考如何簡化問題,公雞數量不可超過32,就可以在循環中把公雞數量由100降到32,同理,母雞也降到98,這樣循環又降低了10000-32×98=6864次,比之前的二重循環又減少了70%左右,這一系列的簡優化處理,對于增強計算思維能力有極大的促進作用。
4結束語
本文通過分析程序設計課程教學現狀和計算思維的特征,提出了基于計算思維的程序設計課程教學改革方向。并進行了基于計算思維的程序設計課程教學研究與實踐:如計算思維視角下的課程引入;重新梳理和組織教學內容,加強基于計算思維的關聯案例庫建設,創新教學方法;以上機實驗為重點、思維多樣化為核心點的計算思維強化訓練等。將計算思維貫穿于程序設計課程的整個教學過程。實踐證明,這種教學模式對學生計算思維和創新能力的培養大有裨益。將計算思維引入程序設計課程教學的整個過程是必要的也是可行的,教師從計算思維的角度重新審視和組織程序設計基礎的課堂和實踐教學,提煉課程中含有的計算思維的基本概念、方法和思想,通過精心的課程教學設計和實驗指導,可以讓學生樹立用計算機求解問題的意識,認識到計算機對于人的優勢和局限性,最終自覺地運用計算思維來看問題、思考問題和解決問題,從而實現教學由傳授知識到培養能力的轉變。我們不僅要在程序設計課程中強化計算思維,還應努力把它推廣到更多的計算機課程中去,真正地把強化計算思維做到實處。
參考文獻
[1]JeannetteMW.ComputationalThinking[J].Communica-tionsofACM,2006.49(3):33-35
[2]陳國良,董榮勝.計算思維與大學計算機基礎教育[J].中國大學教學,2011.1:9
[3]董榮勝,古天龍.計算思維與計算機方法論[J].計算機科學,2009.1:1-4
[4]陳杰華,戴麗娟.以培養計算思維為核心的程序設計實驗教學[J].實驗技術與管理,2011.1:125-127
[5]臧勁松.培養學生計算思維的程序設計課程教學[J].計算機教育,2012.2:78-80
[6]于寧,崔武子,蔡春,戴紅.突出計算思維訓練的VB程序設計實驗教學[J].實驗技術與管理,2016.9:182-185
作者:朱前飛 楊鼎強 蔣加伏 孟愛國 單位:長沙理工大學計算機與通信工程學院