【無料でプログラミング学習】CS50のはじめかた【未経験者向けに始め方・進め方を動画付きで解説】

# まえがき
この記事を読んでいる方へ。

この記事を読んでみようと思って頂き、誠にありがとうございます。
私はこの記事が、プログラミングを __”やってみたい”__ という興味を持っている方や、プログラミングを始めてみようと思うけど __”何したらいいかわからない”__ という不安を持たれている方に届けばいいなと思います。
もしこの記事を読んでいただいて「お、いいじゃん」と思っていただけたら、そんな __プログラミングに興味や不安を抱えている周りの人にこの記事を共有__ していただけたら幸いです。

# 記事はじめ
こんにちは～[ジン(@Jin_pro_01)](https://twitter.com/Jin_pro_01)です。

本記事では、文系プログラミング未経験の僕が2021年5月から[__CODEGYM Academy__](https://codegym.jp/academy/)に入り、プログラミング学習を始めるきっかけになった、__[CS50](https://cs50.jp/)__ について書いていきます。

特に今回は __CS50のはじめかた__。
無料でプログラミング勉強したい！コンピューターサイエンスについて広く学びたい！と目をキラキラ輝かせている方、もしくはCS50に興味はあるけどどうやって始めるの？証明書？課題を提出？というような不安を抱えている方に読んでもらえればと思います。

とにかく今すぐCS50で学習を始めたい人は[__ここ__](https://qiita.com/JinA293/items/f608513e99663492f576#cs50%E3%82%84%E3%81%A3%E3%81%A6%E3%81%BF%E3%81%9F%E3%81%84%E7%84%A1%E6%96%99%E3%81%A7%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E5%AD%A6%E3%82%93%E3%81%A7%E3%81%BF%E3%81%9F%E3%81%84%E3%81%A8%E6%80%9D%E3%81%A3%E3%81%9F%E3%82%89)（記事下部に飛びます）

# [CS50](https://cs50.jp/)とは？
> ハーバード大学の CS50x は、コンピュータサイエンスとプログラミング技術を紹介するコースで、プログラミングの経験の有無にかかわらず、経験者と未経験者の両方を対象としています。David J. Malan が担当するエントリーレベルのコースである CS50x では、アルゴリズム的に考え、問題を効率的に解決する方法を学びます。テーマは、抽象化、アルゴリズム、データ構造、カプセル化、リソース管理、セキュリティ、ソフトウェアエンジニアリング、ウェブ開発など。言語は C、Python、SQL、JavaScript に加え、CSS と HTML を使用します。問題集は、生物学、暗号、金融、科学捜査、ゲームなどの実世界の領域からヒントを得ています。CS50x の学内版である CS50 は、ハーバード大学で最大のコースです。
>
> 9つの問題セット（プログラミング課題）と最終プロジェクトで満足のいくスコアを獲得した学生には、 edX.org を通じて、修了証が授与されます。CS50x は自分のスケジュールで受講できるセルフペースのコースです。（サイトより引用）

要するに、
__コンピューターサイエンスとプログラミング技術を学ぶための米ハーバード大学から提供されている授業である。もし修了証（履修証明書）を取得したい場合は用意された課題をこなす必要があり、それらは自分のペースで進めることができる。__
ということです。

#### 参考リンク
株式会社CODEGYMによる日本語翻訳版公式サイト

https://cs50.jp/

執筆時時点で最新版のCS50公式サイト

https://cs50.harvard.edu/x/2023/

# どうやって学習を進めていくの？
この授業の目的・概要をなんとなく理解できましたでしょうか。
内容はわかったけど、この授業で何するの？そんな人のためにここからは __どうやってこの授業で学習を進めていくか__ についてまとめていきます。
進め方の流れですが、簡単にまとめると各週（10週間分あります）の

__1. 講義を視聴する__
__2. Labを解く__
__3. Probrem Setを解く__

の順番で進めていきます。
実際に日本語版の画面を例に見ていきます。

### ➀講義動画を視聴する
まず画面左の講義リストから各週の講義を選択します。するとこのような画面が表示されるので、画面上部にある講義動画を視聴しましょう。ちなみに画像のページはCS50X 2022から選択していますが、CS50X 2021から選択したページには講義を文字に起こした __講義ノート__ が閲覧できます。それを活用することで復習や予習がグッと楽になり、大きく学習を深められます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2814969/5f30b062-8fe7-4aad-3255-6ffa61584ef8.png)
画像のページ

https://cs50.jp/x/2022/week2/

### ➁Labの問題を解く
次にLabの問題を解きましょう。講義の内容を使って解く問題になっており、Labの方が後述するProblem Setより難易度が低いため、こちらを先に解きましょう。サイトには進め方から実装の詳細、Labに関しては解答までついているため難しい場合にはそれを参考にしてLabに取り組みましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2814969/18f0d96f-b16a-1ada-ebfb-84ca2ce32b64.png)
画像のページ

https://cs50.jp/x/2022/week2/lab2/

### ➂Problem Setの問題を解く
最後にProblem Setの問題を解きましょう。こちらも講義の内容を使って解く問題になっていますが、前述したLabよりも難易度が高いため講義の復習をして臨みましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2814969/fcff7f54-856d-51be-cf20-0e68c3a6d251.png)
画像のページ

