摘要:本文對大學計算機程序設計課程進行了研究,針對目前教學中存在的問題,提出了大學計算機程序設計課程分層教學改革方案,從教學內容、教學手段和方法、考核方式等方面進行了改革。教學改革取得了如下效果:分層教學方案更好地激發了學生的學習興趣,學生的學習效果也有了明顯的提高;教改過程中我們對教學網站題庫進行了擴充,為今后的程序設計課程教學工作奠定了良好的基礎。
關鍵詞:程序設計;算法;分層教學;教學改革
● 現狀
當前,國內各高校普遍開設了大學計算機基礎課程,這類課程是面向大學一年級學生開設的公共類必修基礎課,其目標是培養大學生掌握信息技術處理能力、從而提高他們的綜合素質。以前,我們的教學方案是第一學期所有專業統一學習《計算機技能》,主要講授最基本的計算機常用軟件如Word、Excel、PowerPoint等的操作技能;第二學期按照專業不同分別學習各種程序設計語言如C程序設計、VB等。然而,在教學的實踐過程中,我們發現之前的計算機基礎課程培養方案存在下列問題。
由于大學新生來自不同的地區,教育資源的配給或利用率相差較大。有些經濟發達地區中小學信息技術教育已經普及了,學生的計算機技能及知識也較豐富。而另外一些欠發達地區信息技術教育基礎卻還很薄弱。教育資源不均衡的現狀致使大學新生的計算機應用水平曾差不齊。針對這種現狀,我們認為有必要對大學計算機基礎課程進行改革,實施計算機課程分層教學方案,對部分基礎較好的學生,加強程序設計能力方面的訓練。
另一方面,通過對大學生程序設計課程教學情況進行的調查分析,我們發現該課程無論教學內容還是教學手段和方法上都存在許多的不足。比如,教學內容過于注重語言語法細節,沒有把分析問題、解決問題能力的培養放在主體地位上。許多學生在學習完程序設計課程之后,雖然考試成績不錯,但并不能動手解決現實問題。此外,教學手段和方法也較落后,缺乏直接激勵因素,學生對程序設計課程的學習較為被動,因而學習效果不佳。
因此,如何改革程序設計課程教學內容、教學手段和方法,更好地培養學生的編程實踐能力,全面提高學生分析問題和解決問題的能力是十分重要的研究課題。
● 教學改革方案
我們按照大學新生實際計算機操作技能水平和本人興趣將學生分成普通班和提高班,分別實施難度不同的教學大綱。普通班學生還按照原教學計劃進行,提高班學生加強程序設計能力的訓練。鑒于程序設計是一門實踐性很強的課程,光會讀程序是遠遠不夠的。只有通過強化的編程訓練,學生才能真正掌握程序設計。我們對提高班學生確定改革的指導思想是:高起點、強實踐、重能力;總體目標是:以強化實戰訓練為手段,培養學生程序設計實踐能力,全面提高分析問題與解決問題的能力。圍繞這一指導思想和總體目標,我們展開了如下方面的教學改革。
1.教學內容的改革
為了在更高的起點上培養學生程序設計能力、分析問題與解決問題的能力,我們決定對理工類學生程序設計課程體系進行重新規劃和調整,提出了分層教學改革方案:理工類提高班學生第一學期不再學習《計算機技能》,而改為學習《C程序設計》[1-2],學習基本的程序設計知識。第二學期在第一學期基礎上學習《算法基礎》[3-4],加強分析問題與解決問題能力的訓練。這兩個學期的程序設計課程內容前后相互銜接,難度逐漸遞增,形成一個完整的程序設計課程教學體系。
由于大多數新生沒有程序設計基礎,我們決定將第一學期課程《C程序設計》安排在機房進行,通過加強上機練習,增加對程序設計的感性認識。我們發現過去講授C語言時對語法知識點講解得過于詳細,其中很多語法內容用得卻并不多,學生學習完后可能很快就會忘記,因而教學效果并不盡如人意。因此,我們堅持“只求精、不求全”的原則,第一學期僅講解C語言最常用部分:基本輸入和輸出語句、分支、循環和數組,其他如指針、遞歸等難度較大的內容留給第二學期講解。通過精心設計上機例題,反復練習這部分重點內容,讓學生切實掌握這部分基本內容。
在學生熟練掌握了第一學期程序設計基礎知識后,第二學期《算法基礎》加強了算法方面的學習,主要講解窮舉法、遞推和遞歸、回溯法、動態規劃、貪心法等。通過這門課程的學習,學生進一步加強了分析問題與解決問題能力的訓練。此外,為了使學生全面掌握C語言知識,我們在第二學期《算法基礎》課程中補充講解C語言的其他重要知識點,如指針、遞歸和文件。兩個學期程序設計課程內容前后相互銜接,安排合理。
2.教學手段和方法的改革
以往程序設計教學實踐環節是這樣的:教師布置題目→學生上機調試→提交作業→教師批改作業→結果反饋給學生。然而,由于缺乏直接激勵因素,學生對這種做題方式沒什么興趣,相互復制成了作業完成的常態,學習效果并不理想。
為了激發學生學習的積極性,我們采用了ACM競賽平臺作為教學平臺,該平臺為ACM程序設計競賽而開發,有如下好處。
(1)自動判卷
學生按照題目要求編寫程序并調試通過后,提交源程序,系統能立即給出接受或者拒絕的判斷。
(2)系統排名
系統自動對所有學生成績進行排名,同時學生能即時了解自己在全班級的排名情況。
(3)交互性好
教師能即時看到學生提交的程序代碼,如發現被拒絕的程序,能即時地指導學生修改程序。
教學實踐表明,采用ACM教學平臺明顯改善了教學效果,大大激活了學生的上機主動性和積極性。許多學生課后也會自覺地研究題目的解決方法,這種情況在以往的程序設計課程教學中是不多見的。由于針對競賽設計的題目難度較大,并不適用于初學者,我們花費了大量的時間來設計難度適中的例題,幫助學生掌握所學知識。
3.考核方式的改革
以往程序設計課程考試方式都是采用試卷方式,這種考試方式最大的問題是容易造成高分低能:試卷分數考得很高,動手能力卻很差,程序讀得懂,編程實踐卻無從下手。我們認為這種情形都是因為實踐訓練不夠造成的。因此,我們認為不能用判斷題、選擇題、閱讀題以及手寫程序題來考查學生的程序設計能力,光看懂程序是遠遠不夠的,實踐動手能力是最重要的。
于是,我們放棄了傳統試卷考試的方式,完全改成了利用ACM平臺上機測試的方式,期末考試6~10道編程題限時3小時內解決。這些題目都是精心設計、難易適中,能很好地考查學生分析問題和解決問題的能力。考試結果表明,平時練習成績和考試成績呈正相關。此外,由于ACM系統詳細記錄了作業情況,因而平時成績也更容易準確地確定。由于相對普通班而言,提高班學生的課程難度較大,為了更好地激勵學生選課,我們對學生成績進行調整,最終成績按總評成績乘以系數1.1確定。
● 教學改革效果
經過為期一年的教學改革實踐,已初顯成效。
首先,學生學習程序設計的熱情明顯提高,學習主動性和積極性大大增加;其次,學生編程過程中的低級錯誤不斷減少,編程數量和質量也比以往有明顯的增加;另外,由于起點較高,學生學會程序設計課程后參加計算機等級考試合格率也有了明顯提高,部分優秀的學生還被選拔為校ACM競賽集訓隊員,參加ACM程序設計競賽并取得了比計算機系學生更加優異的成績。因此,我們的教學改革無論對普通學生還是尖子學生都起到了較好的作用。
此外,在本次教學改革過程中,教師們花費了大量的時間設計了許多適合程序設計課程教學的例題,大大擴充了ACM網站題庫。現該網站擁有注冊用戶8000余人,每年新增注冊用戶1000人左右。可以說,現在全校計算機程序設計課程教學已經完全離不開ACM網站。我們所做的這些工作為以后的教學工作提供了很大的方便,也奠定了良好的基礎。
● 結語
針對大學計算機程序設計課程教學中存在的問題,我們提出了大學計算機程序設計課程分層教學改革方案。我們的方案以強化實戰訓練為手段、以培養分析問題與解決問題的能力為目標,從教學內容、教學手段和方法、考核方式等方面進行了改革。教學實踐證明,我們的改革無論在學生培養上還是教學平臺的建設上都取得了很好的效