孫瑜
(西安科技大學 計算機學院,陜西 西安 710054)
注重實踐的程序設計課程教學
孫瑜
(西安科技大學 計算機學院,陜西 西安 710054)
怎樣讓學生感興趣,怎樣做才能喚醒學生的力量,提高學習的積極性,是課程改革能否成功的一個關鍵。“程序設計不是聽會的,也不是看會的,而是自己上機練會的。”動手才是化難為易的金鑰匙,實踐是能力賴以生長的土壤,實踐出真知,實踐長能力。
程序設計;實踐;興趣
《C/C++語言程序設計》是計算機學科體系中的核心課程之一,主要講授程序設計語言的基本知識和程序設計方法,使學生了解高級程序設計語言的結構,掌握程序設計的思想和方法,以及基本的程序設計過程和技巧,具備初步的分析問題和利用計算機求解問題的能力。課程核心是培養(yǎng)程序設計能力,加強實踐是培養(yǎng)設計能力的重要途徑。本文基于教學中存在的問題,從案例驅動教學、注重實踐教學等兩方面探究如何在實際教學中提高學生的學習積極性和思維能力,實現(xiàn)學生從單純的程序編寫到解決實際問題能力的轉變。計算機程序設計類課程實踐性很強。實踐性強體現(xiàn)為無論多簡單或多復雜的程序設計問題都要形式化為數(shù)學式子或相應的操作步驟,最終都要編寫程序,開發(fā)出能夠解決相應問題的計算機軟件;學習該類課程既要注意學習好理論,更要注重進行實際上機操作的訓練,運用理論知識進行程序設計解決實際問題,做到理論與實踐相結合。
本文對2011、2012和2013年度參加C和VB二級考試的一年級理工類學生做了抽樣統(tǒng)計(數(shù)據(jù)來源為西安科技大學大學教務處),結果表明報考率和通過率差強人意,尤其是C語言,9個班級中通過率在50%以上的只有3個班級,最低的通過率僅為17.3%。通過問卷調查的方式獲悉學生普遍對C語言的學習有畏懼心理。程序設計類課程理論性抽象性較強,語法知識繁多,結構復雜,調試程序更是初學者的“攔路虎”,學生往往難以理解程序設計的思維方式,對教學內容似懂非懂,而掌握良好的程序設計方法則更加困難;采用傳統(tǒng)的教學方法講解課本上的內容難以調動學生的學習積極性。主要原因主要有以下三方面:第一,教學重理論輕實踐,過分注重計算機語言語法知識的講解,輕視了算法設計、邏輯思維和編程方法的培養(yǎng);第二,學生計算機編程能力有待提高,大多數(shù)學生基本上是初次接觸計算機程序設計,習慣采用數(shù)學思考方式來進行程序設計,還沒有真正掌握計算機編程的基本思路;第三,實驗課時不足,實踐課時通常是理論課時的一半,大部分專業(yè)是16個學時,這樣的學時安排遠遠不能滿足學生能力培養(yǎng)的需求。教學要以學生為中心,要讓學生容易接受理解。教師只有從學生的角度體會“學”之困惑,反思“教”之缺陷,才能明了如何通過“教”幫助學生學習,體現(xiàn)現(xiàn)代教育以人為本的思想。程序設計基礎課程對許多學生來說,是第一次接觸編程,因此,學生往往難以理解程序設計中分析問題、解決問題的方式,尤其是抽象思維。所以,教師不但要研究教學內容,更要研究教學對象——學生,根據(jù)學生的學習特點,研究教學內容傳授中重點和難點的解決辦法。
程序設計基礎教學內容的組織方式主要有兩種:以語言知識為主線、以程序設計為主線。目前普遍采用的方式是前者,經過一些高校多年的探索實踐,以程序設計為主線的組織方式也取得了成功的經驗。以語言知識為主線的教學內容組織方式往往以上述語言表達模塊為單位,同時考慮程序設計的學習進程來組織教學內容。典型的教學內容組織路線是:概論-數(shù)據(jù)類型和表達式(標準類型)—分支—循環(huán)—數(shù)組—函數(shù)—指針—結構—文件。以程序設計為主線的方式則重點圍繞學生程序設計能力培養(yǎng),以程序設計的學習進程為主,打破語言模塊的完整性,循序漸進地組織相關教學內容。在教學中,以語言知識為主線的教學內容組織方式重視語法知識的完整性,側重以語法的理解帶動程序設計能力的培養(yǎng);以程序設計為主線的方式則更加強調編程實踐,側重以編程帶動對語法知識的深入理解。因此,以程序設計為主線的教學組織方式往往按照程序設計的漸進學習進程,結合實際案例來組織和實施教學,將程序開發(fā)過程的相關內容貫穿和滲透到每個知識點的講授中去。一種以程序設計為主線的教學內容組織路線是:概論—初識程序設計—語句級控制(分支與循環(huán))—數(shù)組應用—模塊級控制(函數(shù))—指針、結構應用—程序設計進階(遞歸、鏈表結構)—文件應用。在采用以程序設計為主線的實施方式時,可以將課程內容分為若干漸進式的程序設計學習階段。在每個階段的教學過程中,通過案例講解程序設計的思想和方法,引出知識點,必要時再使用多種方法(如多媒體動畫)進行深入的講解與分析,并通過布置思考題和實驗題,讓學生通過學習思考和大量的上機練習培養(yǎng)編程能力,掌握知識。
問題驅動教學是圍繞教學目標,通過完成事先設置的相關聯(lián)任務(例題)來達成教學目標的實現(xiàn)。在開課前,對典型的例子演示運行結果,激發(fā)學生的學習興趣,明確學習任務和目標;在課堂上,將本次課程的內容和知識點通過幾個具體的任務表現(xiàn)出來,引導學生在完成任務的過程中掌握所涉及到的理論知識,并注重反例教學,讓學生“吃一塹,長一智”。這種教學方式學習目的明確,任務清晰,能極大地調動學生的學習積極性,對教學效果的提高起到非常明顯的促進作用。

