coder

coder【尚無正式翻譯】

現在是全民寫程式的時代。藝術家寫程式碼創造藝術,音樂家寫程式碼創造音樂。經理寫程式碼分析商業數據,玩家寫程式碼建立遊戲腳本。只要是寫程式碼的人,都可以稱之為coder。

寫程式碼,現今世界已經有許多相關活動。內容千奇百怪,讓人沒有時間感到無聊。我打算一一介紹各種活動,不過不是馬上介紹。我想到什麼寫什麼,陸陸續續補完內容。

Sebastian Lague
https://www.youtube.com/channel/UCmtyQOKKmrMVaKuRXz02jbQ
Sergei Galkin
https://twitter.com/sergeyglkn

coding tutorial寫程式碼的教學文章

STEAM 教育學習網
https://steam.oxxostudio.tw/

online coding course寫程式碼的線上課程

codecademy
對象:一般民眾
內容:各種程式語言、各種開發工具

Code.org: Code Studio均一教育平台:Code.org
對象:中小學生
內容:程式語言的基礎觀念

ScratchJr
對象:學齡兒童
內容:益智玩具

coding bootcamp寫程式碼的培訓營

其實就是針對入門者的補習班。

有空來整理一下台灣的相關活動。台灣有些基金會在弄這個。

https://www.ccclub.io/

programmer

programmer程式員、程式設計師

寫程式的專業人士,製作軟體、網站、電腦系統,瞭解數學、工程學、自然科學與人文科學,重視功能、效能、耗能。平常喜歡喝咖啡與吸貓,不喜歡喝豆漿與遛狗。

code monkey碼農

只會填程式碼的人。背後原理一竅不通。專門負責危險辛苦骯髒的低階工作。社會底層勞動力。

用於程式設計專業人士,帶有貶義。一般用於自謙、自嘲。

https://www.reddit.com/r/learnprogramming/comments/yfrd5y/
https://news.ycombinator.com/item?id=6085754

programming編程、程式設計

freeCodeCamp
https://www.freecodecamp.org/

learn-x.org
https://www.learn-c.org/
https://skillcrush.com/blog/64-online-resources-to-learn-to-code-for-free/

programming bootcamp程式設計培訓營

資訊之芽培訓計畫
對象:中學生
主辦:台灣大學學生、台灣清華大學學生
類別:C++語法班、Python語法班、算法班
講師:主辦人
時間:上半年

南臺灣學生資訊社群
對象:中學生
主辦:嘉義、台南、高雄三地的高中學生
類別:演算法、資訊安全
講師:安排教師與業師授課
時間:下半年

developer

developer開發者

https://roadmap.sh/
https://www.sololearn.com/
https://github.com/kamranahmedse/developer-roadmap
https://github.com/danistefanovic/build-your-own-x
Learn X in Y minutes
https://learnxinyminutes.com/
Project Based Learning
https://github.com/practical-tutorials/project-based-learning
GitHub Student Developer Pack
https://education.github.com/pack

project development專案開發

當然我們這裡主要是談軟體開發、資訊系統開發。

Fabrice Bellard
https://www.youtube.com/watch?v=Dr2lI6Q2_GU

軟體考古學家
https://www.threads.net/@brachiosoft/
台大課程網
https://maxchou415.medium.com/-8d1a84c96837
https://ncn.pages.dev/

open source project開源專案

open是公開。source code是原始碼、原始程式碼。project是專案。專案團隊向社會大眾公開原始程式碼。

甚至專案團隊讓社會大眾參與專案、編輯原始程式碼。也就是稍後提到的公眾協作。

Open Source 開源社群的第一門課 | 如何成為 Apache Committer
https://byronhsu1230.medium.com/451d42e853d6

Open Source Guides
https://opensource.guide/zh-hant/how-to-contribute/

HelloGitHub
https://hellogithub.com/

GitHub Trending
https://github.com/trending
The Architecture of Open Source Applications
https://aosabook.org/

Try Public APIs for free
https://github.com/public-apis/public-apis

awesome-oss
https://github.com/sereneblue/awesome-oss
Google Summer of Code
https://summerofcode.withgoogle.com/

若你喜歡民族主義大旗,那我們來點在地人主導的開源專案。

https://github.com/hexojs/hexo
https://github.com/pencil2d/pencil
https://github.com/notepad-plus-plus/notepad-plus-plus
https://github.com/audreyt/ethercalc

目前規模最大的專案原始碼管理網站是GitHub。約有五億個專案,其中兩成是開源專案,剩下八成是閉源專案。不得不讚嘆人類的創造力。

注意到,開源open source、免費free of charge,兩者是不同概念。開源未必免費、免費未必開源。雖然你能看到原始碼,但是你想使用原始碼可能需要付費。雖然你能免費使用經過編譯的原始碼,但是你可能看不到原始碼。開源與免費,其真值表總共四種情況。

open collaboration project公眾協作專案

開源協作免費,其真值表總共八種情況。

甚至有人特地成立組織,號召協作對象,甚至付薪水。宛如政治團體、慈善團體。

g0v台灣零時政府
https://g0v.tw/

Mozilla Corporation
https://www.mozilla.org/zh-TW/

