陳卓艷,仇麗青
(山東科技大學 計算機科學與工程學院,山東 青島 266590)
程序設計類課程是計算機類專業(yè)的專業(yè)基礎課,是數(shù)據(jù)結構、操作系統(tǒng)等計算機核心課程的前導課[1]。程序設計能力是高校理工科學生,特別是計算機類專業(yè)學生所應具備的基本能力,尤其是當今超級計算、大數(shù)據(jù)和云計算風起云涌的時代,對于高校學生程序設計能力的培養(yǎng)提出了更高層次的要求。
然而,目前程序設計類課程教學存在的主要問題是[2]。
傳統(tǒng)教學模式存在“重知識、輕技能,重語法、輕思維”的弊端,課程之間無法達到無縫銜接。
學生對于程序設計的理解水平、應用能力是千差萬別的,單一的教學模式無法適應眾多學生的需求。
學生無法及時獲得學習效果反饋,缺乏在編程中的自我判斷能力。
傳統(tǒng)的教學中,師生的互動交流較少。一方面不能很好的發(fā)揮學生的主觀能動性;同時,教師對學生的學習情況掌握不足。因此,學習的效果大打折扣。
2015年4月,教育部下文就“關于加強高等學校在線開發(fā)課程建設應用與管理”,提出了若干任務。2018年1月15日,教育部召開新聞發(fā)布會,推出了首批490門“國家精品在線開放課程”。在線開放課程,可以為教師開展線上線下混合式教學,為學生進行自主學習提供支持服務。在線開放課程,對促進課程教學改革與創(chuàng)新,提升教學質量,降低教育成本,促進教育公平起到重要作用[3]。
除了在線開放課程以外,針對程序設計類課程的程序編程實踐的需求,教學團隊自主研發(fā)了程序在線評測系統(tǒng)SDUSTOJ,該系統(tǒng)可對用戶提交的程序源代碼進行自動、實時的在線評判并給出錯誤提示,包括對程序輸出結果、格式、運行時間、占用內存資源等的判別[4]。
在線開放課程對于專業(yè)教學團隊建設、學生學習方式轉變、課程教學模式改革、考核評價方式改革、優(yōu)質教育資源共享等方面有著積極的促進作用;而將OJ系統(tǒng)引入到程序設計類課程教學中,可以構建“課內實驗—課外作業(yè)—綜合實踐—科技競賽”多層次的實踐教學鏈[5],大大提高學生的實踐能力。
實踐證明,在線開放課程和OJ系統(tǒng)相結合,能有效促進程序設計課程的教學質量。
教學團隊開展在線開放課程和 OJ相結合的混合式教學模式[6],其教學模式如圖1所示。
圖1 在線開放課程+OJ混合式教學模式Fig.1 Mixed teaching mode based on online open course + OJ
網(wǎng)絡平臺是在線開放課程的重要支撐,其包含的教學資源有:課程簡介、教學大綱、教學日歷、電子課件、電子教案、課程視頻、課后作業(yè)和學習討論等。在課程的預習環(huán)節(jié)、導入環(huán)節(jié)和鞏固環(huán)節(jié),學生利用電子課件、課程視頻、學習討論等資源完成課程學習,而教師則可通過課后作業(yè)、在線討論、學習評價等手段,了解學生的學習情況,并對課程進行完善。
教學活動采取“線上+線下”的混合式教學新模式,該模式已成為教育教學發(fā)展的基本趨勢。所謂“線上”教學,是指教師利用網(wǎng)絡教學平臺發(fā)布教學資源,給學生提供課件、教學視頻、練習題等,學生充分利用課外時間完成知識的學習,該階段應當在課前完成;而“線下”教學,則是教師通過各種教學手段完成知識的內化,由傳統(tǒng)課堂的教材內容的講解轉變?yōu)榻虒W重點、難點的深度解析,進行課堂引導和互動,將以老師為主體的傳統(tǒng)課堂變成以學生為主體的高效課堂。老師由原來的“主演”轉變角色為“導演”,學生則轉變角色為課堂的主人。角色的轉變,將大大激發(fā)學生的學習積極性,突出學生的主人翁意識。
傳統(tǒng)的程序設計類課程考核,更注重期末考試結果,存在期末一考定成績的片面性,無法對課程展開全面的評價。團隊改革課程考核方式,采取“過程考核+期末考核”和“課堂考核+課下考核”相結合的方式,建立以注重學習過程為主的全面、科學的評價體系。為此,將平時成績和期末成績的比例,由原來的30%和70%調整為40%和60%,目的是強調過程考核。
過程考核采取“線上+線下”考核相結合的方式,線上考核主要包括:實驗,作業(yè),討論參與頻次和質量等;線下考核主要包括:出勤,課堂活動等。期末考核采用學院統(tǒng)考,機試形式,全部采用編程題,秉承“共性+個性”理念,同一學院的所有專業(yè)統(tǒng)一題目,不同學院的根據(jù)學生特點可作答“個性”題目。
程序設計類課程的實踐性非常強,因此,實踐教學是其重要環(huán)節(jié)。對于程序設計類課程的實踐教學方面,教學團隊結合 ACM 國際大學生程序設計競賽指導經(jīng)驗,以在線評測系統(tǒng)SDUSTOJ為平臺,提出了競教結合的實踐教學方法[7]。實踐證明,該方法能夠大大激發(fā)學生學習編程的興趣。其主要內容有以下三個方面。
實踐證明,在大眾化教育的背景下,學生對于程序設計的理解水平、應用能力是千差萬別的。為此,教學團隊建立了“分層次、個性化”的程序設計實踐教學培養(yǎng)模式,如圖2所示。面向一年級本科生,教學團隊組建了程序設計互助與提高群;面向學生中編程興趣高、有一定動手能力的學生,組建了程序設計協(xié)會;面向高水平、高年級學生,通過選拔成立ACM集訓隊,培養(yǎng)高水平編程人才。團隊將科技競賽融入程序設計實踐教學中,并依托SDUSTOJ平臺,為競賽提供全方位、多層次開放的訓練模塊。另外,通過舉辦新生挑戰(zhàn)賽,校內月賽,ACM預選賽等多種比賽,激發(fā)興趣、營造氛圍,并選拔優(yōu)秀學生進入集訓隊,進而參加各種程序設計競賽。
圖2 分層次程序設計實踐教學培養(yǎng)模式Fig.2 Multi-level teaching mode of programming courses experiments
教學團隊以“理解鞏固課程內容,鍛煉程序設計技能,規(guī)范軟件開發(fā)習慣,培養(yǎng)計算思維能力”為目標,在實踐教學內容革新的具體實施過程中,遵循客觀的教學規(guī)律,“取其精華,去其糟粕”,利用新的知識點進行更新和替換,并對實踐內容進行層次劃分,最終凝練為“課內實驗—課外作業(yè)—綜合實踐—科技競賽”的多層次的實踐教學鏈[8]。同時,教學團隊利用一個具有一定規(guī)模的軟件開發(fā)案例,要求學生分別用結構化編程方法和面向對象程序設計方法分別實現(xiàn),從中體會兩種編程方式的異同和優(yōu)缺點。該教學鏈如圖3所示。
圖3 多層次、一貫制實踐教學鏈Fig.3 Multi-level and consistent process of experiments
教學團隊自主研發(fā)了在線評測系統(tǒng)SDUSTOJ,可對提交的程序進行自動、實時評判,包括程序結果的正確性、運行時間、占用內存資源和輸出格式的判別,其客觀、公正和實時的評價方式,得到學生普遍認可。學生在線提交程序可得到程序狀態(tài)和排名的實時反饋,這非常有利于提升學生的學習熱情和激發(fā)學生的競爭心理;教師可以實時監(jiān)控學生實驗過程和結果,及時發(fā)現(xiàn)問題并予以指導,統(tǒng)計分析實驗的效果和存在的問題,大大提高教師與學生的交互效率[9]。在線評測系統(tǒng)SDUSTOJ的學生排名情況和程序提交狀態(tài)分別如圖4和圖5所示。
圖4 在線評測系統(tǒng)-排名狀態(tài)Fig.4 Online judge-standing
圖5 在線評測系統(tǒng)-提交狀態(tài)Fig.5 Online judge-status
教學改革經(jīng)過近幾年的實踐,計算機學院本科生程序設計實踐能力和培養(yǎng)質量得到明顯提升,程序設計類課程教學獲得了學生的一致認可。自2011年程序在線評測系統(tǒng)首次在教學中使用以來,題目數(shù)量達到 1400余道,學生在系統(tǒng)中累計完成程序1336231個。從2012年~2019年,程序設計協(xié)會的參加人數(shù)從100余人上升到500余人,ACM集訓隊的招收人數(shù)從22人上升至65人,學生來源從計算機學院擴展到礦業(yè)、地科、電子等7個學院,在全校學生范圍內形成了較大影響。團隊成員指導的學生多次獲得ACM國際大學生程序設計競賽、“藍橋杯”全國軟件和信息技術專業(yè)人才大賽獎項。隨著學生程序設計能力大幅度提高,在就業(yè)方面也顯現(xiàn)出良好增長態(tài)勢,越來越多的畢業(yè)生入職阿里巴巴、小米、百度等知名IT公司。
近年來,團隊在程序設計課程體系、能力培養(yǎng)模式、教學資源、人才培養(yǎng)等方面取得了重要成果,應用效果顯著;對于其它學校、專業(yè)開設程序設計課程和實踐能力培養(yǎng)具有較好的借鑒和示范作用[10]。
基于在線開放課程+OJ的教學模式是現(xiàn)代信息技術與網(wǎng)絡信息技術快速發(fā)展下的一種教學改革。筆者在自身經(jīng)驗積累的基礎上,以程序設計類課程為例,對該教學模式進行探索。實踐證明,該方法對于激發(fā)學生的學習積極性,提高編程能力有較好效果[11]。
由于本文選取的是程序設計類課程,因此研究結果可能存在局限性。同時,該教學模式仍有些問題尚未解決,例如學生的自律性和主動性存在差異、兩級分化現(xiàn)象等[12],這些不足之處還需要在后續(xù)研究和應用中進一步改善。