盧玲 陳媛 茍光磊

摘要:詳細分析了ACM競賽的特點,并針對目前程序設計系列課程中普遍存在的問題,闡述了ACM競賽對培養學生學習能力及創新能力所具有的指導意義,結合ACM競賽提出了一系列培養模式,包括進階式的學習目標、開放式的學習模式、團隊學習模式和多元化的評價體系。文章詳細闡述了以ACM競賽為指導的培養模式的具體實施方案,該模式在教學實踐中取得了顯著的效果,為培養學生的學習能力及創新能力提供了行之有效的解決方案。
關鍵詞:ACM;學習能力;培養模式;評價體系
文章編號:1672-5913(2013)07-0059-03
中圖分類號:G642
0 引言
程序設計系列課程是我國各大高校計算機科學與技術、軟件工程等專業普遍開設的專業基礎課程。目前,在該系列課程的學習方面仍存在一些較為普遍的問題。例如,采取統一的教學模式和教學目標,使學生難以準確定位自身發展目標,在一定程度上限制了個性化的發展;采取傳統的、單一的考核模式,考試內容局限于教材中的基本理論和基本知識,使學生除了掌握一般編程技能和算法分析能力外,常常處于尋找標準答案的狀態,在邏輯思維和創新能力發展方面缺乏原動力。本文針對這些問題,在深入分析ACM競賽特點的基礎上,提出了以ACM競賽為導引的培養模式。下面對這一培養模式進行詳細介紹。
1 ACM/ICPC及其評價體系
1.1ACM/ICPC
ACM國際大學生程序設計競賽(ACM International Collegiate Programming Contest,ACM/ICPC)始于1970年。目前,ACM/ICPC在樹立其專業性的同時,其娛樂性、對抗性和團隊協作性等特點也吸引了越來越多的大學生參與。ACM/ICPC競賽具有如下特點:
1)題型多樣,題目多與實際應用結合,富有趣味性,涉及知識面廣。
2)采用在線系統進行評判,評判指標包括程序的正確性、運行時間、內存開銷以及輸入/輸出格式的控制。
3)題目采用英文命題。
4)采取團隊工作方式,每支參賽隊伍由3人組成,比賽時每隊使用一臺機器解答問題。
5)每次比賽的題目風格、題型、難易程度都有很大的不確定性。
6)比賽時間一般為5個小時,完成6~12個題目。在規定時間內,比較各隊完成題目的數量、程序的時間開銷和內存開銷。
1.2ACM/ICPC的評價指標
ACM競賽的評價指標主要包括如下幾方面。
1)算法評估能力。在分析實際問題的基礎上,參與者能夠在盡可能短的時間內確定最優的算法。
2)算法的熟練程度。比賽要求選手熟悉并通曉各類算法,對常用的算法應能靈活運用。
3)算法實現能力,即快速編寫代碼、調試程序的能力。
4)充分的數學知識。在數學方面,參賽選手應該具有數學建模技術,具備圖論、組合數學、數論等方面的數學知識。從歷屆比賽來看,扎實的數學基礎是取得好成績的重要保證。
5)英文閱讀能力。
6)團隊協作能力。參賽選手以團隊為單位進行比賽,參賽隊伍的組建、分工和協作,都是影響比賽速度的重要因素。
7)創新能力。ACM/ICPC的題型多樣,知識面廣,問題涉及各個領域。許多問題的求解都是沒有現成算法可以套用的,這就要求參賽隊員不僅能正確地選擇算法策略,同時要能在現有算法的基礎上進行改進和創新,以滿足求解實際問題的需要。
總體來看,ACM/ICPC旨在使大學生運用計算機來充分展示自己分析問題和解決問題的能力。ACM競賽的核心價值主要表現在:①競賽模式新穎,有利于培養學生的編程實踐能力;②對參賽選手的綜合素質要求高,尤其對創新能力提出了很高的要求。檢測選手在壓力下進行創新思維和理論實踐的能力,是大學計算機教育成果的直接體現。
2 基于ACM競賽的學習模式
計算機專業研究型人才的培養把學習能力和創新能力作為主要目標,這與ACM競賽評價體系的要求是一致的。因此,以ACM競賽為導引構建以促進學習能力、培養創新能力為目標的培養模式,是可行的且有效的。這種培養模式主要包括以下幾方面的內容。
2.1進階式的學習目標
在程序設計系列課程中,由于邏輯思維能力發展不一致,學生的學習能力差異非常明顯。有的入門很快,有的則需要較長的時間。另外,由于知識點本身的特性,同一學生對不同知識點的接受快慢程度也不一樣。針對這種差異性,為滿足不同層次學生發展的需要,以及同一學生在不同階段的發展需要,可以將學習目標設置為階梯狀,根據知識點的難度和深廣度,將教學內容劃分為基礎、進階、提高3個層次。數據結構課程順序表的實驗內容構成,如圖1所示。
從圖1可見,每一次實驗都被劃分為基礎練習、進階練習和擴展練習。基礎練習是一般性掌握的內容,通常要求全部學生掌握并熟練運用;進階練習是大部分學生掌握的內容;擴展練習以拓展思維方式為訓練目標,其題型更加多樣,注重算法的實際應用。在擴展練習題的選擇上,一般可選擇與ACM競賽相關的問題,或源于ACM競賽的題目。這些題目的知識覆蓋面具有較大的深廣度,教師可安排學生根據自身情況選做。進階式的學習目標使學生能結合自身特點設定學習目標,制定階段性的學習方案,使學習有的放矢。
2.2開放式的學習模式
開放式的學習模式包括開放式的平臺和開放式的思維方式。
開放式的平臺主張學生在課堂學習之外,還應涉足更廣闊空間的資源。例如,在ACM競賽的培訓中,學生可到北京大學、杭州電子科技大學、浙江大學等各類在線評測系統上進行練習,使用這些平臺提供的題目和學習資源,同時鼓勵學生參與到這些在線平臺的論壇中,與更多的程序設計人員進行廣泛交流。日常教學中,我們應加強學習資源的建設,如建立完備的教學視頻資源庫、豐富課程網站上的學習資料等,使學生可以通過網絡平臺獲取更多的學習資源,拓展學習空間。
開放式的思維方式主張一題多解,不尋找標準答案。在實驗教學中,教師應鼓勵學生運用多種解題思想、多種技術手段對同一問題求解,并對求解過程進行重構,包括重構問題分析、算法設計、編碼以及調試等環節。例如,對約瑟夫生者死者問題,學生可以用順序表、帶頭結點的單鏈表和不帶頭結點的單鏈表、單循環鏈表等分別進行求解,并比較幾種方案的差異。重構求解過程能促使學生總結同類問題的共性和個性。學生通過對各種解題方案進行評估,可增進對各種數據結構的理解,還可以培養多樣性的計算思維方式,從而促進創新能力的發展。
2.3團隊學習模式
ACM競賽以團隊形式進行,因此其日常的一切學習任務均以團隊為單位展開,例如培訓時以團隊為單位安排座位,進行交流時以團隊為單位進行匯報等。團隊學習模式具有如下優點:①便于團隊成員之間分享知識和經驗,使團隊成員的能力得到更快的提升;②有助于培養學生的組織能力、溝通能力和表達能力;③有利于各異性發展。在ACM競賽中,由于題型的靈活性和算法的不確定性,除了要求所有隊員具備扎實的基礎知識外,每個隊員還應具備自己的專長,以便在遇到自己擅長的問題時能幫助團隊脫穎而出,這就促使隊員自覺地發現自身優勢,明確自己研究和發展的方向,找到融入團隊的切入點。學生為了充分體現自身在團隊中的價值,往往會主動分析自己的特點,挖掘自身優勢,尋找感興趣的研究方向,這也使得團隊中的學生發展呈現明顯的各異性。團隊學習模式在程序設計系列課程中是廣泛適用的。在日常學習中,學生可自由分成2~3人的小組,各組設置組長,學習以組為單位展開;課程設計等綜合實踐環節也以團隊合作的方式進行。從教學實踐看,這種模式在促進合作以及學生的各異性發展方面效果非常明顯。
2.4多元化的評價體系
ACM競賽題型的多樣性和靈活性,要求參賽者具備很強的應用和創新能力。在日常學習中,單一的考試評價體系不利于應用能力和創新能力的發展,引入多元化的評價體系是非常有必要的。例如,除了傳統的考試外,還可采取上機考試、團隊競賽、答辯、一題多練等評價形式。在評價指標上,不僅考察算法的正確性,還應考察算法的多樣性、創新性。另外,團隊協作能力、組織能力、口頭表達能力以及文檔的書寫能力也應納入評價的指標體系。總之,ACM競賽對學生的綜合能力提出了更高的要求,這為構建日常學習的評價體系提供了重要的參考。
3 結語
筆者對ACM競賽的特點進行了分析。總體來看,ACM競賽不僅是對知識水平的考察,也是綜合素質的競賽,這一思想對日常的學習和教學具有重要的指導意義。在實踐中,重慶理工大學以ACM競賽為指導,將基于ACM競賽的培養模式應用于教學,在學生的學習能力和創新能力培養方面取得了明顯的效果。近年來重慶理工大學的學生廣泛參與市級、國家級競賽項目,如ACM競賽、數據庫設計大賽、電子設計競賽等,并多次榮獲國家級一、二等獎及市級獎項;從就業看,計算機專業學生的綜合素質也被知名IT企業所認同。實踐表明,構建以ACM競賽為導引的培養模式,是在促進學習能力、培養創新能力方面進行的一次有意義的探索。
(見習編輯:劉麗麗)