最後快速介紹一下自由軟體free software:軟體附帶原始碼。除了得到軟體使用權,還能得到原始碼重製權,無論是免費或付費。開發者提倡自由軟體,促進技術交流,促進產業發展。開發者發明授權條款,強制規定使用自由軟體原始碼開發出來的新軟體,也必須是自由軟體。自由軟體最終導致開源專案崛起、公眾協作崛起。

technological community技術社群

一群人組織團體,三不五時聚在一起討論技術,心血來潮齊心合力舉辦會議,平常維護開源專案改造社會。可以想成是早起會、廣場舞、太極拳、救國團,成員從大哥阿姨變成了coder。

台灣神手 開源義肢
https://sites.google.com/view/twgodhand
開源社群推廣目錄
https://hackmd.io/@SITCON/floss-community-list

technology forum技術論壇

網路討論區。規劃各種版面、閒聊各種事情。產業新聞、解答疑問、抒發心情。

https://www.webmasterworld.com/
https://www.reddit.com/
https://juejin.cn/

台灣人習慣在臉書或LINE建立技術問題討論區。由於這些網站被稱作社群網站,所以很容易被誤認為技術社群。其實那是一群陌生人在找家教。

https://www.facebook.com/groups/backendtw/
https://www.facebook.com/groups/f2e.tw/
https://www.facebook.com/groups/twjug/
https://www.facebook.com/groups/pythontw/
https://www.facebook.com/groups/rust.tw/
https://www.facebook.com/groups/node.js.tw/
https://www.facebook.com/groups/augularjs.tw/
https://www.facebook.com/groups/reactjs.tw/
https://www.facebook.com/groups/vuejs.tw/
https://www.facebook.com/groups/tgadc/
https://openchat.line.me/tw/explore/34
https://www.cake.me/resources/groups-for-engineers-and-tech-jobs

technical question and answer website技術問答網站

有人發問、有人解惑的網站平台。當然會有面向開發者的網站平台。寫程式碼寫不出來,那麼可以上去發帖提問。文思泉湧無處宣洩,那麼可以上去尬聊幾句。

現況是大多數開發者都仰賴技術問答網站以開發軟體。甚至出現copy and paste from Stack Overflow這樣的俚語。

https://stackoverflow.com/
https://www.quora.com/
https://www.zhihu.com/

technical documentation技術文件

軟體專案團隊,撰寫教學文件、規格文件,指導大眾使用軟體、開發軟體。

甚至翻譯成各國語言,降低學習門檻。

https://developer.mozilla.org/zh-TW/docs/Web/HTML
https://learn.microsoft.com/zh-tw/docs/
https://web.dev/explore/
https://www.mathworks.com/help/

developer community開發者社群

系統開發公司,提供函式庫、技術文件、業務消息,指導工程師使用自家公司產品。

甚至舉辦產品發表會,邀請工程師參與。

https://developers.google.com/
https://developers.facebook.com/
https://developer.nvidia.com/
https://io.google/

engineer

engineer工程師

活用科學知識,解決實際問題。設計整體架構,鑽研局部細節。

https://github.com/kilimchoi/engineering-blogs

software engineering軟體工程

system design系統設計

https://github.com/ashishps1/awesome-system-design-resources
https://github.com/karanpratapsingh/system-design
https://github.com/InterviewReady/system-design-resources
https://github.com/donnemartin/system-design-primer

infrastructure基礎設施

tester

quality assurance

manager

project management

publisher

technology magazine技術雜誌

熱心人士收集新知,讓大家增廣見聞。

https://www.ruanyifeng.com/blog/weekly/
https://news.ycombinator.com/
https://www.ithome.com.tw/
https://spectrum.ieee.org/
https://www.nae.edu/theBridge
https://www.rsipvision.com/computer-vision-news/
https://twitter.com/cvcnd
https://www.zhihu.com/people/cver-38
https://mp.weixin.qq.com/mp/appmsgalbum?action=getalbum&album_id=2493194476069404677

technology blog技術網誌

coder編寫網路文章,分享心得感想。

工作室、公司行號,安排專人分享心得感想。

甚至有人專門經營網誌平台,讓大家有地方分享心得感想。

https://www.csdn.net/
https://ithelp.ithome.com.tw/
https://www.facebook.com/will.fans
https://blog.darkthread.net/
https://newtoypia.blogspot.com/
https://medium.com/sharkie-studio

tutorial技術教學

教學影片、教學資料、Youtube channel。

https://www.w3schools.com/
https://javascript.info/
https://zh.javascript.info/
Online Tutorials
https://www.youtube.com/@OnlineTutorialsYT
The Coding Train
https://www.youtube.com/@TheCodingTrain
小哈片刻
https://www.youtube.com/@HaskaSu
ChaoCode
https://www.youtube.com/@ChaoCode
控制狂Control Monster
https://www.youtube.com/@controlmonster/
The Efficient Engineer
https://www.youtube.com/@TheEfficientEngineer
STEAM 教育學習網
https://steam.oxxostudio.tw/
OPENHOME.CC
https://openhome.cc/Gossip/
鳥哥的Linux私房菜
https://linux.vbird.org/

maintainer

crowdsourcing眾包

online encyclopedia線上百科

