摘要:ACM/ICPC目的是使大學生能夠通過計算機來充分展示其分析問題和解決問題的能力以及創新能力的培養,因此將ACM/ICPC引入到計算機教學中對計算機專業創新型人才的培養會有較大的幫助。主要針對ACM/ICPC對計算機專業創新型人才培養的作用進行了較為詳細的研究,進而提出了相應的計算機培養模式的改革方法。
關鍵詞:ACM/ICPC;計算機;創新;培養模式
作者簡介:王斌(1979-),男,黑龍江佳木斯人,佳木斯大學信息電子技術學院計算機硬件教研室主任,講師;姜重然(1962-),男,黑龍江佳木斯人,佳木斯大學信息電子技術學院,教授。(黑龍江 佳木斯 154007)
基金項目:本文系2012年黑龍江省高等教育教學改革項目(項目編號:JG2012010616)、2012年佳木斯大學教育科學研究課題(課題編號:JKB2012-045)的研究成果。
中圖分類號:G642 文獻標識碼:A 文章編號:1007-0079(2013)22-0055-02
隨著計算機技術、信息技術以及通信技術的高速發展和各行各業信息化程度的不斷加深,以計算機為基礎的信息技術已經逐漸滲透至各個領域。各種信息前所未有地充斥著人們的生活,人們獲得信息的途徑越來越多,方式也越來越便捷。毫無疑問,當前正處于一個高度膨脹的信息技術時代,如何培養創新型的計算機專業人才是值得研究的課題。本文首先分析高校計算機教育中存在的問題,然后對ACM/ICPC對計算機專業創新型人才培養的作用進行了研究,最后提出基于ACM/ICPC的計算機專業創新型人才培養的改革方式。[1]
一、計算機專業學生培養現狀所存在的問題
1.對學生創新意識的重視不足
通過對相關資料的查閱和調查發現,目前絕大多數的高校由于受到應試教育等相關因素的影響,在計算機教育、教學過程中雖然普遍采用理論和實踐相結合的教學方式,但是對大學生創新能力的培養仍存在很大的不足。大多數的學生只知道完成教師所布置的任務,或者照葫蘆畫瓢將相關任務應付了事,基本都沒有自我學習的意識,更談不上自身創新能力的培養。
2.課程體系不夠完善
目前,許多高校的計算機科學與技術專業所使用的授課教材相對比較陳舊,有的甚至使用7、8年都未曾進行更新,課程的體系結構沒有大的改變。然而,近年來計算機技術的更新換代速度非常快,這樣無疑給學生創新能力的培養帶來了不少問題。[2]由于課程體系的不夠完善,使得學生在學習時很難將所學的知識運用于實際中,因此就導致了理論和實際不能夠較好地相互融合。
3.相關的實驗內容過于獨立,缺乏綜合性
程序設計類課程進行實驗教學時,許多高校仍然采用按照課本內容的先后順序設計實驗內容,不注重將各個知識點融會結合設計綜合類實驗內容。如C語言程序設計課程教師往往都是按照各個語法知識點來設計單個獨立實驗,再如數據結構課程都是按照不同類型的數據組織方式來對實驗進行單獨設計。這樣,學生往往將注意力集中到每一個單獨的數據組織方式中,從而忽略了對課程概念的整體性把握以及創新能力的培養。
二、ACM/ICPC對計算機專業創新型人才培養的作用
國際大學生程序設計競賽(即ACM/ICPC)是由美國計算機協會主辦的世界上水平最高、規模最大的計算機競賽,如今已被公認為當代大學生向世界展示自身計算機教育成果的最好舞臺,對培養計算機專業的人才有非常大的幫助,其作用主要體現在創造知識能力的培養、程序設計能力的培養以及增強對知識獲取能力的培養這幾個方面。
1.創造知識能力的培養
由于ACM/ICPC 競賽題目比較新穎而且程序設計難度較大,所涉及的學科也極為廣泛,有的甚至是當今一些世界性的難題,這樣就要求參賽選手必須要有全面的分析問題和解決問題的能力,以及較強的創新能力。[3]因此通過參加這種類型的競賽可以極大地激發學生自主學習的能力及不斷進行探索的精神。
同時,該競賽也剛好能滿足當今大學生們求勝的心理,由于每一題目都有大量苛刻的測試數據可以評判編程的失誤之處,這樣參賽者就需要在測試中不斷修改錯誤、完善代碼,進而去完成比賽,進一步培養了學生求真務實的科學態度。
2.提高學生程序設計能力的培養
競賽的準備和正式競賽是學生對所學相關知識進行檢驗的過程,對學生程序能力設計的培養有很大的幫助。首先,因為培訓教練培訓學生的時間相對比較有限,對每一類型題目的詳細講述也有限,這樣就需要學生花費較多的時間來對相關的算法和知識點進行整合[4],然后自己通過編程來解答相關的題目;其次,ACM/ICPC競賽中的題目都是原創題目,學生們必須將知識綜合運用,不斷通過編寫程序來進行相應的建模求解。
3.增強獲取知識能力的培養
競賽所涉及到的相關課程非常寬泛,如組合數學、計算幾何、概率論、計算機程序設計語言、數據結構、C語言以及算法分析與設計等等。但是由于參賽的選手大多只是對數據結構、C語言以及算法分析與設計等等計算機相關的基礎課有比較深入的了解,因此,教練們就需要對參賽選手的相關學習目標以及內容進行指導,讓其制定適合于自身的學習目標,加大對所需的知識的獲取和補充。[5]
三、順應ACM/ICPC競賽的教學改革方法
1.定期舉辦各種ACM/ICPC競賽,從而提高學生對程序設計學習興趣
新生聯賽在ACM的競賽中起著非常重要的作用,而新生在第一年需要學習C語言程序設計課程,這樣在學完數組這一章節時就可以參加ACM的競賽了,所以學校可以定期舉行這種新生聯賽,調動學生的積極性,讓大家都參與進來。當然這種賽事的工作量是相當大的,所有的出題以及相關的講解都需要由校方的ACM隊員來完成,同時又由于是新生聯賽,為了讓新生們充分提高程序設計的興趣,讓他們在參加比賽中找到編寫程序的樂趣,這種競賽題目就不能夠太難,應逐步讓他們產生濃厚的興趣后再讓其參加國內和國際所舉辦的ACM/ICPC競賽。另外,學校也可以定期舉辦賽事來讓更多高年級的學生參與進來,使得全院都有著一種對程序設計較高的熱情,營造一種良好的學習氛圍,如舉辦ACM/ICPC的月賽、ACM/ICPC的圣誕專場、ACM/ICPC的元旦專場等等,這樣都可以大力提高學生學習程序設計的興趣。
2.將課程講授與ACM/ICPC相互結合
在對計算機相關課程,如算法設計與分析、C語言的程序設計、數據結構等等進行教學時,由于這些課程都是比較抽象的,這樣教師在進行講授時要想使學生學好就有較大的難度,更談不上創新了。然而ACM/ ICPC競賽中的題目大多都是具有挑戰性和趣味性的,如果將相關的題目融入到課堂中,一方面會增強相關課程的實用性,使得學生會有較為深刻的印象,另外一方面還可以使學生對相關的知識有更為深入的理解,從而引導學生們創新思維的培養。具體的結合方式如圖1所示。
圖1 課程講授與ACM/ICPC結合圖
通過將課程教授與ACM/ ICPC相互結合,教師就更加容易在課堂上向學生提出各種實際問題,進而啟發學生思考,并借鑒其解題報告形式講解分析有效地提高學生的學習興趣、活躍學習氛圍,從而加深學生的理解,提高其知識應用以及創新能力。如講解數據結構二叉樹知識點,除了講解基本理論知識之外,給出一個小球下落和層次遍歷的練習題,通過這些例子分析引出數組存放程序運算量內存泄露知識,引發學生對程序更多的思考,進而可以提高學生們的知識應用能力。
3.實踐教學全程實行ACM/ICPC化
實踐教學是程序設計課程教學中非常重要的一個環節,因此在進行實踐教學時,為了能提高學生對實踐教學的熱情,增強其創新能力以及綜合能力的培養,就需要增加綜合性和設計性的實驗,而如果采取全程ACM/ICPC的形式就能夠達到該教學目的。因為ACM/ICPC將題目趣味化,它往往將一個題目設計成故事形式,從而引起學生的興趣。同時,遞交的答案可在線即時判別正確與否,這也是ACM/ICPC吸引學生的第二個原因。為此可將程序設計的實踐教學改成ACM/ICPC性質,例如在C語言程序設計課程的課內實驗中,在前面一些基礎知識講述完后,后面的實驗就采用ACM形式,每次實驗安排以相關知識點為主的三到五個題目,同時放開學習時間。如學生課堂上沒有做完,則課后還可以接著做。在C語言程序設計課程的前期,因為學生學習的知識有限,實驗一般采用程序設計填空或改錯的形式,由學生來完成,以得到完整正確的程序,在后期則完全是由學生編寫程序。在實踐課程程序設計基本訓練中也可以采用ACM形式,每次實驗課在校ACM網站上做綜合知識點的相關題目,將系統開放一個星期,課堂做不完的話可以用一個星期的時間完成。這些都是將實踐課教全程實行ACM/ICPC化較好的措施。
四、總結
由以上的研究和分析可以得知ACM/ICPC競賽能夠有效地促進計算機學科創新型人才培養。對當代的大學生而言,參加競賽就是一種研究性以及探索性的學習過程,引導和培養大學生的自主學習能力,使得他們能夠主動探索并解決問題。這是對計算機實踐教學中存在不足的一種彌補,也是對現行教學理念的一種改革,對計算機學科創新型人才培養模式的形成有著較大的促進作用。
參考文獻:
[1]郭風,朱韶紅.計算機科學與技術專業課程體系建設研究[J].中國現代教育裝備,2010,(1).
[2]杜獻峰,鄭秋生,杜俊俐,等.計算機科學與技術專業人才培養體系建設淺析[J].計算機教育,2009,(1).
[3]武建華.基于ACM模式的數據結構實踐教學改革與探索[J].計算機教育,2007,(12):114-116.
[4]ICPC.about icpc[EB/OL].[2012-1-10].http://cm.baylor.edu/welcome.Icpc.
[5]田賢忠,劉楠,孫國道,等.ACM國際大學生程序設計競賽學習模式探討[J].高教與經濟,2009,22(4):46-49.
(責任編輯:王祝萍)