Ken’s Learning Projects

色々なスキルや資格の取得を実践・展開します!

edXを利用して新しいスキルを習得する (Programming- 011)

新しいコースを始めます。前回のコースが少し合わなかったので、また新しいパートナーから探していきます。今回選んだのは、"Introduction to Computer Science by Harvard" です。今回のブログでは、その選んだ理由と、そのコースの内容、そして最初のイントロ的部分をやってみた感想まで記載したいと思います。

 

パートナー選びについて

edX で学ぶ際において、パートナー選びがかなり重要であることがわかってきました。だいたいその提供している大学で共通の方法がとられていたりするなどしているため、その品質が保証されるように思います。これまでで一番良かったのが、この edX の創業に関わっている MIT だったことを踏まえ、今回はもう一つの創業大学である Harvard に注目することにしました。ちなみにその2校は提供しているコース数も群を抜いています。 

 

学ぶ内容について

Finance や Management 関連のコースを勉強してみて、これらの科目はあんまりオンラインで学ぶのに合っていないような気もしてきました。と言うのも、それを本当に実践して何かやるということが難しいからです。それに対し、プログラミングでは、もう勉強を始める時点でPCを触っているわけで、実際にプログラミングをしてみてその結果を画面に写すということが可能になります。アウトプットからフィードバックをすぐに得られて、そこから改善していけるというこの Learning Project にも適合しています。

したがって、また今回も Programming 関連にすることにしました。Harvard でも MIT 同様結構多くの Programming 関連のプログラムやコースが提供されていました。とりあえずプログラムから探すことにすると、どのプログラムも最初は "Introduction to Computer Science" というコースから始まっています。その後、それに付随するより専門的なコースをするという流れになっています。

プログラムですが、今回はアプリに関するものにしてみようと思います。というのも、これらのプログラミングを学んだのち、何か成果物が欲しいなと考えた時にアプリというのはわかりやすく、作りやすいように思ったからです。最終的にはこのプログラムを終了後、実際にアプリを製作する Learning Project を始めようと思っています。

 

プログラム及びコースの内容

このプログラムで学ぶことに関しては、以下のように記載されていました。

コンピュータサイエンスとプログラミングの広範かつ強固な理解
抽象化、アルゴリズム、データ構造、カプセル化、リソース管理、セキュリティ、ソフトウェアエンジニアリング、ウェブ開発などの概念
C、PythonJavaScriptSQLCSS、HTMLを含む多くの言語への精通
JavaScript、JSX、ES6、React Nativeを使った独自のモバイルアプリの開発方法
コンポーネント、プロップ、ステート、スタイル、ビュー、ユーザー入力、コンポーネントデバッグをマスターする方法
自分でデザインしたアプリを実装する方法

 

ハーバード大学のCS50コースは、コンピュータサイエンスを専攻している人にもしていない人にも、また、本格的なコーディング能力を持つ人にも、コンピュータプログラミングの経験がない人にも、プログラミングの技術を教えてきました。David J. Malan教授が率いるこのプログラムは、学習者にアルゴリズム的な思考法と効率的な問題解決法を教えます。コアとなる「コンピュータサイエンス入門」では、プログラミングとコンピュータシステムの基礎を幅広くしっかりと理解することができます。その後、これらの基礎知識をもとに、React Native Frameworkを使ったモバイルアプリ開発について学びます。

暗号、金融、フォレンジック、ゲームなどからヒントを得た問題集を使って、さまざまなプログラミング言語に慣れた後、最新のJavaScriptの専門知識を身につけ、JSX(JavaScript拡張機能)やReact Nativeのパラダイム、アプリのアーキテクチャユーザーインターフェースを学びます。コースの最後には、完全に自分でデザインしたアプリを実装する最終プロジェクトがあります。

 

 そして始める "Introduction to Computer Science" には以下のような説明がされています。

ハーバード大学のCS50xは、コンピュータサイエンスの知的事業とプログラミングの技術を紹介するコースで、プログラミングの経験の有無にかかわらず、専攻者と非専攻者の両方を対象としています。David J. Malanが担当するエントリーレベルのコースであるCS50xでは、アルゴリズム的に考え、問題を効率的に解決する方法を学びます。テーマは、抽象化、アルゴリズム、データ構造、カプセル化、リソース管理、セキュリティ、ソフトウェアエンジニアリング、ウェブ開発など。言語はC、PythonSQLJavaScriptに加え、CSSとHTMLを使用します。問題集は、生物学、暗号、金融、科学捜査、ゲームなどの実世界の領域からヒントを得ています。CS50xの学内版であるCS50は、ハーバード大学で最大のコースです。

9つの問題セット(プログラミング課題)と最終プロジェクトで満足のいくスコアを獲得した学生には修了証が授与されます。CS50x」は自分のスケジュールで受講できるセルフペースのコースです。 

 

最初のイントロ的部分を受けてみた感想

このコースは Week 0~10までと Final Project からなっています。まあ Introduction となっていますので、今回も無料のもので進めていこうと思います。ちなみに certificate は $199です。日本円にして約20,000円です。少し高いように感じますが、シラバスを確認すると、結構な分量があるのではないかと思います。

 

まず最初は Week 0 と題されています。と言ってもビデオが一つあるだけでした。ただ、そのファイルを再生してみて驚いたのが、その長さが約1時間40分だったことです。この先がちょっと不安になりました。

 

その進め方としては、実際の授業を録画しています。ただ、前回の NYIF と異なるのが、この授業がすでに COVID が流行ってからやったものなのかすでに全ての学生がオンラインで参加しているということです。教授が解説しているのですが、その説明風景は、まるでTEDの舞台のようで聞いていて面白く、時々質問を学生に投げかけ、その質問をオンラインで集計し、画面に写しています。確かに実際の授業をとったものではあるようですが、そもそもオンライン用に設定された授業ですので、このようにオンデマンドにしても違和感があまりありません。これは前回の NYIF とまるで違います。

 

内容ですが、最初はコンピューターがどうやって数字や文字、絵や動画、音を表すのかといった初歩的なことから始まり、以前 MIT の時にも出てきた 'bisection search' の優位性の説明や、プログラミングで使用する用語の簡単な説明をしていきます。最後に視覚的に理解ができるプログラミング言語である "Scratch" とについて触れ、プログラミングがどのようなものなのかを紹介して終了です。

 

と、とりあえずその序章のみやってみました。授業の質や面白さは今の所いいと思います。ただ、無料ということもあり、どのようにミニテストなどを配置してくれているかが気になるところです。またなかなか重量のあるものに挑戦しますが、コツコツとやっていきたいと思います。

 

f:id:KenSuzuki1:20210211005354p:plain