https://en.wikipedia.org/wiki/Wikipedia
https://github.com/sindresorhus/awesome

open data開放資料

https://ithelp.ithome.com.tw/users/20103852/ironman/5889

website builder網站建置

web management網站管理

maker

maker自造者

現代高科技工匠。在工作室裡面用高科技打造東西。

https://www.youtube.com/user/kobebeefg
https://taipei.makerfaire.com/
https://vmaker.tw/
https://www.facebook.com/FablabTaipei/

hackathon黑客松

大家心血來潮就會舉辦黑客松。大家聚在一起,腦力激盪發明點子,利用資訊科技解決主辦單位現實遭遇的問題。參賽者幾乎不眠不休,在時間限制之內,通常是半天到兩天,迅速產出一份簡報、一份試作品,請資通訊產業知名網紅協助評審。

這類競賽的功能是社會服務、娛樂消遣。

https://www.ait.org.tw/zhtw/tag/nasa-hackathon-zhtw/
https://presidential-hackathon.taiwan.gov.tw/teams.html
https://hackathon.gov.taipei/
https://smartcity.org.tw/hackathon/
https://data.coa.gov.tw/Hackathon/
https://tws.twcc.ai/2022tainanhackthon/
https://hackathon.lawsnote.com/
https://jothon.g0v.tw/
https://2022.meichuhackathon.org/
https://mathhack.emath.tw/
https://sustainabilityhackathon-tw.org/
https://sites.google.com/hcvs.kh.edu.tw/hsh/

challenge挑戰賽

科技公司每年舉辦比賽,比賽內容跟自身專長相關,比賽目的是讓大家幫忙想出好問題、想出好解法。參加對象主要是在學學生。有時候則是學術單位團隊、研究單位團隊。

這類競賽的功能是,一方面回饋社會,一方面宣揚科技,一方面招聘人才,一方面尋覓商機。

https://imaginecup.microsoft.com/
https://developer.ibm.com/callforcode/
https://challenges.quantum-computing.ibm.com/
https://developers.google.com/community/gdsc-solution-challenge
https://summerofcode.withgoogle.com/
https://jaxa.krpc.jp/

hacker

hacker駭客

鑽研資訊系統底層細節、瞭解各種旁門左道的人。

information security資訊安全

平板電腦與智慧手機興起。生活大小事,通通數位化。安全措施也日益重要。

以交通安全作為比方。路邊裝設護欄、地面裝設減速丘,預防8+9自稱賽車手,一時鬼迷心竅超速行駛,自渡渡人,阿彌陀佛。數位資訊當然也需要這樣的安全措施,預防詐欺犯自稱資安專家。

學校沒有教導這方面的知識,導致民眾缺乏常識,事故層出不窮。因此熱心民眾辦理研習活動、策畫商務會議,呼籲大眾重視資訊安全。更有甚者,成立諮詢公司,協助大眾預防與補救各種事故。

另一方面,台灣政府受到中美影響,積極鼓吹資安危機意識,強勢推動資安法規與資安通報機制。一方面責成企業設立資安職位,一方面敦促學校成立資安系所。小弟拿著扁鑽向前衝,扁鑽還得自費。發展資訊安全儼然已是治國方針,保家衛國人人有責。

https://ais3.org/
https://infosecdecompress.com/
https://gotyour.pw/resources.html

wargame【尚無正式翻譯】

資訊安全攻擊遊戲。熱心人士提供伺服器,運行各種程式。熱心人士巧妙設計程式,使之有隙可乘,然後發布任務,請使用者入侵攻擊。使用者連線至伺服器,觀察程式運作,推敲程式漏洞,嘗試完成任務。

capture the flag奪旗

資訊安全解題競賽。主辦單位提供伺服器、電子設備,設計數個任務。任務內容涵蓋資訊安全各種主題,任務過程宛如益智解謎遊戲。參賽者操作電腦系統,連入伺服器、電子設備,解決指定任務,取得完成證明。參賽者必須盡快完成任務,甚至阻止對手完成任務。

https://zh.wikipedia.org/wiki/DEF_CON
https://github.com/apsdehal/awesome-ctf
https://github.com/firmianay/CTF-All-In-One
https://apsdehal.in/awesome-ctf/
https://picoctf.com/
https://bamboofox.cs.nctu.edu.tw/
https://blog.tdohacker.org/
https://scist.org/
https://ctf-wiki.github.io/ctf-wiki/
https://ctftime.org/team/8299
https://ymsir.com/teaching.html

emulator模擬器

採用自己喜歡的硬體設備(配合自己開發的軟體程式),模仿特定的硬體設備(暨軟體程式)。這樣的硬體設備、或者這樣的軟體程式,稱作模擬器。

為了模仿,必須深入瞭解特定硬體設備的運作過程,並且對自己喜歡的硬體設備進行改造。這種行為就是hack。

知名模擬器,例如手機作業系統Android的模擬器BlueStacks,遊戲機PSP的模擬器PPSSPP。順帶一提,逕自開發模擬器可能侵犯智慧財產權。然而硬體軟體有太多面向可以討論,導致目前沒有明確界線,有時需要上法院討論界線。Android是自由軟體,PSP原公司並未發現專利被侵犯、甚至可能私下協議,因此上述模擬器沒有構成法律問題。

