部活動での競技プログラミングのススメ

部活動での競技プログラミングのススメ

AtCoderでは、中高生の部活動として、競技プログラミングに参加することを推奨しています。

部活動の意義

競技プログラミングは、日本で数十万人の競技人口が存在するマインドスポーツであり、数千人の中高生が挑戦しています。コンピュータを扱う部活動であるため、文化部に該当しますが、目標とする大会や練習の土壌が整っているため、運動部のように精力的に活動することが可能なマインドスポーツです。
競技プログラミングで身につく能力は、様々あります。学問的には数学力・論理的思考力・プログラミング力などであり、特に理系分野において将来的に役立つ能力です。精神的な意味においても、実力をあげるために物事に長期的に取り組み、上達のために試行錯誤する、という過程が文化部の活動内容で行えるという点で、囲碁や将棋のようなマインドスポーツと同様の価値があります。
このように、競技プログラミングは部活動として取り組む上で非常に良い題材の一つであり、日本全国に競技プログラミングに取り組む部活動がもっと増えるべきだと考えています。

目標とする大会

競技プログラミングでは、年間1回の目標とするべき大会と、毎週開催される実力アップにつながる大会が存在します。個人戦/団体戦の両方が存在するため、多様な取り組み方が可能です。
年1の大会を目標とした上で、普段のコンテストでレベルアップをすることをお勧めします。

情報オリンピック

一般社団法人情報オリンピック日本委員会が主催するコンテストです。中高生にとっては、世界大会に繋がる唯一のコンテストとなります。
年1回開催される個人戦であり、競技プログラミングに取り組む中高生が最も重要視しているコンテストです。

  • 1次予選:3回開催され、どれか1つの大会で規定となる点数を超えれば予選通過となります。
  • 2次予選:本選出場者を決める大会です。上位200人程度が本選出場となります。
  • 本選:日本大会の入賞者を決定する大会です。上位数名が金・銀・銅賞を獲得し、20名程度が優秀賞となります。入賞者は春季トレーニング合宿に招待されます。
  • 春季トレーニング合宿:日本代表を選抜するための合宿です。数日間に渡って開催され、上位4名が日本代表となります。
  • 世界大会:世界各国から代表選手が集まり、競技プログラミングの実力を競います。

最新の情報は、以下の公式ページよりご確認ください。 一般社団法人情報オリンピック日本委員会

パソコン甲子園

パソコン甲子園は、会津大学等が主催する、チーム戦のプログラミングコンテストです。いくつかの部門が存在しますが、競技プログラミングを扱う部門は「プログラミング部門」となります。
歴史のある大会で、2003年から開催が続いており、1000人以上の参加者が存在します。
最新の情報は、以下の公式ページよりご確認ください。 パソコン甲子園

SuperCon

SuperConは、東京工業大学・大阪大学・理化学研究所が主催するコンテストであり、本選ではスーパーコンピュータ「富岳」を利用することが最大の特徴です。
この大会は、ほかの大会と違い、AtCoderでいうAlgorithm部門ではなく、Heuristic部門に近い形式での開催となります。 Heuristic Contest
3人一組で参加する学校対抗のプログラミングコンテストです。予選20チーム程度が本選に進み、3日間にわたって本選が開催されます。
最新の情報は、以下の公式ページよりご確認ください。 Supercomputing Contest

AtCoder Junior League

AtCoderでは、中高での活動を推奨するため、AtCoderの日常的なコンテストをポイント化し、学校対抗で合計ポイントを競う、AtCoder Junior Leagueを開催しています。
年1回のコンテストで上位に入れない人でも、参加することで学校の累計ポイントに貢献できるため、一人ひとりの参加が大切となります。また、学年別のランキングも存在するので、同世代のライバルを意識し、上達していくことも可能です。 AtCoder Junior Leagueとは?

部活動における活動内容

想定スケジュール

想定しているスケジュールの一例は、以下のようになります。スケジュールは週6で記載しておりますが、必須であるのは月曜日・土曜日の2日のみであり、それ以外は各学校の事情に合わせて設定することをお勧めしています。また、パソコン部などのもっと広い領域を扱う部活動であれば、競技プログラミング以外の活動も組み込んだり、複数の選択肢を設けるのもお勧めです。

曜日 活動内容
随時 プログラミング言語学習
月曜 コンテスト復習
火曜 AtCoder Daily Training 参加
水曜 AtCoder Daily Training 参加
木曜 AtCoder Daily Training 参加
金曜 アルゴリズムの勉強
土曜 コンテスト参加

プログラミング学習

競技プログラミングでは、プログラミング言語を使ってコードを書き、提出をするので、プログラミング言語がわからなければ何もできません。ですので、最初に学習するのはまずはプログラムの書き方になります。
AtCoderのはじめ方は別ページに書いてありますので、こちらの記事に沿って、言語習得や基礎的なアルゴリズムの学習をすることをお勧めします。 AtCoderのはじめかた

コンテストへの参加および復習

AtCoderでは、毎週土曜日夜9時より、AtCoder Beginner Contestを開催しています。こちらのコンテストは、Beginnerと銘打ってはいますが、幅広い参加者に合った問題を提供しているため、こちらに参加することをお勧めしております。部活動は月曜日に設定し、AtCoder Beginner Contestの復習に充てると良いでしょう。

AtCoder Daily Trainingでの過去問を用いた練習

AtCoderでは、過去のコンテストを再構築した、AtCoder Daily Trainingを提供しています。こちらのサービスを利用することで、部活動の時間に部員全員がコンテスト形式で問題に取り組むことが可能です。ぜひ活用してください。

アルゴリズムの勉強

競技プログラミングで上達するには、典型的なアルゴリズムを学んでいく必要があります。参考となるインターネット記事や書籍は数多く存在します。AtCoderのおすすめ書籍などを活用し、輪読などを行うと、部員全員の強化につながります。 おすすめ書籍