?

基于競賽模式的“C程序設計”教學改革研究*

2022-05-11 06:04譚立興
科技與創新 2022年9期
關鍵詞:程序設計編程競賽

譚立興,姜 楓

(南京理工大學泰州科技學院計算機科學與工程學院,江蘇 泰州 225300)

隨著人工智能技術的飛速發展,社會對計算機專業技能人才的要求也不斷提升,不僅要求學生具備傳統扎實的理論研究功底,而且對學生實踐動手能力的要求也逐年提升?!癈程序設計”是計算機科學與技術相關專業的一門通識基礎課,旨在培養學生的邏輯思維能力、創新能力和解決實際問題的能力,為后續專業課程的學習奠定良好的基礎[1]。最新TIOBE的權威統計報告顯示,C語言長期位居編程語言排行榜前三甲,如圖1所示。

圖1 TIOBE編程語言排行榜

由此可見,C語言的重要性不言而喻。為了深度契合社會信息產業的發展需求,很多應用型高校都相應以科技競賽為抓手推動人才培養機制改革,制定并完善了與之對應的相關制度。開展計算機學科競賽,不僅是對學生所學專業知識和編程能力的有效檢查,更是全面考察學生利用計算機分析和解決相關實際問題的能力。

本文以“C程序設計”課程為教學改革研究對象,以直面編程競賽為目標,教學過程以案例式教學為主體,充分融入競賽知識點和傳統理論教學內容,以期實現“以賽促教,以賽促學和以賽促改”的總體思路。主要從以下幾方面遞進式地介紹基于競賽模式的“C程序設計”教學改革:首先介紹傳統的理論教學模式的不足之處;然后介紹基于案例式的教學模式;最后融合競賽常見知識點和傳統理論教學的內容,介紹了面向競賽的案例式教學模式,亦簡稱為“競賽模式”。

1 傳統的理論教學模式的不足

傳統的理論教學模式是一種以教師、教材和課堂為中心,周期性觀測學生學習活動的教學模式。教師可以結合教材內容和教學培養目標,對教學內容以及各類資源加以分類和整合,結合學生學習需求、教學進度和教學計劃形成一整套培養體系。教師還可以圍繞因材施教的教學理念,對學生個性需求實現分層教學設計,為不同的學生推薦相應的學習內容,將C語言基礎知識與學生內在的需求相結合,實現資源靈活分配以及有效運用,學生也可以根據教師講題的思路和解決步驟,形成思維框架。

該模式往往會形成教師單向灌輸、學生被動接受知識的局面。雖然所授課程的理論知識全面具體,但由于課時限制、教學手段單一、實踐教學環節松軟等因素,通常會導致所學理論知識與編程實踐相脫節,從而使學生學習興趣大幅度下降,最后僅僅為了通過期末考試而被動學習。不難看出這種傳統教學模式的缺陷是非常明顯的,問題的關鍵在于作為認知主體的學生學習的主動性長期被忽視。換句話說,由于學生在整個學習過程中都始終處于被動接受知識的地位,導致其在學習過程中無法反饋學習體驗,從而使之長期處于壓抑狀態。很明顯,這種教學模式與新時代對計算機專業人才培養的要求是不相符的,其承擔不了培養當今社會急需的高素質創新性人才的重擔。因此,改變傳統教學模式,打造適應新時代的“C程序設計”教學模式勢在必行。

2 基于案例的教學模式

案例式教學(case-based teaching)實際上是傳統講座和基于問題學習的經典組合[2]。在此教學過程中,教師依據課程教學目標,按照教學內容設置多個教學案例,并通過講解一個個的教學案例,讓學生在具體的案例中參與問題的分析、討論和交流等活動[3]。該模式起源于1921年,最初由美國哈佛商學院所倡導,強調以學生為中心,采用了一系列來自于商業管理真實情境中所特有的案例來實施教學。目前該模式已被廣泛應用于各學科領域的教學過程中,幫助提高學生的學習興趣,從而有助于學生主動積極地參與課堂討論。

