劉力凱
摘要:在信息技術(shù)飛速發(fā)展的新形勢(shì)下,程序設(shè)計(jì)教學(xué)中培養(yǎng)學(xué)生的計(jì)算思維能力具有重要的意義與作用,該文提出了程序設(shè)計(jì)教學(xué)中培養(yǎng)計(jì)算思維能力的意義與作用,提出在教學(xué)過(guò)程中應(yīng)重視養(yǎng)成學(xué)生計(jì)算思維的意識(shí),并通過(guò)案例教學(xué)、研究性教學(xué)等路徑,給出了培養(yǎng)學(xué)生掌握計(jì)算思維、提升計(jì)算思維能力的一些方法。
關(guān)鍵詞:程序設(shè)計(jì);計(jì)算思維;案例教學(xué);研究性教學(xué)
中圖分類號(hào):G642 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2019)29-0088-02
目前,計(jì)算機(jī)的應(yīng)用已深入到人類學(xué)習(xí)、工作和生活的方方面面,學(xué)生無(wú)論學(xué)習(xí)的是哪個(gè)學(xué)科,將來(lái)從事的是哪個(gè)行業(yè),都能接觸到計(jì)算機(jī)的應(yīng)用。然而隨著信息技術(shù)、人工智能的飛速發(fā)展,信息社會(huì)對(duì)人才的要求已不再是僅僅掌握計(jì)算機(jī)的基礎(chǔ)知識(shí)和基本操作,使用計(jì)算機(jī)的簡(jiǎn)單功能,做些日常性的事務(wù)來(lái)提高工作效率,更需要他們具備計(jì)算思維能力,在工作中,能結(jié)合所學(xué)的專業(yè)知識(shí)有所創(chuàng)新,有效的使用計(jì)算機(jī)完成某些應(yīng)用開(kāi)發(fā),解決一些實(shí)際遇到的復(fù)雜問(wèn)題。如何把一些實(shí)際問(wèn)題轉(zhuǎn)化為計(jì)算機(jī)所能解決的問(wèn)題,這種轉(zhuǎn)換能力就是計(jì)算思維能力,在高等教育中,培養(yǎng)學(xué)生的計(jì)算思維能力是目前大家較為關(guān)注的問(wèn)題之一。程序設(shè)計(jì)語(yǔ)言教學(xué)是高等教育階段的一個(gè)必要的組成部分,它對(duì)培養(yǎng)學(xué)生的信息素養(yǎng)和計(jì)算思維具有重要的地位和作用。為適應(yīng)當(dāng)前教學(xué)改革的發(fā)展,使計(jì)算思維的培養(yǎng)真正落到實(shí)處,以滿足高等學(xué)校計(jì)算機(jī)基礎(chǔ)教育對(duì)創(chuàng)新型人才培養(yǎng)的要求,本文就程序設(shè)計(jì)語(yǔ)言教學(xué)中如何培養(yǎng)學(xué)生的計(jì)算思維能力,提出了一些實(shí)施的路徑和方法。
1程序設(shè)計(jì)課程中,培養(yǎng)計(jì)算思維能力的意義與作用
人類的科學(xué)思維總體上有如下三種:以觀察和歸納自然泡括人類社會(huì)活動(dòng))規(guī)律為特征的實(shí)證思維;以推理和演繹為特征的邏輯思維;以抽象化和自動(dòng)化為特征的計(jì)算思維。美國(guó)卡內(nèi)基梅隆大學(xué)的周以真教授認(rèn)為,計(jì)算思維是運(yùn)用計(jì)算機(jī)科學(xué)的基礎(chǔ)概念進(jìn)行問(wèn)題求解、系統(tǒng)設(shè)計(jì)以及人類行為理解等涵蓋計(jì)算機(jī)科學(xué)之廣大的一系列思維活動(dòng)。
從以上對(duì)計(jì)算思維的論述中可以看出,對(duì)計(jì)算思維的培養(yǎng)過(guò)程,就是學(xué)習(xí)如何嚴(yán)謹(jǐn)科學(xué)的分析問(wèn)題、尋找解決思路、設(shè)計(jì)解決方案的過(guò)程,這和程序設(shè)計(jì)課程的培養(yǎng)目標(biāo)是一致的,程序設(shè)計(jì)是一門應(yīng)用性很強(qiáng)的課程,強(qiáng)調(diào)學(xué)生對(duì)知識(shí)的實(shí)際運(yùn)用能力,程序設(shè)計(jì)課程的教學(xué)目標(biāo)不僅要使學(xué)生掌握某門程序設(shè)計(jì)語(yǔ)言的基本語(yǔ)法知識(shí),其核心任務(wù)還在于培養(yǎng)學(xué)生具備靈活應(yīng)用這些知識(shí)的能力,掌握用計(jì)算思維的方法去解決今后工作和學(xué)習(xí)中遇到的各類非通用計(jì)算問(wèn)題,如果一個(gè)計(jì)算機(jī)程序具備了解決某個(gè)問(wèn)題的功能,實(shí)際上所體現(xiàn)的是程序設(shè)計(jì)者對(duì)于該問(wèn)題的分析和解決思路,顯然,學(xué)習(xí)程序設(shè)計(jì)能促進(jìn)和加強(qiáng)學(xué)生計(jì)算思維的培養(yǎng)和訓(xùn)練,使計(jì)算思維的培養(yǎng)落到實(shí)處,能有效地培養(yǎng)學(xué)生掌握創(chuàng)新思維方法,具備學(xué)以致用的能力,既滿足信息社會(huì)對(duì)大學(xué)生的基本要求,同時(shí)對(duì)培養(yǎng)復(fù)合創(chuàng)新型人才也有著十分重要的意義。
其次,計(jì)算思維的培養(yǎng)與形成,不僅對(duì)人的一生,無(wú)論是工作還是生活,也會(huì)帶來(lái)極大的好處。蘋果公司創(chuàng)始人Steve Jobs曾經(jīng)說(shuō)過(guò):“在工作中是否要編程,未必那么重要,但你可以把它當(dāng)成一面鏡子,一面你思考的鏡子。我認(rèn)為學(xué)習(xí)如何思考是最有價(jià)值的。這個(gè)國(guó)家的每個(gè)人都應(yīng)該學(xué)習(xí)如何編寫程序,因?yàn)樗虝?huì)你如何上思考。正如人們學(xué)習(xí)法律未必要當(dāng)上律師,但學(xué)習(xí)法律可以告訴你如何從法律的角度思考問(wèn)題。同樣地,編程是一種稍微不同的思考方法。因此,我認(rèn)為計(jì)算機(jī)科學(xué)是一門基礎(chǔ)學(xué)科。每個(gè)人應(yīng)該在一生中花費(fèi)一年的時(shí)間學(xué)習(xí)如何編程?!边@說(shuō)明程序設(shè)計(jì)課程實(shí)際上也是一種培養(yǎng)學(xué)生在遇到任何復(fù)雜問(wèn)題時(shí)如何思考的課程,計(jì)算思維將是每個(gè)人都會(huì)使用到的一種基本技能。
2程序設(shè)計(jì)課程中,培養(yǎng)計(jì)算思維能力的路徑與方法
2.1強(qiáng)化程序設(shè)計(jì)中分析、建模和抽象能力的培養(yǎng),養(yǎng)成計(jì)算思維的意識(shí)
計(jì)算機(jī)程序是指令的有序集合,程序設(shè)計(jì)課程的教學(xué)重點(diǎn)主要包含兩個(gè)主要方面:一是各種指令的功能和使用方法,即編程語(yǔ)言的語(yǔ)法知識(shí),包含了程序中用到的常量、變量、表達(dá)式、各種語(yǔ)句、控制結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)的表示及機(jī)器對(duì)它們的處理過(guò)程等知識(shí)點(diǎn);二是計(jì)算思維的培養(yǎng),即如何針對(duì)實(shí)際問(wèn)題進(jìn)行分析、建模,并從中抽象出指令代碼,然后將它們有序的組織起來(lái)以完成特定的功能。第一方面是程序設(shè)計(jì)的基石,第二方面是程序設(shè)計(jì)的靈魂,熟練掌握一門編程語(yǔ)言的語(yǔ)法及編程技巧固然重要,但對(duì)于問(wèn)題分析、解決思路和完成代碼的抽象能力才是程序設(shè)計(jì)真正重要的、有價(jià)值的環(huán)節(jié)。
傳統(tǒng)的教學(xué)模式中,由于語(yǔ)法知識(shí)內(nèi)容量大,且這部分內(nèi)容是課程的基礎(chǔ),是程序設(shè)計(jì)的基石,因而占用的課時(shí)較多,教師往往是按教材順序逐個(gè)講解編程語(yǔ)言的語(yǔ)法知識(shí)點(diǎn),注意力較多地放在對(duì)于知識(shí)點(diǎn)的傳授上,而訓(xùn)練學(xué)生計(jì)算思維的教學(xué)環(huán)節(jié)相應(yīng)的少一些。雖然教師在講授知識(shí)點(diǎn)的應(yīng)用時(shí)也會(huì)強(qiáng)調(diào)計(jì)算思維的在編寫程序中的作用,但由于學(xué)生參與較少,因而易造成學(xué)生不能意識(shí)到它的重要性,忽視對(duì)它的訓(xùn)練。而單靠死記硬背概念和一些設(shè)計(jì)規(guī)則,是不可能真正掌握和領(lǐng)會(huì)計(jì)算機(jī)求解問(wèn)題所用的思維方法的。由于沒(méi)有養(yǎng)成計(jì)算思維的意識(shí),在面對(duì)實(shí)際問(wèn)題時(shí),學(xué)生難以抓住要點(diǎn),總是直接編寫程序,忽視前期的分析、建模、代碼抽象的過(guò)程,造成思維混亂,難以得到預(yù)定的結(jié)果。因此,如何讓使學(xué)生學(xué)以致用,重視和把握程序編寫的分析角度、思維要點(diǎn)和代碼抽象的過(guò)程,提高學(xué)習(xí)效果和綜合應(yīng)用能力,以滿足實(shí)際應(yīng)用要求,是程序設(shè)計(jì)教學(xué)要解決的首要問(wèn)題。
經(jīng)過(guò)課程實(shí)踐,我們認(rèn)為:一是應(yīng)根據(jù)教學(xué)內(nèi)容與目標(biāo),打破傳統(tǒng)教材知識(shí)體系結(jié)構(gòu),充分體現(xiàn)學(xué)生的主體和中心地位,從適合教師講授的角度轉(zhuǎn)向適合學(xué)生學(xué)習(xí)的方式,在傳授知識(shí)的同時(shí)注重能力的培養(yǎng),真正做到既要授之以魚(yú),更要授之以漁,因此在講授編程語(yǔ)言的語(yǔ)法知識(shí)之前,首先要使學(xué)生了解計(jì)算思維在程序設(shè)計(jì)中的重要地位,通過(guò)一些案例強(qiáng)化程序設(shè)計(jì)教學(xué)中分析、建模,代碼抽象過(guò)程的重要性,以突出計(jì)算思維能力的培養(yǎng)環(huán)節(jié),讓學(xué)生明白程序代碼只是程序設(shè)計(jì)者對(duì)于某個(gè)問(wèn)題解決方案的計(jì)算機(jī)實(shí)現(xiàn),而問(wèn)題分析、解決思路并從中抽象出正確的數(shù)據(jù)結(jié)構(gòu)、程序結(jié)構(gòu)和各種表達(dá)式才是程序設(shè)計(jì)最重要、最有價(jià)值的部分,它必須在編寫代碼之前確定。二是要在后續(xù)的教學(xué)中,將計(jì)算思維巧妙融人教學(xué)的各個(gè)環(huán)節(jié),增加計(jì)算思維在課程教學(xué)中的比重,精心組織教學(xué)過(guò)程讓學(xué)生積極參與其中,不斷體會(huì)計(jì)算思維的作用和魅力,有針對(duì)性的展開(kāi)教學(xué),反復(fù)強(qiáng)化訓(xùn)練,以養(yǎng)成學(xué)生在解決實(shí)際問(wèn)題時(shí)自覺(jué)使用計(jì)算思維的意識(shí)。
2.2實(shí)施案例教學(xué),培養(yǎng)學(xué)生掌握計(jì)算思維的方法
教學(xué)是一門藝術(shù),采用有效的、適合學(xué)生學(xué)習(xí)的途徑和方法才能起到良好的教學(xué)效果。雖然學(xué)生知道了計(jì)算思維的重要性,但如何學(xué)會(huì)用計(jì)算思維的方法去解決問(wèn)題才是程序設(shè)計(jì)課程教學(xué)的終極目標(biāo)。程序設(shè)計(jì)的步驟包含分析問(wèn)題,算法設(shè)計(jì)(數(shù)學(xué)建模)并抽象出具體的實(shí)現(xiàn)語(yǔ)句,明確編程步驟,編寫程序,進(jìn)行程序調(diào)試等一系列步驟,學(xué)生如何把握實(shí)際問(wèn)題的分析角度、算法設(shè)計(jì)要點(diǎn)和代碼抽象的過(guò)程是教學(xué)的難點(diǎn)。教學(xué)中我們發(fā)現(xiàn),傳統(tǒng)的“灌輸式”、學(xué)生被動(dòng)接受知識(shí)的教學(xué)模式,體現(xiàn)了教師的主體和中心地位,導(dǎo)致部分學(xué)生沒(méi)有真正動(dòng)腦子去學(xué),無(wú)法普遍激發(fā)學(xué)生的聽(tīng)課興趣,聽(tīng)課的專注力不斷下降,對(duì)講授的內(nèi)容常常是零零星星一知半解,這對(duì)今后的學(xué)習(xí)很難形成知識(shí)的積淀。
為了調(diào)動(dòng)學(xué)生學(xué)習(xí)的主動(dòng)性,激發(fā)學(xué)生學(xué)習(xí)興趣與參與度,我們采用了案例教學(xué),通過(guò)選取不同的案例,將教學(xué)的目標(biāo)、難點(diǎn)、要點(diǎn)融入其中,讓學(xué)生了解要學(xué)什么,如何去學(xué),各知識(shí)點(diǎn)用在何處,啟發(fā)學(xué)生在思考思辨中養(yǎng)成自我構(gòu)建知識(shí)的能力和素質(zhì)。例如,下面的案例是要求設(shè)計(jì)一個(gè)警察抓小偷的程序:
已知警察抓了A、B、C、D四個(gè)偷竊嫌犯,其中只有一個(gè)人是真正的小偷,審訊記錄如下:A說(shuō)“我不是小偷”;B說(shuō)“C是小偷”;C說(shuō)“小偷肯定是D”;D說(shuō)“C在冤枉人”,已知四個(gè)人中有三個(gè)人說(shuō)的是真話,一個(gè)人說(shuō)的是假話。請(qǐng)問(wèn)到底誰(shuí)是小偷。
在這個(gè)案例中四位嫌疑人的表述是“不確定”的已知條件,“四個(gè)人中有三人說(shuō)的是真話,一人說(shuō)的是假話?!笔俏ㄒ淮_定的已知條件,解決這個(gè)問(wèn)題的方法可采用窮舉法即依次假設(shè)、逐個(gè)驗(yàn)證。依次假設(shè)嫌疑人是A、B、C、D中的某一人,能滿足上述唯一確定已知條件的假設(shè)即為問(wèn)題的解。具體的Python程序代碼如下:
但案例教學(xué),不是舉例,要通過(guò)精心組織教學(xué)環(huán)節(jié),創(chuàng)設(shè)問(wèn)題情境,引導(dǎo)學(xué)生積極參與,才能了解、體會(huì)如何把握解決問(wèn)題的思維角度與過(guò)程。針對(duì)該案例,應(yīng)創(chuàng)設(shè)如下的問(wèn)題供學(xué)生思考,該案例的特征是什么?解決這個(gè)案例的方法有哪些?如何具體實(shí)施并抽象出合適的代碼去實(shí)現(xiàn)?并進(jìn)一步提出它需要解決幾個(gè)問(wèn)題:(1)如何表示A、B、c、D四個(gè)嫌犯;(2)如何表示“假設(shè)A是小偷”;(3)如何表示審問(wèn)記錄中四個(gè)嫌疑人說(shuō)的話;(4)如何表示“三句是真話,一句是假話”;(5)如何實(shí)現(xiàn)“依次假設(shè)”,這些問(wèn)題涉及了數(shù)據(jù)、表達(dá)式和程序結(jié)構(gòu)等多方面知識(shí),解決了這些問(wèn)題才能從中抽象出正確的代碼,為后續(xù)的編寫程序打下堅(jiān)實(shí)的基礎(chǔ)。
另外,案例教學(xué)要讓學(xué)生見(jiàn)多識(shí)廣,從一系列類似的或不同的案例中,反復(fù)比較、體會(huì),才能學(xué)會(huì)怎樣根據(jù)不同問(wèn)題的特征,選取不同的算法設(shè)計(jì),并學(xué)會(huì)如何從中抽象出特定的數(shù)據(jù)結(jié)構(gòu)、程序結(jié)構(gòu)等,最后編寫出正確的程序。需要注意的是為了彌補(bǔ)課時(shí)的不足,可采用多種教學(xué)形式,如課外練習(xí)、實(shí)驗(yàn)課等,拓寬視野,逐步掌握每個(gè)問(wèn)題思維的角度、方法,養(yǎng)成自我構(gòu)建知識(shí)的能力和素質(zhì),幫助學(xué)生有效掌握計(jì)算思維的方法。案例教學(xué)與傳統(tǒng)的教學(xué)模式相比,它更能活躍課堂互動(dòng)氛圍,學(xué)生主動(dòng)發(fā)現(xiàn)問(wèn)題、提出問(wèn)題的意識(shí)也大大增強(qiáng),充分提高了教學(xué)與學(xué)習(xí)的效率。
2.3引入研究性學(xué)習(xí)方法,提升學(xué)生的計(jì)算思維能力
教學(xué)包括教與學(xué)兩個(gè)方面,講得好不代表學(xué)得好,從聽(tīng)明白到記住,再到最后的會(huì)用,需要教師精心設(shè)計(jì)教學(xué)環(huán)節(jié),尋找符合學(xué)生認(rèn)知特點(diǎn)和學(xué)習(xí)規(guī)律的教學(xué)方法才能實(shí)現(xiàn)。案例教學(xué),教師重在引導(dǎo),啟發(fā)思想,而不是直接講解答案,要充分體現(xiàn)學(xué)生是學(xué)習(xí)的主體,教師只是一個(gè)引導(dǎo)者,是教學(xué)內(nèi)容的組織者,課堂上如果教師過(guò)分發(fā)揮自己能講會(huì)講的優(yōu)勢(shì),容易導(dǎo)致重“教”不重“學(xué)”,學(xué)生看似聽(tīng)明白了,但印象不深刻,即使學(xué)生對(duì)講過(guò)的知識(shí)點(diǎn)記住了,問(wèn)題情境一旦發(fā)生改變依然會(huì)無(wú)所適從,這說(shuō)明學(xué)生知識(shí)的掌握大都不是教師講會(huì)的,而是靠學(xué)生自己學(xué)會(huì)、練會(huì)的。
計(jì)算思維的本質(zhì)是抽象和自動(dòng)化,程序是由一系列抽象的指令字符組成,對(duì)于長(zhǎng)期適應(yīng)于漢字表達(dá)的學(xué)生來(lái)說(shuō),無(wú)論是理解、記憶還是應(yīng)用,都會(huì)有一定的難度。根據(jù)課程的這一特點(diǎn),我們應(yīng)采用研究性學(xué)習(xí)的方法,留出足夠的時(shí)間讓學(xué)生自主研究、學(xué)習(xí),由不同的知識(shí)點(diǎn),或引導(dǎo)學(xué)生自學(xué)自悟,或進(jìn)行質(zhì)疑討論,或讓學(xué)生進(jìn)行實(shí)驗(yàn)訓(xùn)練,使學(xué)生通過(guò)各種形式運(yùn)用所學(xué)知識(shí)去獨(dú)立分析解決問(wèn)題,提高計(jì)算思維的能力。例如在抓小偷的案例中,具體的分析、算法設(shè)計(jì)及每個(gè)問(wèn)題的解答,要讓學(xué)生自己去根據(jù)教師的引導(dǎo)尋找答案,改變以講為主的教學(xué)方式,通過(guò)對(duì)一系列“是什么”“為什么”和“如何表示”等問(wèn)題的研究與實(shí)現(xiàn),才能引發(fā)學(xué)生深入思考,真正了解各算法適應(yīng)于什么特征的問(wèn)題、數(shù)據(jù)結(jié)構(gòu)、程序結(jié)構(gòu)、表達(dá)式的抽象會(huì)用到哪些知識(shí)、主動(dòng)去關(guān)注并記住這些知識(shí)細(xì)節(jié)、體會(huì)它們?cè)诔绦蛟O(shè)計(jì)中的用途并了解自己的薄弱環(huán)節(jié),只有通過(guò)學(xué)生自己對(duì)案例的獨(dú)立研究、具體實(shí)現(xiàn),自己構(gòu)建知識(shí)體系,才能在面對(duì)實(shí)際問(wèn)題時(shí)靈活使用它們,這樣既有效地傳遞了知識(shí),又極大提升了學(xué)生計(jì)算思維的能力。
3結(jié)束語(yǔ)
通過(guò)程序設(shè)計(jì)這門課程的教學(xué),培養(yǎng)學(xué)生的計(jì)算思維能力、較好地完成教學(xué)目標(biāo)并非易事,對(duì)教師的教學(xué)設(shè)計(jì)和實(shí)施都提出了很高的要求,還需要在今后的教學(xué)實(shí)踐中,不斷探索更適合的方案,為學(xué)生計(jì)算思維能力的培養(yǎng)加薪添柴。