https://cs50.jp/x/2022/week2/problem-set/

# 早速やってみたい！けど何から始めたらいいの？
ここまで読んでいただきありがとうございました。
読んでみて、進め方について何となくわかっていただけたかと思います。

しかし、じゃあ __実際どうやって始めるの？何から手を付ければいいの？__ という方が多くいるかと思います。
そんな方はまず[CS50日本語翻訳版公式サイト](https://cs50.jp/)にアクセスして色々見てみて、早速 [__week0__](https://cs50.jp/x/2022/week0/) の講義を視聴してみましょう。物は試しです。1時間45分ありますが、 __とにかくわかりやすく面白い__ ので、字幕を付けてちょっと倍速で見てみても意外としんどさは感じないです（文系プログラミング未経験で飛び込んだ当時の自分の感想です）。

その後、[__week1__](https://cs50.jp/x/2022/week1/)に取り組む方には早速 __プログラミングをする環境の構築__ が必要になってきます。
しかし、

- わからない言葉が多すぎてわからない、パンクしそう
- 1人でやって間違えたらどうしよう

そんな悩みや不安を抱えた方は多くいる（特にプログラミング未経験の自分はそうでした）と思います。環境構築の手順は[こちらのサイト（Week1のProblem Set）](https://www.youtube.com/watch?v=nB3PXtgDiP4)に詳しく載っていますが、そのような不安を持たれる方のために __環境構築から課題の提出方法までをハンズオン形式での動画__ に起こしました。

https://www.youtube.com/watch?v=nB3PXtgDiP4

なので繰り返しにはなりますが、

### CS50やってみたい！無料でプログラミングやコンピューターサイエンスについて学んでみたい！と思ったら
__1. [CS50日本語翻訳版公式サイト](https://cs50.jp/)にアクセス__
__2.  [week0](https://cs50.jp/x/2022/week0/) に取り組む__
__3.   [week1](https://cs50.jp/x/2022/week1/) に取り組む__
__4.   [動画](https://www.youtube.com/watch?v=nB3PXtgDiP4)を見ながら環境構築__

の順番で行ってもらえればと思います。

### 修了証（履修証明書）について

そしてCS50では、履修したことを証明する __修了証（履修証明書）__ を取得することができます。
しかしそれを取得する場合、edx.orgを通じてcs50への登録、そして証明証を取得する際に料金（1万～2万円程度）を払う必要が発生します。

登録を行うサイトは[こちら（Edx.org）](https://www.edx.org/course/introduction-computer-science-harvardx-cs50x)

私は証明書を取得しましたが正直、就活などで証明書を見せる機会は今のところ一度もないので、特段理由がなければ __わざわざ高いお金を払って証明書を取得しなくても大丈夫__ かな？と思います。
そのため、本記事では一旦学習の始め方・進め方にフォーカスし、証明書の取得の解説については割愛します。

ちなみに履修証明書はこんな感じ。
![Inked CS50x.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2814969/9e904dd6-971b-4a5b-f085-b2f800835b60.jpeg)



# まとめ
以上がCS50の進め方・始め方になります。
今やプログラミングやコンピューターサイエンスが無料で学べる時代です。しかもあの有名な米ハーバード大学の授業を（有名だから良いとは限りませんが少なくともこれは素晴らしいと思っています）。

week0の講義を視聴してみるとわかると思いますが、内容がとてもかみ砕かれており非常に分かりやすい講義です。

もしこの記事を読んで、いいなと思ったら早速 __week0の講義をぜひ見てみる__ というところからスタートしていきましょう。
加えてまえがきでもある通り、周りの人（特にプログラミングを __”やってみたい人”__ ）に共有もして頂けたら幸いです。

# あとがき・余談

余談ですが、私は、__”学ぶ”__ ということに対して __レベルを求めるべきではない__ と思います。プログラミングやコンピューターサイエンスについて学ぶのであれば、それをちょっと知っている教養のレベルでも、サービスを開発するような就職するレベルまで勉強してもいい。ただ、 __知っているのと知らないのは大きな差がある__ と、それだけは思っています。

結論何が言いたいかというと __「興味はあるけど難しそうだからいいや」とか、「興味はあるけどエンジニアになる気は無いからいいや」といって学習をしないのはすごくもったいないよと思う__ っていう話です。

この記事もプログラミング学習と書いてはいますが、__プログラミングはするつもりなくて、コンピューターサイエンスの世界だけ学びたいと思っている人__ にもぜひ講義を見てもらいたいと思っています。

__興味が少しでもあるなら一回のぞいてみて、合わないと思ったらやめたらいい__ と思います。そんなことを普段思って、Peach.Techでも何も強制しないとか、来るもの拒まず去る者追わず的なスタンスで運営をしてたりします。自分自身に対してもたまたまハマったらラッキーくらいの気持ちでいろいろ手を伸ばしたりしています。

自分の人生を変えてくれた授業なので少し熱が高まってしまいましたが、それくらい素敵な授業だと本当に思っています。ぜひCS50及び、プログラミング・コンピューターサイエンスについて興味を持っていただけたら幸いです。__この記事を読んだことがきっかけでCS50やってみた__、__プログラミングに触れてみることができた__、なんてことを言ってくれる人がいたら、飛び跳ねて喜びます。ここまでご覧いただきありがとうございました。

ジン