2014/07/28

Online Judge

詳細介紹參考
http://www.csie.ntnu.edu.tw/~u91029/oj.html

「 Association for Computing Machinery (ACM) 」是一個致力於電腦科學教育的協會,出版大量的專業期刊文獻,舉辦重大的計算機科學會議,在資訊界舉足輕重、名聞遐邇。

ACM 每年度都會舉辦一次「 The ACM-ICPC International Collegiate Programming Contest (ACM-ICPC) 」,是一個給全世界大專院校學生參加的演算法程式設計比賽,比賽目的在於考驗選手臨場的演算法設計能力、程式編寫能力。 ACM 首先在世界各地舉辦初賽,再從各個賽區選拔出表現優秀的隊伍,角逐世界總決賽。

ACM-ICPC 帶動了演算法程式設計的風氣。世界上許多大專院校的資訊系所,仿照 ACM-ICPC 的比賽模式,紛紛自行開發出即時線上比賽系統,能夠自動批改、評分、計時、統計。學生不必齊聚一堂,藉由網際網路,就可以相互切磋程式設計技巧。比賽結束之後,便將比賽題目編列題庫,開放線上批改程式的功能,供學生賽後練習檢討。這套系統大家普遍稱呼為「 Online Judge System 」、「 Online Judge 」。

最古老、也是最有知名度的 Online Judge ,是由西班牙知名的瓦雅多利大學「 Universidad de Valladolid (UVa) 」開發的「 UVa Online Judge 」。 UVa Online Judge 是台灣人最熟悉的一個 Online Judge :資訊相關科系的學生,常利用它來磨鍊程式設計技巧;教師將它當作課程教材使用;有許多個人網站從事題目翻譯,提供測試資料集等等。

UVa Online Judge 亦和 ACM 合作,成為 ACM 推廣的一個 Online Judge ,藉此向大眾提倡程式設計。因此, UVa Online Judge 除了收集自行舉辦的比賽的題目,也嘗試收錄世界各地重大程式設計比賽的題目,以臻豐富完整。

有趣的是,歷年來大家口耳相傳、以訛傳訛,便將 UVa Online Judge 誤植為 ACM 了,把 UVa Online Judge 的題庫稱作「 ACM 題目」,利用 UVa Online Judge 訓練程式設計技巧時稱作「寫 ACM 」,約定俗成。

從事這項活動,不僅可以學習演算法、熟悉程式設計、鍛鍊智力,還可以培養自主學習與獨立解題的能力──此即程式設計師的核心價值。因此近年來演算法程式設計開始獲得大家重視,產業界紛紛舉行演算法競賽,大專院校也紛紛開設相關課程,大家也開始將這項活動稱呼為「 Competitive Programming 」。

                                                                                                                            --節錄自 演算法筆記