摘要:本文歸納了目前高職類院校中程序設計基礎課程的教學通病,結合筆者的親身教學實踐,對該課程中涉及的課堂講授、教學輔助工具選擇、培養學生編碼習慣與心理素質、課外學習激勵機制等方面提出了一些有實效性的教學思路與措施。
關鍵詞:程序設計 問題驅動 反饋 MVP計劃
引言
計算機程序設計語言的學習是高職院校計算機專業的一門重要專業基礎課。新生在入學后面臨的一道坎就是要面對計算機程序設計課程的挑戰,由于進入高職層次的學生在數學邏輯思維以及語言表達能力方面與本科院校學生比普遍有一定的差距,另外生源地差異化程度較大,學生們入學時的計算機應用水平也參差不齊,這對有志于上好該課程的任課教師確實是一個不小的難題。
1. 國內目前計算機程序設計基礎課程教學的通病
(1) 課程的教學太偏重于程序語言的語言特性,不少教師將時間精力花在語法講解上,忽視了計算機程序設計在“設計”層面上應體現對學生程序設計思想傳播與能力鍛煉。這樣的教學中心偏離帶來的后果就正如國內英語教學的情況一樣:培養出來的學生能夠通過考試,但是在動手實踐方面是個低能兒。
(2) 講授課程慣于從一般到特殊,總是按傳統的課堂組織方式從概念講起,然后進行橫向拓展,最后才來一個相應的例子演示或者練習,學生的興趣與精力一開始就被術語概念的外延內涵消耗殆盡,這難以讓學生抓住關鍵的、本質的東西。
2. 程序設計課堂面授的意見與建議
針對以上總結的教學誤區,筆者認為首先要傳授學習之道,一定要讓學生們明確:程序設計語言是程序員與計算機打交道的溝通語言,用來描述問題求解過程以及指揮計算機運算的一門工具。那么學生作為程序設計活動的主體就必須弄清楚問題域是什么,從已知條件到答案之間需要怎樣的操作步驟,程序設計的過程只是描述出“計算機”應該怎么做,而不用考慮計算機為什么這樣做。
程序設計基礎的教學就應該從特殊到一般[1]的思路開展,從問題驅動[2]著手,在介紹相關知識點的時候,應該以一個問題作為引子,這樣就調動了學生們上課的積極性。大部分時間應該用在講解從問題域到求解域的轉換過程,注重思維能力的培養,而不是代碼的編寫過程。
在程序設計語言課的講解中,程序的有機構成部分-運算操作符(賦值、比較、數值運算符、關系運算符)都可以被看作是日常生活表達中的“動作”,而這個動作后面所處理的對象——數據,也是需要講透徹的要點!其實在程序設計的學習初期,學生需要理解清楚的是“內存”這一概念,當初學者能夠把數據類型、變量、數組、常量都能對應理解為內存的不同表現形式時,自然會對目前正在進行何種操作胸有成竹。如果能理解將要被處理的數據處于何種狀態,還知道它位于何處——是在內存中、文件系統中(永久存儲器),還是在一個數據庫里面,程序的編寫就不會顯得那么虛幻了。
3. 引入對程序設計課程教學有重要意義的輔助工具
選擇一個工業級的標準化IDE(Integrated Development Environment ,集成開發環境)作為初學者的學習實踐工具是相當必要的。IDE由于功能集中并全面,可能會導致初學者不知從何下手而遭人詬病。但是IDE也有其非常優秀的一面,那就是可以大大提高代碼生產率,并且其圖形化的調試界面讓程序設計初學者更容易地檢測出程序編寫的錯誤。例如在C語言的上機工具,可選的有Dos操作系統下的Turbo C,也有在windows平臺上運行的Visual C++ 6.0。筆者建議采用后者,原因很簡單:一來圖形界面操作能夠減輕計算機操作水平低下的學生對編程操作的畏懼感,二來IDE中所提供的設置斷點與單步調試功能是編寫健壯代碼的有力輔助工具,三來工具的使用也有助于課堂教學內容的理解:在進入“程序的三種基本語句結構”的內容時,采用編譯器的單步調試工具是讓同學們理解語句結構執行過程的一個直觀明了的演示助手;調試功能還允許初學者在程序運行的過程中查看變量的值的動態變化,這樣理解變量的作用域與生存期,比起口述加板書的表達工具有效得多了。

