張麗 李菊



摘要:C++程序設計是理工科高校新生的必修課程,也是后續課程如數據結構、Java程序設計的先導課程。通過分析本課程在傳統教學過程中存在的問題,針對這些問題,使用混合式教學模式進行教學改革,合理設計在線教學資源,在線下教學中引入翻轉課堂,采用OJ實時評測學生編程題目,使用過程化考核優化考核方式,以期達到提高學生學習興趣,加強學習主動性,增強動手實踐能力的效果。
關鍵詞:C++;混合式教學;翻轉課堂;在線評測;程序設計
中圖分類號:G642? ? ? ? 文獻標識碼:A
文章編號:1009-3044(2022)27-0161-02
開放科學(資源服務)標識碼(OSID):
1 引言
在當前信息化時代,如何提升本科教育質量已經成為課程教學改革的焦點[1]。C++程序設計課程是理工科高校新生的必修課程,一般開設在大一學期。通過本課程的學習使學生掌握面向對象的基本概念,學會程序設計的基本方法和技能,使學生能編寫出符合規范和性能良好的程序,是學好后續課程如數據結構、Java程序設計等的基礎,也是培養學生編程思維的關鍵課程。
然而,C++程序設計課程的目前教學中存在一些問題,例如教學模式比較傳統,多采用理論教學為主,課后上機為輔的形式 [2],教學過程中更側重于語法,學生的學習積極性和主動性不高,動手實踐能力較差。針對這些問題,目前有很多學者提出了線上線下混合式教學模式。梁小林[3]等采用了新一代信息技術,構建了線上線下相結合的完整的教學體系,取得了良好的效果。汪中[2]等構建了基于“超星學習通+課堂教學+在線評測系統”的混合式教學模式,優化考核體系,達到課程改革的預期目標。王全蕊[4]提出了漸進式翻轉課堂模式,采用課堂授課和在線學習平臺結合的模式。
本文通過分析課程的教學現狀,針對存在的問題,在教學過程中探索使用混合式教學模式,充分利用豐富的線上資源設計在線教學,在線下教學中引入翻轉課堂,使用在線評測系統及時評判學生上機實踐結果,并采用過程化考核優化考核方式,從而提高學生的學習主動性,增強學生動手能力。
2 C++程序設計課程現狀
目前大多數高校講授C++程序設計課程時仍然采用傳統的教學方式,包括課堂理論教學,課下習題鞏固和上機實踐,考核方式主要以期末考試為主,分析這種方式存在的主要問題有以下幾點:
(1)教學方式陳舊
教學方式主要以課堂為中心,以多媒體教學為手段講授書本知識。尤其是在大班教學中,這種教學模式不利于提高學生的學習興趣,不能更好地培養具有創造能力的人才。
(2) 部分學生缺乏學習的主動性和積極性
在本學院中,C++程序設計是大一學生的專業基礎課,學生的計算機思維還沒有形成,學習本課程存在一定難度。同時,課程的語法知識點瑣碎、分散,容易混淆且難于記憶,因此,在教學過程中教師需要重點講解課本中的知識點,導致學生缺乏自主學習和主動構建知識體系的能力。
(3) 學生編程能力差異大,部分學生實踐動手能力不高
學生編程能力程度層次不同,部分學生面臨能聽懂課,卻不會編程的困難,但是也有部分學習成績較好的學生希望得到更充分的編程鍛煉。同時,學生編程作業提交后,沒有得到及時的結果反饋,無法及時改正程序。因此需要將編程作業分層次,同時需要更快速反饋學生上機實踐結果。
(4) 傳統考核方式重語法而輕實踐,缺乏思維和能力的培養
在本學院中,C++程序設計課程考核期末考試占比70%,采用紙質考試形式。因此,試卷內容仍然是以考查理論知識為主,忽略了程序設計課程的本質,為了通過考試,學生將更多時間用于理論題目,而動手及實踐能力并沒有顯著提升。
因此,改變C++程序設計課程的傳統教學模式,采用線上線下相結合的混合教學模式,提高教學質量,已成為教學改革中的一個重要研究課題[5]。
3 構建線上線下混合教學模式
本文提出的線上線下混合教學模式設計如圖1所示,包括課前、課堂、課后和過程化考核四個環節。課前環節教師規劃設計線上教學資源,并設計學習任務單,指導學生完成課前自學,同時關注學生的互助討論;課堂環節引入翻轉課堂,教師布置任務指導學生分組討論,根據學生學習情況進行重難點拓展講解和指導答疑,重點加強實踐環節的教學指導,通過算法思路闡述、流程圖講解、題目拓展方式,加強學生編程能力的培養;課后環節教師布置章節作業促進學生知識點鞏固,并引入OJ及時反饋學生編程結果,最后采用過程化考核方式考核學生的課前線上自學,課中任務完成情況、編程練習結果和期末考試情況。
3.1 課前環節
教師分析教學內容中組成部分,針對教材中的章節,劃分出不同的知識點,分割成若干獨立教學單元,設計在線教學內容。例如第3章程序設計初步,可進一步分解成順序結構,選擇結構和循環結構三小節內容,順序結構主要的知識點是語句和輸入輸出,選擇結構和循環結構又可以分解成if-else、switch、選擇結構嵌套和while、do-while、for幾個知識點,如圖2所示。這樣可以把教學內容分解成“章—節—知識點”的三級結構[6],根據劃分知識點,設計在線課程。一方面可以選擇合適的線上視頻資源,另一方面可以錄制一些視頻作為補充,選擇合適平臺,例如學習通,設計適合本學院學生的在線課程。
為了更好地指導學生完成線上課程學習,教師設定線上學習任務單,針對教學內容,制定教學目標,給出詳細的課前學習任務單和課后作業任務單。學生課前觀看學習視頻,完成自主學習過程后,教師需要檢查學生的學習進度。學生在互動討論區提出問題,教師回答問題,并收集學生提出較多的問題。
3.2 課堂環節
課堂上采用翻轉課堂,優化線下教學方式,改變傳統課堂中以教師為主導的狀況,使學生成為學習的主導者,而教師則成為學習的引導者[7]。學生通過課前自學,基本理解了本節課的內容,并且已經提出了自己的問題。教師可以布置任務,讓學生通過分組討論對知識點進行梳理強化,通過小組展示上臺講解的方式,獲取學生真實的學習情況和存在的問題。對本節課的重難點和學生問題較多的地方,教師要進行重點講解,讓學生的能力得到拓展。對于初次采用翻轉課堂進行線下教學,可以每章選擇重要知識點進行教學試點,后期根據實施情況進行合理調整。
課堂環節中需要重點進行實踐環節的教學和指導,對于學生算法思維訓練進行加強,可以采用循序漸進的方式。例如,在實際教學中循環的學習一直是學生的難點,教材中有雙重循環的編程例題:找出100~200之間的全部素數。我們首先講解如何判斷一個數為素數,通過流程圖的方式對算法思路進行講解,并編寫程序。然后再過渡到如何實現判斷100~200之內的數為素數,從而讓學生更容易理解。
3.3 課后環節
對于任何知識的學習,課后的復習鞏固都非常重要。對于編程語言來說,語法是寫程序的基礎,因此課后環節需要兼顧語法知識的掌握和編程能力的提高。我們在學習通平臺上設計了每章節的練習題目,設定了完成時間,要求學生在規定時間完成作業,作為過程考核的一部分。通過這些練習題目,幫助學生鞏固語法知識。針對學生編程的練習,我們設計了基礎題目和拓展題目,并采用OJ實時評判學生程序設計。基礎題目要求所有學生完成,拓展題目難度大于基礎題目,要求成績中等以上的學生完成,加強學生編程能力的提高。同時,我們設計了游戲開發題目[8],作為拓展題目一部分,極大提高了學生們的編程興趣。對于典型題目,我們錄制了編程題講解視頻,并上傳到了學習通平臺,供學生課后多次觀看。
3.4 過程化考核環節
優化傳統的考核方式,注重階段考核,針對學生就在線資源的學習情況、課堂互動情況、每章練習題目作答情況、OJ評測的程序編寫情況以及期末考試多方面進行考核,更科學、更能激勵學生的學習積極性。各方面考核內容和比重如表1所示。
4 結論
本文探索了C++程序設計線上線下混合的教學模式,改變傳統教學中以教師為主導的方式,探索以學生為中心,教師更多的是對學習進行指導的新方式,以達到提高學生學習興趣,提升學習效果的目的。在實際的實施過程中,通過匿名調查問卷方式獲取到絕大多數學生認可新的方式,同時學生學習C++的興趣也得到了明顯的加強,動手實踐能力得到了提高。
當然,本模式還存在待改進的方面,例如,線上教學資源的建設、大班翻轉課堂的合理設計和應用等,需要在后續C++程序設計教學實踐中進一步探索。
參考文獻:
[1] 馮光,金強山.“混合式+項目化”模式在“C程序設計”教學中的實驗研究[J].計算機時代,2020(10):79-81,85.
[2] 汪中,施培蓓.“互聯網+”背景下“C++程序設計課程”教學改革與實踐[J].合肥師范學院學報,2021,39(3):83-85.
[3] 梁小林,胡育勇,孫志宏.新工科程序設計類課程智慧課堂創新與實踐——以河北經貿大學《C++程序設計》課程為例[J].滄州師范學院學報,2021,37(3):113-118.
[4] 王全蕊.C++程序設計遞進式翻轉教學模式的實踐研究[J].河南科技學院學報,2020,40(8):59-64.
[5] 李素若.基于慕課的編程類課程混合式教學模式研究與實踐——以《C++程序設計》為例[J].軟件導刊,2017,16(1):189-191.
[6] 樊志平,金政哲.慕課環境下教學新模式研究——以“C語言程序設計”課程為例[J].電腦知識與技術,2017,13(30):134-135.
[7] 蘇小紅,王甜甜,張羽,等.基于大班翻轉課堂的混合教學模式探索與實踐[J].中國大學教學,2017(7):54-62.
[8] 童晶,丁海軍,金永霞.C語言課程設計與游戲開發實踐教程[M].北京:清華大學出版社,2017.
【通聯編輯:王力】