秦怡?李俊吉?田麗苗
摘要:本文分析了軟件工程實踐教學中存在的問題,提出了以學科競賽為驅動的實踐教學改革方案,即教學中融入競賽,競賽中嵌入教學,賽教融合,使實踐教學與時俱進,從而為培養實踐能力強的創新型人才做一些探索和研究。
關鍵詞:學科競賽;實踐教學;以賽促教;以賽促學
在互聯網時代,隨著軟件行業和其他行業融合度愈來愈高,整個社會對軟件人才的需求也在急劇增長。這對軟件人才本身,也提出了更高的要求,除了需要具備扎實的計算機基礎理論知識和軟件工程專業知識之外,還需要較強的實踐能力、創新能力、靈活運用所需知識解決現實問題等諸多能力。然而,目前多數高校在教學過程中,還是偏重于理論教學,即使設置有相應的實驗課程,這些課程的內容也往往機械、老套,對于培養學生的實踐能力收效甚微。
學科競賽作為一項面向廣大學生的專業賽事,競賽題目大多依托于項目或實際生產問題,要求學生在理解、掌握課堂所學知識的基礎上,綜合運用各種方法和技術來解決實際問題。通過競賽,可以顯著提高學生的實踐能力、創新能力和綜合能力。為此,以學科競賽為驅動,對傳統的軟件工程類教學模式進行探索和改革,有著非常重要的意義。
一、軟件工程實踐教學中存在的問題
很多高校的軟件工程專業在整體課程體系及具體課程內容設置方面不夠合理,存在培養目標與培養過程不符合、不協調的現象。沿用十多年前、甚至幾十年前的那一套培養方案、流程及課程體系,是很難滿足當今社會對于軟件人才的各方面能力需要的。尤其是在實踐教學方面,存在很多問題。
首先,很多教師認為把知識完整地傳授給學生即可,只滿足于課堂理論教學,對于實踐教學不重視,甚至忽視。其次,實踐教學的課時量不夠。一般理論課學時比較充足,而實驗課學時占比很少,學生很難在少許幾節實驗課上完成對理論知識的消化和理解,對于知識的應用和創新就更難達到。實驗課時量少,也是教師不重視實踐教學的一個影響因素。再次,大部分實驗環節以驗證性質居多,僅僅是為了驗證理論課上的知識點,且實驗案例往往陳舊、落后,與時代脫節,缺乏新穎的設計性、綜合性實驗內容,這嚴重阻礙了學生分析解決實際問題的能力和創新能力的磨煉和培養。最后,沒有形成一個完整的實踐教學管理體系,缺少有效的質量監控和評價體系,無法以量化的指標衡量學生的實踐能力和素質。
學科競賽與日常教學存在很大不同,它以比賽的形式拋出實際問題,題目新穎,貼近生產和生活實際,且需要參賽學生自行查找和調研文獻資料,對所學知識和相關資料進行再加工,應用軟件工程的思想進行分析、設計、實現和測試。這就使得學生變“被動學習”為“主動學習”,增加了學習的主動性和積極性。同時,也使得學生不再滿足于課堂所學,將會帶領學生更深層次地理解和運用知識。另外,還有一些團體賽,要求學生組隊完成比賽,團隊內部必須合理分工、密切合作、高效溝通,才可能取得好成績。這些能力的培養,在一般的課堂教學和實踐教學中很難實現。
針對目前軟件工程實踐教學中存在的問題,以學科競賽為驅動,對實踐教學中存在的問題積極思考,采取相應的解決措施。同時,通過提升實踐教學質量,也可以激發學生的學習興趣,使其實踐能力得到提升,進而在學科競賽中取得好成績,達到競賽與實踐教學協調發展的目的。
二、學科競賽驅動下的實踐教學改革方案
學科競賽是面向大學生開展的課外競賽活動,它以競賽的方式將學生在課堂上所學的理論知識與實際問題緊密結合,通過讓學生自行發現問題并解決問題,激發學生的學習興趣,增強學習自信心和成就感。對于軟件專業的學生來說,目前有很多不同級別、不同難度、不同含金量的競賽。ACM國際大學生程序設計競賽是一項由國際計算機協會(ACM)主辦的國際性計算機賽事,是全球計算機行業中公認規模最大、水平最高的大學生程序設計競賽[1]。
藍橋杯全國軟件和信息技術專業人才大賽是由工業和信息化部人才交流中心主辦的面向計算機/軟件工程等專業的全國性賽事。中國高校計算機大賽--團體程序設計天梯賽是由全國高等學校計算機教育研究會主辦的全國性程序設計大賽。此外,還有很多軟件企業和機構主辦或組織的各項競賽。
通過大量研究發現,這些競賽的形式主要以個人或團隊為單位,對于給定的與實際生產、生活關聯很緊密的具體問題,運用所學知識,提供解決方案或具體實現方法。學科競賽活動的開展,主要是對學生知識運用能力、問題的分析和解決能力、創新實踐能力等進行綜合考核,同時可以大力培養學生的信息捕獲能力和團隊合作意識。
(一)樹立“以賽促教”“以賽促學”的教學理念
1.大力宣傳競賽,營造競賽氛圍
在校園內張貼競賽宣傳海報、舉辦競賽宣講會、競賽社團活動等多種方式宣傳競賽。對“藍橋杯”“天梯賽”這些含金量比較高且參賽范圍廣大的學科競賽要著重宣傳,對競賽形式、流程和內容等進行針對性介紹,讓學生對各項賽事有初步的了解,理解競賽與日常學習的互相補充、互相促進作用。同時,校內競賽社團成員要圍繞競賽的宣傳活動,積極地發揮其引導作用,以幫、傳、帶的方式指引和幫助不同層級水平的學生,將學生參與競賽的興趣和積極性充分調動起來。
2.提升教師水平,注重培訓活動
相比于日常教學,競賽的指導工作對指導教師的業務能力和教學能力都提出了更高的要求。在指導競賽的過程中,指導教師首先要明確“以賽促教”“以賽促學[2]”的教學理念,結合實際的競賽項目,開展針對性的培訓活動。其次,要將競賽考核的內容、能力要求等詳細給學生進行講解,必要時,教師可將競賽考核相關知識點重新梳理。最后,教師要多參加一些關于學科競賽的培訓會,汲取他人的成功經驗,從而更有效地指導學生。
3.開展定期訓練,組建團隊梯度
要想在競賽中取得好成績,日常訓練是必不可少的。根據不同的賽事,規劃設計不同的訓練計劃??梢栽趯W校范圍內組織一些邀請賽、選拔賽,篩選出對競賽有興趣且有競賽基礎的學生;也可以由競賽社團定期組織訓練,包括周賽、月賽、季度賽等,根據成績排名,篩選出處于不同層級、不同水平的學生,為參加不同類型和級別的競賽打好基礎。同時,通過訓練可以將日常學習中的不足暴露出來,繼而開展針對性訓練,提升實踐水平。
(二)教學中融入競賽
1.以競賽為標準,提高實踐教學中程序設計的質量
傳統的課程實驗或課程設計中,教師往往只關注學生是否可以寫出來功能正確的程序,而對于程序的書寫風格、執行效率等,關注甚少。這就導致學生對于編寫程序有片面的理解,認為程序只要能輸出正確的結果就是一個好的程序。事實上,競賽所涉及的很多題目,想要得到高分,不僅要保證其功能正確,程序的執行效率也是一個重要的評測點。同時,良好的程序書寫風格也對程序的質量有重要的保障作用,對于成績的評定者而言,主觀上也會適當地給予好評。
2.以競賽為基礎,將競賽題目或案例轉化為日常教學的內容
很多院校的理論教學教材,選用的多為若干年前出版的教材,書中對于程序設計的具體案例也較為陳舊。實踐教學中,根據理論知識的內容和進度來設計實驗,實驗內容往往也比較機械、落后,并且也經常存在與現實脫節的情況。通過競賽,可以對理論和實踐教學中的內容重新審視,剔除嚴重落后的內容,將競賽題目引入到理論課堂和實踐教學中。理論課堂和實踐教學中引入競賽題目,以此為驅動,帶領學生體會提出問題、分析問題、解決問題的全流程,增加學生的課堂參與度,提高課堂活躍度,從實際情境中學會運用理論知識求解問題。同時,引入的競賽題目或案例一般都與時俱進,涉及交叉課程或領域,有助于學生了解當今軟件行業的現狀和發展趨勢,讓學生可以緊跟上時代的發展,這對于軟件專業類學生來說,無疑是十分重要的。
另外,日常教學中,伴隨著競賽題目或者案例的解決,學生會獲得成就感,從而激發參賽的積極性,達到了“以賽促學”的效果。
3.以競賽為目標,規劃日常訓練方法
競賽中的題目類型不同,難度也各異,不同的學生,對于知識點的掌握和運用能力也不盡相同。因此,需要規劃一套以日常教學內容為基礎的競賽訓練方法,盡可能覆蓋到所有不同階層的學生。
大一學年的第一學期,學習完“分支結構、循環結構、數組和函數”等內容之后,即可開始首輪訓練。首輪訓練重點在于鞏固基礎知識,采用書面答題和上機編程相結合的方式,設置比較簡易的題目,讓學生盡快找到編程的狀態。大一學年的第二學期,在學習完“自定義數據類型、遞歸、指針”等內容后,開展第二輪提升訓練。第二輪訓練在首輪訓練的基礎之上,主要采用上機編程的方式,選取一些難度適中的題目,運用所學知識可以解決一些較為簡單的實際問題。
大二學年的第一學期,接觸到“數據結構”這門課程,學生通過該門課程的學習,會掌握大量經典且實用的基礎數據結構,諸如,線性表的順序和鏈式結構、棧與隊列、二叉樹、圖、動態查找表以及排序等,學習完這些內容之后,開啟第三輪提升訓練。第三輪提升訓練相比前兩輪,會在題目的設置廣度和難度上加深,要求學生能靈活選取和運用各種數據結構,解決較為復雜的實際問題。
大三學年的第一學期,學習“算法分析與設計”這門課程,對于經典的遞歸算法、動態規劃算法、貪心算法、分析算法等深度理解,隨后開啟第四輪提升訓練。第四輪訓練,是對于算法、數據結構、程序設計語言等課程的綜合運用,此輪訓練可設置一些難度較高、復雜度較大、綜合性較強的題目,訓練方式上,既可以單人訓練,也可以團隊一起訓練。但從團隊協作的角度來說,建議以團隊方式訓練,這樣有利于培養學生團隊合作的能力。
(三)競賽中嵌入教學
根據上述內容,第三輪訓練結束后,進行一次全員測試,根據測試結果,將學生分為基礎班和提高班。對于基礎班,學生普遍存在基礎知識不牢固,理解不透徹等現象,因此,需要讓這部分學生重新學習“數據結構”這門課程中相關的內容。教師可根據競賽考核的知識點,按照復雜度、重要性、出現的頻率等因素,設計出針對基礎班學生適用的教學方式。提高班的學生,也可結合自己的學習經驗和感受,為基礎班的學生做一些報告或總結,從同齡人的角度提供一些可借鑒的經驗,同時也可鼓勵基礎班的學生,督促他們早日進入提高班。
對于提高班的學生,他們對于程序設計語言以及基礎的數據結構已經掌握得比較扎實,競賽中等難度的題目對于他們來說已經游刃有余了,他們所欠缺的是各類算法的深入理解和運用。作為指導教師,首先必須提升自己的算法水平,多看、多練、多用算法,通過閱讀文獻、參加培訓、參與實際工程等方法,快速提高自己的業務水平。其次,要利用工作日的空閑時間或周末時間,為學生做各類算法的強化培訓。培訓過程不僅提高了學生對于算法的深層次理解,也同樣檢驗了教師的教學能力。
三、學科競賽驅動下的實踐教學保障措施
競賽的成功舉辦和好成績的取得,不僅依賴于學生的刻苦訓練和指導教師的正確指導,還需要學院、學生會、學校等管理部門的大力支持,各部門共同做好服務保障工作[3]。
首先,爭取學院和學校的經費支持。競賽過程中,涉及競賽的組織費、報名費、耗材費、差旅費等費用,如果單純靠學生和指導教師來負擔這些費用,勢必影響參賽的積極性。目前,學院和學校每年都設有關于學科競賽的預算,對參加競賽的學生和指導教師提供經費支持,這無疑為參賽人員增添了不少動力。而從很多參加競賽的學校統計數據來看,凡是在競賽中取得好成績的學校,基本上都是在競賽費用這一方面做了大量的投入,這些投入使參賽學生、指導教師以及學校都會從中受益。
其次,肯定指導教師的付出并適當給予獎勵[4]。指導競賽活動不同于一般課堂教學,需要教師在正常教學以外,再額外花費大量的精力和心血來組織、培訓參賽隊伍。教師的辛苦付出要得到學校的肯定,可考慮折算成教學工作量,或是給予競賽專項補貼。在涉及評定職稱、申報教學教育成果時,對于取得重大好成績的指導教師,應適當給予政策傾斜。
最后,肯定參賽學生的成績并適當給予獎勵。對于在競賽中獲獎的學生,要在每學期的綜合測評中,給予加分。如果在國家級或國際級重大賽事中獲獎的學生,可考慮免試推薦攻讀碩士研究生。鼓勵在競賽中獲獎的學生總結經驗,匯集成果,繼而申請專利或軟件著作權,轉化成果,學校對此類學生要給予物質獎勵。
四、結束語
以學科競賽為驅動,將競賽和日常教學深度融合,這種教學模式可以有效刺激學生學習的積極性和主動性,真正做到對理論知識的靈活運用,大大提高學生的實踐動手和創新能力。以實現“以賽促學”“以賽促教”“賽教融合”的目的,學院、學生會、學校等管理部門應與時俱進,積極采取各種有效措施,提高軟件類專業實踐教學質量,培養出更多優秀的人才。
作者單位:秦怡 李俊吉 田麗苗 太原科技大學
參? 考? 文? 獻
[1]王龍,李杰,趙其昕.學科競賽驅動下的軟件工程專業實踐教學改革探索[J].高等教育, 2019,1(2):162-163.
[2]朱曉青,劉鐵銘.基于藍橋杯的“以賽促學”教學方法實踐[J].計算機工程與科學,2016,11(1):46-49.
[3]許龍飛,徐濤.競賽背景下大數據人才培養路徑思考[J].計算機教育,2021,4(5):159-163.
[4]王桂平.高校學科競賽培訓模式探索與實踐[J].計算機教育,2019,7(4):142-145.