去年に引き続き、今年もプログラミング基礎講習会を開催しました!
この記事は、その開催記です。
開催概要
プログラミング基礎講習会は、traPの各班で活動するうえで最低限必要になるプログラミングの技能を短期集中で習得することを目的としています。
対象は主にプログラミング初心者や未経験者の新入部員で、環境構築から基本的な概念や構文までを扱います。
今年のプログラミング基礎講習会は、4/30〜5/14の日程で開催されました。
受講者は100名を超え、traPの講習会としては最大規模です。
プログラミング基礎講習会は昨年から始まりました。
それ以前は講習会は未経験者向け・経験者向けが一つの制度のもとに開催されていましたが、昨年からは初心者向け講習会が「0→1講習会」と分離され、この目玉として新設されたのがこの講習会です。
traPでは各班が活動内容に合わせてそれぞれ講習会を企画するのが一般的ですが、本講習会はそれらの講習会の基礎として班を横断する形で開催されています。
内容は基本的に去年のものをベースとしていますが、スケジュールとの兼ね合いで扱う範囲を絞り、去年から1回減らした全4回構成にしました。
また、より多くの新入生が参加できるよう、平日日程の一部は同じ内容を2回開催したほか、4回分の内容を2日で走り切る休日日程も用意しました。
講習会の内容
言語
本講習会では、扱う言語としてC++を採用しています。
C++を最初に学習すれば他の言語の学習も比較的スムーズに進むだろうとの判断から、この決定に至りました。
本来ならば各班の活動で使用する言語を学習するのがベストなのですが、traPの活動領域は広く、使用している言語は非常に多岐にわたります。
具体的にはC++(アルゴリズム)、C#(ゲーム)、Go,TypeScript(SysAd)、Python(Kaggle)などが挙げられます。
しかし、これら全てをこの講習会でカバーするのは不可能です。
そこで、それぞれの言語の習得は各班の講習会に任せ、プログラミング基礎講習会ではC++を用いてプログラミング全体に通じるような基本的な概念の習得に重点を置くことにしました。
カリキュラム
traPには現在7つの班が存在し、そのうち5班がプログラミングに関連します。
しかし、ゲーム制作、Web開発、競技プログラミング、CTF、機械学習など、ひとくちにプログラミングと言っても活動範囲は広く、それぞれで求められる技能も様々です。
本講習会の目的はあくまでも「プログラミングに最低限必要な概念を習得すること」なので、どの班の活動でも必要になるような要素のみに絞って扱うことを基本方針としています。
以下が本講習会で扱った項目です。
- OS、ディレクトリ、コンパイルとは
- ターミナルの扱い方
- 環境構築
- 型、変数、配列、入出力
- 小数計算の誤差、文字列とASCII
- 条件分岐と繰り返し
- 関数、引数と返り値、参照渡し
- 構造体とメソッド
逆に、マクロ、ポインタ、再帰関数、計算量評価やオブジェクト指向の話題、変数の命名規則などは扱いませんでした。
これらについては、プログラミング基礎講習会のあとに開催される、各班の0→1講習会に任せています。
テキスト
テキストは去年作成したものをほぼそのまま使用しました。
すでに良質なテキストがあるため、講義の内容もこれに沿ったものにしていました。
テキストの章末には2〜4問ほどの練習問題がついていて、これらは今年新しく作成したものです。
ただ単に得た知識を使うのではなく、少し数学的な工夫を加えて考えながら解くような問題に仕上がっています。
本講習会で使用したテキストは以下で公開しています。
https://pg-basic.trap.show/
環境構築
本講習会の重要な役割のひとつは、初めてプログラミングをする人の適切な環境構築を手助けすることです。
traP各班の活動では、Windowsユーザーは基本的にWSLを使用することになるため、本講習会の初回でWSLの導入を行いました。
ターミナルの操作などでmacOSユーザーと環境を揃えたかったという理由もあります。
また、講習会でC++を扱うにあたって、その環境構築でも大きな議論がありました。
そう、「ClangかGCCか」という議論です。
去年の講習会はClangを使用して開催したのですが、Clangでは#include <bits/stdc++.h>
が使用できません。
そのためそれぞれのライブラリを個別にincludeする必要がありますが、去年はこれを抜かしてしまったことによるエラーが頻発しました。
そこでGCCを使用する案が出たのですが、そこで問題になるのが「macOSに入っているGCCは、実はClang」という点です。
macOSでGCCを使用するためには「本物のGCC」をインストールする手間が発生するため、結局本講習会でのGCCの使用は見送ることになりました。
完走率を上げるために
traPは講習会が非常に充実しており、学習したい人が積極的に技術を習得できる環境が整っています。
しかし、プログラミング未経験者がこれらの講習会の内容を理解するのは難しく、結果的にtraPで活動する新入生の数は夏までに半数ほどになってしまいます。
自分も去年のプログラミング講習会に途中からついていけなくなり、講習会の完走が1ヶ月ほど遅れてしまいました。
そこで、今年のプログラミング基礎講習会では「完走率を上げる」ことを目標に計画を進めました。
まず、前述した通り、講習会の日程を複数用意し、授業があって参加できない人を減らそうとしました。
この施策については、特に環境構築の回で大きく効果があったように思います。
また、休日日程にも20人ほどが参加しました。
さらに、環境構築を去年以上に手厚くサポートしました。
環境構築は非常に難易度の高い作業で、エラーへの対処も十分な知識を持った人のサポートが必要となります。
そこで今年は環境構築を扱う日程を3回(平日日程2回+休日日程1回)用意したほか、第2回以降の講義でも環境構築をする人のスペースを設け、そこでサポートを行いました。
そのスペースで環境構築した人も10人以上いたので、この施策も成功だったと言えそうです。
加えて、今年から質問会を開催しました。
テキストの内容は進めず、入退室自由で気軽に参加できる形にしたのですが、これについては参加者はほとんどいませんでした。
わざわざ教室に行って直接質問する、という形態は質問のハードルを上げてしまったかもしれません。
ただ、講習会での質問やtraQ(traP部員用SNS)上での質問は多くあったので、質問しやすい環境自体はつくれていたのかなと思っています。
講習会を終えて
本講習会の講師と、TAとして参加してくださった方々からコメントをいただきました。
TAについてはコメントを頂いた方のみの掲載となっていますが、TAの一覧は後日テキストに掲載する予定です。
講師コメント
@Pugma 去年は受講者 兼 TA、今年は講師として参加しました。昨年講習会を受けてから1年を通して様々なプログラミング言語から学んだことをもとに、C++という言語がどういう仕様を持っているのかをより初心者に近い目線で説明できるように意識してスライドを作成しました。本講習会の今年の受講生が、来年講師やTAとしてこの講習会に戻ってきて活躍してくれることを楽しみにしています。
@ogu_kazemiya 去年のこの講習会をきっかけにプログラミングを始めたのですが、まさか講師をすることになるとは思っていませんでした。お世話になった講習会で後輩たちにプログラミングを教えることができ、とても感慨深いです。来年以降もこの講習会が続き、幅広いtraPの活動の基礎となり続けてくれることを願っています。
@comavius traPで講習会の講師を務めるのは初めてだったので、大過なく終えることが出来て安心しました。日々traPの方や外の方から様々なことを教えていただいているので、この機会に少しでもお返しできたなら、それに勝る幸せはありません。
@Takeno_hito 去年は 1 人でテキスト製作から講師まで行いましたが、今年は後輩たちが優秀で TA ・講師になった後輩たちを後ろから見ているだけで終わっちゃいました…!新たにスライドも出来て練習問題も出来て、去年よりクオリティが上がっていて助かります!本当は僕がもう少しやらないといけなかったことを代わりに講師陣がやってくれたので、感謝しかないです。講師 TAの皆さんも受講者の皆さんもお疲れ様でした!
TAコメント
@matsun お疲れ様でした.学習の助けになることができてよかったです!
@Naru820 TAとして参加させて頂きました!学習の助けになってくれたら嬉しいです。来年は講師としてやる、かも…?
@mehm8128 お疲れ様でした!TAが多すぎて僕はあんまり仕事しなかった気がします。受講者が翌年TAになって新入生を受け入れる、というループが今後も続いていくと嬉しいです
@s9 お疲れ様でした。プ基礎は終わりましたが困ったことはいつでも質問してくださいね~
@Oxojo TA として参加しました. うまく対応できたかはわからないですが, TA としての経験を積むことができてよかったです.
@iro_happa お疲れさまでした~!参加回数は少なかったですが、みなさんのお役に立ててよかったです!
@Dye お疲れさまでした!!去年は受講者側としての参加でしたが、今年はTAとして参加しました。各日程でたくさんの受講者がいて、部員が増えたことを実感しました!
@zoi_dayo お疲れ様でした!! TAで参加しました。プログラミングを教えたことはあまりなかったので貴重な経験になりました。うまくできたかわかりませんが、これをきっかけに興味を持っていただければ嬉しいです!
@tidus 皆さんお疲れさまでした!TAをするのは初めてでしたが、なんとか対応できてよかったです。
おわりに
今年はなんと341人もの新入部員が新しくtraPに参加し、総部員数は600人を超えました。
このサークルの活動の基礎を支えるプログラミング基礎講習会の役割は大きいですが、新入部員にプログラミングを始めるきっかけを提供できたと思います。
そして、この講習会を開催するにあたってTAの方々に大きく貢献していただきました。
受講者の質問対応や環境構築の手伝いなど、非常に心強かったです。
先日、プログラミング能力検定協会の方々から、テキストの内容や表記など多岐にわたる貴重なレビューをいただきました。
心より御礼申し上げます。
来年以降の講習会に向けて、大いに活用させていただきます。
これを読んでいる受験生、東工大生の方、もしこの記事を読んでtraPに興味がわいたら、ぜひ他の記事も読んでみてください。
traPでは、このほかにも幅広くたくさんの講習会が開催されています。
来年以降もこの講習会をきっかけとして様々な分野に挑戦する新入部員が出てきてくれることを楽しみにしています。