摘 要:ACM程序設計競賽能提供給學生更多的實踐機會,開拓學生的視野,增強學生所學知識的廣度和深度,增強學生的團隊協作意識,便于在學生中樹立典型,起到示范作用,促進創新型人才的培養;更能激發學生學習程序設計類課程的興趣,變被動地學為主動地學,充分帶動學風,從而提高教學效果和人才培養質量;參賽獲獎證書和參賽經歷將成為將來學生就業的一個重要資本,成為了進入大企業、好企業的敲門磚,充分帶動學生就業。
關鍵詞:ACM程序設計競賽 團隊協作 教學效果
中圖分類號:F241.4 文獻標識碼:A
文章編號:1004-4914(2013)03-132-02
為了拓展學生的知識面,踐行黑龍江科技學院的“大德育、大工程、大實踐”三大教育理念,提高學生的綜合素質和實踐能力,筆者積極開展素質教育活動,指導學生參加各類、各個級別的學科競賽,并多次獲獎,為學校爭得了榮譽。素質教育活動的開展有利于課程建設和課程改革,更有利于學生的就業。教師通過指導學生參加各類競賽活動,可以將競賽中遇到的一些問題引入到課堂教學中,豐富教學內容,激發學生的學習興趣;學生通過參加各類競賽活動,能夠增強自身的實踐能力和自信心,開闊眼界。
筆者連續三年主持黑龍江科技學院的素質教育項目。2008年以來,積極組織學生參加“ACM國際大學生程序設計競賽”累計獲得一等獎1項,二等獎5項,三等獎18項。
一、算法與程序設計課的教學現狀
在學校軟件工程專業的人才培養方案中,設置了四門以C語言為主線的算法與程序設計類課程,分別是C程序設計、C++程序設計、數據結構和算法設計與分析。這四門課程具有較強的“先行-后續”性,課程內容也具有較強的銜接性,主要培養學生的算法與程序設計能力,進而提高學生用計算機來解決實際問題的能力,這四門課程對于能否培養出高素質、高水平的軟件專業人才將起到決定性作用。但目前這四門課程存在一些共性問題,一是每門課程都有一定的實驗學時,但數量較少,學生缺少實踐的機會,導致學生的實踐能力差;二是理論學時有限,雖然現有教學內容基本涵蓋了學生要掌握的所有知識點,但教學內容缺乏廣度和深度,學生學到的知識比較膚淺;三是教師的教學內容比較陳舊,更新速度較慢,不夠新穎,缺乏吸引力,導致部分學生產生厭學心理;四是部分學生學習主動性差,處于一種“被學習”的狀態,對程序設計有畏難心理,不會編程或者是只能編寫出非常簡單的程序。這些問題如果不加以解決將直接影響人才培養的質量,而組織學生參加一些專業相關的競賽活動是解決這些問題的一種有效途徑。近年來,許多高校都已經認識到了學科競賽活動在教學改革實踐中的重要性,越來越重視學科競賽活動,鼓勵學生積極參與各類重大賽事,例如參加“ACM程序設計競賽”。
二、ACM程序設計競賽簡介
ACM程序設計競賽是世界上公認的規模最大、水平最高的程序設計競賽,是由美國計算機協會(ACM)組織的年度性競賽,被譽為計算機科學界的奧林匹克競賽。
競賽的歷史可以追溯到1970年,至今已有40多年的歷史。1977年,首屆ACM程序設計競賽總決賽在ACM計算機科學會議期間舉行,并于1989年將大賽總部設在了美國德克薩斯州的貝勒大學。1997年,IBM成為競賽的贊助方,IBM的加盟使得參賽人數顯著增加,自此之后,該競賽逐漸發展成了一個全球性的賽事。
競賽提倡創新和團隊協作,鼓勵學生在構建全新的軟件程序時盡情發揮創意,幫助學生檢驗自己在強壓力下的工作能力。競賽采用組隊參賽的形式,由三名隊員組成一支隊伍參賽,整個比賽時間為5個小時,比賽題目為6~10道不等,全英文。比賽時,每支隊伍只使用一臺電腦,參賽者爭分奪秒,與其他參賽隊伍比拼邏輯、策略和心理素質。競賽中,高級語言程序設計、高等數學、數據結構、算法設計與分析、數學建模、離散數學等課程的知識都有所涉及,需要隊員投入時間精力,進行相關的實踐訓練。
競賽的評判過程十分嚴格,若每次提交的解決方案出現錯誤,就會受到加時懲罰。在最短的時間內,提交次數最少、解決問題最多的隊伍就是最后的勝利者。
國內的許多著名大學,一直非常重視該項賽事的參與。上海交通大學曾兩次奪得世界總決賽冠軍,浙江大學奪得過一次世界總決賽冠軍。
三、ACM程序設計競賽對學生能力的培養
1.培養學生分析問題和解決問題的能力。ACM程序設計競賽主要考查學生利用程序來解決一些實際問題的能力,競賽題目以其難和新來激發學生的興趣。對于一道競賽題目,參賽隊員首先要分析它的解題思想,它屬于哪種題型,可以基于哪個經典算法來求解,然后再來編寫程序,而且在編程時還要注意一些優化,這樣才不至于超時。它通過任務驅動的方式,讓學生在解難題的過程中,去構思時間和空間復雜度都能滿足要求的完美算法,這將充分考驗參賽隊員的分析問題和解決問題能力。
2.鍛煉學生編程的邏輯思維。ACM程序設計競賽強調獨立思考,鼓勵標新立異,這有利于培養參賽隊員的邏輯思維能力。無論從事什么工作都有一定的思維方式,寫文章有寫文章的思維方式,做生意有做生意的思維方式,寫程序也一樣,有自己的一套思維方式,熟悉了這種思維方式,寫起代碼來就像寫文章一樣得心應手,想什么寫什么,把大腦里的內容用代碼完美地表現出來。此外,許多競賽題目無固定解題模式,數百條苛刻的測試數據使得編程失誤在所難免,選手在不斷的修改錯誤、完善程序中,求真務實的科學態度也得到了培養。
3.使學生收獲編程的知識和經驗。學生在課堂上學習了C程序設計、C++程序設計和算法設計與分析等課程,但由于理論課中學時有限,使得授課內容比較基礎,知識傳授也不夠全面。編程是一門技術,但凡是技術的東西不去練的話必然生疏,參加競賽可以很好的鞏固這些基礎性的知識,同時還能得到擴展。參賽過程中,通過學習、熟知各種算法,可以很大的開闊自己的視野;通過競賽能進一步強化、拓展相關學科知識的深度和廣度,知道的多、了解的多終究不是壞事。更主要的是,相關算法的設計思想會潛移默化的影響學生代碼的編寫,提高代碼編寫的質量。
4.培養學生的團隊協作能力。競賽既考驗學生個人運用計算機來分析問題和解決問題的能力,又考驗團隊配合能力,深受廣大大學生的喜愛。參加競賽的都是一個團隊,學生總是看到或聽到“團隊協作”這個詞,但是始終體會不到那種實感,而在參加ACM競賽后,學生能切身體會到團隊的力量,隊員們一起共同解決一個問題后的那種成就感只有身在其中才能體會的到。還有,參加競賽能使學生交到很多志同道合的朋友,隊員們都有著相同的興趣愛好,在一起學習、聊天、討論,這種良好的學習氛圍有助于提高學生的學習效果。
總之,ACM程序設計競賽為提高學生的實踐能力與優秀人才的脫穎而出提供了很好的機會和條件。
四、ACM程序設計競賽對學生就業的促進作用
目前,國內許多知名IT企業,如華為、阿里巴巴等公司也越來越重視ACM競賽,它們會贊助一些ACM賽事,比如每一年度的亞洲區預選賽。對于ACM競賽參賽隊員,如果畢業后到這些企業去面試,那就有可能從眾多應聘者當中脫穎而出,成功求職。
通過ACM國際大學生程序設計競賽的開展,使得學生有了更多的實踐機會,學生不再害怕編程,而且能編出高效的程序,這將極大地提高學生的實踐能力;開拓了學生的視野,增強了學生所學知識的廣度和深度,增強了學生的團隊合作意識,便于在學生中樹立典型,起到示范作用,促進創新型人才的培養;極大地激發學生學習程序設計類課程的興趣,變被動地學為主動地學,充分帶動學風,從而提高教學效果和人才培養質量;參賽獲獎證書和參賽經歷將成為將來學生就業的一個重要資本,成為了進入大企業、好企業的敲門磚,充分帶動學生就業。
筆者統計了黑龍江科技學院參加過ACM競賽活動的已經畢業的學生的就業情況,參加統計的學生12人,平均月薪達到了7308元,參加工作時間最長的三年多,最短的僅為4個月(統計時間為2012年11月)。所有學生從事的工作均為專業相關,且均是項目組的主要成員。有的學生還創立了自己的公司,未來發展前景一片光明。
[基金項目:本文系2012年黑龍江科技學院教學研究項目,項目編號:JY12-99]
參考文獻:
1.郭嵩山,王磊,張子臻.ACM/ICPC與創新性IT人才的培養[J].實驗室研究與探索,2007(12)
2.王磊.ACM-ICPC競賽中的團隊合作[J].計算機教育,2006(3)
3.李文新.ACM參賽教練:收獲,不止是心靈上的[J].計算機教育,2006(3)
4.習慧丹,胡洋.高校計算機專業程序設計課程教學改革探討[J].信息技術與信息化,2012(3)
(作者單位:黑龍江科技學院計算機與信息工程學院 黑龍江哈爾濱 150027)
(責編:賈偉)