朱前飛+楊鼎強(qiáng)+蔣加伏+孟愛(ài)國(guó)
摘 要: 通過(guò)分析程序設(shè)計(jì)課程教學(xué)現(xiàn)狀,提出了基于計(jì)算思維的程序設(shè)計(jì)課程教學(xué)改革方向。探討將計(jì)算思維引入程序設(shè)計(jì)課程教學(xué),并進(jìn)行強(qiáng)化訓(xùn)練的教學(xué)方法與實(shí)踐。教師從計(jì)算思維的角度重新審視和組織程序設(shè)計(jì)基礎(chǔ)的課堂和實(shí)踐教學(xué),可以讓學(xué)生樹(shù)立用計(jì)算機(jī)求解問(wèn)題的意識(shí),實(shí)現(xiàn)教學(xué)由傳授知識(shí)到培養(yǎng)能力的轉(zhuǎn)變。
關(guān)鍵詞: 程序設(shè)計(jì)課程; 計(jì)算思維; 教學(xué)改革; 教學(xué)方法與實(shí)踐
中圖分類號(hào):G642.0 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1006-8228(2017)06-69-05
Research and practice of the programming course reform
based on computational thinking
Zhu Qianfei, Yang Dingqiang, Jiang Jiafu, Meng Aiguo
(Changsha University of Science and Technology, Computer and Communication Engineering college, Changsha, Hunan 410114, China)
Abstract: Through the analysis of the present situation of programming course teaching, the direction of teaching reform for programming course based on computational thinking is put forward. The introduction of computational thinking into the programming course teaching and the teaching method and practice of strengthening the programming training are discussed. Teachers from the perspective of computational thinking to re-examine and organize the classroom teaching and practice teaching of programming fundamentals, can make the students to establish the consciousness of using computer to solve problems, realize the changes of teaching from imparting knowledge to ability training.
Key words: programming course; computational thinking; teaching reform; teaching method and practice
0 引言
程序設(shè)計(jì)課程屬于高校非計(jì)算機(jī)專業(yè)的必修公共課,主要基礎(chǔ)課程有“C語(yǔ)言程序設(shè)計(jì)”、“Visual Basic程序設(shè)計(jì)”、“Visual FoxPro程序設(shè)計(jì)”、“Visual C++程序設(shè)計(jì)”等,對(duì)于培養(yǎng)大學(xué)生的邏輯思維、抽象思維、創(chuàng)新精神與創(chuàng)新能力,以及提高綜合素質(zhì)起著十分重要的作用。
在我校,非計(jì)算機(jī)專業(yè)學(xué)生占全體學(xué)生比例約為90%,其程序設(shè)計(jì)課程一般采取大班上課,學(xué)生剛開(kāi)始對(duì)程序設(shè)計(jì)課程頗有興趣,但隨著知識(shí)點(diǎn)的增多,難以理解和記憶的新概念、新術(shù)語(yǔ)、新規(guī)則大量出現(xiàn)后,逐漸感覺(jué)課程難度加大,且認(rèn)為與后續(xù)專業(yè)課程結(jié)合不夠緊密,未正確認(rèn)識(shí)到計(jì)算科學(xué)在本專業(yè)領(lǐng)域中的重要作用,所以學(xué)習(xí)的主動(dòng)性、自覺(jué)性不斷下降,學(xué)習(xí)效益低。最終導(dǎo)致學(xué)生實(shí)踐能力不足,綜合分析能力及創(chuàng)新能力欠缺,難以滿足當(dāng)今社會(huì)對(duì)人才的要求。因此,程序設(shè)計(jì)課程的教學(xué)改革勢(shì)在必行。
1 計(jì)算思維
目前,計(jì)算思維的培養(yǎng)成為國(guó)際和國(guó)內(nèi)計(jì)算機(jī)教育界關(guān)注的熱點(diǎn)。計(jì)算思維概念的提出,國(guó)際上廣泛認(rèn)同的是2006年美國(guó)卡內(nèi)基·梅隆大學(xué)計(jì)算機(jī)系主任Jeannette M.Wing教授在ACM上發(fā)表的《Computational Thinking》(計(jì)算思維,簡(jiǎn)稱CT),她提出:“CT是運(yùn)用計(jì)算機(jī)科學(xué)的基礎(chǔ)概念進(jìn)行問(wèn)題求解、系統(tǒng)設(shè)計(jì),以及人類行為理解的涵蓋計(jì)算機(jī)科學(xué)之廣度的一系列思維活動(dòng)[1]”,她認(rèn)為計(jì)算思維是除閱讀、寫(xiě)作、算數(shù)外,每個(gè)人必須掌握的技能之一。
在我國(guó),2010年《九校聯(lián)盟(C9)計(jì)算機(jī)基礎(chǔ)教學(xué)發(fā)展戰(zhàn)略聯(lián)合聲明》的核心要點(diǎn)也強(qiáng)調(diào)“需要把培養(yǎng)學(xué)生的‘計(jì)算思維能力作為計(jì)算機(jī)基礎(chǔ)教學(xué)的核心任務(wù)[2]”。從國(guó)家層面上講,大學(xué)計(jì)算機(jī)基礎(chǔ)教育這門(mén)課程的定位就是基礎(chǔ)課程,也就是與數(shù)學(xué)、物理同等地位。既然是基礎(chǔ)課程,其教學(xué)方法和教學(xué)理念就應(yīng)該像數(shù)學(xué)與物理一樣,將學(xué)科的基本理論、基本思維教授給學(xué)生。計(jì)算和計(jì)算思維是計(jì)算機(jī)基礎(chǔ)課程的基本理論和基本思維,科學(xué)家已將計(jì)算思維和理論思維、實(shí)驗(yàn)思維并列為人類三大科學(xué)思維。因此,在大學(xué)計(jì)算機(jī)基礎(chǔ)教育中強(qiáng)調(diào)和深化“計(jì)算思維”的培養(yǎng),既有助于計(jì)算機(jī)基礎(chǔ)教育學(xué)科的健康、持續(xù)發(fā)展,又有助于國(guó)家戰(zhàn)略型人才的培養(yǎng)。
程序設(shè)計(jì)課程是大學(xué)計(jì)算機(jī)基礎(chǔ)課程的重要分支,也是許多高校非計(jì)算機(jī)專業(yè)進(jìn)行計(jì)算機(jī)基礎(chǔ)教育的重要課程之一。程序設(shè)計(jì)課程的學(xué)習(xí)主要有二個(gè)內(nèi)容:第一,算法學(xué)習(xí),即學(xué)習(xí)問(wèn)題求解的方法;第二,編程實(shí)現(xiàn),即理解計(jì)算機(jī)是如何實(shí)現(xiàn)算法的,利用計(jì)算機(jī)編程實(shí)現(xiàn)算法。課程學(xué)習(xí)不只是編寫(xiě)程序,而是算法思想與問(wèn)題求解的思路??傊?,要教會(huì)學(xué)生使用計(jì)算機(jī)編程,逐步形成計(jì)算思維。
2 程序設(shè)計(jì)教學(xué)與計(jì)算思維
程序設(shè)計(jì)課程是訓(xùn)練學(xué)生思維能力的一個(gè)最直接最重要的平臺(tái),而計(jì)算思維則提供了重新審視程序設(shè)計(jì)教學(xué)的視角,將計(jì)算思維融入到程序設(shè)計(jì)教學(xué)中是改革的必然趨勢(shì)。
計(jì)算思維的本質(zhì)是抽象和自動(dòng)化,計(jì)算思維的抽象是使用符號(hào)代替實(shí)際問(wèn)題中的各種變量,每個(gè)程序包括各種標(biāo)識(shí)符、常量、變量、數(shù)組、函數(shù)和結(jié)構(gòu)體等符號(hào)語(yǔ)言,這些組合在一起就構(gòu)成了程序設(shè)計(jì)語(yǔ)言。計(jì)算思維的自動(dòng)化則體現(xiàn)在程序的機(jī)械式執(zhí)行,這也是馮·諾伊曼計(jì)算機(jī)體系的本質(zhì)特征。要實(shí)現(xiàn)自動(dòng)化,就必須要設(shè)計(jì)精確的算法和嚴(yán)格的程序語(yǔ)言體系。
計(jì)算思維的主要特征有三點(diǎn)。
⑴ 嚴(yán)謹(jǐn)規(guī)整。完備的算法是計(jì)算機(jī)程序解決問(wèn)題的基本要求,它的實(shí)現(xiàn)必然要使用嚴(yán)格的數(shù)學(xué)符號(hào)描述。計(jì)算思維要求用確定、形式化并且無(wú)二義性的語(yǔ)言描述問(wèn)題,這就要求在程序設(shè)計(jì)課程教學(xué)過(guò)程中強(qiáng)化計(jì)算思維訓(xùn)練。例如學(xué)生在編寫(xiě)程序時(shí)使用了錯(cuò)誤的符號(hào)或者語(yǔ)法,都會(huì)在編譯或運(yùn)行時(shí)提示錯(cuò)誤,教師要引導(dǎo)學(xué)生糾正自己的錯(cuò)誤,培養(yǎng)他們嚴(yán)謹(jǐn)?shù)目茖W(xué)實(shí)證精神和編程的良好習(xí)慣,這些都屬于強(qiáng)化計(jì)算思維嚴(yán)謹(jǐn)性的范疇[3]。
⑵ 目標(biāo)明確。計(jì)算思維是用來(lái)解答問(wèn)題的,它將實(shí)際生活中的問(wèn)題以抽象化和程序化的形式表示出來(lái)。通常解答問(wèn)題的過(guò)程如下:發(fā)現(xiàn)問(wèn)題—分析問(wèn)題—思考問(wèn)題—解決問(wèn)題—反思。程序設(shè)計(jì)課程要注意培養(yǎng)學(xué)生依據(jù)已有的知識(shí)體系,提出問(wèn)題、解決問(wèn)題的能力,著重強(qiáng)化利用計(jì)算思維的方式描述問(wèn)題和使用機(jī)器語(yǔ)言解決問(wèn)題的訓(xùn)練。例如,成績(jī)5級(jí)計(jì)分制就是我們?cè)谌粘I钪懈惺艿降膯?wèn)題,學(xué)生可根據(jù)自己對(duì)成績(jī)等級(jí)計(jì)分的理解寫(xiě)出數(shù)學(xué)式,然后用多分支結(jié)構(gòu)算法進(jìn)行描述,最后上機(jī)實(shí)現(xiàn)。
⑶ 機(jī)械化。用來(lái)描述問(wèn)題和解決問(wèn)題的算法有三種形式[4]。①生活算法:完成某項(xiàng)任務(wù)的計(jì)劃,例如一個(gè)學(xué)期的學(xué)習(xí)計(jì)劃。②數(shù)學(xué)算法:對(duì)一類計(jì)算問(wèn)題確定統(tǒng)一的求解方法,例如一元二次方程組的求解公式。③計(jì)算思維算法:精確描述問(wèn)題和求解問(wèn)題的自動(dòng)化形式語(yǔ)言,比如高級(jí)程序設(shè)計(jì)語(yǔ)言。計(jì)算思維算法強(qiáng)調(diào)利用計(jì)算機(jī)的速度和存儲(chǔ)優(yōu)勢(shì),通過(guò)嚴(yán)格機(jī)械化的操作時(shí)序解決實(shí)際問(wèn)題。比如“雞兔同籠”問(wèn)題可以使用兩個(gè)二元方程組進(jìn)行數(shù)學(xué)求解,但是計(jì)算機(jī)算法則可以使用窮舉法進(jìn)行簡(jiǎn)單重復(fù)的操作求解,充分利用了計(jì)算機(jī)的計(jì)算速度優(yōu)勢(shì)。在程序設(shè)計(jì)課程中強(qiáng)化計(jì)算思維訓(xùn)練,可以讓學(xué)生掌握使用機(jī)械化思維進(jìn)行信息處理的能力[5]。
3 基于計(jì)算思維的程序設(shè)計(jì)課程教學(xué)實(shí)踐
對(duì)于非計(jì)算機(jī)專業(yè)的學(xué)生來(lái)說(shuō),學(xué)習(xí)程序設(shè)計(jì)的目的是學(xué)會(huì)用計(jì)算機(jī)去分析問(wèn)題和解決問(wèn)題的思維方法,因此計(jì)算思維可以貫穿于程序設(shè)計(jì)課程的整個(gè)教學(xué)過(guò)程。
3.1 計(jì)算思維視角下的課程引入
首先,在引入程序設(shè)計(jì)類課程之前告訴學(xué)生編程能力是計(jì)算思維的具體表現(xiàn)。學(xué)生不僅要掌握計(jì)算機(jī)語(yǔ)言的相關(guān)知識(shí),而且要能夠應(yīng)用程序設(shè)計(jì)的思想與方法分析和解決問(wèn)題。例如,Visual Basic程序設(shè)計(jì)基礎(chǔ)就是Visual Basic語(yǔ)言。正像自然語(yǔ)言的產(chǎn)生是人類社會(huì)活動(dòng)發(fā)展的客觀要求和必然結(jié)果,同樣,計(jì)算機(jī)語(yǔ)言的產(chǎn)生和發(fā)展則是人類使用計(jì)算機(jī)的客觀要求和必然結(jié)果。從計(jì)算機(jī)語(yǔ)言的基本語(yǔ)法到其整體結(jié)構(gòu),都滲透著許多計(jì)算思維。因此,將“計(jì)算思維”引入“Visual Basic程序設(shè)計(jì)”教學(xué)就是:在講解相關(guān)知識(shí)點(diǎn)的同時(shí),也要講授其中所反映的計(jì)算思維,通過(guò)思維強(qiáng)化知識(shí),通過(guò)知識(shí)培養(yǎng)思維。
人們利用計(jì)算機(jī)就是為了處理信息數(shù)據(jù),而不同類型的信息數(shù)據(jù),其表達(dá)方式不盡相同,其處理方式也會(huì)有所不同,那么,計(jì)算機(jī)是如何實(shí)現(xiàn)信息數(shù)據(jù)的表示、存儲(chǔ)和處理的,這其中蘊(yùn)含的計(jì)算思維又是什么。首先,根據(jù)馮·諾依曼計(jì)算機(jī)體系結(jié)構(gòu):從軟件方面考慮,可通過(guò)聲明或定義不同類型數(shù)據(jù)以表示不同類型的信息;從硬件方面考慮,可通過(guò)存儲(chǔ)元件可實(shí)現(xiàn)信息數(shù)據(jù)的存儲(chǔ),不同類型的數(shù)據(jù)占用不同長(zhǎng)度的存儲(chǔ)單元。但僅僅完成信息數(shù)據(jù)的表示和存儲(chǔ)是遠(yuǎn)遠(yuǎn)不夠的,而要真正實(shí)現(xiàn)數(shù)據(jù)處理,由此便產(chǎn)生了計(jì)算機(jī)語(yǔ)言,即利用計(jì)算機(jī)語(yǔ)言編寫(xiě)的數(shù)據(jù)處理程序指揮CPU(中央處理器)完成相應(yīng)的數(shù)據(jù)處理。這個(gè)通過(guò)人、機(jī)共同努力完成的“問(wèn)題求解”過(guò)程,就是一個(gè)計(jì)算思維的實(shí)現(xiàn)過(guò)程。顯然,實(shí)現(xiàn)這樣一個(gè)信息處理的計(jì)算思維,是需要計(jì)算機(jī)語(yǔ)言的技術(shù)支持即:數(shù)據(jù)表示(數(shù)據(jù)類型)、數(shù)據(jù)存儲(chǔ)(變(常)量)和數(shù)據(jù)處理(表達(dá)式和控制結(jié)構(gòu)),并由此引出Visual Basic語(yǔ)言基礎(chǔ)知識(shí)的學(xué)習(xí)。
3.2 梳理內(nèi)容,加強(qiáng)基于計(jì)算思維的關(guān)聯(lián)案例庫(kù)建設(shè),創(chuàng)新教學(xué)方法
筆者在深入研究非計(jì)算機(jī)專業(yè)學(xué)生認(rèn)知規(guī)律、思維模式和專業(yè)背景后,站在計(jì)算思維的層面上按照課程知識(shí)的內(nèi)在體系結(jié)構(gòu)梳理教學(xué)內(nèi)容,突出“案例化、實(shí)用化”,強(qiáng)調(diào)基于計(jì)算思維的關(guān)聯(lián)案例庫(kù)的建設(shè)。關(guān)聯(lián)案例,一方面是指案例中的知識(shí)點(diǎn)相互關(guān)聯(lián),另一方面是指案例和生活、專業(yè)領(lǐng)域中的應(yīng)用相關(guān)聯(lián)。例如,在“Visual Basic程序設(shè)計(jì)”課程中,可以根據(jù)課程知識(shí)點(diǎn),按代表性、實(shí)用性、趣味性原則來(lái)設(shè)計(jì)關(guān)聯(lián)案例,如計(jì)算器、字幕、鬧鐘、文本編輯器、菜單、數(shù)據(jù)庫(kù)管理系統(tǒng)等,將設(shè)計(jì)全過(guò)程呈現(xiàn)在大屏幕上,讓學(xué)生親身感受并參與其中,激發(fā)了學(xué)生的求知欲。筆者在“Visual Basic程序設(shè)計(jì)”課程第一堂課中就展示經(jīng)典案例及上屆學(xué)生的優(yōu)秀作品,使學(xué)生對(duì)本課程產(chǎn)生濃厚的興趣,接著以一個(gè)簡(jiǎn)單實(shí)用的例子展示了“VB”小程序的制作,介紹了VB編程環(huán)境和VB編程四部曲,說(shuō)明VB編程上手的容易,克服學(xué)生的畏難情緒,幫助學(xué)生更快地入門(mén)。
在課堂教學(xué)中,筆者貫穿“案例引導(dǎo),精講多練,教學(xué)互動(dòng)”的教學(xué)原則,探索和自創(chuàng)出一套適合程序設(shè)計(jì)課程的關(guān)聯(lián)案例式教學(xué)方法(“關(guān)聯(lián)案例展示—案例剖析—講解相關(guān)知識(shí)點(diǎn)-知識(shí)點(diǎn)在實(shí)踐中的應(yīng)用”),即在傳統(tǒng)教學(xué)方法的基礎(chǔ)上,將關(guān)聯(lián)案例式教學(xué)法引入到課堂教學(xué)中來(lái)。例如,在Visual Basic程序設(shè)計(jì)課程教學(xué)中,可以用案例“登陸界面的制作”講解基本控件(form、label、text、command等),用案例“出租車(chē)計(jì)費(fèi)問(wèn)題”講解分支結(jié)構(gòu),用案例“計(jì)算器”講解控件數(shù)組,用案例“成績(jī)管理系統(tǒng)”講解菜單和多重窗體程序制作等。這些實(shí)例滲透了“知識(shí)來(lái)源于生活”的教學(xué)思想,能使學(xué)生意識(shí)到學(xué)習(xí)知識(shí)的目的是為了解決生活中的實(shí)際問(wèn)題。
此外,還可以嘗試從社會(huì)實(shí)際、學(xué)生實(shí)際出發(fā),采取多種直觀、具體、多樣化的教學(xué)方法,去激發(fā)、調(diào)動(dòng)學(xué)生的學(xué)習(xí)熱情和興趣。比如講授for循環(huán)語(yǔ)句時(shí),盡量采用啟發(fā)式教學(xué),老師多提問(wèn),引導(dǎo)學(xué)生積極思考答案,自己得出結(jié)論,最后再由老師補(bǔ)充完善。例如,我們可以從最簡(jiǎn)單的計(jì)算1+2+3+……+10這個(gè)問(wèn)題開(kāi)始,然后讓學(xué)生計(jì)算10!=1×2×3×……×10,再讓學(xué)生計(jì)算1!+2!+……+10!,這樣不斷地制造問(wèn)題,讓學(xué)生不斷地想辦法去解決問(wèn)題,用改變循環(huán)體的方法,化特殊為一般;用比喻的方法降低學(xué)生對(duì)累加器的理解難度,化抽象為具體,不斷地感覺(jué)到學(xué)習(xí)程序設(shè)計(jì)的用途和樂(lè)趣,積極地思考、分析、歸納,從而使計(jì)算思維得到訓(xùn)練。又如講到數(shù)組中對(duì)數(shù)據(jù)的排序問(wèn)題時(shí),可以采用啟發(fā)式、游戲法和課件演示教學(xué)法,游戲法是讓幾個(gè)同學(xué)上來(lái),站成一排,然后按身高進(jìn)行排序,課件演示教學(xué)法師則用Flash動(dòng)畫(huà)把排序過(guò)程詳細(xì)展示,幫助學(xué)生更好地理解,促使學(xué)生利用自己已有的知識(shí)結(jié)構(gòu)和邏輯思維對(duì)問(wèn)題進(jìn)行分析和歸納。通過(guò)這樣的思維訓(xùn)練,讓學(xué)生在思考中學(xué)習(xí),在學(xué)習(xí)中運(yùn)用新的方法破解難題,培養(yǎng)學(xué)生分析問(wèn)題、解決問(wèn)題的能力,鍛煉學(xué)生數(shù)學(xué)建模能力,鞏固知識(shí)的同時(shí)拓展技能和技巧。
3.3 以上機(jī)實(shí)驗(yàn)為重點(diǎn),思維多樣化的計(jì)算思維強(qiáng)化訓(xùn)練
⑴ 以上機(jī)實(shí)驗(yàn)為重點(diǎn)
筆者在講授程序設(shè)計(jì)課程的教學(xué)過(guò)程中,采用以上機(jī)實(shí)驗(yàn)為重點(diǎn)的計(jì)算思維訓(xùn)練模式,讓學(xué)生在動(dòng)手實(shí)踐中掌握知識(shí)、消化知識(shí),強(qiáng)化計(jì)算思維。實(shí)驗(yàn)內(nèi)容采用“驗(yàn)證-調(diào)試-設(shè)計(jì)”的形式進(jìn)行設(shè)計(jì);上機(jī)實(shí)驗(yàn)采用流程化管理的方式,對(duì)于任何實(shí)驗(yàn)內(nèi)容,都要求學(xué)生按照“閱讀題目-分析總結(jié)-設(shè)計(jì)算法-編寫(xiě)實(shí)現(xiàn)代碼-上機(jī)調(diào)試-優(yōu)化程序”的順序進(jìn)行,引導(dǎo)他們養(yǎng)成良好的思維能力和編程習(xí)慣;在實(shí)驗(yàn)過(guò)程中遇到困難和錯(cuò)誤,不輕易否定和批評(píng)學(xué)生,而是指導(dǎo)他們分析難點(diǎn)和錯(cuò)誤,自己解決。同時(shí),給學(xué)生提出新的解決方案或排除未知問(wèn)題的滿足感,激發(fā)他們的學(xué)習(xí)積極性,大膽創(chuàng)新。
強(qiáng)化計(jì)算思維,實(shí)驗(yàn)內(nèi)容的設(shè)計(jì)非常重要。教師要不斷學(xué)習(xí)和創(chuàng)作適合學(xué)生知識(shí)和心理特點(diǎn)的實(shí)驗(yàn)內(nèi)容。實(shí)驗(yàn)內(nèi)容不應(yīng)是課堂內(nèi)容的簡(jiǎn)單復(fù)習(xí),要給學(xué)生提供計(jì)算思維的創(chuàng)新空間。課堂內(nèi)容要符合實(shí)驗(yàn)內(nèi)容,要給學(xué)生留問(wèn)題,讓他們自己分析總結(jié),在實(shí)驗(yàn)上機(jī)時(shí)解決,提高自主思維能力。
例如,實(shí)驗(yàn)案例:公主出嫁。美麗的公主伊麗莎白長(zhǎng)大成人,鄰國(guó)的六個(gè)王子來(lái)提親,公主有三位侍女,她們猜測(cè)哪位王子會(huì)得到公主的芳心。 侍女一說(shuō):“我認(rèn)為公主會(huì)嫁給科爾王子,或者是威廉王子。”侍女二說(shuō):“我想公主一定不會(huì)選擇亞瑟王子,因?yàn)樗纳聿膶?shí)在太矮了?!笔膛f(shuō):“不管怎么說(shuō),公主肯定不會(huì)嫁給菲利普、查理、路易斯三位王子,因?yàn)樗麄兊膰?guó)家正準(zhǔn)備和我們打仗?!?事實(shí)上,三個(gè)侍女中只有一人猜對(duì)了。試編寫(xiě)程序,找出哪位王子能與公主喜結(jié)良緣。為了找出伊麗莎白的白馬王子,從計(jì)算思維的角度進(jìn)行邏輯推理。首先引入邏輯運(yùn)算符和邏輯表達(dá)式,規(guī)定一些符號(hào)變換規(guī)則,將三個(gè)侍女的話分別轉(zhuǎn)換成邏輯表達(dá)式,給出綜合判斷條件,再借助這些符號(hào)和規(guī)則將邏輯推理過(guò)程在形式上變得像代數(shù)演算一樣。比如定義6個(gè)整型變量——A、B、C、D、E、F分別代表6位男嘉賓,變量取值為0表示不是伊麗莎白的白馬王子,為1表示是白馬王子。每位男嘉賓都有兩種可能:“是(1)”或者“不是(0)”,6位男嘉賓按A、B、C、D、E、F順序,有64種取值:000000,000001,…,111111。對(duì)案例分析的目的是讓學(xué)生懂得:
① 掌握解題的重要一步是將人的想法寫(xiě)成計(jì)算機(jī)能夠處理的表達(dá)式或操作步驟,要用到關(guān)系運(yùn)算、邏輯運(yùn)算和算術(shù)運(yùn)算;
② 用計(jì)算機(jī)解題經(jīng)常需要從多種可能性中尋找其中的一種或幾種,因此,要用“枚舉法”,當(dāng)遇到大量重復(fù)計(jì)算時(shí),自然就引出了循環(huán)結(jié)構(gòu);
③ 分支是計(jì)算思維的重要方式。 筆者借助這個(gè)案例題把程序設(shè)計(jì)的基本概念和方法傳授給學(xué)生,當(dāng)學(xué)生建立起這種認(rèn)識(shí)之后,在潛移默化中也就培養(yǎng)了邏輯思維和計(jì)算思維。
學(xué)生通過(guò)上機(jī)實(shí)踐可以體會(huì)到計(jì)算思維的精髓[6]。上機(jī)實(shí)踐要有目的地訓(xùn)練五種能力:
① 分析題目,找到問(wèn)題,并將其抽象為數(shù)學(xué)模型;
② 構(gòu)思算法;
③ 編寫(xiě)程序;
④ 調(diào)試程序;
⑤ 分析運(yùn)行結(jié)果,一旦出錯(cuò),應(yīng)該仔細(xì)認(rèn)真找出原因,提出改正的意見(jiàn)。
大多數(shù)學(xué)生對(duì)許多問(wèn)題的看法是在實(shí)驗(yàn)課的討論中逐漸清晰和升華,對(duì)思想啟發(fā)、計(jì)算思維的培養(yǎng)起到推動(dòng)作用。依據(jù)非計(jì)算機(jī)專業(yè)學(xué)生認(rèn)知的規(guī)律,我們?cè)O(shè)計(jì)了生活化、趣味化的實(shí)驗(yàn)內(nèi)容,如俄羅斯方塊游戲、計(jì)算器、打字游戲等。
⑵ 以思維多樣化為核心點(diǎn)
由于學(xué)生認(rèn)知方式和心理特征存在個(gè)體差異,在程序設(shè)計(jì)課程的教學(xué)過(guò)程中必然會(huì)出現(xiàn)思維多樣化的現(xiàn)象。教師要尊重這種認(rèn)知方式的差異,倡導(dǎo)多樣化的算法思維,即“一題多解”,鼓勵(lì)學(xué)生根據(jù)自己的興趣,從不同角度發(fā)現(xiàn)問(wèn)題和分析問(wèn)題,用不同的算法解決問(wèn)題,用不同的程序?qū)崿F(xiàn)算法,培養(yǎng)學(xué)生的探索精神和創(chuàng)新意識(shí)。強(qiáng)調(diào)多樣化的算法思維,可以有效地強(qiáng)化計(jì)算思維,讓學(xué)生明白“條條大路通羅馬”的道理。
好的算法不一定適用于每個(gè)問(wèn)題和每個(gè)學(xué)生,并且?guī)缀跛械乃惴ǘ加芯窒扌?。在設(shè)計(jì)上機(jī)實(shí)驗(yàn)內(nèi)容時(shí),教師要考慮給出一些可供學(xué)生重構(gòu)的程序片段,培養(yǎng)他們的思維創(chuàng)新能力。所謂重構(gòu),就是在已有的程序基礎(chǔ)上衍生出的新的解決問(wèn)題算法實(shí)現(xiàn)。這種通過(guò)分析已有程序的優(yōu)缺點(diǎn),修改并把自己的思維融入新程序的過(guò)程,就是最好的鍛煉計(jì)算思維的訓(xùn)練手段。
教師還應(yīng)引導(dǎo)學(xué)生進(jìn)行反思和創(chuàng)新聯(lián)系,達(dá)到簡(jiǎn)化和優(yōu)化算法的目的。這個(gè)簡(jiǎn)化和優(yōu)化算法的過(guò)程可以很好地強(qiáng)化計(jì)算思維訓(xùn)練,幫助學(xué)生舉一反三地學(xué)好程序設(shè)計(jì)課程。比如“百雞百錢(qián)”問(wèn)題,大多數(shù)學(xué)生都采用三重循環(huán)的算法實(shí)現(xiàn)。我們就可以提出改進(jìn)方案,鼓勵(lì)學(xué)生積極思考如何采用二重循環(huán)的方式實(shí)現(xiàn),然后再比較兩種算法的性能,三重循環(huán)的次數(shù)達(dá)到了100萬(wàn)次,而二次循環(huán)是1萬(wàn)次,性能提升了99%。一個(gè)簡(jiǎn)單的循環(huán)就可以讓學(xué)生認(rèn)識(shí)算法優(yōu)化的魅力,這就可以讓他們繼續(xù)思考如何簡(jiǎn)化問(wèn)題,公雞數(shù)量不可超過(guò)32,就可以在循環(huán)中把公雞數(shù)量由100降到32,同理,母雞也降到98,這樣循環(huán)又降低了10000-32×98=6864次,比之前的二重循環(huán)又減少了70%左右,這一系列的簡(jiǎn)優(yōu)化處理,對(duì)于增強(qiáng)計(jì)算思維能力有極大的促進(jìn)作用。
4 結(jié)束語(yǔ)
本文通過(guò)分析程序設(shè)計(jì)課程教學(xué)現(xiàn)狀和計(jì)算思維的特征,提出了基于計(jì)算思維的程序設(shè)計(jì)課程教學(xué)改革方向。并進(jìn)行了基于計(jì)算思維的程序設(shè)計(jì)課程教學(xué)研究與實(shí)踐:如計(jì)算思維視角下的課程引入;重新梳理和組織教學(xué)內(nèi)容,加強(qiáng)基于計(jì)算思維的關(guān)聯(lián)案例庫(kù)建設(shè),創(chuàng)新教學(xué)方法;以上機(jī)實(shí)驗(yàn)為重點(diǎn)、思維多樣化為核心點(diǎn)的計(jì)算思維強(qiáng)化訓(xùn)練等。將計(jì)算思維貫穿于程序設(shè)計(jì)課程的整個(gè)教學(xué)過(guò)程。實(shí)踐證明,這種教學(xué)模式對(duì)學(xué)生計(jì)算思維和創(chuàng)新能力的培養(yǎng)大有裨益。
將計(jì)算思維引入程序設(shè)計(jì)課程教學(xué)的整個(gè)過(guò)程是必要的也是可行的,教師從計(jì)算思維的角度重新審視和組織程序設(shè)計(jì)基礎(chǔ)的課堂和實(shí)踐教學(xué),提煉課程中含有的計(jì)算思維的基本概念、方法和思想,通過(guò)精心的課程教學(xué)設(shè)計(jì)和實(shí)驗(yàn)指導(dǎo),可以讓學(xué)生樹(shù)立用計(jì)算機(jī)求解問(wèn)題的意識(shí),認(rèn)識(shí)到計(jì)算機(jī)對(duì)于人的優(yōu)勢(shì)和局限性,最終自覺(jué)地運(yùn)用計(jì)算思維來(lái)看問(wèn)題、思考問(wèn)題和解決問(wèn)題,從而實(shí)現(xiàn)教學(xué)由傳授知識(shí)到培養(yǎng)能力的轉(zhuǎn)變。我們不僅要在程序設(shè)計(jì)課程中強(qiáng)化計(jì)算思維,還應(yīng)努力把它推廣到更多的計(jì)算機(jī)課程中去,真正地把強(qiáng)化計(jì)算思維做到實(shí)處。
參考文獻(xiàn)(References):
[1] Jeannette M W. Computational Thinking[J]. Communica-
tions of ACM,2006.49(3):33-35
[2] 陳國(guó)良,董榮勝.計(jì)算思維與大學(xué)計(jì)算機(jī)基礎(chǔ)教育[J].中國(guó)大
學(xué)教學(xué),2011.1:9
[3] 董榮勝,古天龍.計(jì)算思維與計(jì)算機(jī)方法論[J].計(jì)算機(jī)科學(xué),
2009.1:1-4
[4] 陳杰華,戴麗娟.以培養(yǎng)計(jì)算思維為核心的程序設(shè)計(jì)實(shí)驗(yàn)教
學(xué)[J].實(shí)驗(yàn)技術(shù)與管理,2011.1:125-127
[5] 臧勁松.培養(yǎng)學(xué)生計(jì)算思維的程序設(shè)計(jì)課程教學(xué)[J].計(jì)算機(jī)
教育,2012.2:78-80
[6] 于寧,崔武子,蔡春,戴紅.突出計(jì)算思維訓(xùn)練的VB程序設(shè)計(jì)
實(shí)驗(yàn)教學(xué)[J].實(shí)驗(yàn)技術(shù)與管理,2016.9:182-185