周 頔, 盛歆漪, 王 駿
(江南大學(xué) 數(shù)字媒體學(xué)院,江蘇 無錫 214122)
隨著社會(huì)知識(shí)結(jié)構(gòu)與內(nèi)容的更新速度越來越快,保持自身良好社會(huì)綜合競(jìng)爭(zhēng)力的唯一方法就是不斷順應(yīng)需求、更新自己的知識(shí)儲(chǔ)備。這一點(diǎn),對(duì)從事電子信息科技類工作的人員來說顯得尤為重要。因?yàn)檎缒柖伤f,信息科技領(lǐng)域的知識(shí)每隔一段時(shí)間基本就會(huì)進(jìn)行一次徹底的更新。順應(yīng)這種市場(chǎng)的要求,現(xiàn)代本科教育中越來越強(qiáng)調(diào)自我學(xué)習(xí)能力的培養(yǎng)。在現(xiàn)在的大學(xué)教育過程中,與其說目的是教會(huì)學(xué)生某些具體的專業(yè)技能,不如說更核心的目的是幫助學(xué)生建立起正確的本專業(yè)思維方式,并培養(yǎng)出學(xué)生把握本專業(yè)信息、不斷更新自身知識(shí)的能力。在這種大環(huán)境下,非指導(dǎo)性教學(xué)方式在教學(xué)過程中就顯示出越來越重要的用處。
非指導(dǎo)性教學(xué),是由人本主義代表人物羅杰斯所提出的“以教師和學(xué)生構(gòu)成平等對(duì)話關(guān)系”為核心的一種重要教學(xué)方法。在這種教學(xué)方法中,教師被要求采取友好、真誠(chéng)、開放的態(tài)度來對(duì)待學(xué)生。而學(xué)生則具有充分的思考自主權(quán)和行動(dòng)選擇權(quán),在教師的幫助下建立起良好的自制力,明確自己的興趣點(diǎn),最終培養(yǎng)出自我探索的能力[1-2]。這種方式在以強(qiáng)調(diào)實(shí)際動(dòng)手能力著稱的大學(xué)計(jì)算機(jī)及其相關(guān)專業(yè)的教學(xué)中顯得尤為重要。
對(duì)于大學(xué)計(jì)算機(jī)及其相關(guān)專業(yè)來說,包括C、C++、Java、JavaScript、C#等在內(nèi)的程序設(shè)計(jì)類課程等始終是教學(xué)中的一塊重要內(nèi)容,這些課程為大學(xué)計(jì)算機(jī)專業(yè)及相關(guān)專業(yè)的課程的展開打下了扎實(shí)的知識(shí)基礎(chǔ)。從課程內(nèi)容上講,這類課程涉及復(fù)雜的語(yǔ)法知識(shí),加之知識(shí)點(diǎn)瑣碎,概念抽象,所以從某個(gè)方面上講,這類課程具有文科類語(yǔ)言課程的特點(diǎn)(如需要花費(fèi)較多的精力來講授語(yǔ)法規(guī)則)。另一方面,這類課程注重學(xué)生的邏輯思維能力和動(dòng)手編程能力,在教學(xué)過程中要求學(xué)生樂于動(dòng)腦,勤于動(dòng)手,具有典型的工科類課程的特點(diǎn)。目前從國(guó)內(nèi)外同類課程的教學(xué)現(xiàn)狀來看,現(xiàn)有的大多數(shù)教學(xué)方法多強(qiáng)調(diào)教師在課堂上對(duì)知識(shí)點(diǎn)的講授,沒有重視發(fā)揮學(xué)生的主觀能動(dòng)性,更沒有強(qiáng)調(diào)學(xué)生的自我學(xué)習(xí)過程。因此給教師的教學(xué)實(shí)踐提出了難題。
為了能夠在高校的程序設(shè)計(jì)課程中更好地推廣非指導(dǎo)性教學(xué)方法,筆者在實(shí)際教學(xué)工作中進(jìn)行了嘗試。我們認(rèn)為,為了在這類課程中更好的使用非指導(dǎo)性教學(xué)方法以取得更好的教學(xué)效果,需要特別注意兩個(gè)方面。一是要求授課教師對(duì)程序設(shè)計(jì)教學(xué)的內(nèi)容和重要性有著更加透徹的理解,二是很好的掌握非指導(dǎo)性教學(xué)方法在程序設(shè)計(jì)課程中的應(yīng)用方式[3-4]。
程序設(shè)計(jì)的最終目的是要讓計(jì)算機(jī)來解決實(shí)際問題,而解決問題的關(guān)鍵則取決于兩個(gè)方面:采用何種方法步驟來解決問題,以及采用何種媒介(語(yǔ)言)讓計(jì)算機(jī)知曉用戶的意圖并按設(shè)定的方法最終解決問題。前者指算法,后者指的就是各種編程語(yǔ)言。簡(jiǎn)單來說,程序設(shè)計(jì)語(yǔ)言就是人與計(jì)算機(jī)之間溝通的工具,而且這種工具的使用必須符合一定的規(guī)則,也就是各種程序設(shè)計(jì)語(yǔ)言中的語(yǔ)法結(jié)構(gòu)和語(yǔ)法規(guī)則等。因此,對(duì)于程序設(shè)計(jì)的教學(xué),可以理解為是一個(gè)將“人類思維”方式轉(zhuǎn)變成清晰的、直接的、簡(jiǎn)潔的“機(jī)器思維”方式的過程。
目前國(guó)內(nèi)許多高校在程序設(shè)計(jì)課程的教學(xué)中,都將主要精力放在某種具體語(yǔ)言的語(yǔ)法細(xì)節(jié)介紹上。這種教學(xué)方式在一定程度上脫離實(shí)際應(yīng)用的需求,而且很容易造成學(xué)生對(duì)編程的興趣缺失。筆者在教學(xué)實(shí)踐中也發(fā)現(xiàn)了這一問題。有很多學(xué)生在學(xué)習(xí)初期對(duì)課程有著較為深厚的興趣,他們也愿意向教師提出各種各樣的問題。但是隨著課程教學(xué)的深入和課程知識(shí)點(diǎn)難度的提高,他們的原先所具有的學(xué)習(xí)興趣慢慢消失了。究其原因,我們認(rèn)為,對(duì)于編程語(yǔ)言的學(xué)習(xí),其側(cè)重點(diǎn)不應(yīng)該放在具體的語(yǔ)法細(xì)節(jié)上,而應(yīng)該放在正確編程思想的建立上。因?yàn)閷W(xué)生未來學(xué)習(xí)工作過程中可能遇到的程序設(shè)計(jì)語(yǔ)言的種類和數(shù)量是無法預(yù)計(jì)到的,而不同的編程語(yǔ)言在語(yǔ)法細(xì)節(jié)上多多少少存在各種差異,唯一沒有差異的就是隱藏在各種程序設(shè)計(jì)語(yǔ)言背后的編程思想。也就是程序中的數(shù)據(jù)必須以不同類型長(zhǎng)度進(jìn)行存儲(chǔ)(數(shù)據(jù)類型)、現(xiàn)實(shí)中的任何問題都可以抽象為三種邏輯結(jié)構(gòu)(選擇,循環(huán),直到)、為了問題的解決可將大問題拆分成若干小問題(函數(shù))等等這些在任何程序設(shè)計(jì)語(yǔ)言中都通用的思維方式[5-6]。因此,程序設(shè)計(jì)的教學(xué),首先就要引導(dǎo)學(xué)生正確理解與體會(huì)到以下的編程思想并且建立必要的編程技能:
(1)分而治之的理念:為了清晰描述現(xiàn)實(shí)生活中的問題尤其是大而復(fù)雜的問題時(shí),往往需要通過將大問題切分成小問題的方式來解決。如何將一個(gè)完整的大問題分割成若干個(gè)既獨(dú)立又可以互通信息的小問題,是為了提高程序的編寫效率與正確率的必要手段。實(shí)際上,分而治之的理念再往下延伸就是組件化與模塊化。即,通過編程課程的教學(xué),要讓學(xué)生養(yǎng)成清晰的編程習(xí)慣,要將各個(gè)功能相對(duì)獨(dú)立的代碼分開編寫,而不能所有功能代碼都混到一起,降低代碼的可讀性和復(fù)用率。而且從這個(gè)理念出發(fā),還要學(xué)會(huì)用“搭積木”的方法來解決實(shí)際問題,即在自己的程序中調(diào)用現(xiàn)有的功能模塊,站在前人的基礎(chǔ)上提高問題解決的效率和正確率。
(2)三種邏輯結(jié)構(gòu)解決任何問題的理念:程序設(shè)計(jì)語(yǔ)言中,順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)是三種基本的邏輯結(jié)構(gòu)。雖然現(xiàn)實(shí)生活中的很多問題看上去千頭萬緒而且曲折復(fù)雜,但是這些復(fù)雜的流程都可以通過程序設(shè)計(jì)語(yǔ)言中的這三種基本邏輯結(jié)構(gòu)的合理組合來表達(dá)出來。普通人群在解決這些問題時(shí)的思維方式往往帶有一定的模糊性,并且缺乏嚴(yán)格的條理性。而編程課程則需要教會(huì)學(xué)生將模糊的“人類思維”轉(zhuǎn)變成條理清晰結(jié)構(gòu)嚴(yán)謹(jǐn)?shù)摹皺C(jī)器思維”流程,從而將千頭萬緒的實(shí)際問題用這三種邏輯結(jié)構(gòu)的組合抽象并描述出來。
(3)調(diào)試代碼的能力:代碼調(diào)試是程序設(shè)計(jì)中的一個(gè)重要環(huán)節(jié),也是被一些程序設(shè)計(jì)初學(xué)者忽略的地方。在編程課程中,除了培養(yǎng)學(xué)生撰寫可讀性強(qiáng)、擴(kuò)充性好、易于復(fù)用的優(yōu)質(zhì)代碼的編程習(xí)慣以外,還有一個(gè)重要的任務(wù)就是培養(yǎng)查找程序中的錯(cuò)誤、修改錯(cuò)誤的調(diào)試能力。在以往的教學(xué)中經(jīng)常可以發(fā)現(xiàn)學(xué)生面對(duì)程序錯(cuò)誤束手無措,只會(huì)叫老師幫忙解決的現(xiàn)象。而對(duì)于一個(gè)合格的編程人員來說,修改程序中的語(yǔ)法錯(cuò)誤、查找程序中的邏輯錯(cuò)誤,都是必備的能力素質(zhì)。因此引導(dǎo)學(xué)生自己調(diào)試程序也是編程課程中的一個(gè)重要環(huán)節(jié)。
(4)查找資料、甄別資料的能力:程序設(shè)計(jì)語(yǔ)言的發(fā)展具有速度快、種類多、更新迅速的特點(diǎn),因此在學(xué)習(xí)編程的過程中不能閉門造車。尤其是在教學(xué)過程中建立了模塊化程序設(shè)計(jì)的理念之后,需要具有查找并借鑒前人優(yōu)秀資料及代碼的能力。另外,除了知道去哪兒查資料、怎么查資料,還需要培養(yǎng)學(xué)生鑒別資料的能力。即在眾多良莠不齊的文獻(xiàn)中,能迅速找到自己所需要的高質(zhì)量的資料。這些基本技能的培養(yǎng)不僅助于學(xué)生綜合素質(zhì)的提高,而且也是學(xué)生以后進(jìn)入職場(chǎng)的必備。
非指導(dǎo)性教學(xué)具有一些基本的特征和原則:(1)極大的依賴于個(gè)體的自身成長(zhǎng),需要通過自身的努力,克服各種障礙。不以直接教授為主要手段,而應(yīng)該通過某些方法使學(xué)生的學(xué)習(xí)得以容易地開展。比如誘導(dǎo)學(xué)生獨(dú)立思考、澄清問題、幫助總結(jié)討論后的結(jié)論等。但整個(gè)過程中應(yīng)該讓學(xué)生處于主要位置,教師只起到輔助作用。(2)學(xué)生是以維持自己的構(gòu)造或是強(qiáng)化自己的構(gòu)造心理來學(xué)習(xí)的,因此要注意在真誠(chéng)、理解、接受的氣氛中用“同化”來影響學(xué)習(xí)的過程。(3)教師不應(yīng)該主要教學(xué)生怎樣學(xué),而應(yīng)該提供學(xué)習(xí)的資源和手段,創(chuàng)造學(xué)習(xí)的氣氛,然后由學(xué)生自己決定怎樣學(xué)。也就是說,在非指導(dǎo)性教學(xué)方法中,教師并不是指導(dǎo)者,而是顧問。
落實(shí)到程序設(shè)計(jì)課程中,非指導(dǎo)性的教學(xué)方式就可具體化為以下幾種方式:
(1)開放性的命題。用編程手段解決某一個(gè)具體工程問題,一般來說,其方法本身就是不唯一的。也就是說,同樣是解決這一個(gè)問題,不同的人寫出的程序都不會(huì)完全相同。因此,教師在編程課程中應(yīng)該多使用這些處理方案不唯一,也就是“開放性”的命題來讓學(xué)生解決,鼓勵(lì)學(xué)生百花齊放,采用不同的方案。
(2)以團(tuán)隊(duì)為單位解決問題。除了前期的一些基礎(chǔ)簡(jiǎn)單問題,到了程序設(shè)計(jì)課程的后期,應(yīng)該特別強(qiáng)調(diào)團(tuán)隊(duì)合作解決問題的方式。這首先是因?yàn)楫?dāng)學(xué)生進(jìn)入社會(huì)后會(huì)發(fā)現(xiàn)幾乎所有的軟件的開發(fā)工作都不可能是由某一個(gè)人獨(dú)立完成的,而是由一個(gè)團(tuán)隊(duì)來進(jìn)行的,所以極有必要在校期間就培養(yǎng)學(xué)生如何進(jìn)行團(tuán)隊(duì)合作、了解團(tuán)隊(duì)不同分工之間的溝通方式等。其次,以團(tuán)隊(duì)為單位解決問題也有利于創(chuàng)造互相學(xué)習(xí)的氛圍,激勵(lì)學(xué)生的自主與互助,符合非指導(dǎo)性教學(xué)方式的原則與初衷。
(3)比較式的評(píng)價(jià)。當(dāng)學(xué)生就開放性的命題提出各種不同的編程解決方案后,教師應(yīng)該組織引導(dǎo)學(xué)生通過對(duì)比來認(rèn)識(shí)各種編程方法和解決方案的優(yōu)劣,而不能簡(jiǎn)單地以“對(duì)”和“不對(duì)”來進(jìn)行評(píng)價(jià)。對(duì)于程序來說,效率高、復(fù)用率高、移植性好、擴(kuò)展性好等等特點(diǎn)往往是不能兼得的,而且不同的應(yīng)用場(chǎng)合對(duì)這些程序特點(diǎn)的側(cè)重需求往往也是不同的。因此可以將學(xué)生寫出的這些程序進(jìn)行一定范圍內(nèi)的比較,引導(dǎo)他們認(rèn)識(shí)哪種應(yīng)用場(chǎng)合應(yīng)該采取哪種解決方案。而且在對(duì)比和評(píng)價(jià)的過程中,應(yīng)該讓學(xué)生不受束縛、毫無顧忌地發(fā)表觀點(diǎn)進(jìn)行討論,就算討論沒有結(jié)論也不重要,因?yàn)樘剿鞯倪^程本身就已經(jīng)讓學(xué)生進(jìn)行了創(chuàng)造性的學(xué)習(xí)和研究。
本文從實(shí)際教學(xué)的經(jīng)驗(yàn)出發(fā),針對(duì)目前國(guó)內(nèi)在程序設(shè)計(jì)課程中存在一些問題,在教師自身對(duì)程序設(shè)計(jì)教學(xué)的理解以及非指導(dǎo)性教學(xué)方法在程序設(shè)計(jì)課程中的應(yīng)用方式這兩方面,對(duì)如何在程序設(shè)計(jì)類課程中引入非指導(dǎo)性教學(xué)法進(jìn)行的闡述和探討。本文工作對(duì)實(shí)際教學(xué)及相關(guān)方面的理論研究均有重要的參考價(jià)值。
[1]吳啟迪.“非指導(dǎo)性”教學(xué)思想下的課堂教學(xué)模式研究 [D].哈爾濱:哈爾濱師范大學(xué),2012.
[2]張曉英.淺談羅杰斯的“非指導(dǎo)性教學(xué)”模式[J].和田師范專科學(xué)校學(xué)報(bào),2006,26(2):67-68.
[3]周川.簡(jiǎn)明高等教育學(xué)[M].南京:河海大學(xué)出版社,2002.
[4]沈顯生.教師備課規(guī)范化要求探討[J].中國(guó)大學(xué)教學(xué),2009(1):79-81.
[5]譚浩強(qiáng).C程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2010.
[6]蔡學(xué)鏞.編程ING:人人都能學(xué)會(huì)編程設(shè)計(jì)[M].北京:電子工業(yè)出版社,2012.