ROM hacking【尚無正式翻譯】

修改遊戲卡匣內容。以便改善遊戲體驗、創作遊戲內容。

jobseeker

jobseeker求職者

升學求職,五子登科。爭先恐後,花招百出。

interview preparation面試準備

https://www.geeksforgeeks.org/
https://www.nowcoder.com/
https://www.careercup.com/

coding challenge刷題

起初只是線上的程式設計訓練、益智訓練。

大公司湧入大量面試者,每年高達數萬人。為了節省人力物力,大公司以刷題初步篩選面試者。例如Google。

接著有人成立刷題網站,專門針對面試者。例如LeetCode。

接著有人成立刷題補習班,專門針對LeetCode使用者。

接著有人成立刷題專欄,專門針對想要花錢補習的人。

如此不斷接連下去,於是刷題造成空前轟動。人類真會玩。

The 10 most popular coding challenge websites for 2020
綜合介紹。

fucking-algorithmlabuladong的算法小抄
手把手撕LeetCode题目,扒各种算法套路的裤子。

代码随想录
本项目是一套完整的刷题计划,旨在帮助大家少走弯路,循序渐进学算法。

算法通关手册
「算法与数据结构」 基础知识的讲解教程
AtCoderアルゴリズム実技検定
日本的證照考試。

PAT计算机程序设计能力考试
中國的證照考試。

CPE大學程式能力檢定
台灣某些教授聯手搞出來的證照考試。你懂的。

certification證照

科技公司、科技基金會,舉辦證照考試,增加收入。

證照適合想要求職卻一無所有的人。拿不出實際成果,又得不到相關文憑,只好去考證照。

certificate文憑

發源自英國的A-level與AS-level、國際的IBDP、美國的AP,這些教育制度,功能相仿。其中跟台灣有關係的是AP。

Advanced Placement是美國的教育制度:學科成績優秀的高中生,往後學期可以申請修習進階課程,課程難度是大學程度,稱作AP課程。高中生預先修習大學程度課程,未來可以折抵大學學分。

學校聘請具備教學資格的老師來開課,甚至學生可以選擇線上自學。課程結束之後,學生參加檢定考試,以獲得修課證明。至於詳細規定,我沒有仔細查詢。

另有熱心人士提供教學資源。參考書:例如Schaum's Outlines系列。教學影片:例如線上課程平台edX網路上找到的清單

大學招生會參考AP成績。有些大學明確表示AP是加分項目。

AP由美國大學理事會統籌規劃。人文與科學,各種學科都有AP課程。計算機科學目前有兩門課程。官方網站提供了說明文件,包括課程綱要、考試範圍。根據文件內容,我認為這兩門課程大致對應大學一年級的程式設計、計算機概論這兩門課程。

AP Computer Science A
https://apcentral.collegeboard.org/courses/ap-computer-science-a/

AP Computer Science Principles
https://apcentral.collegeboard.org/courses/ap-computer-science-principles

台灣沒有這種教育制度。熱心人士嘗試引進。計畫名稱是高中資訊科學人才萌芽與深耕計畫,負責單位和負責人是臺灣師範大學的李忠謀教授。目前只有一個學科:計算機科學。因此叫做APCS。

APCS評量架構
https://apcs.csie.ntnu.edu.tw/index.php/questionstypes/

很不幸的,APCS引進台灣之後,遵循黨的意志進行各種魔改。

一、沒有課程,只剩考試。官方宣稱學校現行課程足以涵蓋考試範圍。

二、原版APCS課程內容,包含class、documentation,都是現實工作必定用到的知識。台灣APCS評量架構,將這部分魔改成資料結構和演算法,包含greedy method、dynamic programming,都是現實工作未必用到的知識。官方沒有公開原因。

我猜測主要原因是原版課程內容無法自動閱卷,必須人工批改,宛如批改作文。由於人工批改顯得不夠公平客觀,於是捨棄了需要人工批改的部分。我猜測次要原因是黨國高層當時正在推動演算法,例如台灣和中國是全世界「演算法工程師」職缺最多的地方。不過我沒有直接證據。

三、APCS最初做為大學申請入學的參考項目、加分項目。後來各校發現:APCS成績優異者,恰是大學學業表現優異者。因此各校提議替APCS開設升學管道。名額相當稀少,每校系不超過3名。開設升學管道之後,大學學業表現尚待統計追蹤。目前官方沒有公開任何數據。

四、一大堆的人,不具備資訊教育專長、不具備程式語言專長,開設補習班、辦理營隊、出版書籍,充分體現了台灣的補教文化。

主辦人李忠謀教授已經透過新聞聲明:「只要在校好好上課、多練習題目,要過關不難。」教育部也表示:「就考試跟它的性質來說,他其實根本不需要去補習。」

明年31大學校系採計APCS 恐不利弱勢生
https://news.pts.org.tw/article/413995

補教業APCS課程標榜「頂大門票」 台師大畫清界線
https://web.archive.org/web/20220902130033/https://udn.com/news/story/6925/4269491

卻有人偏要做校外教學。這些做事不講根據不按道理的人,包括但不限於:

