王桂平
(重慶交通大學 信息科學與工程學院,重慶 400074)
高校學科競賽作為培養學生創新意識和實踐能力、提高學生綜合素質、推動教學改革的有效途徑,其作用得到了高校、企業和政府的認同。因此,近些年來各類學科競賽在國內高校得到蓬勃發展,但各省市、各高校在學科競賽的開展和培訓模式上仍處探索階段。
目前,國內高校學科競賽主要有以下幾種培訓模式。
(1)有計劃的針對性培訓。在浙江、江蘇、北京、上海等學科競賽開展得較早的省市,教育廳或教委成立了大學生科技競賽委員會指導高校學科競賽的組織、管理和推廣工作[1-2],高校往往也成立了相應的競賽主管部門。針對某項學科競賽,競賽負責人需要向競賽主管部門上報培訓課時、經費需求,主管部門審批后,競賽指導老師在課外召集學生按培訓計劃進行競賽培訓、輔導學生等。這種培訓模式需要充足的經費作為保障。
(2)突擊培訓。學科競賽開展較晚的省市,或者某項開展較晚的學科競賽,往往采用這種模式。上一級部門下達競賽通知后,競賽指導老師臨時組織學生突擊培訓。
(3)完全放手由學生自發組隊集訓,指導老師只起到報名、帶隊工作。一些985、211高校以及優勢學科集中的高校,由于某項學科競賽已開展多年,形成了傳統賽事,學生出于興趣愛好自發組隊,常年集訓,一有比賽隨時能參賽。
(4)多項學科競賽融合一起,構成學科競賽體系,或多部門聯動成立立體鏈式競賽管理機構[3-4]。這種模式由于各學科競賽之間差異較大,涉及的學院和部門眾多,實際操作難度較大。
目前,高校學科競賽培訓模式主要存在以下問題。
(1)經費不足。很多高校在學科競賽上并無專項經費,或者因為經費不足而只能支付外出參賽的差旅費,不能保證競賽培訓的課時費。經費不足導致無法系統地培訓學生,有時甚至只能由指導老師自發地做一些入門培訓。
(2)指導老師任務重。學科競賽指導老師不僅要完成自己的教學、科研任務,還需培訓和指導學生、帶隊外出參加比賽等,增加了指導老師的工作量。競賽培訓往往安排在晚上或周末,也占用了指導老師的休息時間。
(3)學生精力分散、壓力大。積極參加學科競賽的學生往往是各方面表現都非常突出的學生,他們不僅要保證學業成績,而且疲于應付各種學科競賽培訓和社團活動。因此,如果學科競賽的開展完全依賴于課外培訓,將導致參賽學生精力分散且壓力大。
(4)培訓組織松散。由于指導老師對參賽學生并無約束力,辛辛苦苦準備的培訓課程,參加培訓的學生人數不固定,學生來與不來完全取決于自己。即便是指導老師安排了系統的培訓,如果學生沒有全程參與,也難以保證培訓效果。
(5)培訓內容與課程教學內容重復。學科競賽涵蓋的知識體系往往會涉及相關課程的教學內容。如果競賽指導老師不是這些課程的任課老師,就會出現課程教學和競賽培訓銜接不好,導致某些課程講過的內容在競賽培訓時又重復出現。另外,參賽學生基礎參差不齊,也有可能會導致競賽培訓時不得不講一些基礎內容。
(6)管理難度大。由于競賽培訓往往是在課外完成的,競賽主管部門和教務主管部門要監督和管理競賽培訓工作,其難度非常大[3-5]。
目前通識教育已成為共識,國內高校逐步推出舉措,鼓勵開設通識課程,包括計算機通識性課程[5]。針對某項或某類學科競賽,可以抽取出其中基礎性、普適性的知識,面向全校學生開設一門通識課,甚至多門進階式通識課。
以程序設計競賽為例。目前國內高校廣泛開展的程序設計競賽包括大學生程序設計大賽(包括省市級、國家級和國際級)、藍橋杯全國軟件和信息技術專業人才大賽(分為省賽和全國總決賽)、中國高校計算機大賽團體程序設計天梯賽等。筆者從這類程序設計競賽中抽取出共性的計算思維和基本的程序設計方法,開設了兩門全校性通識任選課:程序設計方法及在線實踐(上)、程序設計方法及在線實踐(下),分別安排在第2學期和第3學期,見圖1。這兩門課程均為2學分,課時都是24(理論)+8(實驗)。

