王進 陳建平 王春明
摘要: 圍繞C++程序設計課程教學目標,精心挑選教材,靈活組織課堂教學內容;改進教學方法,靈活運用案例教學法、任務驅動教學法、反思性教學法等方法;改進評價方法,全面客觀地評價學生的程序設計能力。教學實踐表明,以上這些方法對于培養學生的應用能力收效明顯。
關鍵詞: C++教學; 應用能力; 案例教學法; 任務驅動教學法; 反思性教學
中圖分類號:G642.0文獻標志碼:A 文章編號:1006-8228(2012)11-51-02
Application on capacity-oriented teaching of C++ programming
Wang Jin, Chen Jianping, Wang Chunming
(School of Computer Science & Technology, Nantong University, Nantong, Jiangsu 226019, China)
Abstract: To achieve the goal of cultivating application-oriented students, teaching materials should be carefully selected, and the contents in class should be flexibly organized. The teaching methods should be improved. Flexibly using case teaching method, task-driven teaching method, and reflective teaching method is needed. Evaluation methods need to be improved to comprehensively and objectively evaluate students programming skills, and lead students to develop their application capacity. The practice shows that these methods work well.
Key words: C++ teaching; application capacity; case teaching method; task-driven teaching method; reflective teaching
0 引言
C++是兼容C的面向過程和面向對象的主流程序設計語言,廣泛用于編寫各種應用軟件,廣泛用于程序設計、數據結構等課程的教學。“C++程序設計”是高等學校普遍開設的計算機核心基礎課程,由于該課程理論性、綜合性和實踐性強,使不少學生感到非常吃力。筆者根據親身教學經驗,討論C++授課過程中出現的問題,并探討相應的解決方法。
1 C++教學面臨的問題
作為本二類院校,我們每年為地方輸送大量的計算機專業高級應用型人才。“C++程序設計”課程是為計算機類專業大一學生開設的一門專業基礎課。很多學生反映該課程難學,每年都有大量的學生不及格,有的學生因此失去興趣、失去信心。有一些學生雖然堅持學完了該課程,勉強通過了考試,但是卻不會設計程序,還有些學生雖然能夠進行程序設計,但是沒有養成良好的編程風格和習慣,不利于以后的就業和發展[1]。
從用人單位的反饋來看,大學畢業生主要有以下兩個方面的欠缺:①專業知識不夠扎實。很多畢業生對專業一知半解,就業后還需要企業培訓來完善和提高,而企業需要的是招之能用,而且好用的人才。這直接造成“中間差”的局面,即畢業生很難找到合適的工作崗位,同時,企業招不到合適的人。②應用能力水平低下,即實踐動手能力不強。很多畢業生的能力停留在書本上,不能真正解決實際問題。
2 確立“面向應用”的目標
我們分析產生上述問題的原因主要有兩個:①學生缺乏自主學習能力。學生經過了長期的應試教育訓練,已經習慣了填鴨式的教學,失去了自主學習能力和創新能力[2];②教師教學內容和教學方法單一,沒能因材施教、因課施教。這樣最終造成了學生學習吃力、老師教學費勁的局面。
筆者認為,根據教學現狀和C++課程的特點,必須確立“面向應用”的目標。只有面向應用了,學生才能提高動手能力、找到好工作,從而增加學習動力;只有面向應用了,學生才能感受到C++課程是貼近生活的、不是枯燥無味的,從而激發學習興趣。
要實現“面向應用”,首先要調查清楚社會對IT人才的需求,然后再調整教學內容和教學方法,培養學生的應用能力。為了讓學生理解面向對象的程序設計思想,掌握C++的程序設計方法,并能夠解決實際問題,我們精心組織了教學內容,并改進了教學方法。
3 精心組織教學內容
首先是精心編著教材。市面上有關C++程序設計的教材非常多,但是良莠不齊,有的太難、有的內容太多。筆者所在的教研室多年來一直從事C++程序設計的教學、研究、建設和軟件開發,我們閱讀了國內外大量C++教材,積累和總結了多年的C++教學經驗,編寫了教材《C++程序設計教程》[3],該書按程序設計方法演進發展的自然順序及C++實際編程能力形成的三個關鍵期,將C++教學內容分為三大單元,即結構化程序設計、模塊化程序設計和面向對象程序設計。這樣組織書的內容,可使教學過程由淺入深、循序漸進,符合學生的認知規律和編程能力的形成規律。
其次是靈活組織課堂教學內容。教材的內容幾乎是固定不變的,而IT技術日新月異,社會需要不斷變化,學生的學習能力存在差異,所以需要我們根據實際情況,靈活地組織課堂的教學內容。例如,為了讓學生了解到社會的需求并激發其學習熱情,我們會在課堂上展示國內外著名IT公司的招聘要求和薪酬情況;為了讓學生對一些知識點有感性的認識,我們會補充一些更加形象的例子。
4 改進教學方法
有了適當的教學內容組織,再加上好的教學方法,可以大大提高教學的效果。在教學中,我們使用了案例教學法、任務驅動教學法、反思性教學法等方法。
案例教學法是一種以案例為基礎的教學法,它非常適合用于程序設計的教學之中。在教學中,我們選擇盡可能貼近生活的、能使學生感興趣的典型案例。例如,在講循環語句的時候,先講了德國數學家高斯的一個故事(這個故事是說高斯在10歲的時候就能夠用很短的時間算出從1加到100的結果是5050,讓他的老師非常吃驚),然后再引出用C++的循環語句解決這個問題,學生就非常有興趣。又例如,在講條件語句的時候,先講了一個笑話:“老師問小明‘如果你考試不及格,你的父母會怎么對待你?小明回答:‘80分以下是女子單打,70分以下是男子單打,60分以下是男女混合雙打!”,學生開懷大笑之后再讓他們用條件語句實現該例子,學生的印象就非常深刻。
任務驅動教學法就是在學習C++程序設計的過程中,學生在教師的幫助下,緊緊圍繞一個共同的任務活動中心,在強烈的問題動機的驅動下,通過對學習資源的積極主動應用,進行自主探索和互動協作的學習。任務驅動教學法是一種建立在建構主義學習理論基礎上的教學法,它將以往以傳授知識為主的傳統教學理念,轉變為以解決問題、完成任務為主的多維互動式的教學理念。學生在經歷了長期的應試教育之后,學習的主動性已經大大減弱,我們使用任務驅動教學法試圖提高學生的學習主動性。我們在每次課結束之后,給學生們分組布置任務,這些任務的應用背景很強,例如編寫簡單的加密算法,編寫青年歌手大獎賽的評分軟件等。任務完成得好的學生不但會在課堂上得到表揚,而且會得到更高的平時分,所以學生完成任務的積極性很高。學生接受任務之后,通過看課本、查閱圖書館書籍、網絡搜索等多種途徑來解決問題,逐漸掌握了自主學習的本領,同時也增強了學習的興趣。
反思性教學是20世紀80年代以來現代教育改革中迅速興起的一種教學理論[4]。它以不斷反思教學程序為手段,探究教與學過程的合理性和可行性。反思性教學具有較強的科學研究性質,不是機械地按照教材和教學大綱要求來組織教學,而是在領會教材和教學大綱的基礎上,不斷地發現教學中的問題并采取有效措施應對,逐漸優化教學方式,使得教學更合理化。教師只有以研究者的姿態進行教育教學,才能在教學中不斷地發現問題、解決問題。筆者在教授C++程序設計課程的時候努力嘗試反思性教學。在教學前反思,筆者考慮了本二學生和本三學生學習能力的差異,將教材內容條理化、知識點分類,確定重點和難點,然后針對本二學生和本三學生分別進行教學設計。應該說,教學設計再完整也難面面俱到,在教學設計中原先精心設計的應用案例也許學生并不感到形象生動。所以我們強調在教學中反思,教師及時地對突發問題進行反思,對出現的問題不斷地做出決策,及時調整,從而保證教學順利有效地進行。同時我們需要教學后反思,對教學效果進行評判,回憶并記錄教學過程中發現的問題和困難,研究其解決方案。教學后反思需兼具批判性和創新性,既要對教學進行總結和評價,又要研究解決問題的措施,更新教學內容或者教學方式。
5 合理評價學生
學生學習評價體系不完善是一個比較突出的問題[5]。筆者以前在教學中運用得最多的評價方法就是“考試”,認為考試成績可以體現學生的所有學習情況。通過一段時間的實踐之后,筆者發現這樣的評價是不科學的,有的學生考試分數很高,但是不會編程;有的學生編程能力很強,但是考試的分數卻不高。這種怪現象引起了我們深深地反思,評價方法在一定程度上是學生學習方向的指揮棒,不合理的評價方法可能會導致產生更多的高分低能的學生。我們對評價方法進行了改進,把評價滲透到每一個教學環節中,將書面考試成績、分組任務成績、上機實驗成績和課堂表現成績綜合起來,全面客觀地評價學生的程序設計能力,使教學與評價真正融為一體,讓評價方法真正起到培養學生應用能力的導向作用。
參考文獻:
[1] 何靈敏,許翔,陸慧娟.C++教學中編程習慣的養成[J].計算機教育,
2011.9:64-67
[2] Chen Jianping,Wang Jiehua,Gu Xiang. Reform of Undergraduate
Education of Computing Discipline for Local Universities[C]//Proc.Of Int. Conf. on Computers and Advanced Technology in Education,Hawaii,USA,2010.
[3] 陳建平,劉維富,葛建芳.C++程序設計教程[M].高等教育出版社,
2007.
[4] 劉曉華.反思性教學與教師專業發展的研究[M].華東師范大學出版
社,2005.
[5] 孫娜.基于啟發式的Visual C++程序設計教學改革[J].計算機教育,
2011.22:29-32