趙小芳,王金鵬
(山東工商學院,山東 煙臺 264005)
山東工商學院的程序設計課程群主要包括《程序設計基礎》、《數據結構》、《C++面向對象程序設計》、《JAVA高級編程技術》、《ACM程序設計》、《程序設計實訓》等課程。這些課程都是計算機科學與技術專業的專業核心課或專業課,是以培養學生的程序設計能力為核心的。課程群所涉及的教學內容豐富、語法繁多、技術復雜,不反復實踐是很難掌握的。另外,對于這些課程所使用的程序開發工具,很多解決編譯、連接、運行錯誤的知識及動手調試程序的能力是書本和課堂上學不到的,必須要投入大量時間去實踐摸索,才能熟練運用于軟件開發。針對于程序設計課程群自身的特點,本文將從應用型、創新型人才培養的角度出發,探索并實踐適合于程序設計課程群的教學模式。
以往的程序設計課程群的教學方法大都是理論課和實踐課分開進行。理論課上基本是教師講授理論知識,雖然可以間或講解一些實例,但學生只能被動地聽和看,不能操作機器,不能動手操作,就談不上實踐。“課上聽來終覺淺”,不經過實踐得來的知識,印象很難深刻,由此造成的結果就是“一聽就懂,一過就忘,一做就懵”。而理論課之后的實踐教學,由于上述教學方法不盡如人意的效果,使得學生遇到實際問題時感到無從下手。由于每個學生的編程進度并不同步、其知識掌握度存在較大差異,所以教師也根本無法講解指導。這種理論和實踐脫節的教學對于程序設計類課程的教學來說,效果很難令人滿意,學生學完課程之后,依然不會編程,遇到程序中的問題也沒有能力解決,直接影響到后續課程的學習和學生就業。
為了促進計算機應用型人才的培養,有必要嘗試和探索新的程序設計課程群教學模式:將理論教學和學生實踐有機結合起來,使教師的授課和學生的實踐同步進行。這樣可以解決理論和實踐脫節的問題,可以將課堂上學到的東西馬上用于實踐,使印象深刻。同時,由于學生要先認真聽講,然后才能動手做,這樣就把被動學習變為了主動學習,可以極大地調動學生學習的興趣和積極性。
將教師的授課與學生的實踐同步進行,并非將傳統意義上的在機房授課——教師和學生人手一臺電腦,教師一邊講解學生一邊練習——完全貫穿于整個程序設計課程群的始終。原因在于,它要求學校必須提供足夠多的機房和足夠多的設備同時安排多門課程和多個年級的教學使用,這樣做的投資比較大;邊學邊練花費時間比較多,而程序設計課程群所涉及的內容、語法、技術豐富,在有限的學時內,通過邊學邊練很難講完全部內容;機房授課也不能充分利用學生的業余時間。為此,我們改革現有的教學平臺,嘗試使用多種教學方法和手段,充分地將理論授課和實踐練習有機結合起來,提高學生的編程能力。
1.教學平臺。我們嘗試使用目前國內流行的一種Online Judge(在線測試)系統,該系統提供了一個編程平臺,內含大量ACM競賽題目(ACM是由國際計算機界歷史悠久、頗具權威性的組織ACM(Association for Computing Machinery,國際計算機協會)主辦的,世界上公認的規模最大、水平最高的國際大學生程序設計競賽),并可任意擴充。Online Judge系統的硬件比較容易實現,只要有計算機且能夠聯網即可。隨著本學院教學環境和教學條件的改善,目前已經具備了嘗試這種教學模式的硬件條件。借助于這個平臺,學生可以充分利用自己的課余時間和上機實驗課時間,隨時上網做題,一旦提交答案,馬上可以知道對錯,這樣極大地調動了學生的學習積極性和主動性,大大提高了學生的實際編程能力。
2.多種教學方式配合使用。為了配合在Online Judge平臺下進行計算機專業程序設計課程群的教學,我們嘗試、歸納、總結若干種教學方法,從單一的滿堂灌的教學到討論課、案例引導、學練同步、程序驅動等多種教學方式相結合,通過連貫性、系統性的教學與實踐,增強學生程序設計的學習興趣,提高學生的程序設計能力以及創新能力。
在面授課中,遵循啟發式教學原則。通過各種教學方式和手段激發學生的學習欲望,使其在學習活動中,積極思考,發現問題,提出問題,并逐步解決問題。在課堂上還可以根據內容需要與學生情況采用問答,傳統板書配合電子教案,討論,總結等多種手段進行教學,教學效果事半功倍。
一些重要的程序設計技術知識點,采用學練同步教學方式,即采用多媒體機房上課的方式,使教師的講課和學生實踐同步進行,這樣學生可以把學到的內容馬上練習。上課過程中配合程序驅動教學法,以開發一個完整的程序案例為核心而進行教學活動。首先教師給出程序案例的框架結構,學生經過思考,選擇合適的算法和指令語句,經互相討論,完善和豐富程序案例,然后上機調試,通過運行來檢驗結果。這樣可以激發學生的創新意識,促進學生質疑,培養學習興趣,并且通過動手實踐,加深理解,牢固記憶。對于接受能力比較強的同學,空閑下來的時間還可以隨時上網通過Online Judge系統做題,鞏固所學的內容。
實驗環節重視程序項目設計,培養應用能力。實踐經驗的積累是不斷從編寫程序、調試程序和運行程序結果的過程中總結得出的。實驗課,重點讓學生在Online Judge系統中做題,做完題一提交答案,馬上就可以知道對錯,節省了很多讓老師批閱的時間。課余時間學生也可以隨時通過Online Judge系統做題,激發了學生的學習熱情,鍛煉了學生的編程能力。
3.考核方式。為了切實考查出學生的實際編程能力,結合我們所使用的Online Judge系統教學平臺,嘗試使用了如下一些程序設計課程群的考核方式:
(1)以練代考。驗證一種能確確實實促進學生實踐能力的提高,又能真實反映學生學習水平的考試方式。具體措施是:化大考為小練,邊學邊考。加大實踐環節、平時成績所占比例,將總成績分解為平時做題所取得的分數和最后考試的卷面分數。平時每個學生在Online Judge系統上提交作業所取得的分值,不低于60分,期末考試時卷面只占30~40分。這種方式可使學生隨時掌握自己所取得的分值進而估算出期末能拿到多少分數,做到心中有數,同時也能在無形中激勵先進,鞭策后進,極大程度地避免了一些學生在考試結束才后悔莫及但已無法挽回情況的發生。
(2)分數驅動。研究一種使用Online Judge系統提交作業、驗證對錯的手段和方案。將每章節的重點內容和知識點都分配到Online Judge中的習題上,每題都有一定的分值,并將這些分值作為期末總成績的一部分(60分以上),這樣可吸引或督促學生積極去編程,既有動力又有壓力。可解決學生平時不學習、最后突擊或考試抄襲的問題。其關鍵問題是需要將每個知識點都轉化為典型的題目,并對每一題目給出多種測試數據及相應的答案。
山東工商學院在2010級計算機專業學生程序設計課程群的教學中嘗試使用了Online Judge系統平臺,通過嘗試各種教學手段和教學方法,加強理論教學與實踐學習的結合,學生的學習積極性和主動性有了很大提高,實際編程能力也有了很大改善,在全省、全國的ACM程序設計大賽和齊魯軟件設計大賽等各類程序設計賽事中都取得了比往屆更好的成績,有力地促進了計算機專業應用型人才的培養。
[1] 彭潔,等.應用型本科計算機專業程序設計課程群的建設與實踐[J].福建電腦,2011,(4).
[2] 趙春艷.C語言程序設計教學方法的研究與探討[J].齊齊哈爾師范高等專科學校學報,2011,(1).
[3] 雷紅艷,等.加強程序設計課程群建設,培養計算機應用型人才[J].電腦知識與技術,2010,(6).