競技プログラミングは、様々なデータやそれに対する操作をコンピュータ上で効率的に行うための知識や能力を競う大会です。 そのうち、日本で最も人気のあるAtCoderというコンテストサイトに大学1年生の時から継続的に参加しており、 現在のレーティングは水色(登録者のうち上位15%に当たる)です。 現在も、コンテストを通じてアルゴリズムやデータ構造といった、コーディングをする上での重要な考え方を学んでいます。
右は、プログラミング言語Rustを用いて2分探索というアルゴリズムを実装したものです。 競技プログラミングでは、このようなアルゴリズムをコンテスト時間内に完成させて、あらゆる問題に正解させなければならないため、 正確なコードを素早く書く能力やコードの間違っている部分を見抜いて修正するデバッグ能力が身につきます。
様々なコードはGitHubで管理しています。GitやGitHubの操作は1年生のとき始めたNUOCW(後述)というアルバイトの経験を通して身につけました。
名古屋大学の授業を外部に公開するサイト、NUOCWに1年生の時から参加しています。 Reactでの記事作成からサーバの管理、講義管理アプリの作成など、フロントエンド、バックエンド問わず様々な分野の業務を行っています。
Hexoという静的サイトジェネレータで個人のブログを公開しています。 内容は、競技プログラミングのことや授業で学んだことなど、自分が勉強したことのアウトプットが中心です。
情報系の分野を自主的に学習する自主ゼミ、「ゼロイチゼミ」の運営に携わっています。 現在は名古屋大学の1,2年生を中心に20名ほどが参加しており、そのテーマは一冊の本を輪読形式で読み進めるものから、互いの得意分野を発表し合うもの、 資格の合格に向けて一緒に取り組むものなど様々です。ここでは、その自主ゼミで自分が発表した際のスライドの一部を紹介します。
「ゼロから作るディープラーニング」という書籍を輪読し、実際に AI を作ってみるというテーマのゼミでの発表です。 ニューラルネットワークにおけるパラメータとは何かというレベルから、いかにして様々なパラメータを最適になるように調整していくかという内容まで、段階的に説明しました。
プログラムの速度を大まかに見積もるのに必要な計算量という概念をテーマにした発表です。 「プログラムをいかにして高速化するか」というテーマで基本的なアルゴリズムについても踏み込んで解説しています。