語学好きのプログラミング初心者がCS50というハーバードのコンピューターサイエンスの授業を受けた話。


語学noteとしてはご無沙汰ですが、また英語関連の面白い教材(無料)を見つけたので、ご紹介いたします。

実はわたくし、数か月前からプログラミングの勉強を始めております。
最初は『普通にPCを使うだけの私がGeekになるとかちょっと想像つかないけど、でもパソコン一つで何か色々出来るようになったらスゴそうだし便利そうだからやってみるか』という感じで始めたのですが、始めたところ、面白くてえらくハマってしまいました。
もちろん慣れるまでプログラミング特有の大変さがあったりしたのですが(括弧が一つ抜けているせいで、すごい時間かかった、とか)、でもまあ語学をやっているせいか勉強は慣れているので、壁をいくつか乗り越え、今はわりと順調に進められているな、という感触がある今日この頃です。

そしてプログラミングの勉強をやっていてひしひしと感じるのは、「英語はやっぱり強い」ということです。
プログラミング言語自体が英語で成り立っているのは言うまでもないですが、それだけでなく、英語が出来ると教材の幅がぐっと広がる、というのも非常に大きな利点です。
日本語しかできない人に比べて、何倍もの選択肢の中から良質な教材を選ぶことが可能なんですね。
(最初は各分野に特有の語彙が出てきますが、英語自体に慣れていれば、語彙くらいすぐに適応できますからね)

そんなわけでプログラミング言語にはPythonを選び(初心者におすすめと書いてあったし、名前も可愛かったのでPythonにしました)、
『リスト(配列)くらいなら大体扱えるくらいには慣れてきたかな・・・』という頃に見つけたのが、Harvard大学edXというサイトで公開しているCS50という講座でした。


なぜいきなりハーバード大学の講座を見ようと思ったかというと、決して『自分の頭脳や英語力なら行けるやろ(楽観)』という自信があったからではなく、
プログラミングをかじりはじめたのはいいけど、正直パソコンの仕組みとか全然わからないから、コンピューターサイエンスの概論かつ英語の動画があったら、一石二鳥になるんじゃねという目論見が当初からあり、
最初はCode.orgの公開している動画を一本ずつ見て満足していたのですが、ついにはその動画を見尽くしてしまい、その次の動画をHour of Code繋がりで探していて見つけたのが、CS50だったわけです。

その授業はなぜかrubber duckーーつまりアヒルのゴム人形ーーがシンボルになっていて(その意味は後々わかるのですが・・・。気になる方はググってみてください)、授業の説明文を読むと初心者でも大丈夫で、授業も課題も自分のペースで進められる、とのことだったので、一応”あのハーバード”の講義についていけるかという不安はあったものの、とりあえずweek 0の講義動画を見てみました。

そうしたら、その先生はDavidという方なのですが、
トーク技術がすばらしく
・また教えるのも上手で、生徒に退屈させる暇を全く与えない上に、
授業についていけるか不安な生徒の心まで汲み取って気を使ってくれる
という、とんでもない名物教授だということがすぐにわかりました。しかもDavidの話す英語は、我々のような外国語話者にも非常に聞き取りやすい、綺麗な発音なんですよ。オンラインで参加している他の生徒さんたちを見ても人種や国籍が多様で、世界各国からノンネイティブの人が授業を受けているようなので、配慮してくださっているのかもしれません(そういうグローバルな雰囲気(を自室にいながら味わえるの)も楽しいですよね)。

なので、week 0を見終わった頃には(1講義2時間を、毎日20分ずつ区切って見ていました。英語でマシンガントークを聞くと、頭も耳も疲れちゃうので・・・)、『これはまたいい教材を見つけた!プログラミングを勉強しつつ、英語も新しい方面に挑戦できるぞ(しかもタダで)・・・!』とムフフと満足し、たとえるならTEDTalksを見つけた頃のような感慨がありました。

で、week 0まではよかったんですよ。
ワクワクしながらweek 1の授業を聞き始めると、『え?なんか始まったんだけど・・・、Lauguage Cって、は?まさかC言語・・・?え、これってC言語をやる授業だったの?コンピューターサイエンスの概論を聞くだけの授業ではなかったんですかい!?』
というわけで、なんかC言語がいきなり始まってしまいました。
第一言語のPythonだってまだまだ素人丸出しなのに、全然予期しないタイミングで、全然予想外なところから、プログラミングの第二言語が気づいたら始まってしまっていたんです(第二言語はもう半年ぐらい後にPythonがしっかりしてきてから、別の言語を選ぼうと思っていたんですよ・・・、計画では!)。
でもまあDavidの授業は絶対受けたい気持ちは揺らがなかったので、戸惑いながらもとにかく手を動かしてDavidのコードを書き写し、PythonとC言語の微妙な表記の違いに苦しみながら(Pythonを少々かじっていた程度では、大したアドバンテージにはならず、むしろ細かい違いに最初は苦しみました。・・・後々役立ってはくるのですが)、なんとかweek 1の講義は終えたのでした。