巨匠電腦
橘子蘋果
台灣程式教育協進會
CodingBar
猿創力程式設計學校
臺北科大推廣教育中心
演算法海牛,無照營業
台灣大學學生劉俊緯等人的程式設計能力培訓營

根據這些外行人提供的課表,令人懷疑他們是否研讀過美國APCS官方說明文件、台灣APCS評量架構,令人懷疑他們是否學習過教學原理、教材教法、程式語言理論。

換個角度想,可能是因為師資不足,才導致外行人搶鋒頭:

師資不足選修課難多元 高中資訊課淪APCS培訓班
https://web.archive.org/web/20220903023728/https://udn.com/news/story/6885/4699070

就連學生也要上場幫忙製作教材:

APCS Guide
https://apcs.guide/

五、一部分的人,故意將APCS掛勾competitive programming,並且誘導大家「APCS是competitive programming的低配版」、「擅長competitive programming,得以勝任APCS教師。」

這些人故意將升學掛勾競賽,一方面為自身創造名利,滿足個人私慾;一方面迎合黨的意志,說服大眾適應愚民教育。事實上,這兩個活動幾乎無關。這兩個活動的唯一相同之處是「上機寫程式解決問題」。本網頁介紹的所有活動都需要「上機寫程式解決問題」。

AnnCode!安可程式教育的APCS實作題練習方法,在Atcoder提升你的APCS實作!

台灣是鄉下地方,胡搞瞎搞,避無可避。大家開心就好。

contestant

contestant參賽者

我想找-er結尾的單字,可是我找不到。

challenger似乎可以,但總感覺有點怪怪的,聽起來像是車。

competitive programming競技程式設計

演算法解題競賽。這個活動跟本站的關聯最為密切,因此我以超長篇幅介紹它。請見後面章節。

data science competition資料科學競賽

產業界鼓吹大數據、人工智慧,應運而起的競賽。

主辦單位提供自身業務所收集的大量數據,並且提出特殊需求、規定效能指標。參賽者利用數據,嘗試達成需求,盡量提升效能。

競賽期間通常為期一至兩週。期間參賽者分析數據內容、建立統計模型、設計演算法、上傳分析結果。主辦單位即時評比效能、列入即時排行榜。

https://zh.wikipedia.org/wiki/Kaggle
https://careers.shopee.sg/codeleague/
https://signate.jp/
https://towardsdatascience.com/2995e9dad93c
https://www.facebook.com/groups/datasciencemeetup/

trading competition程式交易競賽

https://tradingcompetition.uchicago.edu/
https://game.fincloud.tw/games/2021game

robotics competition機器人學競賽

https://www.zhihu.com/question/29919960
https://robot.nstm.gov.tw/2022/
https://zh.wikipedia.org/wiki/機器人世界盃
https://en.wikipedia.org/wiki/Eurobot
https://zh.wikipedia.org/wiki/FIRST機器人競賽
https://robotx.org/programs/robotx-challenge-2022/
https://www.nspo.narl.org.tw/activity/kibo_rpc_3/

problem solving解題

熱心人士設計許多題目,讓大家激盪腦力。數學、生物資訊、電玩、對局、解謎、……。

https://projecteuler.net/
https://rosalind.info/
https://www.codingame.com
https://adventofcode.com/
http://azspcs.com/
http://www.pythonchallenge.com/

competitive programming

competitive programming

international collegiate programming contest (ICPC)」是針對全世界大專院校學生的比賽,考驗選手臨場的演算法設計能力、程式編寫能力。

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

從事這項活動,不僅可以熟悉程式設計、學習演算法、鍛鍊智力,還可以培養自主學習與獨立解題的能力──此即程式設計師的核心價值。因此這項活動逐漸獲得大家重視。產業界舉行演算法競賽,發掘優異人才;學術界開設課程,促進演算法發展。這項活動大家稱呼為「competitive programming」。

international collegiate programming contest

ICPC是計算機科學領域規模最大、歷史最悠久的競賽。從1977年開始,每年在世界各地舉辦初賽,選拔表現優秀的隊伍,角逐世界總決賽。最近幾屆競賽有上千所學校、數萬名選手參加。

ICPC是一個氣氛活潑的競賽。整個賽事包含許多活動,主軸當然是現場上機競賽,但是另外還有娛樂表演、晚餐宴會、城市遊覽等等行程。整個賽事過程為期兩至三天,有吃有玩,遊樂的成分比競賽的成分還多,對於參賽選手來說是相當新鮮的體驗。

ICPC的競賽方式是三人一隊,並且需要一位同校教授作為領隊教練。教練的主要作用,是負責向大會接洽賽事行程,替選手打點賽事期間的生活細節,讓選手無後顧之憂,得以傾盡全力比賽。教練就如同經紀人的角色。

現場上機競賽,所有隊伍聚集於會場,一支隊伍分配一張桌子、三張椅子、一臺電腦、一份英文題本。主持人宣布比賽開始之後,所有隊伍同時開始作答,選手必須迅速閱讀題本當中的問題,然後編寫程式解決問題,將程式碼上傳給裁判批改。

