李蕓
摘要:計算思維近年來在計算機(jī)領(lǐng)域和教育領(lǐng)域備受關(guān)注,作為社會輸送人才的高等教育應(yīng)重視系統(tǒng)地向滲透計算思維,使大學(xué)生具備利用計算思維解決實際問題的能力。以算法為核心、面向廣大專業(yè)開設(shè)的C程序設(shè)計是計算思維能力培養(yǎng)的最佳土壤,然而目前大多數(shù)高校所開設(shè)的程序設(shè)計語言課程仍然采用傳統(tǒng)的章節(jié)教學(xué)、定向?qū)嶒灧绞?,本文以C語言程序設(shè)計為例,闡述現(xiàn)有教學(xué)的弊端、改革的必要性和方向,旨在為全面推動計算思維為導(dǎo)向的計算機(jī)基礎(chǔ)課程體系教學(xué)打下基礎(chǔ)。
關(guān)鍵詞:計算思維;C語言;課程改革
中圖分類號:G642 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2016)35-0136-03
高等教育的一項主要目標(biāo)是培養(yǎng)學(xué)生的綜合素質(zhì)以提高其解決實際問題的能力,而計算機(jī)基礎(chǔ)課群的教學(xué)在當(dāng)前信息社會背景下實現(xiàn)這一目標(biāo)方面起著極其重要的作用。教育部高等學(xué)校計算機(jī)基礎(chǔ)課程教學(xué)指導(dǎo)委員會提出了大學(xué)計算機(jī)基礎(chǔ)教學(xué)4個方面的能力培養(yǎng)目標(biāo):對計算機(jī)的認(rèn)知能力;應(yīng)用計算機(jī)解決問題的能力;基于網(wǎng)絡(luò)的學(xué)習(xí)能力;依托信息技術(shù)的共處能力。其中,對計算機(jī)的認(rèn)知能力和應(yīng)用計算機(jī)的問題求解能力恰好反映了大學(xué)教育中對人才的計算思維培養(yǎng)的要求。具體來說,高等教育實現(xiàn)培養(yǎng)計算思維就是希望在遇到實際問題時,大學(xué)生能運用所學(xué),結(jié)合自己的數(shù)學(xué)知識,按照工程化的方法如何用算法和計算機(jī)的軟硬件手段去解決。在計算思維指導(dǎo)下解決問題的一般步驟是經(jīng)過分析,抽取問題的共性來建立數(shù)學(xué)模型,針對于數(shù)據(jù)模型給出合適的優(yōu)化算法,然后借助恰當(dāng)?shù)某绦蛟O(shè)計語言編碼實現(xiàn),進(jìn)行反復(fù)調(diào)試和修改后最終運行給出可行的結(jié)果。同濟(jì)大學(xué)的龔沛曾教授等將計算思維培養(yǎng)進(jìn)一步細(xì)分為計算思維意識、計算思維方法和計算思維能力3個維度,這一思想為程序設(shè)計課程教學(xué)提供了更為明確的指導(dǎo)。
C程序設(shè)計是計算機(jī)基礎(chǔ)課群中一門非常重要的語言課,不僅包含入門級程序設(shè)計、數(shù)據(jù)結(jié)構(gòu)等方面的基礎(chǔ)知識,還大量包含和體現(xiàn)了計算思維的算法理念、思維模式和解決問題的方法論。在C程序設(shè)計教學(xué)中以計算思維能力培養(yǎng)為導(dǎo)向,對于培養(yǎng)學(xué)生對計算機(jī)科學(xué)的理解和興趣至關(guān)重要,不僅能為學(xué)生的編程學(xué)習(xí)和應(yīng)用研究打下堅實的基礎(chǔ),養(yǎng)成良好的編程習(xí)慣,同時也能鍛煉學(xué)生的計算思維和養(yǎng)成用計算思維的方法思考、解決問題的習(xí)慣。
然而,雖然C語言普遍面向全校非文科學(xué)生開設(shè),但因其開設(shè)時間都安排在專業(yè)課開始前的第一學(xué)年,即面向的主體是大一新生。因此,理解計算思維的核心——抽象和自動化、進(jìn)而培養(yǎng)計算思維,對于還處在計算機(jī)學(xué)習(xí)起點的學(xué)生來說還是比較困難的。
如何將計算思維通過C語言為代表的程序設(shè)計語言課程滲透到學(xué)生的日常中,培養(yǎng)其利用數(shù)學(xué)、工程性的思想借助計算機(jī)手段去分析、解決問題,使學(xué)生真正感受到計算思維帶來的實用性、重要性、高效性應(yīng)成為計算機(jī)語言教學(xué)工作者應(yīng)積極思考并努力實踐的首要問題。
1 C語言程序設(shè)計課程普遍現(xiàn)狀
中國大多數(shù)高校都針對新生開設(shè)計算機(jī)基礎(chǔ)課程群,以在進(jìn)入專業(yè)課學(xué)習(xí)階段之前盡量縮小學(xué)生的計算機(jī)水平的差距。其普遍采用的是大學(xué)計算機(jī)基礎(chǔ)加程序設(shè)計語言或多媒體應(yīng)用的組合,且教學(xué)模式仍然依賴教師上課時按照自己的備課教案、逐步完成自己的教學(xué)計劃,隨后實驗課上再要求學(xué)生進(jìn)行相應(yīng)的上機(jī)訓(xùn)練。對于案例型教學(xué)、任務(wù)型實踐滲透甚少,因而很難讓學(xué)生對大數(shù)據(jù)環(huán)境和技術(shù)有深刻認(rèn)識和掌握,自主研究性學(xué)習(xí)和探索難以實現(xiàn),大大削弱了學(xué)習(xí)的主觀能動性。在這種現(xiàn)狀下的C語言程序設(shè)計課程教學(xué)中,學(xué)生普遍感覺課程聽講不難,但是實際動手能力弱,即被動接受、理解不深且不能將知識點綜合運用,具體體現(xiàn)在以下幾個方面:
(1)傳統(tǒng)的授課方式依賴教師講學(xué)生聽,無疑會使整個學(xué)習(xí)過程中學(xué)生均處于被動接受的狀態(tài),無法提高學(xué)習(xí)積極性。由于課程教學(xué)側(cè)重于語法知識,且教學(xué)進(jìn)度安排死按章節(jié)分布。學(xué)生死記語法規(guī)則,在解決實際問題時卻無從下手,教學(xué)效果欠佳。
(2)計算機(jī)類課程課時頻頻遭減,但為保證完成必要的教學(xué)內(nèi)容,無疑會為了追求進(jìn)度而放棄深度和引導(dǎo)學(xué)生自行思考解決的課時,學(xué)生來不及理解消化所學(xué)內(nèi)容。
(3)過度強(qiáng)化等級考試。為提高考試通過率,會以考點作為教學(xué)目標(biāo),通過大量習(xí)題鞏固,為了學(xué)而學(xué),造成題庫型、應(yīng)試型學(xué)習(xí)模式,學(xué)完課程后不知道如何用程序設(shè)計方法解決專業(yè)問題。
(4)由于中學(xué)時的教學(xué)差異,入校時學(xué)生的計算機(jī)基礎(chǔ)參差不齊。傳統(tǒng)的教學(xué)組織無法顧及學(xué)生個體差異。
2 課程改革方向
C語言本身基本內(nèi)容比較簡單,但是需要對計算機(jī)基礎(chǔ)理論、系統(tǒng)工作方式有一定的認(rèn)識。整體教學(xué)內(nèi)容深度可謂淺入深出。因此要求教學(xué)面向全局,既考慮章節(jié)知識點引入的合理性,更要將C語言深邃的內(nèi)涵滲透進(jìn)各教學(xué)部分。例如,C語言的數(shù)據(jù)類型豐富靈活,然而,這章通常在編程的邏輯結(jié)構(gòu)之前介紹,容易枯燥且脫離應(yīng)用不能讓學(xué)生產(chǎn)生深刻的理解和體會。因此,應(yīng)改變死板按照教材的章節(jié)分布來教學(xué)的模式,應(yīng)以計算思維為導(dǎo)向,根據(jù)分析問題、解決問題時運用知識點的思維過程,結(jié)合任務(wù)型的實例來展開課堂教學(xué)。以任務(wù)驅(qū)動進(jìn)行教學(xué)是培養(yǎng)學(xué)生計算思維能力的有效手段,可以充分使用案例串聯(lián)課程各章節(jié)內(nèi)容,并配以深入淺形式多樣的講解,自然可以改善教學(xué)效果,將計算思維的培養(yǎng)落到實處。由于各專業(yè)學(xué)生的知識儲備不同,作為計算機(jī)通識基礎(chǔ)課程,只有充分引入各行業(yè)案例,深入結(jié)合專業(yè)需要和實際,才能既激發(fā)學(xué)生學(xué)習(xí)興趣,又幫助學(xué)生掌握各個知識點,且提高在實際問題中解決分析的能力。
C程序設(shè)計知識點看似簡單卻靈活復(fù)雜、且概念抽象,因此翻轉(zhuǎn)課堂形式對于C語言程序設(shè)計教學(xué)非常適合。利用翻轉(zhuǎn)課堂,在學(xué)習(xí)視頻中即安排預(yù)習(xí)的課程內(nèi)容盡興課堂教學(xué)的預(yù)熱,還可以將C語言中難于理解的語法、程序構(gòu)建和程序分步執(zhí)行過程錄制成視頻,以便學(xué)生反復(fù)觀看。更可以針對任務(wù)型實驗進(jìn)行提問式或比賽式的實時互動,充分引入學(xué)生自主討論機(jī)制,必將激發(fā)學(xué)生的積極思索和探索的興趣,在實踐中驗證所學(xué),在解決問題的過程中加深體會知識點的綜合運用。
通過啟發(fā)式教學(xué)方式引導(dǎo)學(xué)生思考,例如:如何使用C語言中的符號來描述系統(tǒng)。讓學(xué)生真正理解這些命令、數(shù)據(jù)類型實際是一種建模元素,每種類型有著其特別的抽象描述能力。特別地,在C語言程序的環(huán)境中,借助于Visual C++ 6.0 平臺的單步調(diào)試功能,可以形象地演示上述C語言程序的自動化過程。讓學(xué)生對計算思維指導(dǎo)下有計劃、有步驟地將實際問題的解決方案轉(zhuǎn)化為使用計算機(jī)的軟硬件環(huán)境的實際操作,立體地、具體地在程序設(shè)計語言的學(xué)習(xí)中感受計算思維和計算機(jī)技術(shù)結(jié)合的強(qiáng)大。程序設(shè)計教學(xué)應(yīng)以發(fā)現(xiàn)問題→分析問題→尋求多種解決方案→各種解決方案對比→實現(xiàn)解決方案作為授課思路,讓學(xué)生成為問題的解決者而不僅僅是程序設(shè)計員。
3 考核與評價
目前的課程考核方式主要分紙質(zhì)試卷測試和上機(jī)考試系統(tǒng)測試兩種主要類型。輔以平時的實驗成績作為參考,題型及考察方式對學(xué)生計算思維能力的評價非常弱,如果不改革考核和評價方式無異于對教學(xué)效果和學(xué)生學(xué)習(xí)熱情的打擊。因此,應(yīng)大比例增加隨堂測試、實驗環(huán)節(jié)和課后分組任務(wù)完成的系數(shù)比例,以真實地反映學(xué)生的學(xué)習(xí)水平和在實際中解決問題、團(tuán)隊協(xié)作等的能力。
隨堂測驗要求學(xué)生課前指定的時間內(nèi)按要求編寫程序,經(jīng)過交換批改評價,能按照模擬機(jī)器環(huán)境的檢測步驟依次指出程序中的語法和邏輯錯誤,并總結(jié)原因和給出改正的結(jié)果,強(qiáng)化程序設(shè)計能力。另外,在討論了程序的正確性的同時,應(yīng)鼓勵講出最初的算法設(shè)計、數(shù)據(jù)結(jié)構(gòu)設(shè)計,以及多種算法思路的實現(xiàn),予以加分。在C程序設(shè)計教學(xué)過程中,強(qiáng)調(diào)算法多樣性來培養(yǎng)學(xué)生的計算思維能力,培養(yǎng)學(xué)生的創(chuàng)新意識、探索精神和問題求解能力。在設(shè)計實驗內(nèi)容時,鼓勵學(xué)生編寫各種程序來實現(xiàn)同一個計算任務(wù),鼓勵改寫別人編寫的程序,從而培養(yǎng)學(xué)生計算思維的多樣性和靈活性。在倡導(dǎo)算法多樣化同時,還引導(dǎo)學(xué)生對算法進(jìn)行反思 和進(jìn)一步探索,從而達(dá)到簡化并優(yōu)化算法的目標(biāo),對于每一次教學(xué)都是分必要。
教師根據(jù)課堂檢查情況和課后的微課平臺互動及時調(diào)整教學(xué)計劃和教學(xué)方法。成績系數(shù)應(yīng)隨時根據(jù)課堂討論和線上討論的活躍度來調(diào)整設(shè)定。學(xué)生最終成績由上述成績綜合評定,客觀地反映學(xué)生的學(xué)習(xí)過程和學(xué)習(xí)效果。
在實驗教學(xué)環(huán)節(jié)中,對于每一個題目都要嚴(yán)格上機(jī)操作規(guī)范,基本按如下步驟進(jìn)行:
(1)分析題目,思考算法思路確定解決方案;
(2)根據(jù)軟、硬件和算法確定所需的數(shù)據(jù)結(jié)構(gòu);
(3)定義參與運算的變量并賦初值;
(4)綜合基本邏輯結(jié)構(gòu),確定解決問題的主要結(jié)構(gòu);
(5)確定輸出方式;
(6)繪制 N-S流程圖;
(7)基于N-S流程圖編寫源代碼;
(8)準(zhǔn)備測試程序的數(shù)據(jù)和預(yù)判結(jié)果;
(9)上機(jī)調(diào)試;
(10)修改并繼續(xù)調(diào)試直至最終正確;
(11)歸納總結(jié),形成實驗報告;
(12)思考有否其他算法方案。
教育學(xué)生重視對實驗過程及結(jié)果進(jìn)行總結(jié)、歸納與反思,這是訓(xùn)練計算思維、在實踐中學(xué)習(xí)、促進(jìn)知識同化和遷移的極好途徑。反思的內(nèi)容,包括對上機(jī)實驗結(jié)果的反思,對解題思路、分析過程、程序編寫、程序執(zhí)行過程的反思,對本實驗所涉及的知識點的反思等。另外,要求學(xué)生以小組為單位交流討論,組間互評以達(dá)到集思廣益、取長補(bǔ)短的效果,通過相互的信息交換和積累,學(xué)習(xí)毫無疑問必事倍功半,在反復(fù)的實踐反思和信息交流過程中,計算思維能力得到拓展。
4展望
社會生活與工作對計算思維的需要無處不在,但人們的計算思維活動卻仍停留在無意識狀態(tài)。因此,在C語言程序設(shè)計教學(xué)中要通過契合的案例教學(xué)訓(xùn)練將這種無意識轉(zhuǎn)變成系統(tǒng)的、有意識的計算思維,將知識傳授轉(zhuǎn)變?yōu)榛谥R的思維傳授。針對C語言程序設(shè)計課程中滲透計算思維這一培養(yǎng)要求,以考查語言的語法知識為主的考核方式應(yīng)轉(zhuǎn)變?yōu)橐钥疾閷W(xué)生的算法設(shè)計能力和系統(tǒng)建模能力為主。從培養(yǎng)編程人員轉(zhuǎn)變?yōu)榕囵B(yǎng)能系統(tǒng)思考解決方案、能綜合運用綜合能力設(shè)計算法,并最終借助可達(dá)到的計算設(shè)備來實現(xiàn)算法的綜合性跨學(xué)科思維人才。培養(yǎng)學(xué)生從計算機(jī)的角度去抽象問題,思考解決問題的方法和步驟,主動用計算思維去解決問題,有意識地應(yīng)用在結(jié)合專業(yè)領(lǐng)域問題處理中。通過實踐培養(yǎng)學(xué)生勇于探索、多種解決方案比較、團(tuán)結(jié)協(xié)作的精神,對于培養(yǎng)學(xué)生計算思維能力、創(chuàng)新能力有重要意義。
參考文獻(xiàn):
[1] 朱戰(zhàn)備.產(chǎn)品生命周期管理PLM理論與實務(wù)[M].北京:電子工業(yè)出版社,2004(8):241.
[2] 萬立,鄭霞,劉清華.產(chǎn)品全生命周期管理平臺的集成產(chǎn)品開發(fā)流程實現(xiàn)研究[J].計算機(jī)輔助程,2005(2):68-74.
[3] 龔沛曾,楊志強(qiáng).大學(xué)計算機(jī)基礎(chǔ)教學(xué)中的計算思維培養(yǎng)[J].中國大學(xué)教學(xué),2012(5):51-54.
[4] 魏妮妮,潘天恒,張倩.基于計算思維的程序設(shè)計課程實驗教學(xué)研究[J].武漢生物工程學(xué)院學(xué)報,2016,12(1):26-30.
[5] 呂俊,陸淑娟.以計算思維培養(yǎng)為導(dǎo)向的C語言程序設(shè)計課程教學(xué)改革[J].軟件導(dǎo)刊,2016,15(8):213-215.
[6] 劉洋,鄒汪平.計算思維導(dǎo)向下計算機(jī)程序設(shè)計課程教學(xué)改革策略研討[J].無限互聯(lián)科技,2016(9):89-91.
[7] 汪紅兵,姚琳,武航星,張敏. C語言程序設(shè)計課程中的計算思維探析[J].中國大學(xué)教學(xué),2014(9):59-62.
[8] 呂俊.大學(xué) 計 算 機(jī) 基 礎(chǔ) 教 學(xué) 中 的 計 算 思 維 養(yǎng) 成[J].計算機(jī)教育,2013(5):43-46.
[9] 朱鳴華,趙銘偉,趙晶等.計算機(jī)基礎(chǔ)教學(xué)中計算思維能力培養(yǎng)的探討[J].中國大學(xué)教學(xué),2012(3):33-35.
[10] 陳杰華.程序設(shè)計課程中強(qiáng)化計算思維訓(xùn)練的實踐探索[J].計算機(jī)教育,2009(20):84-85.