石魯生等

摘 要:文章從新建地方本科院校”C++程序設計”課程的教學現狀出發,分析“C++程序設計”課程教學存在的問題,并指出了“C++程序設計”課程教學改革的路徑。
關鍵詞:C++程序設計;教學改革;新建地方本科院校
中圖分類號:G642.0 文獻標識碼:A 文章編號:1002-4107(2015)10-0027-02
一、“C++程序設計”教學現狀
作為剛剛獨立建校不久的新建地方本科院校,宿遷學院一直以培養本科應用型創新人才為根本任務,注重培養學生的實踐能力和創新精神,強調適應未來就業的需要。
“C++程序設計”是宿遷學院計算機、軟件工程等專業的一門重要專業基礎課,主要是以C++語言為載體,全面系統地向學生介紹面向對象的編程思想和技術,因此它既是面向過程的C語言的自然延伸和發展,又是Java、C#等面向對象語言的基礎。由于其兼具面向過程和面向對象的雙重特征,在由面向過程的程序設計轉入面向對象的程序設計的學習過程中起著承上啟下的重要作用。當然”C++程序設計”的應用性和實踐性也非常強。
宿遷學院原有”C++程序設計”教學工作存在諸多問題。如教學內容不能適應人才培養的實際需求,教學重點偏重于語法細節;教學過程仍是教師“自問自答”的傳統“填鴨式”教學[1],學生毫無興趣;雖然有實踐環節,但是設計單調,考核缺乏有效手段,無法切實提高學生的實際動手能力;在課堂教學之外,“教”與“學”,教師與學生嚴重脫離,學生的疑問不能方便、快捷地得到教師的幫助,教師也很難了解學生平時的實際情況。針對以上問題,自2012年開始,我們對”C++程序設計”的教學內容、教學過程、實踐環節以及課外指導等方面進行了一些探索與實踐,取得了初步的成果。校級”C++程序設計”網絡課程于2014年業已建成,目前校級精品課程項目正在建設之中。
二、“C++程序設計”教學改革路徑
(一)優化教學內容,突出教學重點
考慮到宿遷學院在開設”C++程序設計”之前已經開設了”C語言”,因此教學內容當然以面向對象為絕對主角,并據此選取了教材[2]。
教學中將相對固定的面向對象的內容進行重新整合,分成類與對象,繼承與派生、多態性與虛函數、運算符重載與輸入輸出流等四個部分,重點對類與對象的基本概念、構造函數、繼承以及多態性等知識進行詳細介紹,弱化運算符重載、非常見輸入輸出流等內容,C++對C的擴充部分全部留給學生自學。
盡管有不少專家學者強調C++的教學要淡化語法,突出算法[3],但針對宿遷學院新建地方本科院校和生源的現實情況,在實際教學中,我們的重點既有計算機的編程思想也有最小集語法,也即在突出面向對象編程思想和算法設計的同時,對最常用的基本語法仍然重點講解,較少使用的語法一帶而過,缺乏實踐價值的語法舍棄不講。做到既滿足后續課程的需要,又盡量與學生畢業后的就業相對接。
(二)將計算思維引入教學
計算思維是由美國卡內基·梅隆大學計算機科學系主任周以真教授提出的[4],她認為計算思維是運用計算機科學的基礎概念進行問題求解、系統設計以及人類行為理解等涵蓋計算機科學之廣度的一系列思維活動。
對于計算機或軟件工程專業的學生來說,學習C++或者其他語言的目的不僅僅是為了畢業后能夠成為一名合格的程序員,更重要的是通過學習深入理解并掌握利用計算機分析和解決問題的思路和方法,而這正是教師在教學過程中需要傳輸給他們的計算思維。
因此我們將計算思維融入教學全過程中去,每個部分都利用計算思維的觀點作為引導,學習中鼓勵學生多角度去思考問題,從認識規則、熟悉規則、使用規則轉變成尋找規則、探究規則、理解規則,將理論課也全部搬進計算機房,一人一臺計算機,利用極域電子教室進行理論教學,以學生動手練習替代教師課堂演示,使學生主動參與到實際教學之中,真正思考起來。實踐和作業環節也打破常規,布置一些不設統一要求的題目,鼓勵學生進行自主創新和探索。
(三)打造個性化實踐教學環節
實踐環節是新建地方本科院校培養應用型人才的關鍵一環,而實踐環節又必須以切實提高學生的實際動手能力,適應未來就業需要為首要目標。
首先,傳統的實踐內容往往來自于課本或實驗指導書,性質大多為驗證性,并容易找到參考答案。現在由教師根據課程知識體系和學生實際情況靈活出題,性質大多為設計性和綜合性,題目也只給出基本要求,鼓勵學生在此基礎上精彩發揮,并允許學有余力者根據知識內容為自己出題,也借此不斷豐富實踐內容。
其次,調整實踐環節實施過程。我們會提前1—2周布置實踐內容,要求學生提前編寫好初步的源程序代碼,上機課之初就通過極域電子教室提交。然后課堂時間主要是對程序進行調試和修改,直至獲得滿意的結果,經教師檢查合格后,提交運行結果和新的源程序。我們鼓勵每次最先圓滿完成任務的三名學生成為“小老師”,他們可以和教師一樣在課堂上自由指導需要幫助的學生,并得到額外的加分獎勵。每次上機課結束前,預留一定時間給此次任務完成最好的學生,將其作品講解、演示給全班同學。這些措施給予學生們極大的競爭意識和成就感,也形成了你追我趕、不甘落后的學習氛圍,提升了學習的積極性和興趣。
最后,考慮到生源的實際情況,一方面教師對關鍵性技術問題進行提示和指導,但并不限制每位學生完成實踐任務的時間,學期內任何時間完成都能提交,教師隨時可以檢查;另一方面教師在檢查時不僅要看運行結果,而且還會針對具體程序進行提問,借此鼓勵所有學生獨立完成程序的編寫和調試工作。學生只有通過不懈努力反復修正自己的錯誤程序,才能應對教師檢查中的提問環節,才能學會如何編寫和調試程序,實際動手能力才能切實得以提高。
(四)充分利用網絡課程平臺,實現“教”與“學”的零距離
2014年6月份建成的”C++程序設計”網絡課程平臺上,除了一些傳統的教學常規資料(大綱、周歷、課件、課堂教學錄像和學生作業等)之外,還加入了一些新鮮的內容。
首先受到MOOC的啟發,自2014年起,我們錄制了幾段簡短的視頻,以生動活潑的形式、簡單有趣的例子介紹一些重要的知識點,如構造函數重載、this指針、虛函數等。雖然制作水平和開放程度與國內外流行的MOOC相比還有非常大的差距,但也吸引了校內外不少學生的目光,取得了不錯的效果,因而該工作還將繼續開展。
其次我們在學生作業環節引入了Online Judge在線判題系統,雖然由于現實原因實際作業成績并不完全由此系統決定,但是由該在線判題系統給出的格式錯誤或無法編譯、運行時錯誤、答案錯誤、超時、通過等各種狀態,仍然極大地調動了學生學習的積極性,大幅度地提高了作業程序的質量。
最后在答疑解惑模塊,所有問題除了按學生發問時間和教師回復時間兩種常見方式排序外,我們將所有問題進行了詳細的分類。現在學生在課堂之外,如有疑問大部分均可以方便快捷地在相應分類中找到答案,如遇新問題,發問時必須詳細勾選問題類別,然后再由教師適時確認類別并加以回復,當然其他感興趣的學生也可以一同參與討論。
(五)成立“小微型學習組織”,用第二課堂促進第一課堂
在第一課堂之外,我們還積極推進第二課堂的工作,系內成立了多個“小微型學習組織”,與C++程序設計關系密切的主要有兩個:“軟件開發小組”和“程序設計小組”。每組配備指導教師2—3人,組員在學生自愿報名基礎上,由指導教師考核后確定,并根據實際需要進行動態管理。小組均有相對固定的學習活動場地,每周利用晚上或周末時間,集中進行1—2次學習或討論,其余時間根據階段任務安排自主展開活動,其間由指導教師輪流加以指導。“軟件開發小組”主要利用C++、Java、C#等語言并結合教師課題與校內外實際需要進行軟件開發,目前已經有“宿遷學院監考管理系統”、“宿遷學院后勤報修系統”、“宿遷人才新干線”等近十個系統成功開發并投入使用。“程序設計小組”以C、C++和Java為主要編程語言,參加了校內外各種級別的程序設計大賽,目前已經在“宿遷學院程序設計競賽”、“藍橋杯大賽”、“ACM大學生程序設計競賽”等比賽中斬獲頗豐。
“小微型學習組織”所取得的每項成果,都吸引了不少學生加入其中,像“軟件開發”和“程序設計”小組不但顯著提升了組內學生的編程能力和水平,而且隨著小組成員的動態管理,帶動和影響了一大批對程序設計感興趣的學生投入其中,有力推動了第一課堂和教師的教學科研工作。
“C++程序設計”作為入門級的面向對象程序設計課程,編程思想抽象、理解困難、語法復雜[5],對于宿遷學院這類新建地方本科院校來說還有師資力量偏弱、學生基礎較差等因素,如何使學生真正愿意學、學進去并取得收獲,我們進行了一系列的探索。實踐證明這些工作激發了學生的學習興趣,調動了學生的學習積極性,突出了學習重點,降低了學習的復雜度,切實提升了學生的實際動手能力,促進了本科應用型創新人才的培養。
參考文獻:
[1]楊樹媛,張志勇,馮向萍.“從做中學”教學思想在“C++
程序設計”課程教學改革中的應用[J].軟件導刊,2014,
(11).
[2]譚浩強.C++面向對象程序設計:第2版[M].北京:清華
大學出版社,2014:11-15.
[3]楊煉,鄒超偉,毛韶陽.應用型本科院校C++課程教學改
革探索[J].計算機教育,2014,(21).
[4]Jeannette M W.Computational thinking[J].Commun-
ications of the ACM,2006,(3).
[5]章品正,於文雪.設計模式在C++課程教學中的運用
[J].計算機教育,2014,(14).