所有作答皆是即時批改,幾分鐘內回覆結果,結果只有對與錯,答錯還可以再答。成績的計算方式,是以答對題數作為排名依據;但是作答的錯誤次數、上傳答案的時刻,統統列入扣分,作為次要的排名依據。因此選手要盡力答出問題,也要盡快答出問題,還要避免答錯問題又一錯再錯。實力在伯仲之間的隊伍,勝負的差距往往取決於審題與答題的效率。動作慢人一步,或者大意發生失誤,就很可能名落千丈。

選手有五小時時間,要解出十道左右的演算法問題,期間可以喝水、外出上廁所、享用大會提供的奢華點心、在題本上塗鴉、把題本拆了摺紙鶴、睡覺、談情說愛、玩電腦遊戲;唯一的限制,就是不得與隊伍之外的人交流。

比賽規則看似輕佻,但是比賽過程其實非常緊迫。五小時時間解十道左右的問題,電腦卻只有一臺。即便是技藝高超的選手,也幾乎無暇休息,必須分工合作爭取時間。通常一人隨時坐在電腦前作答,充分運用電腦,發揮時效;另外兩人則在旁解讀其餘題目,在腦中羅織解法,伺機輪換上陣。五小時的比賽過程,選手克服環境限制、調適心理壓力、發揮大腦潛能,也可以說是一場精神的對抗賽。

競賽過程還有許多有趣的地方,留給參賽選手們自行體驗吧!

ICPC官方消息:ICPCNews
ICPC亞洲太平洋官方消息:ICPC Asia Pacific
ICPC亞洲東大陸官方消息:ICPC北京总部
ICPC亞洲西大陸官方消息:ICPC Asia West Continent
ICPC日本區域賽官方消息:ICPC 国際大学対抗プログラミングコンテスト
日本非官方消息:ICPC Japan Alumni Group
中國非官方消息:ACMer.info
選手感想:ACM-ICPC Asia Jakarta Regional Contest 2017 沿途紀實與心得
選手感想:ICPC World Finals @Luxor 世界總決賽紀錄
歷年題庫:ICPC Archives
題目講評:2019 ICPC TOPC 簡易講評
精選題解:關於競程日記 2019

根據規定,ICPC區域賽必須要有全國性(或者兩省以上)的預賽。台灣歷年都是以NCPC作為預賽,然而實際上NCPC根本就不是預賽。會有這種現象,主要原因是台灣的參賽隊伍十分稀少,無從篩選隊伍。直至2015年,台灣才開始正式舉辦網路預賽,跟隨亞洲各國的比賽模式,時序如下:

一、台灣區域賽預賽:國內隊伍透過網路進行較量,不需要負擔報名費用。比賽結束之後,根據當年承辦人員的戰鬥力,選出適當數量國內隊伍參加台灣區域賽,目前是80至120隊。至於國外隊伍則可以直接報名參加台灣區域賽。根據當年承辦人員的戰鬥力,選出適當數量國外隊伍參加台灣區域賽,目前是10隊。

二、全國賽:台灣教育部舉辦的比賽,與ICPC無關。國內隊伍一較高下。成績優秀的國內隊伍,教育部全額補助參加台灣區域賽。

三、台灣區域賽:請參考前面介紹的內容。國內國外隊伍齊聚一堂進行較量。亞洲太平洋五場區域賽(台灣、韓國、印尼、越南、日本)比賽結束之後,承辦人員依照公式,評量每場區域賽之中每間學校的戰鬥力。公式包含了區域賽、區域賽預賽。公式包含了參賽學校數量、參賽隊伍數量、國外隊伍數量,學校和隊伍必須解出題目才列入統計。公式決定了承辦人員如何辦理區域賽。舉辦PUPC與TUPC、直接錄取國外隊伍、簽到題,這些都是台灣區域賽承辦人員的因應措施,以便提高戰鬥力。五場區域賽依照戰鬥力分配晉級名額。一場區域賽排名靠前的學校,每間學校的最佳隊伍可以晉級亞洲太平洋冠軍賽。一場區域賽排名第一的學校,該間學校的最佳隊伍直接晉級世界總決賽。一支隊伍最多參加兩場區域賽。不同區域賽可能選出相同學校,恰是相同隊伍、也可能是不同隊伍。一間學校最多三支隊伍參加亞洲太平洋冠軍賽。一間學校最多一支隊伍參加世界總決賽。

四、亞洲太平洋冠軍賽:2024年開始的新賽事。邀請亞洲太平洋五場區域賽表現優異的隊伍參賽。比賽結束之後,承辦人員依照公式,決定晉級名額。排名靠前的學校,每間學校的最佳隊伍可以參加世界總決賽。

五、世界總決賽:從全世界篩選一百多間學校參加總決賽,從五大洲輪流選擇一間學校作為比賽地點。台灣學校實力較差,總是被國外學校痛宰,鮮少晉級總決賽。從以前到現在,台灣學校僅台灣大學、陽明交通大學有能力進入總決賽。直到最近十年才有改善跡象,與國外學校互有進退(一群無名英雄前仆後繼苦心經營數年的成果);同時也積極的參與其他國家的區域賽,爭取世界總決賽門票。

演算法競賽:台灣

ICPC Asia Taichung Regional Programming Contest 202420232022
對象:大專院校學生(學士班一年級至碩士班一年級)
主辦:ICPC台灣區域賽承辦人員
備註:ICPC台灣區域賽。每年重新決定比賽城市。
時間:11~12月

