從2001年起我受系主任的委托承擔了“程序設計基礎”課的教學任務。這是給計算機系大一新生開的第一門涉及計算機的基礎課。當年我已65歲,在這之前我一直在講研究生的學位課“語音信號的數(shù)字處理”。
對我來說“程序設計基礎”是新課,當然有一定的難度。但從我的經(jīng)歷看卻又比較容易上手,因為我有指導中國隊參加國際信息學奧林匹克近20年的經(jīng)驗。盡管年過花甲,卻仍壯心不已,要做就要做好。我跟當時的系主任周立柱教授說,請他召集一個專家會討論一下課程改革方案和教學設計,記得王爾乾、林行良、唐龍、王誠等十多位教授參加了討論,給了我很大鼓勵和幫助。
干好一件事光靠熱情是不行的,特別是教學工作,需要有正確的教學理念和教學思想的指導。為此,我學習了教育心理學和有關創(chuàng)新學的書及一些資料,結合我在清華40年的教學實踐,認真研究課程的目標、定位、內容、教學方法等等。著重開展了兩個方面的改革:教學模式的改革和對學生學習評價方式的改革。第一年該課就取得了很好的教學效果,成為清華大學的精品課,學生給予很高評價,認為課程 “授課方式獨特新穎,深入淺出,啟發(fā)式教學,激發(fā)學生興趣,調動學生的積極性,有助于學生獨立思考能力的提高?!?引自清華大學2001年下半年教學評估結果查詢)
1教育理念最為重要
“大學者,非謂有大樓之謂也,有大師之謂也?!毕容叴髱煘槿藶閷W都給我們做出了榜樣?;叵?0年前我在自動控制系求學和當助教時,多次聆聽鐘士模先生的教誨,深知要想搞好教學最為重要的是學習教育理念。
在新世紀,教育必須培養(yǎng)人的自我決定能力,而不是培養(yǎng)人們去適應傳統(tǒng)世界;重要的是要喚醒學生的力量,培養(yǎng)其自我性、主動性、抽象的歸納力和理解力。
在教育的目的和價值的總體看法上,可持續(xù)發(fā)展教育觀的核心是強調要將知識、能力、素質融會貫通于教育的全過程,要求受教育者要關心他人,學會合作、協(xié)調,將能力培養(yǎng)與素質教育擺到重要的位置上。認為具有較強能力和良好素質的人,必須掌握豐富的知識; 能力培養(yǎng)與素質教育要部分地通過知識的傳授來實施; 能力與素質在許多場合下是通過知識表現(xiàn)出來的。
作為教授,我們應該如何傳授知識,怎樣培養(yǎng)學生的能力? 我以為應該推崇以探索為本的教學,努力將知識型教學改進為研究型教學,引導學生在不同級別的探索空間學習實踐,取得經(jīng)驗,提高能力。
對理工科的大學生,能力是技能化知識的綜合體現(xiàn)。培養(yǎng)能力,要把知識運用的綜合性、靈活性與探索性作為重要內容。能力作為個性的個別心理特點,不是天賦的,而是在后天的教育與實踐中形成和發(fā)展起來的。能力是各種社會實踐的產物,只能在實踐活動中得到提高。能力須以豐富的知識作支撐。實踐是能力賴以生長的土壤。
學生的良好素質是知識和能力的升華。
素質教育是以尊重學生的主體作用、主動精神,注重開發(fā)人的潛能,形成人的健全人格為根本特征的教育。
我以為素質教育要求學生在學校里學會:“怎樣做人,怎樣做事,怎樣求知,怎樣健體?!?/p>
作為計算機系的教授還有責任傳承信息道德。所謂信息道德,是維護信息資源的真實性與信息處理的社會責任感,也是科學精神與人文精神的結合。信息道德水平體現(xiàn)著人格水平。信息教育過程也是提高思想道德情操,塑造健康人格的過程。
創(chuàng)造性思維活動的基礎是理論指導下的實踐,有目的的實踐。在實踐當中積累豐富的經(jīng)驗,取得真知灼見。
創(chuàng)造性思維離不開工具。工具影響思維?!拔覀兯褂玫墓ぞ哂绊懼覀兊乃季S方式和思維習慣,從而也將影響著我們的思維能力?!?Edsger Dijkstra 1972年圖靈獎得主)計算思維是人類借助通用智力工具求解問題的一條途徑。涉及理解和運用計算機科學的基本概念、遞歸思想、抽象化、形式化、枚舉、搜索、啟發(fā)推理等。
創(chuàng)造性思維需要有科學的世界觀和方法論來導引。
探索性學習有助于創(chuàng)造性思維的培養(yǎng)。
從思想方法上要擺脫傳統(tǒng)偏見,思維定勢往往會妨礙無偏見地觀察和思考。敢于思考和善于思考應該是創(chuàng)造者的座右銘。
通過學習,我的感悟是:課程改革要以人為本,我們的責任是把學生潛能發(fā)掘出來。讓人人都能“自信、自立、自尊、自強”。
下面談談我對這門程序設計基礎課的重要性的認識。
程序設計強調數(shù)學基礎,這是因為“任何事物都是量和質的統(tǒng)一體,都有自身的量的方面的規(guī)律,不掌握量的規(guī)律,就不可能對事物的質獲得明晰的認識。數(shù)學是研究‘量’的科學,數(shù)學不斷地在總結和積累各種量的規(guī)律性,因而必然成為人們認識世界的有力工具?!睌?shù)學文化是人類文化中最基本的文化,馬克思說:“一門科學只有當它達到了能夠成功地運用數(shù)學時,才算真正發(fā)展了?!彪娮佑嬎銠C的出現(xiàn)標志著數(shù)學已進入了機器時代,數(shù)學文化的進步是信息時代科學技術發(fā)展的基礎。
程序設計是將數(shù)學應用于解決實際問題的技術,是讓計算機聽命于人的最直接的技術,也可以說是自己主宰自己的人腦延伸的技術。這樣的認識可能高度還不夠,因為在有了通用智力工具之后,人們會適應性地改變思維方式。學會計算思維是學生在信息社會大展宏圖的需要。因此,我提出程序設計是大學生的一個看家本領。不會編程的人,只能局限在別人劃定的圈內工作,對于那些劃在圈外,計算機能夠勝任,而你又渴望去做的工作,不會編程的人只能‘望圈興嘆’?!安荒茏屛覀兊暮⒆虞斣谄鹋芫€上”?!拔覀冇胸熑巫屇切┯欣硐胗斜ж撚徐`氣又肯吃苦的中國孩子在起跑時就能占有先機。”
以上是我通過學習在教育、教學方面的一些思想認識。也是我進行課程改革的思想與心理基礎。
2教學改革,選定目標,創(chuàng)出新路
教師是教學活動的直接組織者和實施者,在教學中發(fā)揮著極其重要的作用。要把課程改好,我認為最主要的是教師教育觀念的轉變。實踐證明,教學內容的選擇,教學方法的采用都會直接影響教學效果和教學目標的實現(xiàn)。
目前有些學校的程序設計課程仍停留在傳統(tǒng)的教學模式上,過于注重語句、語法和一些細節(jié),基本上是以高級語言自身的體系為脈絡展開的,沒有把邏輯與編程解題思路放在主體地位上。如何分析問題和解決問題的思路講的很少,對學生編程的能力,上機解題的能力訓練不夠,更談不上在教學中引導學生研究和探索了。這樣就給后續(xù)課程及研究生階段的課題研究留下了很多麻煩。很多學生在學習這門課時感到枯燥難學,學過之后,又不能用之解決問題。
我個人的經(jīng)歷有些不同,20年來一直在參與輔導中學生和大學生參加有關計算機的各種比賽,包括國際信息學奧林匹克和ACM世界大學生程序設計競賽,通過對這些編程能手成長過程的認真思考和研究,使我感到很有必要改變我們的課程教學模式,用先進的教學理念和方法培養(yǎng)一流人才。對這一問題,我和系領導談了自己的想法,他們非常支持。從2001年9月起,我承擔了程序設計基礎課的教學任務,并開始對程序設計基礎課程教學模式進行改革。
首先要分析傳統(tǒng)方法的毛病:
(1) 語句、語法講的太多、太細;
(2) 忽視基本問題的求解過程;
(3) 課程中算法意識淡??;
(4) 不能激發(fā)學生的學習興趣;
(5) 教學目標存在問題。學了但不會用,有人很快就忘了。
我們把程序設計基礎的目標定位為:
(1) 借助程序設計的知識載體,傳授基本問題的求解過程和基本思路;
(2) 建立算法意識,培養(yǎng)良好的思維習慣;
(3) 從學科方法論上打基礎,培養(yǎng)計算思維能力和分析問題解決問題的能力。
我們認為學科教育必須走內涵發(fā)展道路,在課程中應該強調計算思維能力、抽象思維能力和邏輯思維能力,注重理性思維和理性實踐。在解決問題的實踐中訓練觀察能力、思維能力和實踐能力。
我們分析了教學設計中的幾個難點:
(1) 對“構造性”和“能行性”的把握?!皹嬙煨浴焙汀澳苄行浴笔怯嬎銠C學科的獨有的特點,在教學內容的選擇和教學方法的設計上都要顧及這個特點。
(2) 如何培養(yǎng)計算思維能力?引出什么問題、通過什么方式來培養(yǎng)計算思維能力。
(3) 抽象第一與動手編程實踐的關系。抽象第一是計算機學科教育的一個基本要求,涉及邏輯思維、形式化、構建數(shù)學模型和算法等等,如果不能顧及學生的認知規(guī)律,無視初學者的感受,可能就會難倒學生或嚇倒學生。正確處理好理論與動手編程實踐的關系是十分重要的。
(4) 盡量超越具體語言,又不能沒有上機的語言環(huán)境。
(5) 初學者的難點在哪兒?
(6) 怎樣激發(fā)學生的學習興趣?
針對難點和學生剛剛入學的實際,我們的做法是:
(1) 提出課程的定位是培養(yǎng)學生利用計算機編程手段分析問題和解決問題的能力
(2) 提出強化實踐的教學設計;
(3) 提出理性思維和理性實踐的導學要求;
(4) 提出“抱西瓜,不撿芝麻”的教學策略 ;
(5) 提出上課同時養(yǎng)成良好的編程習慣;
(6) 提出上機解題的考試方法;
(7) 提出創(chuàng)設進行因材施教的探索空間。
對程序設計教學模式進行改革,以強調動手實踐上機編程為切入點;以任務驅動方式,通過實例講授程序設計的基本概念,基本方法。重點放在思路上,即:在C/C++語言的環(huán)境下,針對問題進行分析,構建數(shù)學模型,理出算法并編程實現(xiàn),同時要求養(yǎng)成良好的編程習慣,在此過程中培養(yǎng)學生的思維能力和動手能力,鼓勵學生探索、研究和創(chuàng)新。
在課堂教學中我們采用了如下的教學思路:
課堂教學思路
下面著重談教學方式與評價方式的改革。
(1) 教學方式的改革
① 強化實踐
鑒于程序設計課是高強度的腦力勞動,不是聽會的、也不是看會的,而是練會的。只有讓學生動手,他才會有成就感,進而對課程產生興趣,學起來才比較從容。因此,我們的基本思想是在理論指導下,讓學生動手、動腦,更多地上機實踐。因為學生只有在編寫大量程序之后,才能獲得真知灼見,感到運用自如。注重學生動手能力的培養(yǎng)是這門課和以往課程最大的不同之處。
② 鼓勵和引導探索式學習
按照建構主義的學習理論、學生作為學習的主體在與客觀環(huán)境(指所學內容)的交互過程中構建自己的知識結構。教師應引導學生在解題編程的實踐中探索其中帶規(guī)律性的認識,將感性認識升華到理性高度,只有這樣,學生才能舉一反三。在這一過程中教師起著很大的引導作用。
③ 突出重點
這門課授課的原則是要學生“抱西瓜”而不是“摘芝麻”,重點放在思路、算法、編程構思和程序實現(xiàn)上。語句只是表達工具,講一些最主要的,細微末節(jié)的東西根本不講。在教學設計中注重最大限度地調動學生的積極性,選擇少而精,又能引發(fā)興趣的典型問題,作為開篇,要求學生帶著問題學,積極思考,與教師互動,盡量當堂學懂。突出上機訓練,在編寫程序的過程中,提高利用計算機這個智力工具來分析問題和解決問題的能力。
④ 培養(yǎng)良好的編程習慣
在課上我們非常注意讓學生養(yǎng)成良好的編程習慣,即強調程序的可讀性、規(guī)范性;要求變量必須加注釋;程序構思要有說明;學會如何調試程序;盡量使程序優(yōu)化;還要求對程序的運行結果作正確與否的判斷與分析。
⑤ 注重培養(yǎng)學生“自學、動手、應用、上網(wǎng)”的學習習慣
我們認為 在本科階段就應該注意培養(yǎng)學生的自學能力。很多東西完全是可以自學的,尤其是計算機。計算機是實踐性極強的學科,所學的內容和要實踐的東西是一個整體,所以可以自己動手來學,書上看不懂的在機器上動手試試,往往就弄懂了。上網(wǎng)是指充分利用網(wǎng)絡平臺,提高獲取信息、處理信息和交流信息的能力。
(2) 對學生學習評價方式的改革
考試是檢驗學生學習效果、評價學生學習業(yè)績的重要環(huán)節(jié)??荚囎鳛椤爸笓]棒”對教學目標、教學過程有著相當大的影響。我一直在思考如何進行考試改革,如何借助考試環(huán)節(jié)調動和激發(fā)學生自主學習的積極性、創(chuàng)造性等問題。
① 不紙上談兵,不考筆試,不考死記硬背的東西
開學之初,就向學生宣布考試方式—上機解題,判分也是由計算機來完成,對就是對,錯就是錯。我們平時比較注意對學生學習方式的引導,讓學生明白:理論很重要,要在理論指導下,動手動腦、有條有理地進行實踐。而實踐才能出真知,動手才能學到真本事。
② 利用資源,補充助教的不足
我系每年都有十多位保送生,他們都是計算機競賽方面的高手,是“國家集訓隊隊員”。與此相反,每年所招新生中有30%的學生沒有摸過計算機。我們把這些“高手”組織起來,給他們起名為“小教員”。在開學的第一天就把他們介紹給其他同學,并把他們分到各班,讓他們對該班同學的學習負起責任,幫助同學學習。這部分“小教員”真正發(fā)揮了作用,這樣既彌補了師資的不足,同時也使他們受到了鍛煉,增強了責任感和團隊精神。
3仍須努力,沒有最好,只有更好。
經(jīng)過7年的實踐,我們感到在一些方面還要進一步努力。譬如:
要進一步加大學生訓練環(huán)節(jié)的力度;
要加強對基礎較差學生的輔導;
要建立一個因材實教的機制,創(chuàng)造條件,讓學生能有更廣闊的發(fā)展空間;
要建立平時的督促機制,讓每一個學生真正落實動手實踐;
要考慮與后續(xù)課程的銜接。
改革是沒有止境的,一流大學要有一流的課程,沒有最好,只有更好。