圖1 問題驅動的教學流程
模仿創(chuàng)新即通過模仿而進行的創(chuàng)新活動。在《C/C++語言程序設計》課程中,模仿體現(xiàn)在學生根據(jù)教師所給程序進行驗證分析,碰到類似的情況和功能實現(xiàn)可以參照相應的程序;創(chuàng)新是在所給驗證性實驗的基礎上,根據(jù)新要求,實現(xiàn)新程序,并能綜合應用所學知識實現(xiàn)復雜功能程序。課程實驗教學將學生學習到的理論知識應用到實際問題。考慮到學生的基礎不同,應盡量設計有層次和梯度的實踐訓練內容,使不同水平的學生都能得到最大可能的提升。每次的實際教學設計中,可以把實驗內容分成三部分:驗證、改編和綜合。
1.驗證程序。結合案例教學方法,針對每次上課所學知識點的不同,分別提供給學生一些已包括所學知識點、實現(xiàn)實際問題、可直接運行出結果的有吸引力的案例,即源程序,讓學生自己執(zhí)行程序和查看結果,根據(jù)源程序和運行結果分析其程序中所包含的知識點及程序具體實現(xiàn)的功能,加強學生分析問題的能力。有時候源程序中包含一些常見錯誤,讓學生發(fā)現(xiàn)問題,調試程序,帶來成就感。
2.改編程序。在已給程序的基礎上,提出具體的功能改編要求,學生需要結合已學知識修改相應的程序,從而實現(xiàn)新功能。例如,學生可以通過改編“猜數(shù)字游戲”源程序,實現(xiàn)“提示猜測數(shù)字大小、每個數(shù)字最多猜7次”等功能。
3.綜合程序。在學習了基本的程序設計知識后,通過綜合程序練習同學們運用知識解決問題的能力,例如象棋游戲、成績管理系統(tǒng)、智能排序等綜合程序。基于案例的教學方式有時教師遇到問題暫時卡住時也可問學生如何解決,學生會很有興趣積極地幫助教師完成該案例的調試,這樣真正做到上下交互,教學相長。這種教學方式忌只放PPT,要當場分析和編程,不能用解說代碼代替實際開發(fā),這樣學生就更感興趣學習編程了。
1.建立“程序設計學習QQ群”。責任教師申請一個學習程序設計類課程的QQ群,所有的輔導老師和學習這門課程的學生都加入群。開學初老師把QQ群公布給學生,讓學生課后每次上QQ都能看到群里的討論。在QQ群里,學生與老師,學生與學生之間隨時隨地在網上進行討論、答疑。在學習群里“能者為師”,學生之間經常互相解答問題,這樣既提高了學生的知識水平和問題的回復率,也減輕了輔導老師的工作量。
2.定期組織學習小組之間的編程競賽。每個班按10人左右分成若干個學習小組,老師為組織者和裁判,在教學大綱的范圍內出題進行小組之間的編程競賽,由老師出一個相同的題目,小組內的成員之間通過小組群,互相協(xié)作,共同參與,最后由組長整理提交程序的結果,老師做裁判,又快又準完成程序設計的小組為勝,獲勝的小組成員每人都獲得平時成績加4分的獎勵。這種編程競賽方式能充分調動每個小組成員參與的積極性,提高學生的學習興趣,同時又能激發(fā)了學生的團隊合作精神。
3.制作“微課”形式的視頻。仿照“做游戲學英語”的形式,制作各知識點的微課視頻,在網上共享,以備學生課下自主學習。
[1]吳文虎.我怎么講好“程序設計基礎”這門課[J].中國大學教學,2011,(12):10-12.
[2]王洪波.杏壇英華——北京大學青年教師優(yōu)秀教案集[M].北京:國家圖書館出版社,2009.
[3]教育部高等學校計算機科學與技術教學指導委員會.高等學校計算機科學與技術專業(yè)核心課程教學實施方案[M].北京:高等教育出版社,2009.
[4]何欽銘.“程序設計基礎”課程教學實施方案[J].中國大學教學,2010,(5):62-65.
[5]劉芳.《C語言程序設計》教學存在的問題及改進[J].教育理論與實踐,2012,32(36):51-52.
[6]孫慧然.“程序設計基礎課”理論與實驗教學的改革與實踐[J].實驗技術與管理,2012,29(4):299-300.
G633.6
A
1674-9324(2014)22-0178-02
西安科技大學計算機學院教改項目:2013-JG-01。