ICPC Asia Taiwan Online Programming Contest 202420232022
對象:大專院校學生
主辦:ICPC台灣區域賽承辦人員
備註:ICPC台灣區域賽預賽。透過網路參賽。
時間:9月

全國大專電腦軟體設計競賽NCPC 202420232022
對象:台灣大專院校學生
主辦:臺灣師範大學與中山大學輪流辦理
時間:9~10月

全國私立大專院校程式競賽PUPC 202420232022
對象:台灣私立大專院校學生
主辦:各私立大學輪流辦理
備註:ICPC台灣區域賽衍生賽事。ICPC台灣區域賽開放此賽事其中10隊參加。
時間:6月

全國科技大專校院程式競賽TUPC 202420232022
對象:台灣科技大專院校學生
主辦:虎尾科技大學
備註:ICPC台灣區域賽衍生賽事。ICPC台灣區域賽開放此賽事其中10隊參加。
時間:6月

網際網路程式設計全國大賽NPSC
對象:台灣高中學生、國中學生
主辦:台灣大學
時期:11~12月

CodeWars Taiwan
對象:台灣大專院校學生、台灣高中高職五專(一到三年級)學生
時期:10~12月

國立成功大學暑期高中生程式設計邀請賽
對象:台灣高中高職學生
主辦:台灣成功大學學生
時期:4~7月

普通型高級中等學校數理及資訊學科能力競賽
類別:資訊學科(決賽模擬賽)
對象:台灣高中學生
主辦:台灣教育部(委託地方政府與大學辦理)
時期:9~12月

全國高級中等學校技藝競賽
類別:商業類學生程式設計職種
類別:工業類學生電腦軟體設計職種
對象:台灣高職學生
主辦:台灣教育部(委託技職學校辦理)
時期:5月報名、11月舉辦

演算法例賽:台灣

NHDK四校聯合初學者程式設計練習賽
台灣的演算法例賽。針對台灣高中學生、國中學生。學生自籌例賽。

ITSA程式能力線上自我評量
台灣的演算法例賽。針對台灣大專院校學生。台灣教育部提供的例行賽事。

演算法競賽

Meta Hacker Cup
對象:社會大眾
時期:每年一次,時間不定

International Collegiate Programming Contest
對象:大專院校學生(學士班一年級至碩士班一年級)
時間:台灣站11~12月、亞洲各站是8~12月、世界總決賽是隔年5~7月

HPE CodeWars
對象:高中高職五專(一到三年級)學生
時期:每年一次,時間不定

演算法例賽

AtCoder
日本AtCoder公司的演算法例賽。

Codeforces
俄國ITMO大學學生發起的演算法例賽。
全世界演算法競賽選手首要交流地點。

CodeChef
印度Directi公司的演算法例賽。

Universal Cup
中國演算法競賽選手建立的演算法競賽練習網站。

华为算法精英实战营
中國Huawei公司的演算法例賽。

Topcoder
美國Topcoder公司的程式競賽網站,其中包含了演算法例賽。
已經終止維護了,現在只能看到歷史紀錄。

演算法題庫

CSES: Code Submission Evaluation System
芬蘭Helsinki大學講師Antti Laaksonen建立的online judge。
整理了一套針對演算法競賽初學者的題庫與教材。

Kattis
瑞典Kattis公司建立的online judge。

洛谷
中國洛谷公司建立的online judge。

Baekjoon Online Judge
韓國Startlink公司建立的online judge。

beecrowd
巴西Brasscom公司建立的online judge。

DMOJ: Modern Online Judge
加拿大的開源online judge。

Aizu Online Judge
日本会津大學的online judge。

Timus Online Judge
俄國Уральский聯邦大學的online judge。

UVa Online Judge
西班牙Valladolid大學的online judge。最古老的online judge。

Sphere Online Judge
波蘭Sphere實驗室建立的online judge。

高中生程式解題系統 ZeroJudge
台灣高雄師大附中建立的online judge。

UVa Online Judge工具

uHunt
查詢UVa Online Judge的解題進度、世界排名。
整理了一套題目清單,適合初學者循序練習。輸入使用者名稱就會出現。

uDebug
生成測試資料,以便測試程式。

Lucky貓的ACM園地Ruby兔的ACM園地Unfortunate狗的ACM園地uniDog的ACM園地
UVa Online Judge題目中譯。
早期重要工作,請大家體恤辛勞!

Problem Classification on Spanish Archive
題目分類。

演算法競賽工具

Virtual Judge
可以連線到每個online judge。

Library Checker
經典演算法問題的程式碼測試平台。

Nyaan's Library
演算法競賽函式庫。

CP-Algorithms Library
演算法競賽函式庫。

KTH Algorithm Competition Template Library
演算法競賽紙本程式碼。

codebook list
演算法競賽紙本程式碼。

演算法競賽營隊

交大競技程式訓練冬令營、夏令營
熱心老師和學生自動自發努力辦理的營隊。免費且公開教材。

清大暑期程式競賽集訓營
熱心學生自動自發努力辦理的營隊。收費且不公開教材。

