摘要:“程序設計”課程是計算機專業重要的基礎課程,本文針對學生群體特點從課堂教學和實驗環節兩方面進行改革,抓住知識主線進行循環教學、注重實踐能力培養的教學方法收到了很好的教學效果。實踐表明,教學改革在提高教學質量、培養學生編程能力方面都是有效的。
關鍵詞:程序設計;教學方法;教學改革;循環教學;編程能力
“程序設計”課程作為計算機專業教育重要的基礎課程,是“數據結構”、“操作系統”等后續專業課程的先行課,學生對這門課程的掌握程度直接影響到他們對整個計算機專業知識體系的掌握程度。我國教育部計算機教學指導委員會在“高等學校計算機科學與技術專業發展戰略研究報告暨專業規范(試行)”中明確把“程序設計”列入計算機和信息技術相關學科專業的本科必修專業基礎課程[1],美國的ACM和IEEE的Computing Curricula 2005也把“程序設計”列為計算機專業本科必修課[2]。對任課教師來說,如何教好如此重要的一門課程是件值得思考的事情。
云南大學信息學院承擔計算機和信息技術方面的教學和科研工作,每年招收超過300人的本科生到學院就讀。在這些學生當中,約90%來自云南本省,而其中的70%又來自經濟和文化相對落后的地州各縣及農村地區,還有的來自少數民族邊遠地區。即使是現在,這些學生在中學階段仍然沒有條件體驗現代信息技術普及所帶來的好處,缺少從小接受計算機文化耳濡目染的機會,缺乏計算機的基本操作,更不用說編程的經歷。大部分學生共有的特點是英語和計算機基礎底子薄。因此,要提高教學質量,必須考慮學生群體的特點。另一方面,“程序設計”作為基礎課,設置在大學一年級,學生剛剛經歷了緊張的高中學習,初進大學的學習狀態普遍不佳。在這樣的條件下,按常規教學方法開展“程序設計”教育難以取得理想的效果。
為了提高“程序設計”課程的教學質量,達到知識和能力的聯合培養目標,我校奉行因材施教的人才培養宗旨,對常規的教學方法進行改革,針對學生群體特點開展有效的“程序設計”課程教學活動,以便幫助學生順利完成第一門編程課的學習,為后續專業課程的學習打好扎實的基礎。本文從以下幾個方面對這門課程的教改實踐做一簡要介紹。
1課堂教學的改革
在教學過程中,針對學生特點,首先從教學內容的選取和教學方法兩方面進行教學改革。
1.1適當取舍講授內容
“程序設計”課程的學習語言是C語言,大多數教材內容是按照C語言的基本語法規則和知識點編排,這種教材的優點是內容詳盡全面、講授細致,但也有一個明顯的負面效果,就是學生在使用教材的過程中,很容易陷入枯燥的語法泥潭,進而失去了學習的興致。另外,書中的例子通常是與章節對應,較少有綜合的示例,也缺少對問題的分析、抽象以及算法的注解。
為了抓住知識主線,激發學生的學習興趣,培養學生的綜合解題能力,對課堂講授內容進行適當的取舍,與其將所有內容通講,不如精選部分內容精講,讓學生牢固掌握這些知識,打好編程的基礎。不過仍然要求學生在學期后段掌握未講到的一部分語法細節,這部分內容由學生在上機實踐過程中去認識。比如,課堂講授一維數組的內容,但不講字符數組的內容,待學生把一維數組理解得清清楚楚后,二者的共同點和不同點在實驗課上通過演示和學習示例程序得到理解,效果比在課堂上全部講授好得多。這種做法能夠在較短的時間里給學生鋪墊一層編程基礎知識,避免花費時間和精力達不到預期教學效果的局面,也促使學生在學習時變被動為主動。
1.2循環教學方法
逐章講授的方法的弊端是學生容易學了后面忘前面,也很難讓初次接觸程序設計的學生建立起全面、完整的概念,還容易造成語法學習與編程脫節的現象。為了打破這種傳統教學方法所帶來的問題,我校大膽采用“循環教學”的方法,分兩個階段實施“程序設計”的教學內容。
第一個階段是打基礎階段。其目的是消除學生的編程陌生感和畏難心理,掌握C語言的基本語法,掌握程序設計的基本概念和思維方式,為后續部份的深入學習打下基礎。這一階段占用9周時間,主要內容包括程序設計初步,即常用數據類型、常量與變量、表達式、輸入和輸出、選擇結構、循環控制、窮舉、函數的傳值調用、一維數組,以及指針和文件的基本概念和編程。除了部分章節,幾乎涉及到教材的所有內容。這個階段包含期中考試,通常期中考試的書面考核由概念題和一道編程大題組成,其中編程大題用于考核運用數組、選擇和循環等重要知識點的綜合編程能力。 第二個階段是提高階段。在期中考之后,學生已經基本掌握了C語言重點知識,并具備初步的編程能力,這時,開始進行第二階段的學習,其目的是學習和掌握C語言較難的知識點、經典算法以及編程的高級技巧,建立起程序設計的思維習慣。這個階段同樣使用9周時間,但學習內容的深度和廣度不同,主要內容有遞歸、二維數組、指針的運用、文件操作等。此外,根據學生情況決定是否講授回溯、結構體等難點內容。
2實踐能力的培養
實踐能力包括兩個含義,一個含義是指編程動手能力,這種能力是教學的主要培養目標,在整個教學環節中占有十分重要的地位。教育部計算機教指委的“高等學校計算機科學與技術專業實踐教學體系與規范”中明確強調學生動手能力培養的重要性[3]。另一個含義是指計算機專業的學生與時俱進的能力,即主動了解現代社會計算機技術應用狀況的能力。在這樣的指導思想下,針對學生群體特點,通過三個途徑有目的地培養學生的實踐能力。
2.1上機環節
上機實驗是程序設計必不可少的教學環節,一般安排從第3周開始,但在正式上機開課之前,針對那些進大學以前沒有或很少接觸計算機的學生,按學生的自愿原則,通常會安排專門的2~4小時的計算機操作補習。在前2周課堂講授結束后,可以從驗證性的實驗開始啟動實驗課。實驗課應該是一個更生動的教學環境,因此實驗輔導員和任課教師都到場指導,課上隨時講解共性的錯誤。隨著知識的增加,上機題目也逐步從考查單一的知識點到考查多個知識點,到考查學生運用經典算法的綜合編程能力。特別是在第9周以后即第二階段的學習期間,上機主要訓練學生的綜合編程能力。每個學期的正式上機課持續16周,每次2小時,共32個學時。為了能讓學生在課外也能有充裕的上機時間,鼓勵學生辦卡到公共機房上機調程序。
2.2程序閱讀和練寫
在思考如何教好一門程序設計語言的過程中,我們從人類學習自然語言的方法得到啟迪。每個人從小學習母語,都是先學會如何用,然后才是語法的分析[4]。借鑒這樣的思路,在教學過程中,經常有意識地體現程序先入為主的思想,但在兩個階段的學習中有所側重。在學習的第一階段,先講基本概念和語法規則,緊接著提供示例程序進行講解,以使學生從視覺到思維對程序產生熟悉感。在講解過程中,除了解釋語法的運用外,還注重分析問題、抽象問題、抽象數據的能力的培養。編程風格也是學習的重點,從變量命名習慣到注釋語句的書寫,以及程序的結構,都在閱讀程序過程中加以強調,以培養學生良好的編程風格和慎密的編程習慣。此外,經常在課堂上隨堂練寫小程序,并鼓勵學生上機調試。
第二個學習階段,在講新內容之前安排預習任務,除了書上的內容,還經常給出一個問題和一段程序代碼讓學生閱讀,自己發現其中懂的內容和不懂的內容。這樣的方法促使學生主動思考、主動學習。上課時,教師從預習程序講起,學生帶著問題聽課使上課效果提高不少。教師在講解程序的同時導入新知識點,這樣不但印象深刻,也十分有助于學生對新知識的理解。隨著學習的推進,提供給學生的程序段的量逐漸增多,引導學生在讀程序的過程中,注重分析結構和功能、函數調用之間的關系;模仿和練寫精致、優美的程序。
2.3網上電子學堂
現代互聯網擁有海量的資源,是進一步的學習和提高的途徑。在學好基礎知識的同時,我們鼓勵學生通過網絡獲得知識,因為書本知識畢竟有限,也不可能在短短一個學期的時間把編程技術的現代應用完全教給學生,“授人以魚,不如授之以漁”,讓學生掌握自我提高的方法不失為一種明智開放的教學理念。
鼓勵學生通過搜索引擎尋找編程題目,發現有趣的、反映社會需要的程序設計題目,積極參與編程。向學生介紹編程愛好者網絡,如編程中國網、自學編程網等,在這些網絡中,大家可以在虛擬社區中相互交流和學習,分享成功和失敗的體會,感受IT行業內的新觀點和潮流動態。這些活動會對學生產生正面的影響,潛意識里變成IT大家庭中的一員,激發起編程的熱望,產生學習的強大動力。
3教改總結
與傳統教學方法比較,本文針對學生群體特點、抓住知識主線進行循環教學、注重實踐能力的培養的教學方法收到了很好的教學效果;各個環節有機結合、相互補充,最終使學生受益。
在實踐過程中,學生掌握了扎實的基礎知識,具有濃厚的編程積極性,經常會看到有的學生在下課后迫不及待地直奔機房調試課堂上練寫的程序;動手能力普遍增強,許多學生在一個學期內編出上千行的代碼,這使他們對于自己在計算機領域進一步提高擁有十足的信心,并一直保持到畢業,在找工作時體現了較強的競爭力。最后,通過參與網絡編程社區,帶動了學生的學習積極性,激起了求知的欲望,也使學生認識到計算機技術與現代社會之間的關系,意識到程序設計與時代是緊密相聯的,改變了僅學習書本知識的片面想法。
實踐證明,這種針對學生群體特點的教學方法是有效的,既能打下扎實的基礎,又能有效地提高學生的實踐能力,為后續課程的學習及畢業找工作都奠定了很好的基礎。
4下一步的工作設想
雖然取得了很好的教學效果,但我們還在積極思索改進的方法和切入點。比如,針對每一年的學生情況,如何更好地把握好課程內容和循環教學的深度和廣度;如何找到更好的訓練途徑有效提高編程能力等。2009年7月,筆者有幸參加了北京大學信息科學技術學院舉辦的“高等院校計算機教學研討及課程示范教學活動”,聆聽計算機系李文新教授、代亞非教授和張銘教授的關于程序設計基礎課程群的建設經驗,參加精彩的示范教學課,深深地感受到她們在教學改革方面細致的努力,目睹她們在培養計算機專業人才方面的巨大的成功,令人印象深刻、受益菲淺。北大的計算機教學改革給了我們很大的啟發,為在自己的教學實踐中進一步開展教學改革打開了新的思路。雖然校際之間的差異客觀存在,但在未來的工作中仍然可以借鑒北大的一些做法,將其應用到我們的教學過程中。比如,強調基礎知識的理念;強調學生的問題抽象能力、數據抽象能力、邏輯思維能力的培養[5];再比如,引入北大POJ在線軟件百練和評測系統,根據學生特點建立合適的題庫,為學生提供實用有效的編程訓練環境等[6]。希望通過借鑒這些寶貴的經驗和思路,更好地培養學生分析問題、解決問題的能力,達到為社會輸送真正有用的計算機專業人才的目的。
參考文獻:
[1] 教育部高等學校計算機科學與技術教育指導委員會. 高等學校計算機科學與技術專業發展戰略研究報告暨專業規范(試行)[M]. 北京:高等教育出版社,2006.
[2] Computing curricula 2005[EB/OL]. http://www.acm.org/education/curric_vols/CC2005-March06Final.pdf.
[3] 教育部高等學校計算機科學與技術教育指導委員會. 高等學校計算機科學與技術專業實踐教學體系與規范[M]. 北京:清華大學出版社,2008.
[4] 理查德#8226;格里格,菲利普#8226;津巴多. 心理學與生活[M]. 王壘,王 ,等譯. 北京:人民郵電出版社,2004.
[5] 張銘,李文新,陳徐宗,等. 北京大學計算機系本科課程改革進展[J]. 計算機教育,2009(5):7-11.
[6] 李文新,梅宏,陳徐宗. 北京大學計算機學科的教學體系改革[J]. 中國大學教學,2008(4):14-16.
Teaching Method of Program Design in Accordance with Features of Group of Student
ZHU Hong-mei, YANG Jian
(School of Information, Yunnan University, Kunming, 650091, China)
Abstract: Program Design is an important essential course for computer major. We conduct two reforms on teaching of content and programming experiment in accordance with features of student group in this paper. Teaching method that circulates teaching along with main line of knowledge and emphasizes abilities of practice achieves excellent effects of teaching. Practices demonstrate that the teaching reforms are useful in promoting teaching quality and nurturing students’ programming capabilities.
Key words: program design; teaching method; teaching reform; circulating teaching; programming capability
(編輯:白杰)