Learning Journal for a BS CS

Soon to be a Degree Seeking Student

UoPeople での2学期目が終わり、CS 学部本科生になりました

ご無沙汰しております、もとまちです。

今回は、UoPeople での2学期目が終わったので、その振り返りをしようと思います。

以下、目次です。

これまで

と、その前に、そもそもなんで UoPeople で勉強しているの?については前回の初回記事をご覧ください。

motomachi17.hatenadiary.jp

ざっくりまとめると:

  • 職業プログラマだが、学問的には素人なので Computer Science 的素養を培いたい
  • 家事と育児と仕事を抱えているため、講義時間に拘束されたくない、ましてや通学をや
  • 将来的には海外移住も視野に入れているため、英語でのプログラムが好ましいと思っていた

てな理由で UoPeople で勉強することに決めたという次第です。

2学期目も履修数は1科目

上記の流れで UoPeople での2学期目に突入したわけですが、履修を決める前の段階で仕事が忙しくなる想定があったため、この学期も1講座だけの履修に抑えました。その想定とは、転職。

とっとと学位を取得したい!という気持ちからすると悩ましいところではあったのですが、新しい職場で立ち上がる目処が立つまでは、学業で業務を圧迫しないようにするのが無難だろうと堅めの判断を下しました。9月1日入社だったので本記事執筆時点で丸2ヶ月が経過しているのですが、特に職場での不確実性が大きい段階で履修決定を迫られたため、妥当な判断だったなと感じています。

新学期開始の前日に、こんな呟きをしていたらしい。

CS1101: Programming Fundamentals 振り返り

さて、今回履修したのは CS1101 という科目。

my.uopeople.edu

科目名にもあるとおり、プログラミングをする際の基礎的な考え方、概念、作法について総ざらいするという内容。プログラミングの基礎を学ぶことは、Computer Science を学ぶにあたって、まさに初めの一歩ということなのでしょう。教科書*1に指定されている Think Python 第2版 が入門書としてはよくできているので、もし Computer Science 学んでみようかなと思ってる方がいらしたら、ぜひ手に取ってみてください。

教科書がよくできている

繰り返しになるのですが、Think Python という教科書が秀逸でした。著者の力量によるところが大きいのでしょうが、ああ、英語の世界ではこんなに見通しよくプログラミングが語られているのね、と感動することしきりでした。

これを感じたのが、第1章でプログラミング言語の定義をするくだりでした。

前のセクションで「よくできている」と書いたのは、登場する用語の定義がわかりやすく、ネット上に落ちている(日本語の)プログラミング関連記事によくある、カタカナ語によるモヤモヤがないことに尽きます。受け取り手を迷子にさせない意思疎通、書いたり、話したりする際に念頭におきたいものです。

クラスメイトと絡むのが楽しい

UoPeople の醍醐味の一つに、全世界から学生が集まっている点が挙げられます。今回のクラスも多分に漏れず、南北米・アフリカ・欧州・亜州など各大陸からクラスメイトが参加していました:

  • やたらとコードがエレガントな、熟練 pythonista らしきブラジル人
  • BTS Army だとプロフィールに書いているアメリカ人
  • CS 専攻じゃないけどよろしくねと自己紹介していたハンガリー

中でも記憶に残っているのが、カナダ出身で北欧在住、子育て中とプロフィールに書いている父さん学生とのやりとり。これがなかなか白熱しました。きっかけは初期の Discussion Assignment で、筆者の投稿に対して向こうが疑問を投げかけてきたこと。結構込み入ったポイントをつかれたのですが、こちらからの返信が Unit の締め切りのギリギリだったこともあり、Moodle の DM 機能に場所を移してのやりとりを2-3往復した記憶があります。彼とはその後も、 hilite.me というコード整形サービス の使い方についてやりとりしたのですが、どうやらプログラミング初学者らしき彼の文章は、やたら冗長で、わかりやすかったのでした。即座に再現できるようにするためのアクションを取らないところが筆者の怠惰なところなのですが、彼の素晴らしい文章力に大きな刺激を受けた次第です。

コード上の命名が困る

この科目では、とにかく配列や辞書など基本的なデータ構造の取り扱いについて理解が問われるものでした。つまり、Discussion Assignment にしろ、 Programming Assignment にしろ、Learning Journal にしろ、基本的なデータ操作(配列への要素追加、辞書の逆引きなど)をこれでもかとコードで表現しなければいけないわけです。そこで少し困ったのは、それらのデータ構造で何を表現するかということでした。もちろん、教科書の内容を基礎に別の方向でコードを書き上げることが求められる場合は創作の余地はほぼないわけですが、それでも感覚的に半分くらいは創造性を問われる(嘘)課題だったように思います。

あまり時間もかけられないのでぱっと思いついたものを使うわけですが、筆者の場合はスター・ウォーズのキャラクターたちに参加してもらいました。例えば、配列への要素の追加がお題だったら、R2-D2C-3PO を含む配列に、 BB-8 を追加する、といった具合です。

今振り返ると Unit2 の Learning Jouranal の提出物の中に既に Yoda の文字が見えているので、当初から彼らに頼っていたようです。Discussion Forum では終盤に、この創造性が問われる課題が登場し、その際はやたら好評を博しました。その様子をここに引用できないのが若干悔しいですが、 "I love you wrote your code with what we've grown up with!" みたいなコメントを上述の BTS Army が残してくれていて、通じた感じがとても嬉しかったです。

UNIV1001 との比較で楽しく過ごせた科目だった

初っ端の Online Education Strategies がつらすぎるという話ではあるのですが、、、上記のクラスメイトとの交流や、 Peer Assessment や Discussion Assignment の採点基準が明瞭だったこともあり、精神的な負担は相当軽くなったというのが実感です。

筆者が職業プログラマということもあり、かなりサクサク課題をこなせたというのは勉強時間の実績値からも読み取れます。他方で、実態としては早寝早起きで、毎日子供が起きる前の1-2時間で生産性を極力上げて取り組んだのが功を奏した面もあります。

f:id:motomachi17:20211108234526p:plain
勉強時間は 4-12時間/週、程度だった

本科生になった

こんな書き出しで始まるメールを受信し、正式に UoPeople の Computer Science プログラム本科生になりました。

Congratulations!

You have successfully completed UoPeople Foundations and have been admitted as a Degree Student in the Bachelor's degree in Computer Science program! But wait, there is more! All courses with a passing grade will be counted towards your degree!

この学期の初期に手続きをしていたのであまり詳細は覚えていません。が、ポイントは原則高校の卒業証明書の提出を求められるところ、既に大学を卒業している人は大学の卒業証明書を提出すればよい、ということ。筆者は、 n 年前に日本の大学の学部を卒業していたため、そちらの卒業証明書を提出して、無事に承認されました。Catalog に原則しか書いていないのは、学部 admission において基本高校を卒業した人の入学が想定されているであろうことからすると納得なのですが、例外についても FAQ とかで誰でも参照できる状態にしておいて欲しいなぁという感想です。筆者がただ見落としているだけかもしれませんが。

次の学期

もうすぐそこに迫っている来学期ですが、下記2科目を履修予定です。

それでは、また。

*1:リンクを貼ったシラバスには A History of the Personal Computer という別の教科書も指定されているが、本科目履修中に課題図書として指定されることはなかった。