テクノシップブログ

田舎育ちで文系でもITの世界へ

CS(コンピューターサイエンス)奮闘記④『CS50を受けてみて...』【第20号】

こんにちは!

テクノシップブログです!

 

もうすっかり夏めいてきましたね。🌞🌞🌞🌞🌞

日中は暑くて息が詰まりそうな日も多々ありますが、いかがお過ごしでしょうか?

 

さて、ただ今CS(コンピューターサイエンス)基礎を学んでおり、

その経過を「奮闘記」としてお送りしています。

 

前回までRecursionの学習カリキュラムのうち、無料で受講できる部分だけを学習

してみての感想を記事にしましたが、

今回は、同じく無料で受講できるオンラインサービスである「CS50」を受講して

みた感想をお伝えしたいと思います!!

 

Recursionについては、以下概要です!!

---------------------------------------------------------------------------------------

Recursion(CSを基礎から学べるオンライン学習サービス)

 こちらは「無料プラン」と「有料プラン」の2種類があります。

 カリキュラムに沿って基礎から学習を進めていき、コーディング問題やクイズに

答えながら知識を定着させていくスタイルをとっています。Facebookの現役エンジ

ニアの方がカリキュラムを作成しており、現場で通ずる良質な知識が習得できそう

ですね。

 

 最終的にはチームで実践的なアプリケーションを開発する経験を詰めたり、

途中で分からない点は質問し放題だったりと、非常に有意義な学習体験が

詰めそうなサービスですね!!

 

 ただ、使えるサービスを増やすには「有料プラン」にする必要があり、

月額7,000円くらいするので、少し手が出しづらい印象もあるかもしれません。

 

 Recursion↓↓↓

recursionist.io

---------------------------------------------------------------------------------------

 

 

1. CS50の概要

 CS50の概要は以下の通りです。↓↓↓

-------------------------------------------------------------------------------------

CS50(全て無料でCS基礎が学べるオンライン学習サービス)

 こちらは、ハーバード大学で講義として提供されているものを誰でもオンライン

で学習できるようにしたサービスです。しかも「無料」で提供されているので

手を出しやすいですね!!

 

 講義ノートを見ながら該当の講義動画をYouTubeで視聴することができ、

万全の学習環境が整っていると言えそうです。やはり動画の力は強いですね。

 

 講師の話すスピードが速く、日本語字幕対応をさせても文字を目で追うので

精一杯になりそうですが、そこは慣れていけば楽になると思います!!

 

 CS50↓↓↓

cs50.jp

-------------------------------------------------------------------------------------

 

 

2. CS50の学習内容

2-1. カリキュラム

 CS50の学習内容ですが、まず授業が「week0~week10」までの11個の授業に

加えて、「FinalProject」と呼ばれる最終課題が設けられています。

 

 最初は本当にコンピュータサイエンスの基礎から学習をスタートし、途中から

実際に言語を使ったプログラミングなどの学習へとシフトしていく流れです。

 

 各週の授業には、その授業で学習したことをアウトプットする場として、

Lab」や「ProblemSet」と呼ばれる提出課題があります。

ここで実際にコーディングしながら問題を解くということを繰り返すことで、

知識を定着させようという狙いがあると思います。

 

2-2. このコースで学べること

 CS50では、学べることとして、以下のように書かれています。

 

コンピュータサイエンスとプログラミングの広範かつ強固な理解
プログラミング問題を効率的に解決するためのアルゴリズムの考え
抽象化、アルゴリズム、データ構造、カプセル化、リソース管理、セキュリティ、 ソフトウェアエンジニアリング、Web開発などの概念
C、PythonSQLJavaScriptに加え、CSSやHTMLなど、            多くの言語に精通していること
様々なレベルの学習者が集う活気あるコミュニティに参加する方法
最終的なプログラミングプロジェクトを開発し、仲間に発表する方法

