臺灣大學程式解題社致力於提升臺灣程式競賽實力,由於屬於臺灣的資源偏少,許多想學習程式競賽的新手都只能從各處搜尋零散的資料、亦或者是需要先克服語言障礙來參考國外資源。我們受到 USACO Guide 啟發,決定幫助想學習程式競賽的新人規劃穩紮穩打的學習路線,來培養出能夠獨當一面的選手。因此,我們開始著手了這份大講義的編寫。
透過免費、公開、完整的網路資源,我們期望全臺各地想接觸程式競賽的人們都能夠容易的上手,進而增加臺灣程式競賽人口的基數,達成全面提升臺灣程式競賽實力的宗旨。
我們是臺灣大學程式解題社,由眾多經驗豐富、實力頂尖的程式競賽選手組成,其中不乏多名 IOI 國手與 ICPC World Finals 選手,除了競賽經驗之外,我們也有許多成員在如各高中資訊培訓、臺灣資訊奧林匹亞選訓營等各式課程擔任講師,擁有相當豐富的教學經驗。我們期望能以我們的豐富經驗與知識,提供完整且扎實的學習資源。
目前,程式競賽廣泛使用的語言是 C++,同時也是歷史悠久的程式語言之一。我們認為針對語言本身的學習早已存在許多更好的教學資源,並不需要由我們來造輪子重寫一篇。相對的,我們會提供一些我們認為良好的語法學習資源,若讀者有其他推薦的學習資源,也歡迎分享給我們。
建議不要。儘管我們了解許多學生在學習上可能已經習慣這樣的讀書方法,但作為希望能讓人們穩紮穩打學習的資源,我們在講義文字上會盡可能的引導新手思考,透過一些例如「為什麼要這樣做?」、「解釋想法緣由」等類似敘述來加深讀者的印象,更希望能養成讀者反思的能力。
這份講義的終極目標是培養出擁有自學能力的一流選手,我們認為,要成為厲害的選手一定要具備良好的自學能力。當然,我們了解自學能力並不是與生俱來的,也因此前述的終極目標提到的「自學能力」是我們希望讀者能夠被這份講義培養出來的。我們期盼,在講義的初期,透過詳盡的解說可以幫助多數讀者在學習的過程中逐漸掌握學習資訊競賽的技巧,才能夠讓人「獨當一面」。即使我們後期的內容不小心寫得不夠好、或是沒時間編寫,這些獨當一面的選手也能自行上網透過其他資源補足這些缺失的部分。
不過,畢竟每個人適用的學習方法是不一樣的,很有可能我們認為夠詳盡的教學方法對不少人並不適用,因此我們同時也歡迎有熱情的人引用這份講義當成教學資源,來帶領那些運氣不好、沒有被我們顧慮到的讀者踏入程式競賽的殿堂。
在先前我們也解釋過,為了加深讀者的印象、讓讀者學會反思,我們不得已得增加文章長度來為各式想法進行鋪陳,但在我們的規劃中,文章長度是會隨著學習深度開始縮短的!
我們認為,當選手已經對資訊競賽越來越熟悉時,有許多的演算法與資料結構的背景與設計理由都是選手能漸漸自行體會、甚至早已領悟的,在這樣的情況下,我們期望讀到較後面內容的讀者已經不再需要冗余的鋪陳就能夠知道如何去完整了解一套新的思路、新的理論。
也因此,如果你是一位認為自己早以打穩基礎的選手,你可以期待在未來的篇章我們會加速對比較高深知識的介紹,來滿足你的學習慾望。
一切取決於你對程式競賽的熱情。話是這樣講,但我們還是有規劃學習路線的,在了解資訊競賽介紹 / 台灣資訊競賽介紹後,只要搭配我們對章節與主題的介紹,應該就能根據自己的目標以及其時辰來規劃出學習的時間軸。