案例教學既是學生綜合運用所學知識、激發和強化思維的過程,同時也是學習新知識、不斷提高自身分析問題和解決問題能力的過程[4]。實施案例式教學法大致分為以下幾個步驟:①授課教師課前做好準備工作,包括吃透教材相關知識點、確定案例所需強調的主題并設計好案例即將展示的方式,以便上課時能夠準確詳盡地將知識傳授給學生。②教師亦需根據教材內容和相關案例,設置一些能充分體現教學重難點的問題,從而讓學生帶著問題去探索與之對應的理論知識,并且嘗試編程實現這些問題;或者設計一些生動形象的教學情境,使學生能夠在這些情境中去不斷發現問題、分析問題并尋求解決問題的方法。③所設置的問題需符合學生當前的認知水平和思維能力。設置問題應由淺入深,由易到難,由課內拓展到課外,由案例到教材內容,難度適中且有針對性,能做到寓理于問題和情境之中。

3 面向競賽的案例式教學模式

案例式和競賽式方法已在實際教學中得到廣泛應用且兩者的融合將對教學模式的持續改進產生深遠影響。案例式教學屬于內部驅動,而競賽式教學屬于外部驅動,兩者各有優劣、相輔相成。將競賽納入大學教育體系已在很多專業得到初步實踐,如在佐治亞理工學院,競賽被納入機電一體化教育[5]。

接下來,將融合案例式和競賽式方法的優勢,對“C程序設計”課程教學改革進行了深入研究與探索。

3.1 將競賽常見知識點融入教學案例中

目前,本?!癈程序設計”課程教學所有課時全部在機房進行,采用案例式教學模式,運用邊講邊練的手段,將課程內容分解為數據類型、運算符與表達式、順序程序設計、選擇結構程序設計、數組、函數和指針等多個知識群,而每個知識群由多個實際案例構成。

因此,需要教師在講解編程案例的同時穿插與之對應的知識點,以達到學以致用的目的。傳統案例式教學只側重于教材內容,而忽略了與實際問題更貼切的競賽式編碼能力。

然而,算法競賽題目涉及領域非常廣,對學生要求較高且在大三會開設對應的“算法分析與設計”課程。競賽題目的難度可分為低難度、中等難度和高難度3個類型,主要包含窮舉、排序、搜索、遞歸、回溯、數據結構、動態規劃和圖相關算法等主題。為了幫助低年級學生提前打好編程競賽基礎,可在設計“C程序設計”課程案例時充分融入常見的中低層次的競賽知識點。

以競賽算法中最為基礎的窮舉法為例,其數學本質上屬于歸納推理范疇,即通過枚舉求解問題的所有可能情況得出一般性的結論。接下來以中國古代數學家張丘建所著《算經》中提出的“百錢百雞”問題為計算背景,充分融入“C程序設計”課程中的循環嵌套知識點來構建窮舉算法教學案例。

案例提出:雞翁一值錢五,雞母一值錢三,雞雛三值錢一。百錢買百雞,問雞翁、雞母、雞雛各幾何?

案例分析:一方面,從數學角度看,此問題可歸結為三元一次方程組的求解。假設公雞有i只,母雞有j只,小雞有k只,則方程組如下所示:

另一方面,從算法設計角度,首先明確該案例的枚舉對象分別為i,j,k這3個大于0的整型變量;其次需確定這3個枚舉變量的取值范圍,根據循環嵌套的次序(即i→j→k),由上述方程組可知0i20,03j100-5i和0k300-15i-9j;最后使用循環語句枚舉出所有可能的解。

案例求解:百錢百雞算法流程如圖2所示。

圖2 百錢百雞算法流程圖

3.2 基于競賽模式的“C程序設計”探索

將競賽的常見知識點融入教學案例后,C語言課題組針對基于競賽模式的課程做了一些有效的探索,主要體現在以下幾點。

3.2.1 分組教學,錘煉學生的團隊意識

將班內學生每3名學生分成1個小組,設置組長1名,每次課后布置適當的編程試題。在下次上課前隨機抽取1個小組講解代碼,另抽取1個小組設計與之對應的測試用例。這樣既鼓勵學生在設計代碼時表現其獨特的創造力,又能通過其所設計的測試用例觀察他們考慮問題的完整性。

3.2.2 嚴控代碼規范,提高學生的抗壓能力

在給學生布置課后編程任務時,需向學生強調嚴格的代碼規范問題,并及時下發相應的代碼規范文檔。驗收任務時,需指出學生的每次代碼規范問題。遇到不能通過的測試用例,教師需要逐步指導學生DEBUG代碼。這樣嚴格要求學生一段時間后,大部分學生的代碼質量和DEBUG能力都將大幅度提升。

3.2.3 采用在線評測系統,使學生編碼養成“自給自足”的好習慣