圖1 課程群及通識課
這兩門通識課面向全校理工科專業學生。非計算機專業學生都先修了C語言程序設計課程,見圖1。程序設計方法及在線實踐(上)主要講授計算思維、基本的程序設計方法(如枚舉、模擬、遞歸、分治等)及在線程序實踐[6]。修完這門課程后,有余力并且有興趣的同學可以繼續選修程序設計方法及在線實踐(下),這門課程主要講授搜索、動態規劃等算法以及圖論、數論、組合數學等領域中的基礎算法。
面向全校學生開設通識課的目的不僅是講授基礎性知識,也能起到宣傳學科競賽、積累群眾基礎的作用。此外,通識課也能發掘出一些對學科競賽感興趣甚至癡迷的學生,這些學生來自不同的專業。針對某些團隊賽,跨專業組隊能實現知識互補相濟,往往能取到意想不到的效果。
針對某項或某類學科競賽,可以從“知識完整性、進階性、互補性”的角度構建課程群。課程群的教學內容構成了學科競賽的知識體系,目標是在正常的課程教學中潛移默化地積累學科競賽所需的知識和技能,無需課外培訓,或僅需少量課時針對競賽進行強化培訓。課程群建設的主要內容包括以下幾方面。
(1)通過合理地設計課程群的知識體系、規劃各課程的知識結構、精選課程案例、有效地組織教學過程,優化教學資源,保證各門課程之間的銜接和進階。
(2)重構課程群的實踐教學體系,可以吸收學科競賽中新穎的、實用的實踐內容,以支撐學科競賽對學生實踐能力和技能的需求。
(3)通過教學方法的有機結合,師生互動的加強,提高教學質量。
(4)通過教學團隊的建設以及教學團隊內部的協作,為課程群建設提供強有力的保障,同時教學團隊中部分老師構成競賽教練團隊,從而保證了教練團隊的穩定性。
以程序設計競賽為例,可以構建“程序與算法設計”課程群[7],包括高級語言程序設計、面向對象程序設計、C#程序設計、Python程序設計、Java程序設計、算法與數據結構等課程。
為了支撐程序設計競賽對學生實踐能力和技能的需求,重構程序與算法設計課程群的實踐教學體系,見圖2,要在原有的課后作業、實驗報告、課程設計等實踐教學內容的基礎上,引入程序設計練習賽(個人賽、組隊賽等多種形式)。

圖2 “程序與算法設計”課程群的實踐教學體系
課后作業和實驗報告部分采用在線程序實踐,上機考試和程序設計練習賽則全部采用在線程序實踐,這些實踐教學內容都依賴于在線評判[6]:對學生提交的程序,根據所采用的編程語言調用相應的編譯器,編譯學生的程序,編譯無誤后運行,讀入測試輸入數據,生成學生程序的輸出數據,再將其與正確的輸出數據進行比對,從而評定學生提交程序的正確性并統計程序的運行時間,最后把評判結果實時反饋給學生。
在實踐教學體系中采用在線程序實踐,并引入程序設計練習賽,極大地激發了學生的編程興趣,學生可以根據實時反饋的評判結果修改程序直至提交正確,老師也可以及時檢驗學生的學習效果。
學科競賽往往實踐性非常強,不僅要比較全面地考查學生的知識和技能,還要考查他們的團隊協作能力和實戰中的抗壓能力,因此必要的集訓和實戰練習是必不可少的。針對某項或某類學科競賽可以組建正式的、長期的集訓隊,目標是召之即來、來之能戰、戰之必勝。
集訓隊的組建和日常集訓通常以學生自發為主、老師指導為輔。組建集訓隊時應鼓勵老隊員和新隊員組隊,形成“傳、幫、帶”的作用;也應鼓勵跨專業組隊,實現知識互補相濟。如果經費充足,可以組織集訓隊參加各種練習賽、挑戰賽、邀請賽,提高實戰能力和技巧。
如果條件允許,還可以針對某項或某類學科競賽,成立大學生學術社團[8]。這類學術社團在學科競賽中的作用包括以下幾方面。
(1)學術社團保障了參賽隊伍的穩定性。一方面,大學生學術社團以協會的形式聚攏了一大批會員,而這些會員構成了學科競賽堅實的參賽隊伍,老會員取得的好成績是新會員的榜樣和動力。
(2)學術社團是參賽學生與指導老師之間的橋梁。由于參賽學生眾多、指導老師人員相對不足,無法達到一對一的專門指導,這樣學術社團就在參賽學生與指導老師之間起到了橋梁紐帶的作用。
(3)學術社團是學科競賽開展和推廣的強有力力量。學科競賽的廣泛開展離不開學術社團強有力的宣傳、組織和推廣。隨著學科競賽的開展,學術社團的規模不斷擴大,其影響力也不斷增強。
其他舉措還包括吸收學生加入指導老師的項目團隊,組織參賽學生申報大學生創新創業計劃等。
筆者在浙江省、重慶市兩所高校工作期間實踐“通識課+課程群+集訓隊”的培訓模式,取得了非常好的效果。2003—2011年在浙江省某財經類高校工作期間,連續指導大學生程序設計大賽8年,努力將程序設計大賽發展成為該校的一項傳統賽事,指導的學生屢次獲得浙江省大學生程序設計大賽一等獎、二等獎。以此為基礎,接任的指導老師帶隊在國際大學生程序設計大賽亞洲區域賽上屢獲金牌和銀牌,在國內具有較大的影響。
2015年全職博士畢業后至今,筆者在重慶交通大學工作期間,繼續在大學生程序設計大賽和藍橋杯大賽中實踐這種培訓模式。指導的學生參加藍橋杯大賽,屢獲國家二等獎、三等獎,在重慶市大學生程序設計大賽上也逐步取得突破。2018年12月8日學校承辦了重慶市第九屆大學生程序設計大賽,指導的學生獲得了2個二等獎,5個三等獎,取得了歷史最好成績;預期將在國際大學生程序設計大賽上取得突破。
針對程序設計類學科競賽提出并實踐的培訓模式,可以解決學科競賽經費不足、管理難度大等問題,減輕了指導老師的工作量,學生在通識課和課程群中就潛移默化地積累了學科競賽所需的知識和技能、避免了高強度的課外培訓。這種培訓模式預期可以為其他學科競賽的培訓提供非常好的借鑒。