【CS50】ハーバード大のプログラミングコースを修了した話

プログラミング

はじめに

ついに先月ハーバード大学のプログラミング講座「CS50x」を修了しました!

本格的なコンピュータサイエンスの入門コースで、内容はかなり難しい。3ヶ月かかりましたが、なんとか最後までやりきることができました。

結論から言いますと、この講座は「神」です。

プログラミングを知らない私に、コードを書く楽しさと世の中を見る新しい視点を与えてくれました。

本当にDavid先生には感謝してもしきれません。

この記事ではそのCS50の内容、感想、難易度などについて解説していきます。

CS50(x)とは?

CS50xは、ハーバード大学のコンピュータサイエンス入門講座「CS50(Introduction to Computer Science)」を、誰でも無料でオンラインで受講できるようにしたものです。

元々はハーバードの学部生向けに開講されている講義ですが、その内容を一般向けに公開したのがCS50xです。プログラミング未経験者を対象にしながらも、非常に本格的で、計算機科学の考え方やプログラムの構造、アルゴリズムなどを深く学ぶことができます。

講義はハーバードの教授であるデヴィッド・マラン(David J. Malan)氏が担当しており、彼の熱量のある授業は「世界一エンタメ性の高いCS入門」と呼ばれるほど。視覚的にわかりやすく、実演も多く、難しい概念も自然に頭に入ってくる構成になっています。

https://cs.harvard.edu/malan/より

授業は実際の大学のホールで行われており、生徒が登壇して体験する場面もあって、ハーバードの雰囲気が感じられてとてもワクワクします。

11週間分の内容があり、週ごとに課題を提出しながら進めていきます。すべての課題をクリアし、最終プロジェクトを提出すれば、公式の修了証を受け取ることができます。

課題の提出は任意ですが、絶対にやったほうがいいです。なぜなら定着度が格段に違うからです。

下のものが修了証。これ貰えたらめっちゃ嬉しくないですか!

名前や、本物であることを示すQRコードとリンクが記載されている。無料でもらえます。

初心者向けコースとはいえ、あのハーバード生が11週かけて行うものですから、常人がやると難しく感じるのです。

無料で受講できて、内容は超一流。しかも英語のスキルも鍛えられる。そう考えて、この講座で学び始めました。

英語力は必要?

結論:けっこう必要です。

  • 講義はすべて英語(字幕あり)
  • 解説は丁寧だけど、リスニング力は相当求められる
  • プログラミング自体は言語を超えて学べるが、英語が理解できると圧倒的に学習がスムーズ

CS50 for Japaneseというサイトもありますが、内容の更新が数年前で止まっています。

テクノロジーの世界は刻一刻と変化しているので、最新版の受講がおすすめ、いや、必須です。

各週の内容と感想

おおまかにどんな内容か書いていきます。

Week 0 Scratch

とにかく面白くて見入ってしまう授業。

先生が電球をピカピカさせたり、電話帳を破り捨てたりしますw

後半では楽しくプログラミングできるスクラッチを使っていろいろ試します。
自分でゲームを作って楽しんでください。

Week 1 C

ここからが「コーディング」。
C言語を用いてプログラミングする方法を学びます。

スクラッチの内容をC言語に翻訳する形で授業が進んでいきます。
CとはWeek5まで付き合うことになるので、少しづつ身につけていきましょう。

Week 2 Arrays

配列や文字列、コマンドライン引数について学びます。

また、Week0,1で使ってきた用語(コンパイル、アセンブル、リンキング、デバッグ)について深く知ります。
技術の応用として簡単な暗号化処理についても学びます。

おそらくこのあたりから脱落者が増えていくでしょう。

Week 3 Algorithms

検索方法:線形探索、二分探索
ソート方法:バブルソート、選択ソート、マージソート
漸近記法:O、Ω、Θ
再帰(Recursion)

この章は非常に重要。数学など他分野でもこの考え方はよく用いられる(数学的帰納法等)。

Week 4 Memory

ここと次の章が山場。

ポインターの概念や動的なメモリの割り当てが登場します。
C言語のmalloc(memory alocate)の使い方がなかなか複雑です。

オーバーフローによって引き起こされた事故についてもふれます。

Week 5 Data Structures

キュー、スタックの構造
リンクリスト(私はこれに一番苦戦しました)
ツリー、ハッシュテーブルについて学びます

Youtubeの再生回数を見ると、2025年8月時点で、Week0 は85万再生なのに対して、week5は15万再生程度となっています。

結構脱落している感じが読み取れます。

Week 6 Python

Cは一旦引っ込んでてもらって、Pythonという言語に移ります。

移行するとなると慣れないかもしれませんが、こちらはCと比べて非常にシンプルでわかりやすいものになっています。

機能も充実していますので、楽しくプログラミングできるかと思います。

Week 7 SQL

SQLデータベースについて学びます。他と比べればだいぶ簡単に感じました。

Week 8 HTML, CSS, JavaScript

ホームページを作ったりする。

めっちゃ楽しい。

Week 9 Flask

Python × HTML,CSS,JavaScript の合わせ技

jinjaも使って、フルスタックwebアプリをつくれるようになる

Week 10 The End

自分でファイナルプロジェクトを提出する

C言語を使った計算システムでもよし。ゲームつくってもよし。Webアプリやホームページでもよし。今までの知識と自分の興味と実際に結びつけます。学びの集大成です。

修了率は?

どうやら相当低いようです。

2016年のデータを見てみると、
登録数150,349
修了証獲得1,388

修了率は約 0.9% とわかります

少ない理由は:

  • 英語が難しい
  • 課題が重たい(数時間、数日かかる)

→ 途中で諦める人が多い

でも、最後までやりきれば「まあまあプログラミングができる人」になってる。

実際自分もめちゃくちゃむずかしいと感じました。授業はなんとか理解できても、自分でやるとなると、とても難しい。それと、課題が授業の難易度を遥かに上回ってきます。

まとめ

  • 英語に抵抗がなければ、Udemyなどと比べても最強の入門講座
  • 世界レベルの授業が、無料で受けられる
  • 本気でプログラミングを学びたいなら、これ以上のスタートはない
  • 修了証はもちろん無料
  • 修了すれば、次に進む自信がつく

CS50xは、プログラミングの世界に飛び込む入り口であり、これからの時代に活きる論理的思考も学ぶこともできます。

「やってみようかな」と思った人、ぜひ一歩踏み出してください!
こちらです→ https://cs50.harvard.edu/x/

おわりに

David先生が語っていたように、CS50は誰でも入れる広い入り口のような存在です。そこから先は、プログラミングの中で自分が興味を持った方向へと自由に進んでいくことになります。
だからこそ、先生は次のステップとして、もう一つ別のコースを受講することを勧めていました。

次はCS50P(Python特化)を受講していきたい

英語勉強も並行して行おう

基本情報技術者とか応用情報技術者の資格も取ってみたいな
国家資格かっこいい

目標は壁一面を賞状で埋め尽くすこと!

コメント