4. 推行課外教學活動組織的激勵機制
一門課程的教學不僅體現在課堂上有限的堂上時間,教學的進程還要延續到課外,因而需要一種機制,能夠有效持續地將課堂的知識在課外得到鞏固與延伸。針對這個需求,筆者認為可以借鑒微軟公司實施多年的MVP(最有價值專家)計劃①:鼓勵班上程序設計基礎較好的同學爭當“班級最有價值專家”候選人,并支持他們在課外熱心解答后進生的疑問,最后在學期末對MVP成員進行評選與頒獎。這必將造就一個多贏的局面:
(1)獲得MVP稱號的同學可以得到指導教師物質上的獎品,另外其本人可以獲得榮譽,從幫助別人中得到自我實現。
(2) 后進生的學習障礙在課堂之外能得到大部分的解決。
(3)讓程序設計這門本來就需要鍛煉溝通表達能力的課程使得熱心的MVP候選人得到程序設計知識以外的素質鍛煉。MVP計劃中的反饋機制能夠讓指導教師更加真實有效地了解學生們對課程知識點掌握的弱點所在,并且能夠造就一個良好的循環。

5. 培養學習者的良好的編寫習慣與心理素質
培養學生從早建立寫注釋的習慣是大有裨益的。任課教師在平常的例子演示中要以身作則,即使一個完整的小程序,也應按照注釋的標準,變量命名規范做好。寫注釋所帶來的益處至少有以下幾點:
(1) 鍛煉程序員本身的表達能力,程序設計過程就是“描述解決問題過程之活動”。
(2) 作為自身代碼量積累的一個良好開始,是自身編程學習經歷、完善自身編碼風格的原始素材。
(3) 迎接日后團隊溝通與協作的一個良好開端。
我們應培養同學們堅持閱讀代碼的習慣。程序代碼是程序員對一個問題的求解過程的描述展示,初學者能接觸到更多的優秀代碼,可以從中學到更多的編程技術與技巧,而不只是局限于課本的例子。多去閱讀優秀程序員的代碼,比讀任何教材或者參加任何培訓效果都好。
在課堂內容講解與例子的演練過程中還需要注意梯度的設置。如果所選的內容太難,后進生很容易產生畏難情緒,他們可能在多次的上機失敗經歷中產生了放棄繼續學習的念頭。其實在任何一個剛剛起步的領域,我們都可能犯這樣或那樣的錯誤,然而或許在其中,最大的錯誤就是(因)過于謹小慎微(而裹足不前)。雖然我們需要盡可能地循規蹈矩,但是更重要的卻是要敢于進行試驗;只要敢于進行試驗,哪怕結果是錯的,也要比什么都不做更好[3]。我們可以引導基礎薄弱的學生從易到難地攻關,鼓勵他們要多上機、多實踐,當其親自動手完整地解決了一道上機題目,會大大增強對程序設計的自信心,從而有動力去挑戰更多的題目,追求更多的成就感。
結論
綜上所述,對于計算機學子來說程序設計能力的重要性不言而喻,計算機程序設計是一門講求動手實踐能力的課程,在培養這種技能方面需要有正確的教學理念和措施,程序設計能力水平的提高對于培養我國計算機人才具有相當深遠的意義。
注釋:
①MVP:Most Valuable Professionals(最有價值專家)是指具備一種或多種微軟技術專業知識,并且積極參與在線或離線的社群活動,經常與其他專業人士分享知識和專業技能,受人尊敬、信任,而且平易近人的專家。具體計劃見http://www.microsoft.com/china/community/Professional/MVP/mvpexecsum.mspx
參考文獻:
[1]吳文虎.抽象思維和邏輯思維是程序設計的基礎[J].計算機教育,2005,第4期:29-30.
[2]吳文虎,徐明星,鄔曉均.程序設計三人談[J].程序員,2007,第6期:113-115.
[3][美]杰拉爾德·溫伯格著.鄧俊輝譯.程序開發心理學(銀年紀念版)[M].北京:清華大學出版社,2003.