伍春香++杜卓敏++何炎祥
摘 要:針對目前大學畢業生難以適應畢業后進一步研修和實際工作需要的現狀,分析大學階段學生培養的實質,闡述普通課程與專業培養目標之間的關系以及普通課程在大學生素質培養中的重要性,介紹編譯原理課程中大學生素質培養的教學實踐。
關鍵詞:教育的目的;大學生素質培養;專業培養目標;課程教學;編譯原理教學實踐
0 引 言
近期,不斷有報道揭示中國留學生在海外求學過程中暴露出來的一系列問題,如考試作弊、作業抄襲、動手能力低下、公民素養缺失等。與此同時,國內高校的教師也在抱怨本科畢業設計難帶,招收的碩士甚至博士素質達不到預期,難出成果。
大學生應具備哪些素質?大學教育可以培養哪些素質?普通課程的教學過程又該怎樣培養學生的素質?這是每個高校教育工作者都應該認真思考的問題。
1 大學生應具備的素質及其培養
1.1 大學階段的培養目標
廣義地說,教育的目的是培養一個人應具備的在這個世界正常生存的各種能力和素質,包括工作、生活等各方面基本素質和能力的養成。
不同的教育階段,教育的目的體現為不同階段的培養目標。大學階段,教育的本質是使每個學生能夠成為更完善的“人”,但重點在生存能力的培養,具體為專業知識和技能的學習與鍛煉,即每個專業的培養目標描述的內容。
如果用一棵樹來表示“人”在各個受教育階段習得的知識及其關系,那么,大學階段的專業知識應該在樹的主要枝干處,碩士教育和博士教育對應的素質和能力培養,則相當于小的樹枝和樹葉,見圖1。
1.2 大學階段的素質培養
大學階段的培養手段,主要是課程教學,分為通識課程學習和專業課程教育。通識教育旨在培養學生的思考能力、交流思想的能力、作出恰當判斷的能力和辨別價值的能力,專業教育旨在培養學生將來從事某種職業所需的能力[1]。
大學階段專業課程的系統學習,可以使學生對整個學科有一個初步了解,建立學科的知識結構體系,并具備可用于求解相關領域問題的基本專業技能,注重職業能力的訓練。這些素質將為研究生階段的科研活動、工作階段的技術任務奠定基礎。
ACM和IEEE發布的《計算機科學課程體系規范2013》明確指出:計算機科學本科生教育應該使學生為未來的工作做好全面準備;這些素質和能力的培養,是通過大學階段通識課程的學習經歷和專業課程的教學活動綜合作用達到的。這種培養,不是由某一門或某幾門必修課的修習完成的,而是所有課程的教學活動長期綜合作用實現的,即每門課程的教學活動在學生素質和能力的培養方面都是責任重大的,也是非常有意義的[2]。
換句話說,每門課程都可以精心設計成培養學生綜合素質的“沃土”。但是,這有賴于每位教師對教育目的的正確認識,也有賴于每位教師對課程教學的責任和意義的認識以及每位教師對教學活動的設計與付出。
CS2013有這樣的內容闡述:事實上,學生的軟能力(soft skills,如團隊合作精神、口頭及書面表達溝通能力、時間管理能力、問題解決能力、靈活應變能力等)及個人素質(如對風險的承受能力、合議共治能力、忍耐力、職業道德、機會的辨識力、社會責任感、對多元化的理解等)在未來工作中將起到至關重要的作用;一部分軟能力和個人素質(比如忍耐力、時間管理能力、職業道德、對多元化的理解等)將通過大學的學習生活獲得,其他部分則需要通過具體的課程教學活動來培養[2]。
大學階段培養方案的落實、對學生綜合素質和能力的培養,是通過每一門課程的教學活動來實現的,這也是每位任課教師的責任和工作意義所在。
2 通過課程實踐環節培養學生的綜合素質
2.1 以領域問題求解引導理論與實際相結合
計算機專業的核心課程,其知識的講授一定是圍繞著專業原理的。如何讓原理知識深刻影響學生問題求解的思維,并被學生實質性地掌握,一直是筆者思考的問題。
英國著名教育學家、數學家、哲學家懷特海在《教育的目的》[3]中提出:“在大學教育中,綜合運用精神應占主導地位。”他認為:“在中學里,學生通過艱苦的努力,從特殊具體的事實到初步了解一般的概念;而在大學,他們應該從一般概念開始,進而研究如何將這些概念應用于具體的場合。一種設計得很好的大學課程是對普遍規律進行的廣泛研究。我的意思是,應該對具體的事實進行研究,讓它們說明一般的概念。”他還認為:“必須不斷發現方法的通用性,并將這種通用性與某一特定應用的特殊性進行對照。”
在這樣的理念指導下,筆者重新設計了編譯原理課程的教學,將理論課堂的程序設計語言編譯原理知識應用到課程實踐中的領域問題求解。
理論課堂教學仍然圍繞著編譯程序的理論依據、程序實現原理、具體實現算法的分析與討論,注重以動畫形式和生活實例來減輕抽象內容帶來的陌生感。
在課程實踐部分,除了編譯技術的實現,還啟發學生探索編譯理論、方法和技術在各種應用領域問題求解中的實際應用。比如,課程介紹的程序設計語言的翻譯原理、技術和方法,完全可以用于實現試卷分解及題庫的生成,此時,待分析的不是程序,而是一份滿足要求的試卷,待生成的不是程序對應的目標代碼,而是容納各種試題及其答案的試題庫。依隨課堂教學內容的進度,可以對應地引導學生思考領域問題求解的步驟,然后落實到具體應用問題求解過程。表1為把編譯方法應用到實現題庫生成系統的學習過程。
在這一思路的引導下,學生尋找各種領域問題作為課程實踐求解的對象,例如,網絡傳輸協議解析、簡言作詩機、文檔編輯器、測試自動化、文檔排版、作業自動批改評分、漢語自然語言處理、惡意腳本查殺、音樂簡譜處理、邏輯門電路繪制、漢語英語翻譯、自動閱卷系統、XML文檔解析、中文識別、郵件地址識別、模式識別、游戲腳本處理、MIPS指令解析、JSON解析、身份證號碼的識別與利用等。endprint
整個實踐過程中,學生自主選題,教師引導學生分析、尋找這些“領域問題求解”與“程序設計語言編譯”的共性,指導學生用文法表示領域問題對象的特點,再選用編譯技術實現該問題的求解,并將這個過程撰寫成研究性課程論文。通過課程實踐,學生完整地做出了一個“應用領域問題編譯器”,學會了將具體問題抽象成具有共性的“類問題”,實踐了編譯技術的實現,達到了將理論知識學習與領域問題求解相結合的目的。
課程實踐中,教師給定實踐要求,比如要做哪些任務、要達到什么標準、如何驗收、成績如何評定等,具體解決的應用領域問題,由學生自己確定。當學生考慮什么樣的問題可以用哪一種編譯方法予以解決時,就不得不思考、分析、比較和選擇,雖然該過程中會和教師交流想法,但主要部分還是自己完成。對于習慣于由教師安排一切的學生來說,這無疑是一個鍛煉主動探究精神的好機會。
課程引導學生將理論知識應用到不同應用領域的問題求解,讓學生看到實際問題如何抽象成“類問題”,如何用課程講授的“類問題求解方法”解決應用領域的“類問題”,不僅幫助學生認識到形式文法和語言只是具體問題的抽象反映,有助于其深入理解計算機學科問題求解的抽象描述、處理的實質和理解“類”計算;而且,分析、設計領域對象文法,選擇編譯方法予以實現的過程,還讓學生學會了如何分析具體問題,如何確定問題的求解步驟,如何選擇已學知識應用于求解具體問題,這些實踐內容充分鍛煉了學生分析問題、求解問題的能力。
2.2 以研究性論文培養基本學術素養
在引導學生將課程知識用于求解應用領域實際問題時,還要求學生將問題求解的實踐過程寫成研究性論文。為培養學生的基本學術規范意識,課程發布了研究性論文模版,其中完全按學術論文的要求設定各個部分,同時將《武漢大學本科生畢業論文(設計)書寫印制規范》作為文字格式、圖表、參考文獻引用與標注等方面的評分依據。
撰寫論文過程中,學生需要查找與閱讀文獻,學習和參照科技論文規范,還必須根據成績評定標準遵守基本學術規范,比如引用他人成果必須標注參考文獻等。這個過程,讓學生建立了基本學術規范意識,為后續畢業設計的論文撰寫以及研究生階段的學習奠定了論文寫作基礎。
3 以“探究式”課堂教學培養學生主動思考的習慣
美國著名哲學家、教育家約翰·杜威認為,知識的獲取不是個體旁觀的過程,而是“探究”的過程,知識是個體主動探究的結果。現實中人們的經驗也印證了這一觀點,但許多高考體制訓練出來的學生已逐漸失去主動思考的意識,習慣于一切聽教師的講解和安排。
只有具有主動思考習慣的人,才能主動、積極地參與學習、工作和社會生活,才有創新的可能。為培養學生主動思考的習慣,編譯原理課程采取了“探究式”的教學模式,期冀在培養學生主動思考問題上做一些努力。為此,教學思路應從如何把知識點講解得生動、易理解,轉變為如何在教學過程中培養學生的主動思考習慣和解決問題的能力。
基于這一思路,每個主要知識點的教學模式為:講授知識點前,教師先提出若干問題,由學生思考、討論,提出解決方案;然后,師生討論學生提出方案的優缺點;最后,教師分析教材上的方法。例如,在講授“推導”概念時,先引導學生思考,討論用什么樣的數據結構表示符號串;當學生提出不同的數據結構方案后,再引導學生思考“推導”過程中符號串變化的特點,由此分析不同數據結構表示符號串的優缺點;經過這一過程,學生自然得到最合適的數據結構應該是“棧”,而且看到了數據結構課程所學知識如何應用于解決實際問題。這樣的學習過程,學生通過自己的思考、分析、比較得到了最后的結論,和教師直接告訴學生采用“棧”來實現“推導”相比,雖然最終都得到同樣的結論,但這個思維過程是寶貴的,學生通過分析性的思考得出結論,既感受到了自己得出結論的成就感,也培養了思考能力。
雖然在課程教學最開始的兩、三周,很多學生不適應這樣的思考方式,但隨著時間的推移,大多數學生逐漸習慣了自主“探究式”的教學模式,養成了學習中先自己主動思考的習慣,在分析過程中,也學會了如何評價、比較不同的方案,有助于批判思維的形成。
4 通過自主學習培養學生的學術素養
為落實能力培養,課程安排了少部分內容作為自主學習內容,由學生自己學、自己講。
程序設計語言中有一類是“嵌套結構語言”,由于“嵌套”特性的存在,使編譯程序的實現方法有所不同。但是,在培養方案中,學生學的是C語言,而C語言沒有嵌套結構,不了解“嵌套結構語言”的特點,不利于相應編譯技術的教學,但學生自學這部分內容并無難度。課程將“嵌套結構語言的特點”安排成自主學習,重點是和編譯技術相關的“子程序調用規則”“名字的作用域”等內容。要求學生學習之后,寫成小論文,并制作PPT,從中選擇優秀者在課堂上向同學們講解這些內容。
雖然只有個別學生最后作報告,但是每位學生都參與了這個環節的所有準備工作,鍛煉了文獻查找與閱讀能力、PPT制作能力、報告準備能力,這些都是畢業設計以及后續學習必不可少的基本學術素養。
5 結 語
大學生這個年齡,雖然在很多問題上是有主見的,但確實對一些問題的認識還比較模糊,對未來適應學習、工作、社會生活需要哪些素質和能力也不一定有清晰的認識。這就需要家庭、教師、社會在其成長過程中予以適當的引導,這也是為什么學習是需要采取一定“強制”措施的原因。
愛因斯坦說,教育就是一個人把在學校所學忘光以后剩下的東西。對學生來說,接受教育,不僅僅是學習知識,更重要的是鍛煉能力和培養素質。大學階段每一門課程的教學,就是學生素質和能力培養的直接承擔者。
圍繞著培養學生素質和能力的主題,編譯原理課程采取了一系列的教學探索。通過引導學生將課程知識應用于領域問題求解以及課程的“探究式”教學,培養了學生的主動探究精神、分析問題的能力、實際問題的求解能力、評價不同方案的能力;通過研究性小論文的撰寫,培養了學生文獻查找與閱讀能力,幫助學生了解基本學術規范以及科技論文撰寫方法;而自主學習過程,對學生文獻查找與閱讀、PPT制作、口頭表達、報告準備方法等都有一定的鍛煉和提高。
最近一輪課程教學結束后的不記名調查問卷顯示:在“課程學習的收獲”這個問題上, 95.45%的學生覺得課程收獲比較大;在“哪些環節讓自己收獲很大”這個問題上,65.91%的學生認為課程實踐環節收獲很大,45.45%的學生認為自主學習環節收獲很大,56.82%的學生認為課堂授課的收獲很大。統計數據能說明一些問題,但是不能反映全部內容,畢竟學生沒有足夠的經驗和經歷去判斷目前課程學習中的收獲與自己未來的關系。百年樹人,一些教學措施對人的影響還需要長期的實踐來驗證。
現代科學研究以及工程實踐中的很多問題,并非單個個體在短時間內能夠完成,需要團隊分工協作。下一步,課程教學方法改革的方向是課程實踐的分層次和團隊化:將課程實踐項目按難度分成不同的層次,鼓勵學有余力的學生選擇高難度題目;嘗試加大課程實踐項目的工作量,要求以團隊方式完成課程實踐,包括小組選題可行性分析、方法討論與選擇、最終編碼實現等環節,以培養學生的團隊合作精神和協作能力。
參考文獻:
[1] 哈佛委員會. 哈佛通識教育紅皮書[M]. 李曼麗, 譯. 北京: 北京大學出版社, 2010.
[2] Computer Science Curricula. The joint task force on computing curricula Association for computing machinery (ACM) and IEEE computer society[EB/OL]. (2013-12-20)[2017-06-20]. http://www.acm.org/education/CS2013-final-report.pdf.
[3] 懷特海. 教育的目的[M]. 徐汝舟, 譯. 北京: 生活·讀書·新知三聯書店, 2002.
(編輯: 孫怡銘 )endprint