目前,國內很多免費的在線評測系統擁有大量的競賽訓練試題并提供了對應的測試用例。學生上傳自己編寫的代碼后,在線測試平臺會在結果頁碼提供詳細的評測信息,如測試用例通過率、運行耗時、內存消耗等。引導學生正確利用網上計算資源的同時,也潛移默化地培養學生良好的編程習慣。

3.2.4 基于項目的交互式教學情境

以構建知識群的多個案例組建案例,制定恰當的目標,借助多樣化的資源開展教學活動,在有限的時間內解決一系列問題。通過多個特定的項目來組織學習活動,將傳統的以知識傳授為中心的方法轉變為交互式解決問題和實施任務方法。在此教學情境中,學生結合專業知識,把握總體任務,分解并規劃編程步驟,積極探索學習途徑,在教師的指導下完成任務。這種方法以學生為中心,以項目為導向。教師的角色從“教”轉向“導”,既能培養學生思考問題、分析問題、解決問題的能力,又將理論知識運用到具體任務中,從而讓學生加深對所學知識的理解。

3.2.5 針對部分晦澀難懂的知識點,采用翻轉課堂模式

教師講解部分較難理解的案例后,如果發現大部分學生對此案例對應知識點掌握不夠好,可根據課時情況適度采用翻轉課堂模式。主要目的是讓學生展現他們對所講知識點的掌握程度,以便教師制定針對性解決方案。如在學生講解對知識點的理解時,如果教師發現錯誤可適時提出修改建議。

3.3 競賽模式教學的優勢分析

近3年的“計算機科學與技術”專業課程滿意度調查問卷顯示,學生對“C程序設計”課程的滿意度逐年提升,學生參加競賽的主動性逐漸加強且取得的競賽成績也越來越好。接下來以藍橋杯大賽C/C++小組成績為例,簡要敘述課程改革后的初步成果。

藍橋杯大賽C/C++小組獲獎人數對比如圖3所示。由圖3可知,自2018年全面實施面向競賽的教學改革開始,藍橋杯大賽C/C++小組的省賽和國賽獲獎人數逐年提升,近3年獲獎人數累積達98人次,2019年被評為江蘇賽區優勝學校。

圖3 藍橋杯大賽C/C++小組獲獎人數對比圖

該模式的優勢主要體現在以下3方面:①團隊協作方面,競賽模式的教學采用3人結對的形式分組學習,團隊成員之間可以相互監督、相互學習乃至共同成長。這種協調合作形式不僅增強了小組成員之間的合作意識,也進一步增強了學生主動學習的渴望。②梯度教學方面,引入在線評測系統作為輔助學習平臺,便于不同水平和不同階段的學生根據自己的實際編程能力選擇恰當的訓練難度,亦便于學生循序漸進地學習。由于不同學生的基礎不盡相同,提供多種難易程度不同的訓練試題有利于梯度教學的持續推進。③激發學生學習興趣方面,學生作為競賽教學模式的認知主體,其作用顯而易見。競賽模式既完整保留了傳統理論教學的知識體系,又將與實際應用中更貼切的競賽知識點融入到教學案例中。學生在學習的過程中,潛移默化地訓練了其解決實際問題的能力。隨著教學進度的推進,學生會因為自己能夠將學到的知識學以致用而逐漸增強學習編程的信心。

4 結束語

編程競賽能有效提高參賽學生的編程能力、抗壓能力和團隊意識,而案例式教學是一種開放互動式、基于問題和情境的教學模式,被廣泛應用在各領域的教學場景中。本文探索了融合兩者優勢的基于競賽模式的“C程序設計”課程教學,有效提高了課內學生的學習體驗,使之在潛移默化中提升了學生的計算思維和編程實踐能力。未來,C語言課題組將持續推進基于競賽模式的課程改革,不斷分析總結,為進一步優化課程內涵做好積極充足的準備,從而為學校培養更多優秀的C程序設計人才奠定堅實的基礎。

猜你喜歡
程序設計編程競賽
基于OBE的Java程序設計個性化教學研究
項目化教學在Python程序設計課程中的應用
C++程序設計課程教學改革研究
醫學專業“Python程序設計”課程教學改革總結與思考
玩游戲學編程,Blockly Games上手玩
紡織機上誕生的編程
數學潛能知識競賽
編程屋完成數百元萬天使輪融資
學編程,先畫畫
創新思維競賽(3)
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合