えんぴつぶろぐ

子育て中のフロントエンドエンジニアのブログ。

UoPeopleでComparative Programming Languages(プログラミング言語比較論)を修了した

オンライン大学 University of the People でComparative Programming Languages (CS4402) を修了したのでその感想を書きます。

これまでのUoPeople関連の記事はこちら:
UoPeople カテゴリーの記事一覧 - えんぴつぶろぐ

はじめに

プログラミング言語パラダイムの変化を追いながら、命令型言語と非命令言語(関数型や論理型など)の特徴を学び比較を行うコースです。

各言語の歴史や特徴だけでなく、コンピューターシステムのアーキテクチャコンパイルの仕組みなども触れるので、今までのCS系コースの総復習的な内容だと感じました。

なお、提出する課題の量は他のコースと比べるとかなり少ないのでいくらでも手を抜けるコースとなっております。

主な学習内容

(長いよ!)

最近こちらの方の記事がバズっていましたが、チューリング機械や正規言語、文脈自由についてUnit2で触れたので「あ!これ進研ゼミでやったやつだ!」となりました。

zenn.dev

課題について

他のコースでは存在するWritten AssignmentやProgramming Assignmentが、このコースではなんと一切ありません🎉🎉🎉
シラバスには「Written Assignmentを提出」と書かれているUnitがありますが多分誤植です。
コード書いて提出させるような演習的な課題もないので理論重視のコースのようです。
(提出が求められない任意の演習は少しだけありました)

Reading Assignment

提示されている読書課題の量は多めなので、きちんと読もうとするととても時間がかかります。

多いときだと

基本のテキストブック 1~2章 + 記事やPDF 2~3個 + OptionalのURL 5個 + ビデオ教材 4本

という感じです。

Optionalな文献にはしれっとプログラミング言語チュートリアルAPIリファレンスが提示されてたりするので、全部読むのは無理大変だと思います。
資料はデッドリンクになっているのも多かったですが、わからないところは日本語の記事を検索したりして学習したりしていたので特に支障はありませんでした。

尚、要点が一番まとまっているのはLearning GuideのIntroductionとVideo materialsだったので最初にこちらを見ておくと理解しやすいと思います

Discussion Assignment

課題が少ない分、 Discussion Assignmentの配点は重めです。

「XXX型言語のXXXという特性について例を提示しながら説明しなさい」
「XXXの言語とXXX言語を比較しなさい」

みたいなシンプルな問いが出されます。

リサーチが必要なお題もいくつか出されますが、ぐぐればすぐわかるものばかりなので、そんなに難しくはないと思います。

私は優しいクラスメート・インストラクターに恵まれたようで、

  • 見出しなどをつけて読みやすくする
  • サンプルコードは簡単なものでもいいから必ずつける
  • 参考文献は学術機関(大学とか)がサイトに載せている資料など、できるだけ信頼できそうなものを使う
  • 締め切りギリギリに提出(水曜日夜〜木曜朝)

という感じでやっていたらほぼ毎回10点がもらえました。

Self-Quiz

Self-Quizは他のコースとは異なり、テーマ別に2〜5本くらい出されますがそれぞれ5〜10問くらいなのでそこまで量は多くないと思います。

Unit3のSelf-Quiz一覧

プログラミング言語の開発者の名前を答えるような暗記問題や、単語をタイプする問題も出ます。
Java, Perl, Haskell, Prologなどの言語のSyntax問題も多く出るので、Self-Quizで困らない程度の基本的な文法は覚えておく必要があります。

Learning Journal

Learning JournalはUoPeopleのよくある振り返り日記です。
要件を満たしていれば、満点はもらえると思います。

Graded QuizとFinal Exam

Final Exam、Graded QuizはSelf-Quizにはない問題も多かったです。
単語の穴埋め問題も出されるのでスペルミスにも注意する必要があります。

最終試験は「正解2つあるように思えるけどどっち!?」という悩ましい選択肢が多く、何問かミスりました…😇
(いまだ何が正解だったのかわからない…)

役立ったもの

日本の大学が公開しているプログラミング言語論のスライド

日本の大学・大学院が公開しているプログラミング言語論の講義資料はUoPeopleのこのコースとかぶっているトピックも多く、大変参考になりました🙏

筑波大学Programming Languages and Methodology

東洋大学2014年度 プログラミング言語論

JAISTAutomata and Formal Languages in Nomi

2進数,10進数,16進数相互変換ツール

2の補数表現を計算する問題がいくつか出るので、手で計算したものの確認に使わせてもらいました。

2進数,10進数,16進数 相互変換ツール

Online Perl Interpreter

Perlのコード片を読まされる問題がちょくちょくあります😨
入門サイトを読むだけでは難しかったので以下のエディターで手を動かしながら覚えました。

Execute Perl Online (Perl v5.24.2)

Haskell

関数型言語Haskellのコードリーディングの問題もちょくちょく出ます。
こちらのサイトの説明がわかりやすかったです。

Functional Programming 2018 Fall

Haskell CapmNetwork

Prolog

Prologもがっつり覚える必要があるため、こちらの書籍とOnlineエディタが非常にありがたかったです🙏

http://www.k-techlabo.org/www_prolog/prolog_main.pdf

SWISH -- SWI-Prolog for SHaring

学習時間

学習に費やした時間は6〜11時間程度でした。

週毎の学習時間

成績

Final Examで結構間違えたのでヒヤっとしたけどなんとかA (GPA 4.0)が取れました🎉

f:id:empitsu88:20211107010145p:plain

これまでに受講したコース

ということで以下のコースが修了できました!

+前の大学から単位移行した45単位

計78単位