そしたら、今度はweek1の課題です。
・・・はい、CS50は講義だけでなく、宿題もついてきます当然のように、C言語でコードを書かされます
といっても、やる/やらないは自由です(certificationが欲しいなら必須かつ要課金)。ただし、課題は絶対にやるほうがオススメです。なぜならその方が断然、身につくからです。
というか課題の内容が毎回、すごい面白いんですよ!「へえ!C言語を使いこなせるようになったら、そんなことまで出来るようになっちゃうんだ!」と、好奇心をくすぐる問題を用意してくれているんです。といっても、いきなり複雑なコードを全部初心者に書かせるのではなく、「ここの空白部分を埋めてください」というような課題が多いです。
しかも毎回、問題の難易度の設定が絶妙で、最初は『面白そうな問題だけど、でもどうやって解くのかわからんぞ・・・?』という感じなのですが、大学院生がやっている補習の動画を見たり、授業中のコードをじーっくり読み返したりしているうちに、『あれ、これ解けるんじゃね・・・?』となってきて、最後には『やったー、解けたー!!』となり、そしてこの難易度だからこそ『自信ついたーー!!』となるんですよね。

そんなわけで毎回の課題の一つ一つが、本当によく考えて作られていて、間違いなくCS50の魅力の一つだと思っています(当然英語で出題されるので、問題文を読むだけでも少し時間がかかって大変ではあります・・・が、毎回比較的読みやすい英文で出題されるので助かっています)。

そんなこんなで、ヒイヒイ悲鳴を上げながらweek 1の課題はなんとか終えたのですが、そのとき思ったのは、『PythonとC言語の微妙な表記の違いや、ごく初歩的な処理(小数を四捨五入する方法など)に一々つまづいているようでは、この先絶対、課題が進められなくなる。Davidの授業を聞き続けたいのはもちろんだけど、課題も面白いから解いていきたい。そのためには、Davidの授業とは別にC言語の学習を、できれば日本語で補習しておいた方がいいのではないか・・・』ということでした(わたし大学生のとき授業についていくための勉強を自分でしようなんて思ったこと一度もなかったのに・・・)。

というわけで、Pythonの勉強は続けつつ(こっちも軌道に乗って来たところでやめたくなかったんです)、CS50の授業を受け、かつ授業についていくために日本語でC言語の勉強も進める(こちらにはPaizaを利用しました)、という鬼のような勉強スケジュールになってしまい、
気がついたら、かなりのまとまった時間をプログラミングに投入する日々を送っていました(外国語の勉強ではそこまで”漬け”みたいな状態に自分を置いたこと一度もなかったのに、不思議です)。

で、長々と書きましたが、今回の記事で何を書きたかったかというと、CS50はめっちゃ面白い、そしてDavidはスゴい、ということです。
さらに言えば、英語は一定レベルを超えたら、英語「を」勉強するのでなく、英語「で」勉強するという方針にシフトすると、英語は莫大な「知」に繋がる可能性を秘めている、ということです。

CS50を受けてみようか迷っている方へ。
CS50はマジでおすすめです。誇張ではなく、世界(視界)が広がって、物事や社会の見え方が変わります。コンピューターは私たちの生活を変えてきましたし、これからも変えていくことは間違いありません。コードを書かないにしても、知識として知っておくだけでも、とても意義のあることです。
授業についていけるか不安な気持ちもわかります。その点については、私の個人的な意見では、英語動画を英字幕つき等速で、ストレスなく理解できる程度に英語が堪能であるか、あるいは何かしかのプログラミング言語を3ヵ月くらいやって基礎がしっかりしているか、のどちらかであれば大丈夫ではないかと思います(後記。日本語の字幕もあるようです)。
ただ、C言語のコードはがっつり書かされることになるので、その点は覚悟しておいたほうがいいです(迫真)。特にプログラミング初心者は、授業とは別途にC言語を補習する必要に迫られるかもしれません(課題を諦めて授業だけ聞く、というのも可能ではありますが、CS50の魅力は半減すると思います)。
ただまあ、C言語は素晴らしい言語で、とてもやりがいがあります(C言語とPythonしか知らないド素人の感想)。色々やっていくうちに、C言語を勉強すること自体が自ずとコンピューターサイエンスの基礎を勉強することに繋がるということが、なんとなく私にもわかってきました。といっても、まだ講義全体の半分も終えていないのですが・・・!

というわけで、今回は英語を活かしてCS50という授業でプログラミングの勉強をしています、というお話でした。
せっかく英語ができるからには、どんどん活用してたくさんの知をエンジョイして生きていかなくては損ですよね!

それでは。


語学勉強の費用の足しにさせていただきます_(._.)_