臺灣大學程式解題競賽培訓營
熱心學生自動自發努力辦理的營隊。收費且不公開教材還拉企業贊助。你懂的。

Moscow Workshops
熱心老師自動自發努力辦理的營隊。經常跟其他國家合辦活動。

演算法競賽社團

臺灣大學程式解題社
講義、online judge、營隊。

陽明交通大學程式競賽社
雞排、營隊。

演算法競賽講義

板橋高中資訊社校內培訓講義
熱心學生努力撰寫的教材。

算法学习笔记
熱心網民努力撰寫的筆記

GeeksforGeeks: Competitive Programming – A Complete Guide
熱心網民努力撰寫的文章。

Algorithmic Problem Solving
熱心網民努力撰寫的書籍。

Algorithms for Competitive Programming
熱心網民努力撰寫的文章。

OI Wiki
熱心網民努力撰寫的文章。

USACO Guide
熱心網民努力彙整的題目和教材。

算法竞赛课件分享
熱心網民努力蒐集的教材。

OI公共圖書館
中國IOI國家隊技術報告

演算法競賽課程

成功大學ACM課程講義

海洋大學:程式競賽技巧

U.Porto CC3032: Competitive Programming

UT-Austin CS104c: Competitive Programming

Stanford CS 97SI: Introduction to Programming Contests

UIUC CS491 CAP: Intro to Competitive Programming

CMU CS 15-295: Competition Programming and Problem Solving

演算法競賽書籍

數學思考
九章出版社

How to Solve It
George Pólya
譯本《怎樣解題》

Techniques for Designing and Analyzing Algorithms
Douglas R. Stinson
演算法益智問題

Guide to Competitive Programming:
Learning and Improving Algorithms Through Contests
Antti Laaksonen
芬蘭演算法競賽名著

Competitive Programming
Steven Halim, Felix Halim
新加坡演算法競賽名著

프로그래밍 대회에서 배우는 알고리즘 문제 해결 전략
구종만
韓國演算法競賽名著
譯本《算法问题实战策略》

プログラミングコンテストチャレンジブック
秋葉拓哉、岩田陽一、北川宜稔
日本演算法競賽名著
譯本《培養與鍛鍊程式設計的邏輯腦:世界級程式設計大賽的知識、心得與解題分享》
譯本《挑战程序设计竞赛(第2版)》

アルゴリズム的思考力が身につく! プログラミングコンテストAtCoder入門
問題解決力を鍛える!アルゴリズムとデータ構造
大槻兼資
日本演算法競賽名著
譯本《鍛鍊問題解決力!演算法與資料結構應用全圖解》

アルゴリズム ビジュアル大事典 ~図解でよくわかるアルゴリズムとデータ構造~
プログラミングコンテスト攻略のためのアルゴリズムとデータ構造
渡部有隆
日本演算法競賽名著
譯本《會動的演算法:61個演算法動畫+全圖解逐步拆解,人工智慧、資料分析必備》
譯本《挑战程序设计竞赛2 算法和数据结构》

算法竞赛入门经典
刘汝佳
中國演算法競賽名著
譯本《打下好基礎:程式設計與演算法競賽入門經典》

算法竞赛入门经典——训练指南
刘汝佳、陈锋
中國演算法競賽名著
譯本《提升程式設計的解題思考力─國際演算法程式設計競賽訓練指南》

演算法競賽書籍:我沒讀過的新書

算法竞赛进阶指南
李煜东
中國演算法競賽名著

深入浅出程序设计竞赛(基础篇)
深入浅出程序设计竞赛(进阶篇)
洛谷学术组、汪楚奇
中國演算法競賽名著

「アルゴリズム×数学」が基礎からしっかり身につく本
米田優峻
日本演算法競賽經典名著
譯本《「演算法×數學」全彩圖解學習全指南:從基礎開始,一次學會24種必學演算法與背後的關鍵數學知識及應用》

演算法競賽YouTuber

Luv
熱心網民努力拍攝的影片。我沒有看。

William Lin
熱心網民努力拍攝的影片。只看了一點。

演算法競賽選手

tmt解題筆記tmt514's Blog卡恩的部落格卡恩的部落格tmt514
熱心網民的寫作計劃

Morris' Blog
熱心網民的學習心得

小月的耍廢日誌競程日記AA競程
熱心網民的工作報告

BYVoid
熱心網民的生活感想

spaghetti-source
熱心網民的程式碼

the-tourist/algo維基百科介紹
熱心網民的程式碼

Algorithms Weekly by Petr Mitrichev維基百科介紹
熱心網民的競賽週記

演算法競賽討論區

https://discord.gg/mc9CgJvjZz     中學資訊討論群
https://discord.gg/Xg3aZPssEy     競程討論群

演算法競賽概觀

國高中演算法歷程分享與雜談
競賽學習方法
便宜的演算法比賽網路資源整理
從零開始的競程介紹
競程入門筆記

演算法競賽資源彙整

Awesome Competitive Programming
github的awesome系列,無論什麼亂七八糟的通通都有。

台灣資訊培訓相關資源彙整
以 台灣高中生 為出發點的 資訊培訓相關資源彙整。

Competitive Programming Hall Of Fame
蒐集知名賽事的榜單,可以從中找到優秀的競賽選手。