CS50 for Japaneseを終えた

cs50.jp

2022/09/09頃に着手して、ところどころ数日~1ヶ月のブランクを挟みつつ2023/05/04に終えた。およそ8ヶ月かかった。

環境差分などは別の記事にまとめてある。こちらは個人的な感想。

teafortw0.hatenablog.jp

文系学部を経てほぼ未経験のままエンジニア(プログラマ)として就職したので、コンピュータサイエンスの基礎がないことをずっと気にしていた。いくつかの言語の読み書きはできるようになった。ドキュメントの読み方も身についた。分からないことがあってもある程度は自力で調べられる。では、これからどうしよう? みたいな。もう一歩先に進むためにも、足元をしっかり固めておきたかった。

よく「プログラミングを勉強するなら作りたいものを作るのが近道」と言われたりもする。しかし私には作りたいものがない。どうにかならないかなぁと思ったことはたいてい他の誰かが先に見つけて解決している。それに乗っかった方がずっと楽。

しかも今の仕事はプログラミングからちょっと離れているのもあり、コンプレックスめいたものをずっと抱えていた。そんなところに「無料で」「日本語で」「ハーバードの」「コンピュータサイエンス」が学べるという情報が流れてきた。これはやるしかないと思ったのでやってみた。いい時代になったものだなぁ。

やってみてどうだったか

がっつり取り組むだろう学生さんには負けるけど、始める前に比べればかなり知識も身についたと思う。何より「やりきった」という事実が自信に繋がった。

平日は仕事を終えてからの30分~1時間、空いた休日は1時間~半日ほど。別の用があれば簡単に数日が過ぎるし、一時期はやらなさすぎてcodespacesが削除されそうになった。それでもちまちま進めて、恐らく通常の倍以上かけて成し遂げた。

メモリ管理のあたりが知識的には一番目新しかったかなぁ。C言語の例だから他の言語でそのまま通用するモデルではないものの、ポインタ等を通して直にいじるのは楽しかった。

一番おもしろかった演習も4週目(メモリ管理)。まさかC言語で画像にフィルタをかけられるとは……どうやっているのか見当もつかなかった機能が自分で実装できた時は興奮した。試行錯誤を繰り返してようやくcheck50がオールグリーンになった時も、プログラミングを始めたばかりの頃の楽しさを思い出したりした。

SQLの演習(fiftyville)はSQLそのものというよりは推理の過程が楽しかった。そんなに難しくないし単体で成立しているから、この演習だけでもやってみると面白いと思う。

メモ

ブランクがあってもどうにか完走できたのは、取り組む際にとにかくメモを取り続けたおかげだと思う。序盤の方は正直もう記憶が薄れているけれど、メモを見れば思い出せる。公式が用意したNoteではなく自分で書くことが大事。

実際に使ったリポジトリは公開しているので、奮闘の記録が気になる方は確認できます。演習の結果も含まれていますが、あくまでも初学者の私が実装したものなので模範解答的な使い方はできません。しないでください。責任が持てません。

github.com

できる人にとっては「なんでこんなところで……?」と思うだろうポイントで詰まったりもしたので少し気恥ずかしい*1

edXなどを使えば修了証をもらえるみたいだけど、そこまではしなくていいかなぁと思っている。check50があるおかげで添削の重要性も低いし。証明してもらう理由もないし。

ともかくやりきれてよかった。次は何を学ぼうかな。

*1:今の仕事だと初学者の躓きポイントはとても有用な情報なので残している