韓 娜 王 洋 關明山
文章編號:1672-5913(2009)02-0106-02
摘 要:本文結合筆者多年的教學經驗,從教學內容、教學方法、動手實踐環節和考核方式多個方面探討了C++程序設計的課程教學改革。經推廣實踐,證明這些措施能有效地提高學生的編程能力、自學能力、溝通能力和團隊合作能力。
關鍵詞:C++;教學改革;教學實踐
中圖分類號:G642
文獻標識碼:B
1 引言
隨著面向對象技術的廣泛推廣,“C++程序設計”課程被越來越多地選為高校計算機及相關專業的基礎課程。我校從2003年起開始將其作為計算機專業各個方向的專業基礎課程,并從考察課逐漸成為考試課。該課程的教學目的有二:一是讓學生建立起面向對象的思想,二是熟練掌握C++的基本語法能獨立進行相關的開發。但是以往的教學經驗表明,很多學生學完課程之后并沒有達到預期的效果,不能將學習到的知識應用于實踐,或無法將知識點連成知識面進而形成知識體系。
2 改革實踐
傳統的程序設計語言的教學一般分為兩部分:課堂理論教學和上機實踐兩個環節。理論教學更多的是教師為主,學生更多的充當“聽眾”的角色,跟著教師的思路去理解、記憶知識。上機實踐主要是用于消化課堂講授的知識,偏重于編寫功能比較單一的“小”程序,其中僅涉及到少量的知識點,同時留給學生的練習時間偏少,以至于對最后綜合型程序的編寫都無從下手。
我們采用一種全新的講、練、討論相互滲透結合的互動教學模式。將課程仍分為兩大部分:課堂教學和上機實驗。理論教學對課程的重點、難點進行講授,課時約占課堂教學的3/4;其余的1/4組織學生進行討論。上機實驗按照課程開展及學生的層次分為三個層次,逐步深入遞進。
2.1 課堂教學改革
2.1.1 “任務驅動”的理論教授
每節課開始以后老師先提出問題——給出本節課結束后應能夠解決的任務。教師將完成任務所需的知識點一一列出,要求學生指出未知的知識點,教師著重講解新的知識點、重點及難點,要求學生一起參與案例的完成,應用所需知識點并最終給出示范案例。
整個課堂教學力求學生帶著問題去思考,利用知識點去分析解決問題,并熟練掌握知識點的應用。
2.1.2 自學為主的知識面擴展
布置談論的題目或要求實現的任務,要求學生分成2~3人小組在課下查找資料,針對題目在課堂進行各種各樣的討論,或根據能力選擇任務并提出各自的解決方案,集體談論各方案的可行性或優劣性。
通過這種方式極大地提高學生的積極性,鼓勵學生利用各種方式自學,對交叉學科、前沿學科有所了解;給學生提供了一個展示自己的舞臺,并學習團隊合作和溝通的重要性。
2.2 動手實踐能力培養
2.2.1 基本知識點實驗
基本知識點的應用對于大多數同學需要經歷三個步驟:一是“模仿”,完成與案例相似的程序,在模仿中鞏固和加深對新內容的理解,同時老師可以對學生一對一講解未理解或掌握的內容;二是“修改”,在第一步的基礎上進行加工,激發學生自主學習的熱情。教師對關鍵實現提供指導性意見;三是“提高”,將一個有一定難度但未曾見過的問題交給學生,培養學生獨立解決問題的難度。教師給予啟發、引導,激勵學生進行創造性思維。
2.2.2 單元性實驗
當一個章節學習完畢后,安排一次單元性實驗。該實驗能夠將本部分內容甚至于前續內容均應用于其中。單元性實驗的題目相對稍大,并具有一定的算法設計思想。設計過程中有以下幾個問題需要注意:
(1) 題目要貼近學生生活,便于學生理解,使得學生能通過實驗解決現實生活中的問題。
(2) 綜合運用關鍵知識點,培養學生綜合應用知識的能力。
(3) 適當的工作量。單元性實驗中要求每個學生能基本獨立完成,根據學生的個體差異,提供多層次的題目供學生進行選擇。
考核時按照所選題目的難度進行評分。例如基本級(難度最低)題目最終成績應在60~70分之間,中級題目成績在70~80分之間,高級難度在80分以上。
2.2.3 綜合創新性實驗
實踐的最后一個環節就是綜合創新性實驗。要求學生2~3人自由組合,從教師給定題目中選擇感興趣并符合自身能力的題目進行設計和編碼,并撰寫最終的文檔。
該階段的實驗應具有以下特點:
(1) 題目是真實項目的簡化,由教師給出總體需求。學生對需求進行分析,并確定開發目標,制定開發計劃。學生確定的開發目標可以不局限于給定的需求,以此充分調動學生的創新思維,培養創新能力。
(2) 學生分組后由組長負責分工和給定工作量衡量標準,培養團隊合作。
(3) 學生按照開發計劃獨立完成編碼工作。教師的作用僅為答疑、開發過程監控以及對共性問題進行總結與歸納。在此過程中,學生分析問題,解決問題的能力將得到有效鍛煉。
(4) 涉及到課堂沒有接觸過的知識點時,鼓勵學生利用各種資源去搜集資料,分析資料尋找答案,培養學生自主學習能力和解決問題的能力。
最后的考核通過答辯的形式完成,答辯評委可以由老師和學生代表共同擔任。最終成績應該包括:答辯、文檔、源代碼、功能及運行結果的考評。個人成績與小組成績密切相關,先確定小組成員的最高分,根據組長對組員完成工作情況的衡量給組員打分。督促所有組員能參與綜合創新性實驗并關心整個團隊的成績。
2.3 考核和成績評定
作為一門考試課程,盡管強調課程結束后學生應用知識的能力,但筆試也是必不可少的一個環節。但是針對平時大量的實踐環節,最終將期末成績分成兩大塊:筆試成績和平時成績。筆試成績占期末成績的60%,其中除了基礎知識點的考察,還增加了大量的編程題目,將知識的應用仍放在重要地位。平時成績由4部分組成:上課表現(10%)+基本知識點實驗(10%)+單元性實驗(10%)+綜合創新性實驗(10%),其中上課表現包括上課出勤及討論課發言表現。通過這種成績的分布,督促學生重視平時的學習,改變以往考前“臨時抱佛腳”的做法。
2.4 課堂教學的延伸
課堂教學對于提高學生的知識掌握、熟練運用知識還遠遠不夠。我們應更多地將與學生的溝通互動擴展到課堂教學之外。通過以下幾種方式從多渠道延伸課堂教學:
(1) 將教師的博客作為與學生交流的主要場所,可以將課件、程序、電子教案等共享。開辟專門的板塊,將學習過程中的體會心得與學生分享,并上傳多種學習參考資料,幫助學生擴展知識面。留言板方便學生間接地與教師進行交流和探討。
(2) 組織學習興趣高,成績良好的學生成立創新小組,在教師指導下,關注新技術的發展動態,選擇感興趣的方面進行深入研究,通過備戰各類比賽,考取認證等方式,培養學生研究性和創新性學習能力。
(3) 建立專門的技術談論QQ群,建立不間斷的學習答疑氛圍,使學生能通過網絡幫助別人的同時也提升自我。
3 結論
通過一個學期的改革實踐,“C++程序設計”課程取得了良好的教學效果,越來越多的同學適應并積極參與到知識能力的應用培養過程中來,動手能力和自學能力得到了較大的提升,教學質量有所提高。
參考文獻:
[1] 白日霞. 創新教育評價體系的構建與實踐[J]. 中國高教研究,2006,(6).
[2] 張錦祥. 高級程序設計語言課程教學改革與實踐[J]. 浙江教育學院學報,2007,(7).
[3] 韓愷,賈曉輝,劉鳳華. JAVA語言實踐教學的改革探索[J]. 計算機教育,2008,(6).