(CS50公式ページより引用: https://cs50.jp/)

 

 これによれば、ただコンピュータサイエンスの知識を身につけるだけでなく、

さらにスキルを上げていくための行動の仕方や、学習成果をアウトプットする

スキルなども磨いていくことができるようです。

 もちろん、実際の講義を録画したものをサービスとして利用できるものなので、

発表の機会などは無いかもしれませんが、それでも動画の中で講師の方が教えて

くれることは非常に有意義なものになると思います!!

 

3. CS50を学習してみての感想 

 私は現時点で「week0~week2」まで学習を終了しているだけなのですが、

ここまでの学習だけでも相当に有意義なものでしたので、ぜひ感想を共有させて

いただきたいと思います!!

 

3-1. とても分かりやすい授業

 まず、なんと言っても「授業が分かりやすい」ということを言いたいですね。

学習をし始めたばかりの印象は、「話すスピードが早すぎてついて行けない

というものだったのですが、学習を進めていくうちに自然と慣れていきました。

 

 実際に講義の試聴を進めていくと、理解を大いに助けてくれるポイントが

豊富にあることに気づきました!!

 

スクリーンや講義場そのものを使った視覚的な説明

 一番理解を助けてくれたポイントが、「視覚的な説明」です。重要なポイントを

スクリーン上で説明してくれたり、実際にコーディングを見せてくれたりと、

全てが視覚的で本当に助かりました!

 

 特に一番すごいと感じたのが、

講義場に豆電球を用意し、コンピュータの再現する」というものです。

コンピュータは「0」と「1」の2つの組み合わせを増やしていくことでより多くの

データを表現していけるようになるという基礎的な部分を実際に電球の点灯と

消灯の表現によって説明してくれたのです!!

 

 これのおかげで曖昧だった理解がぐんと明確な理解へと変わりました!!

 

●随時学生からの質問を受け付け、その場で疑問点を解消させる

 次に理解の助けとなったのが、「定期的な質問の機会」です。

 講義は動画なので、私自身が質問をできるわけではありませんが、動画の中で

講義を受けている学生からの質問を受け付けて、丁寧に素早く回答してくれる

ということが頻繁にあります。

 

 自分自身が疑問に思っていたことを代わりに学生が質問してくれることもあり、

非常に有効的です!!

 

3-2. 豊富なアウトプット機会

 上述したように、各授業の終わりには、「提出課題」があります。

その提出課題を解くために、CS50ではクラウド型のIDEを利用してコーディング

しながら回答を作っていきます。

 

 簡単なアルゴリズムを組む問題から、様々な条件を考慮しなければならない

問題まで広範囲にわたります。

 

 しかし、必ずヒントをくれるので、歯が立たないという感じではないように思え

ました!!エラー箇所を明確にするためのテストツールなども提供してくれている

ので、大きな助けとなります!!

 

 提出方法は「GitHub上に提出」となっています。

提出するたびにGitHubの草も生えるので、自分の学習成果を記録していけますよ!

 

3-3. コンピュータの理解

 講義の最初の方はコーディングの際の言語として、「C言語」を指定されます。

C言語は非常に古い言語であるため、様々な場面で明確なコーディングをしないと

エラーの連発となります。

 

 特に「静的言語」ということで、変数や関数を宣言するときに、「データ型」を

きちんと指定しなければなりません。動的言語であるRubyの学習から始めた私と

しては、慣れるのに苦労しています。

 

 しかし、面倒臭いこのような作業をしっかりと行うことで、ンピュータが

どう動くのか」ということをしっかりと理解していけるのだと考えています。

引き続き、頑張ってコーディングしていきたいと思います!!

 

4. 今後の予定

 今後の予定としては、7月中にCS50の受講を終えられるように隙間時間を

見つけてやっていきたいと思います!!

 今後もお楽しみに!!

 

 

5. テクノシップ第20号プチ編集後記

〜新居で新生活をスタートした矢先、インターネットが繋がらず仕事ができなく

なりました。一旦実家に引き返してインターネット工事が済むまで待機です💦〜