王奮乾
[摘要]面對教與學問的問題,必須分析癥結。應對學習對象的變化,理清解決問題的思路,找出解決問題的方式、辦法和對策,并付諸實踐。通過教與學間的有效互動,以學習對象的實際效果和實際能力為衡量標準,有利于教與學間隔層的消除,方便實際檢驗。
[關鍵詞]C++程序設計;教與學;實際能力
[中圖分類號]G642.0;TP311.1[文獻標識碼]A[文章編號]1673-0194(2009)19-0123-03
在c++程序設計的學習中,易出現(xiàn)教與學間隔層,此在高校和高新技術企業(yè)同時存在。如何尋求有效的方式、方法和對策,使學習對象能較好地掌握技術要領,學會設計,提高實際編程能力,是教與學問亟需解決的問題。
1實際中存在的問題與不足
現(xiàn)代大學對教師的要求高,是否具有勝任力,能得到學生、學校、企業(yè)、社會認同與大學教師本身的能力(研究能力、教學能力、分析問題、解決問題能力、動手能力)和個人素質(勤奮、進取、鉆研、善于改進、善于總結、溝通、協(xié)作,人品)等因素有關。目前我國從事大學c++程序設計的教師究竟有多少曾從事過大中型程序設計項目的實際編程?這種沒經實際檢驗,從學校畢業(yè)又從事教學,由學校到學校又新教學生的教師居多,所講授的教材除基礎易掌握的一些部分外,對學生的c++程序設計的能力能提高到什么程度,對c++這門課程把握能力如何,值得商榷。好在現(xiàn)今具備一定的硬件、軟件、網絡系統(tǒng)環(huán)境,可通過實際抽查或檢驗出學習對象掌握的結果。由于一些教師講授不切實際,所教的程序解決不了實際問題,實驗、教學和實際脫節(jié),所學內容到社會實際中用不上,學生學習積極性不高,畏難,教與學脫節(jié),與實際脫節(jié),導致學生到職c++編程或維護崗位后,得從頭重新學習。致使一些高科技企業(yè)對有些高校的畢業(yè)生置信度低,學生就業(yè)受到影響。
現(xiàn)代社會技術發(fā)展快,要求科研人員、教師掌握的知識增多,學識的復雜性、綜合性等因素使其負擔愈重。整個社會在市場競爭中加劇變化,急功近利、浮躁等學風等也隨之而來,有些教師不適應技術進步,加大形成新的隔層。
學生對教師要求高,反映出隨著技術的進步,需求在提高的實際。要求有好而有效的學習方式、學習方法、學習效果,隱含著在難掌握的課程方面存在某種不足。教師與學生間理解的隔層歷來存在,而c++程序可依實際檢驗,愈顯得矛盾突出。教師面對社會和實際的高要求,如何解決和把握與學生間的理解以及編程能力提高的隔層問題,激發(fā)學生的學習積極性和培養(yǎng)學生勤奮扎實的學風很值得研究。經深入企業(yè)調研發(fā)現(xiàn),在高科技企業(yè)中,在對新員工進行培訓、指導與傳幫帶時也存在類似問題。
2隔層癥結分析與解決的思路、方式和方法
如何消除教師與學生間的理解隔層?經實踐探索,建議把一門課程所掌握的主要技術點或知識難點作為一個個里程碑,各里程碑的階段性難點必須加以關注。c++程序設計中,初學者對c++程序設計中函數(shù)返回時,形式參數(shù)和實在參數(shù)的認識,函數(shù)調用與函數(shù)程序的編寫,函數(shù)返回值與不返回值的問題的理解;c++程序的輸入輸出流產生的效果;庫函數(shù)的聲明與調用問題;C++的封裝;何謂面向對象,類和對象的關系,對象成員的引用,構造函數(shù),析構函數(shù),對象指針,友元函數(shù),函數(shù)重載,繼承與派生,多態(tài)性與虛函數(shù),并發(fā)程序設計等都需要做出專門安排一一解決,用例最好和實際結合,和專業(yè)業(yè)務結合。
教與學的難點問題歷來是學生和任課教師間的矛盾所在。如何尋求好的解決辦法,是一名稱職教師理應通過多種方法和渠道不斷尋求、實驗、改進、總結和提高的目標。按照技術理論和學科知識的發(fā)展,針對教學對象的變化,授課新技術或輔助技術的采用,對不同的對象采用不同的授課方式和教學方法,不斷積累,動態(tài)地調整和適應。教師應不斷努力提高,始終有敬業(yè)追求的目標。對教學中的難點和教學對象的變化,可參考Fermi Problem解決方法。即把問題分解為接受對象所能接受的程度或理解點。并不是把復雜問題降低難度的簡單化,也非把復雜問題通過講解其他類似問題的比喻讓學生理解,而是實實在在地把復雜問題原型本能地分解。這里的關鍵是看教師對一個復雜問題如何分解,是否能分解開,按照不同的對象,分解到什么程度,達到什么要求和目標等,其體現(xiàn)出一個教師的學識、能力,水平的高低和為什么有些老師能得到學生信服的原因。經過采用Fermi Problem解決教學中難題和教與學問的交互,達到教學要求,學生理解,教學相長。如,當你把課講得很清楚時,學生反映課堂上的東西全聽懂了,但仍不會做題,不能獨立用c++編程解決實際問題。經對這類問題分析,發(fā)現(xiàn)是對學生提供的信息和學生通過外界其他方式所知信息太少,經歷c++編程環(huán)境太少,實際編程能力不足等原因,所以無法解決它。當把學生的某一問題分解成為幾個次級問題,若每個問題不用求教專家、教師、同學或參考書能解答時,就基本會掌握難點,使教師所教與面授對象所能達到的理解點動態(tài)銜接,為接受者所認識或初步掌握,經過多次上機檢驗,積累不同類型的問題、算法、程序和解決方案,便可達到會初步編程之目的。
解決教與學問理解隔層的有效途徑都有哪些呢?對學生來說,從進學校的第一學期起,不管上什么課,都要為其將來的職業(yè)生涯考慮。因為就業(yè)的復雜性,學校、教師、學生都不能保證學生畢業(yè)以后就一定能從事什么工作。所以要做好充分的準備,使學生通過多個環(huán)節(jié)的專業(yè)培養(yǎng)和專業(yè)訓練,縮短學校與企業(yè)或社會實際需要間的距離,使之能很快上手適應工作。
c++程序設計是實踐性很強的一門課程,課堂教學與上機動手密切結合,采用科研項目中的實例分析與課堂隨即實驗是檢驗正誤、提高學生學習興趣和實際動手能力的一個有效途徑。
師生間的隔層在于理解。老師理解或掌握的,怎么讓學生接受、理解。教師在課堂上同學生一同分析外,如何激發(fā)學生的學習興趣,除教師的勝任力外,主要是要把技術核心理解透,分析設計到位,讓學生把握關鍵和難度的細節(jié),增加學生的探奇心,激發(fā)學生能自覺學習、研究的興趣,便于學生加深理解。社會需要以學生的實際學習效果或實際水平來檢驗教師或指導老師的實際水平高低,而不是教師的自我感覺良好。
以往教學中,一般通過兩種安排做實驗:一種是全部把理論課上完或上完大部分后,安排一定次數(shù)和時間上機實驗。另一種是上一段理論課后,依進度交替安排一系列實驗。前者易形成學生應付課程作業(yè)任務,不求與實際結合,不求甚解,只要結果正確就行,未聯(lián)想到可給今后實際工作帶來多少可借鑒之處,沒實際掌握,效果不如后者。后者雖有一定進步,但仍存在課堂難點的理解問題,大學課堂授課知識的保有量多,內容多,有的節(jié)次還可能出現(xiàn)難點多,學生的理解力和注意力不盡相同,不能保證學生對課堂的所有內容通過課堂一下子真正理
解,可能有脫節(jié)現(xiàn)象或隔層出現(xiàn)。倘若教師的授課內容不切實際,針對性不強,不和專業(yè)結合,易引起學生走神、不重視和未掌握的問題出現(xiàn),效果也不盡滿意。
針對以上問題,采取每周都有1次在實驗室上師生交互上機課,時間進度為現(xiàn)場交互式理論教學和上機編程調試程序各占1/2。學生預先在課下準備一定的解決某些問題的程序。教師在實驗室現(xiàn)場技術環(huán)境場景授課,與學生進行面對面技術交流。此方式對教師的知識、技術、實際動手能力和分析解決問題能力要求極高,是檢驗能否把握技術前沿,是否有扎實的基本功和理論知識正確與否的試金石。要求教師按正確的目標引導學生掌握更多。經過和學生現(xiàn)場面對面的實際交流,每周都至少有1次高質量的上機和師生交流時間,學生對抽象和疑難的問題理解能力大為提高,能很快鑒別出錯誤,積極在課后主動學習,自學鉆研,并給教師帶來一些難以解決的題目,同時聯(lián)想引發(fā)出一些專業(yè)實際問題,要求用計算機c++程序設計編程解決;或學生自己解決,求助教師指導完善和提高。使教學相長,教學和實際結合,實際應用能力提高,收效很好。
學生感到c++有些抽象的原因是沒經實際編程的上機體會理解。課堂教學與上機動手密切結合后的思考、領悟、歸納、總結,將利于疑難問題及時解決,能加深理解和消化。按學生和教學的需要進行上機實驗,實行師生計算機平臺編程問題交流,解決學生中編程問題,也可使學生以后應用時能有所借鑒。
畏難是因為多因素綜合作用,矛盾、問題和各種約束條件與數(shù)學模型、算法、程序結構、數(shù)學運算、數(shù)據(jù)處理、關系運算、邏輯運算等關聯(lián)可能交織在一起,龐大、錯綜復雜令學生費解。這種情況不妨采用Fermi Prob—lem解決。深化問題和新的知識需漸進式加碼進行,通過不同的程序實例讓學生理解知識,掌握和理解難點和新技術。經過大量不同類型的實例,使學生學會程序分析以及對不同問題的建模、程序設計和編程實現(xiàn)。
在課堂及與學生面對面的技術交流中,可采用香港科技大學蘇家培教授等使用的問題導向模式,在使用此模式的過程中,以和不同專業(yè)結合的多個不同問題或切身問題引導學生思考,讓學生思考問題所在,自行找出解決問題或難題的素材,并通過同學、師生間的討論、交流來吸取新知識,掌握解決問題的思考方法,通過實際訓練加以提高。當一批學習優(yōu)秀或中上水平的學生學習出現(xiàn)質的飛躍后,由于學生中有相互交流、促進、激勵和攀比作用,會使中游上進,下游更加努力,上游做得更好。
當然不能保證學生僅通過54學時的理論課和18課時的實際上機課就都能編制大的c++程序,完全獨立進行c++程序設計。要讓學生懂得,學好c++程序設計,需要以學會后為契機,經常應用、使用,不斷編寫各類程序,甚至小程序。如學生可通過課外科技活動小組的課余或課外活動編制小程序;通過參加全國、省級的電子競賽或數(shù)學建模競賽提高實際編程能力;通過假期參加社會活動,為中小企業(yè)編程;通過畢業(yè)設計環(huán)節(jié)等進行訓練。在校期間,經常參加c++程序設計的編程,通過多種方式和各種可能的渠道,利用和把握機會,持續(xù)進步,持續(xù)改進,使c++程序設計能力不斷提高。在入門后,最好能經過一個大的實際C++編程項目的鍛煉,才能體會到c++程序設計的真諦。利用和實際結合的機會學習c++程序設計,是不斷提高學生自身c++程序設計實際編程能力的一種最好的鍛煉和檢驗。實際工作鍛煉中如有問題,可及時反映給動手能力強的老師,及時解決,幫助學生提高實際能力,也密切了企業(yè)與學校間的關系。
對于沒有經過大的c++程序設計實際項目鍛煉的教師不能嫌棄,也不輕易放棄,只能在實踐中不斷提高。而且這種提高應是主動的,而不是被動、強制或表面形式的。因為只有參加過大中型軟件項目的人才會體會到c++程序設計的優(yōu)越性,才有可能把c++程序設計講清,利于消除教學中教與學間的隔層。對承擔c++程序設計的教師而言,至少要參加過一次大中型科研項目的實際編程,并能經常性地進行一些科研性、教學上的技術和學術的問題探討,把業(yè)務搞精,務求與最新技術同步,適應最新技術和有關協(xié)議編程,便于教學生時能解決實際問題,把本專業(yè)的應用程序編好。當然有些教師不一定有參加過大中型軟件設計的機會,但通過其他方式潛心鉆研,不排除由其他途徑達到一定目標。c++程序設計要教好不同的對象,就一定得用最先進的方法并具備基本技能,并非有人理解的是計算機語言類程序教學問題而忽略教與學間的隔層問題。
3產生實際效果分析
通過師生面對面的實際實例教學,檢驗學生在科研項目實際表現(xiàn),學生自己鑒別c++程序設計編程能力明顯提高;學生間相互合作鑒別,同學問相互感到彼此進步明顯;專業(yè)教師鑒別感到學生動手能力,理解能力,技術潛能,可塑因數(shù),完成任務明顯增強。經使用本專業(yè)相近項目實例,實驗實例,升華提高實例后感到學生進步很快。已參加工作的一些畢業(yè)生經過社會鑒別,得到多數(shù)高科技企業(yè)和開發(fā)單位的認可。
在某研究所用Microsoft Visual C++6.0開發(fā)網絡應用軟件時,曾帶過某高校畢業(yè)的一名計算機科學與技術專業(yè)的學生,該畢業(yè)生在校學過c程序設計,但讓編程時好像未學過一樣,在經歷了3個月的嚴格訓練和傳幫帶后,提高明顯。他深有感觸地說,這樣跟著實際學3個月比原在大學所學3年的東西還要多。為何會有如此情況?關鍵是參加了實際項目中的C++程序編程,除要求嚴格,一階段一個目標,傳幫帶在實踐中不斷提高外,技術知識與實際密切結合,面對面的技術交流與指導是不斷提高的一個根本原因。
4結論
經過數(shù)年在教學和工作實際中采用上述方式、方法進行教學,帶本科生、研究生等實踐,收到了好的效果。至今仍有很多畢業(yè)生、企事業(yè)單位的技術本員通過現(xiàn)場、網絡、電話和E—mail等方式要求指導或咨詢,解決實際程序或系統(tǒng)中的問題。這說明學習確實需要終身學習和能見到實際效果的互動,運用得當,可以實現(xiàn)教學相長。若方式、模式、方法到位,教與學間隔層可消融,對實際有促進作用,能產生長期效果,有一定的推廣價值。