創(chuàng)新能力、素質(zhì)教育屬于當今教育領域最為熱門的話題了,從學齡前到大學教育,無不積極探索和嘗試。這著實是一件可喜之事。然而對于“能力”、“素質(zhì)”的內(nèi)涵,卻是眾說紛紜。其實這的確沒有一個放之四海而皆準的定義,在不同的教育階段、不同類型的學校,根據(jù)不同的培養(yǎng)目標,能力和素質(zhì)的側重點也是不一樣的。本文結合作者在清華大學的教學實踐,著重分析在大學本科計算機程序設計的基礎課中,如何培養(yǎng)學生的創(chuàng)新能力。
一、創(chuàng)新能力乃天賦潛能
說到創(chuàng)新能力,往往總覺得是少數(shù)精英才具備的。其實創(chuàng)新能力正是人類與生俱來的能力。創(chuàng)新能力不是空中樓閣,而是實實在在體現(xiàn)在學習能力和工作能力之中。學習能力是一個人獲取新知識、新信息,掌握新理論和新方法的能力;工作能力是發(fā)現(xiàn)問題、分析問題和解決問題的能力。而創(chuàng)新,就是要發(fā)現(xiàn)別人沒有發(fā)現(xiàn)的問題和現(xiàn)象,得出別人沒有得到的、與眾不同的分析見解,研究出新的理論和方法去解決問題。
從呱呱墜地開始,孩子就睜大探尋的眼睛,不斷地認識周圍的世界,對一切新事物充滿好奇,無所畏懼地去嘗試一切,對于玩具也總有自己獨特的新玩法,總有拆開重新裝配的欲望。但是,后天的教育、前人的經(jīng)驗不斷地束縛了這種創(chuàng)新意識。我們現(xiàn)在已經(jīng)意識到這一點,所以大力提倡培養(yǎng)創(chuàng)新能力。其實不如說是保持天賦的創(chuàng)新能力,至多是發(fā)掘人類本身所具有的潛能。當然,我并不是說中規(guī)中矩的教育和學習前人的經(jīng)驗不重要。無以規(guī)矩不成方圓,前人的經(jīng)驗也是前人創(chuàng)新探索的結晶,絕對是珍貴的。只是以什么樣的觀點和思想方法去學習甚為重要。
二、創(chuàng)新能力的培養(yǎng)關鍵在于教育思想,基礎課至關重要
在大學的課程中,談到創(chuàng)新能力培養(yǎng),便自然聯(lián)系到先進的實驗設備、前沿的科學技術、尖端的研究項目。誠然,這些對于培養(yǎng)學生的創(chuàng)新能力非常有益,但是并非只有具備這些條件才能培養(yǎng)學生的創(chuàng)新能力。同時這些也都只是外在的條件,教育思想和觀點才是最主要的。在強調(diào)培養(yǎng)學生能力的今天,我們采用了諸如網(wǎng)絡教學、實踐教學、案例教學、項目訓練,等等新的方法和手段,更多的方法和手段仍在不斷涌現(xiàn)。然而這些都只是外在的形式,形式必須為思想和目標服務才有意義。有了正確的教育思想,在任何條件下以任何形式都能夠充分保護和發(fā)掘人類的創(chuàng)造性潛能。如果教育者的思想首先受到禁錮,那么一切的先進設備、優(yōu)越條件便都會成為協(xié)助禁錮的工具。反思一下,為什么在自然科學如此發(fā)達的今天我們卻感到了學生創(chuàng)新意識的危機?
人類創(chuàng)新意識和能力的保護和發(fā)掘,開始得越早越有益,這也正是我們現(xiàn)在從小提倡素質(zhì)教育的原因之一。在大學教育階段呢,基礎課相對而言對于創(chuàng)新能力的培養(yǎng)起著最為重要的作用,這一點卻常常被忽略。一談到創(chuàng)新,往往首先想到要通過什么樣的尖端課題培養(yǎng)優(yōu)秀的博士生,要讓教師和學生在世界頂級刊物發(fā)表優(yōu)秀論文。而基礎課,總是被認為與創(chuàng)新不沾邊,只是傳授知識、奠定知識體系結構的基礎,這其實正是基礎課教育不被重視的原因。
在學前教育、基礎教育階段,在大學的基礎課學習階段,培養(yǎng)創(chuàng)新能力的關鍵在于引導學生發(fā)現(xiàn)和運用自身潛在的創(chuàng)新精神,養(yǎng)成思想不受禁錮,勇于質(zhì)疑,敢于探索,善于動手實踐自己的獨特想法的基本素質(zhì)。如果說基礎教育階段是從人文角度對這種基本素質(zhì)的全面培養(yǎng),那么大學的基礎課階段,就是從專業(yè)角度,對創(chuàng)新意識在專業(yè)領域的延伸起著關鍵作用。如果沒有這種基礎的奠定,在專業(yè)研究領域進行創(chuàng)新便成為空談。
三、學習能力是創(chuàng)新能力的基礎
要創(chuàng)新,首先需要站在巨人的肩膀上,要學習、掌握現(xiàn)有的科學與技術。而學習過程中采取的觀點和方法是關鍵。
以計算機程序設計類的基礎課為例,這樣的課程一般都是安排在大學一年級。我們要向學生講授程序設計語言、程序設計方法、算法,以及函數(shù)庫/類庫中對常用算法的實現(xiàn)。如果只是要求學生學會這些現(xiàn)有的理論和已經(jīng)實現(xiàn)的技術,并且達到熟練運用,那么我們就是在扼殺學生的創(chuàng)造性。為什么這樣說呢?因為如果他不知道有這些現(xiàn)有的成果存在,他發(fā)現(xiàn)需要解決的問題時總會想辦法去解決,而創(chuàng)造就發(fā)生在“想辦法解決”中。但是現(xiàn)在老師告訴他:現(xiàn)在有實現(xiàn)技術了,你學會用就可以了,他便不再質(zhì)疑、無需創(chuàng)造了。如果每一門基礎課都這樣,學生也就習慣于拿來使用,丟掉了創(chuàng)新意識。
這樣說,并不是不要學習。如果不學習,就丟失和浪費了前人的創(chuàng)造。如果一切總是從盤古開天地研究起,人類就會永遠停留在懵懂和愚昧狀態(tài)。只是學習的時候,不能迷信任何理論,不能依賴任何技術實現(xiàn)。要有獨立的見解和立場。比如介紹一種程序語言時,首先要以發(fā)展的觀點來介紹。這類課程和教科書上一般都會介紹計算機程序語言的發(fā)展歷程、程序設計方法的演變,可是很多老師只是將這些作為開場白,學生也只是聽熱鬧、聽故事而已,這就沒有達到目的。介紹歷史和發(fā)展,最主要的是向學生傳授一種發(fā)展的觀點,讓學生知道每一種新的理論、方法、技術都是為了解決什么問題而出現(xiàn)的,還要啟發(fā)學生,未來他將面臨更多、更復雜的新問題,那時候,他應該去發(fā)展新的理論、方法、技術,去解決新的問題。
在講解程序設計語言的語法時,如果僅僅講解和驗證語法,學生會越學越煩,會覺得語法太多、記不住,會連學習興趣都失去了,更談不上什么培養(yǎng)創(chuàng)新能力了。所以應該首先提出一些新的問題,讓學生思考如何解決,當學生發(fā)現(xiàn)用已經(jīng)學過的語法不能解決,或者不方便解決新問題的時候,啟發(fā)學生:如果是你來設計編程語言,你希望設計什么樣的語句用來解決這種問題呢?這時學生會有各種各樣的見解。讓大家充分思考,然后引出新的語句,同時說明,這只是一種設計,目前來說相對比較合理,但是隨著新問題的出現(xiàn),語法還會不斷發(fā)展的。
在基礎課中要鼓勵學生去反思、去批判現(xiàn)有的程序語言,要珍惜學生在學習過程中迸發(fā)的創(chuàng)新火花。比如經(jīng)常會有學生質(zhì)疑,為什么一定要這樣寫?為什么那樣寫不行?如果老師簡單地回答:這是語法規(guī)定,你必須遵循,那樣就阻止了學生質(zhì)疑,而質(zhì)疑正是創(chuàng)新的萌芽。所以應該首先肯定學生的質(zhì)疑精神,然后告訴他:既然這種語言是被廣泛采用的國際標準,就一定有它的道理,但是要真正明白其中的道理,你還需要深入學習其他課程,比如編譯原理。你的疑問先留著,等你首先理解了這個語言背后依據(jù)的理論和實現(xiàn)技術,你再深入質(zhì)疑。那時候如果你有更好的觀點,可以通過標準組織的途徑,給國際標準提出修改意見,或者設計出一種新的編程語言。這樣,學生就會愿意去深入學習現(xiàn)有的知識,但是又不迷信任何權威。
在程序設計基礎課中總要介紹一些常用算法的,但是又沒有時間詳細地講算法理論,因為后續(xù)還有計算方法和數(shù)據(jù)結構課程。這時切忌讓學生死記硬背書上的算法,對每一個簡單算法,都要讓學生理解為什么是這樣設計的,而且要鼓勵學生自己設計出不同的方法。這時有些學生就會寫出各種不同的算法,那就引導他簡單地從時間、空間效率,程序的可讀性等比較明顯的角度去評價、對比不同的算法。告訴學生,如果將來你解決新問題時,沒有現(xiàn)成的算法,或者分析了現(xiàn)有的算法不能滿足你的要求,那你就需要自己研究新的算法了,這就是創(chuàng)新。這時學生好像豁然開朗:原來創(chuàng)新并不是什么遙不可及的事情!
四、發(fā)現(xiàn)問題和解決問題是創(chuàng)新的開始
所謂創(chuàng)新,直白來講,就是發(fā)現(xiàn)了新的需要解決的問題,在廣泛研究了現(xiàn)有的理論和方法以后,認為不能解決,或者解決得不夠好,于是去研究新的理論和方法。所以要能夠創(chuàng)新首先必須善于發(fā)現(xiàn)問題、勇于解決問題。這種素質(zhì)也必須從基礎課開始培養(yǎng),如果在基礎課中學生習慣了只完成老師規(guī)定的作業(yè)(包括大作業(yè)),那么做研究的時候要他自己選方向、選題目,就會感到突然和茫然。
在幾門程序設計課程中,我都是讓學生自己選題、設計大作業(yè)。從開學初就讓學生自己去發(fā)現(xiàn)有什么問題需要用計算機來解決,然后通過課程的學習逐步設計解決方法,并實現(xiàn)。在整個過程中,學生要經(jīng)歷選題(通過調(diào)研發(fā)現(xiàn)問題)、設計、實現(xiàn)、測試、答辯。當然,由于所學的知識有限,很可能只能解決整個問題的一小部分。但是學生學會了如何去發(fā)現(xiàn)問題、分析問題和解決問題,這是學習如何研究的開始。如果僅僅完成規(guī)定題目的大作業(yè),學生只是完成任務,至多達到技術培訓的目的。
五、學術道德是科學研究的基本素質(zhì)
創(chuàng)新實際上應該是一個很自然的過程,對于“新”的探索和研究應該是發(fā)自內(nèi)心的,沒有太多功利的。事實上一些偉大的科學家只是出于對科學的熱愛、對自然界的執(zhí)著探索去進行研究,正是這樣的研究成果為世界創(chuàng)造的巨大了財富,為人類帶來了廣泛的利益。學生從學習階段開始,對研究就不能抱有功利心,而應該有更多公益心。只有這樣,將來在研究工作中才能夠真正尊重科學、尊重他人的成果,才能嚴謹、誠實,才能做出真正有價值的研究。相反,如果在學習基礎課的時候,可以為了分數(shù)不擇手段,那么將來在研究工作中為了沽名釣譽也會不擇手段。
所以在基礎課中,培養(yǎng)學生良好的學術道德便是一個重要任務。但是這種培養(yǎng)不是通過說教,說教是沒有用的,要通過教學過程中的每一個環(huán)節(jié),去養(yǎng)成。說到這里,不得不說現(xiàn)在我們整個社會對于養(yǎng)成學生誠實、善良的品格所發(fā)揮的正面作用不夠,以至于在大學的基礎課里還要去認真培養(yǎng)誠實與善良。如果在大學本科還不培養(yǎng)的話,那么進入研究工作以后,個別人的學術道德就很成問題了。
在大學里,學生之間抄作業(yè),請別人代寫作業(yè),抄襲論文,考試作弊等現(xiàn)象時有發(fā)生。雖然各個學校的管理制度越來越嚴,但是個別學生還是會鋌而走險。在基礎課中,學生數(shù)量很大,而教師人力卻很少,一味地靠監(jiān)管實際上并不可行。而如果采用正確的引導,往往會收到很好的效果。有時候學生違規(guī),是因為不知道什么是正確途徑,是因為沒有勇氣承擔自己的失敗或失誤。比如就抄作業(yè)這一現(xiàn)象來說,有些學生就是不會做,實在完不成作業(yè)。原因呢,可能是沒認真學,也可能是能力有限。但是他不想因此而丟分,或者不能承受丟分這個事實,又不認為抄襲是欺騙,所以他抄作業(yè)。在我的課上,我允許學生借鑒別人的作業(yè),但是要明確注明借鑒了誰的,如何借鑒:全抄并且沒看懂、抄了并且看懂了、抄了以后看懂了自己又作了修改(注明修改之處)。然后建議他一定要將這些題目真正學會。
在完成大作業(yè)和學期論文的過程中,更要引導學生正確引用別人的成果。鼓勵學生就自己的選題廣泛查閱資料,借鑒已發(fā)表的論文和網(wǎng)上開放源碼的程序,然后在這個基礎上做出自己的創(chuàng)新或改進。同時在源代碼中、在報告和論文中要清除準確地注明引用出處。這樣學生就學會了如何合法地使用現(xiàn)有的成果,并在前人的研究基礎上創(chuàng)新。
做老師的都遇到過,有些學生考試不及格就以各種方式向老師求情,有送禮的,有痛哭流涕的,還有與老師爭吵的??吹竭@樣的學生,我覺得非常痛心。不是因為他一門課沒學好,而是因為他不能承受這小小一點失敗,卻要求老師與他合謀弄虛作假讓他逃過這一劫。遇到這樣的學生,我就幫助他學會接受失敗。失敗的經(jīng)歷也是一種鍛煉,接受失敗,跌倒了自己爬起來也是必須的素質(zhì)。因為在學生將來的研究工作中失敗一定多于成功,偉大的成就都是建立在眾多失敗的基礎上的。如果一個研究者不能接受失敗,如果失敗了就想到用虛假手段蒙混,那注定是不會得到真正有價值的研究成果的。
基礎課很重要,這似乎總掛在嘴邊上卻又總得不到落實。通常認為基礎課只是單純積累知識基礎的,老師只要將知識講清楚就可以了,基礎課中的教學研究在大學里是不算研究工作的,甚至不算是工作。這是因為,基礎課與以后的研究工作的關系,基礎課與創(chuàng)新能力的關系沒有沒廣泛認識。在大學的基礎課中,重視創(chuàng)新能力的培養(yǎng)不是太早、而是太晚了,這本應該是從幼兒教育就開始并貫穿始終的。那么現(xiàn)在我們這些教基礎課的老師,應該首先將基礎課教學與創(chuàng)新能力的培養(yǎng)結合起來,認真研究其中的理論和規(guī)律。這是造福學生、造福未來的事情。