裴明濤+梁瑋


摘要:針對c語言程序設計課程中存在的基本語法講解與編程思想講解無法兼顧的問題,通過分析c語言程序設計課程以及翻轉課堂的特點,提出結合翻轉課堂與以程序設計思想為主的教學方式并對教學效果進行調查和評價。
關鍵詞:C語言程序設計;翻轉課堂;編程思想
1.c語言程序設計教學現狀
c語言程序設計是許多高校為理工科專業低年級學生開設的公共基礎課程。該課程通常是學生接觸的第一門程序設計類課程,其教學目的是使學生掌握C語言的基本語法規范和基本程序設計方法,培養學生使用計算機思維分析問題和解決問題的能力以及程序設計能力和素質,為后續數據結構等專業課程的學習打下良好基礎。
在C語言程序設計的教學中,主要包含兩部分的內容:一是C語言的語法知識;二是程序設計的思想和方法。目前,c語言程序設計教學大多以c語言的語法教學為主,輔以少部分的程序設計講解。根據筆者多年來的c語言程序設計教學經驗,如果在講授c語言時,一開始就花費較多的時間講解c語言的基本語法、各種運算符、優先級、結合性等細節問題,學生將會淹沒在這些細節問題中,無暇關注更高層的程序設計思想,也體會不到編程的樂趣,嚴重影響教學效果。曾有學者對c語言程序設計的教學方法提出一些建議,但仍不能從根本上解決存在的問題。
文獻[4]提出基于程序設計思想的c語言教學方案,倡導“重程序、輕語法”的教學思想,文獻[5]也提出“強化算法、弱化語言”的原則。這些基于程序設計思想的C語言教學方式把教學重點放在程序設計思想上,有助于學生掌握編程思想和方法,提高學生學習編程的興趣,但c語言的基本語法和編程思想兩者是緊密聯系、不可或缺的。基本語法是進行編程的基礎,沒有良好語法基礎,有編程思想也無法具體實現。編程思想是基本語法的實際應用,可以使用編程思想解決具體問題,如果沒有編程思想,那么基本語法掌握得再熟練,也無法解決具體問題。基于程序設計思想的c語言教學方案重視編程思想,但仍不可忽視c語言,這是因為教師通過具體的例子講解編程思想時,學生如果沒有良好的語法作為基礎,就無法有效跟上教師的腳步,也無法有效學習編程思想。課堂上的時間非常有限,無法做到具體語法講解與編程思想講解兩者兼顧,因此翻轉課堂與幕課(MOOC)的出現,為解決這一問題提供了可行的方法和途徑。
2.幕課與翻轉課堂
幕課(massive open online courses,MOOC)即“大規模開放在線課程”,它將課堂教學放在網上并具有4方面的特點。首先,幕課的規模很大、可注冊的學生人數很多;幕課不需要固定的上課時間和地點,學生可以隨時隨地進行在線學習;除基本的課程講授外,幕課還包括實時在線研討、在線測試等功能。其次,幕課的資源很多,同一門課程有多家單位提供,具有各自的特點和優勢,教學資源突破了大學的界限;教育資源包括視頻、文本、音頻等形式。第三,教師的角色和教學方式發生變化,除了制作和提供幕課資源外,教師主要作為獲取知識的支持者、引導者和推動者出現。第四,學習者的學習方式發生根本改變,學習者成為學習過程的中心,學生可以主動地安排自己的學習時間、進度、地點、內容等。
翻轉課堂起源于2007年前后美國科羅拉多州落基山林地公園高中兩位化學老師的創新教學,逐漸使傳統的“課堂上聽教師講解,課后回家做作業”教學模式“顛倒”或“翻轉”,變成“課前在家里聽看教師的視頻講解,課堂上在教師指導下做作業(或實驗)”。隨著翻轉課堂的發展和逐步推廣以及幕課的興起,翻轉課堂已經在很多中學和大學中得到應用和推廣。
3.結合翻轉課堂與以程序設計思想為主的教學方式
3.1實施方式
在c語言程序設計的課程教學中,教師可結合翻轉課堂以及以程序設計思想為主的教學方式進行教學,具體實施方式為在上課前一周,通過網絡教學平臺公布下節課所需的知識點,包括下節課要用到的基本語句的語法要求、各種運算符的計算方法以及相應的優先級和結合性等內容,要求學生加入MOOC平臺上的C語言程序設計課程,進行相應的學習和練習;學生可以自主安排學習時間和掌握學習的節奏,教師通過MOOC平臺掌握學生的學習行為并提供一定的線上學習指導。以學習switch語句為例,相應的學習任務要求和學習方法見表1。這些學習任務都要求學生通過MOOC平臺進行學習,教師在課堂上不再進行講授。
課堂上主要以編程思想和方法為主,講授如何使用c語言解決具體問題,主要講授程序設計的思想和方法并對MOOC學習中比較集中的語法問題進行講解,結合課堂討論、學生上臺講解等方式,使學生充分參與課程中。在學生掌握基本語法規則的基礎上著重進行程序設計思想和方法的講授,有利于學生對編程思想的掌握,也能提高學生的學習興趣。
3.2教學效果調查
為有效地對教學效果進行評估,也為了讓學生能有直觀的對比,在進行c語言程序設計課程的講授時,教師可選取選擇結構的程序設計和循環結構的程序設計兩部分內容,分別采用傳統的教學方法、結合翻轉課堂與以程序設計思想為主的教學方法。對于選擇結構的程序設計部分,課堂上主要講述選擇結構的基本語法和規范,包括if-else語句、switch語句等語法規范,只列舉簡單的例子進行演示,課下布置一定的編程作業。對于循環結構的程序設計部分,事先要求學生在課下通過MOOC學習相關內容,包括for、while語句的語法規范等,完成對應的作業和練習。課上主要通過講解編程思想,教授如何使用循環來解決一些具體問題;課下布置與選擇結構程序設計等量的編程作業。
兩部分內容的課程結束之后,采用問卷調查的方式對教學效果進行評估。問卷內容見表2。調查內容主要評估學生對結合翻轉課堂與以程序設計思想為主的教學方式的感受,從各個不同側面請學生對此種教學方式進行客觀評價,包括總的評價、課前所花時間、兩種授課方式的比較、課后的收獲等。
上課學生共有130人,回收的有效調查表共119份,對其中的評價結果進行統計,得到學生對每個問題的選擇比例,其結果見表3。表頭橫軸列出每個選擇題的編號,縱軸列出每個選擇題中答案選項的順序號(按每題答案選項所處從左到右排序)。表中數據為學生在評價題上選擇相應選項的百分比。
從表3中問題1的統計結果可以看出,53%的學生認為通過觀看教學視頻學習基本的語法比較容易,只有6%的學生認為比較困難。從問題5和6的統計結果可以看出,學生通過傳統教學方式掌握相應語法的程度要略好于翻轉課堂,即學生通過觀看MOOC視頻來學習的效果不明顯。從問題3和4的統計結果看,結合翻轉課堂與以程序設計思想為主的教學方式下,學生課后完成等量的編程作業所需時間總體上大大縮短。結合問題7和8的統計結果可以看出,結合翻轉課堂與以程序設計思想為主的教學方式有利于學生編程能力的提高,學生比較認可這種教學方式。
調查還發現,認為“結合翻轉課堂與以程序設計思想為主的教學方式較好”的比例略低于認為“結合翻轉課堂與以程序設計思想為主的教學方式有利于編程能力提高”的比例。通過訪談得知,其原因是翻轉課堂的方式需要學生課前花時間進行學習,占用學生的課余時間,因此少量學生不喜歡這種方式。
4.結語
結合翻轉課堂與以程序設計思想為主的C語言程序設計教學方式在實踐中被證明是有效的。由于條件所限,筆者還沒有對兩種教學方式進行長時間(如整個學期)的對比,未來將進行更全面的對比,以驗證所提出教學方法的有效性。同時,在教學方法實施的過程中,筆者也發現,在課堂上要適當地針對c語言語法規則中的重點和難點問題與學生進行交流,對學生提出的問題和困惑進行講解,而不能把對C語言語法規則的學習完全交給MOOc。此外,教師在進行編程思想的講解時,要更多地以實際問題為例,以激發學生的學習興趣,從而取得更好的教學效果。