ロンドン大学World Class CS 2022秋セメスター振り返り

また半年経ちました


ロンドン大学(University of London) World Class BSc Computer Science に入学して 1 年が経過しました。期末が終わってから随分時間が経ってしまいましたが、2022 秋セメスターでとった 3 つのモジュールの感想をまとめます。

2022 秋にとったモジュール

Discrete Mathematics、Algorithms and Data Structures 1、Web Development の 3 モジュールを受講しました。

Discrete Mathematics

離散数学です。前セメスターで受講した Computational Mathematics に続き、コンピューターサイエンスに必要な数学の基礎を学びます。具体的な内容は以下の通りです。

  • 集合
  • ブール代数
  • 命題論理
  • 述語論理
  • 関数、写像
  • 再起、帰納法
  • 二項関係
  • グラフ理論

前半は集合や論理が中心、後半はグラフ理論が中心の構成になっていました。

個人的には述語論理の推論規則や誤謬あたりで躓きました。一度何となくの理解でさらっと飛ばして進めた結果、途中で完全に詰まってしまって結局最初からやり直すはめに。論理は特に正確に解説を理解しないといけないのと、用語がたくさん出てくるので、英語で学ぶと特に難易度が上がる気がします。WIIS 様にはめちゃくちゃお世話になりました。 論理 | 数学 | ワイズ

逆に後半のグラフ理論や木は事前に予習を行えていたのもあって、そこまで滞りなく学習を進められました。もともと論理と比べても直感的に理解しやすいですよね。前回の投稿でも触れましたが、早水桃子先生の離散数学入門の動画を並行して見ていました。 離散数学入門#0: グラフ理論へのイントロダクション

試験形式

中間試験は提出期限の約 3 週間前に問題が配られ、回答を PDF を提出する形式です。ボリュームはそこそこありますが、時間もあるのでそこまで負担は大きくないかと思います。期末はオープンブックの 4 時間で選択式 10 問と記述式約 10〜15 問(大問 3 つのうち 2 つを選択)。範囲はモジュール全体です。

中間は手書き NG だったため LaTeX で作成し、期末は手書き OK でしたので iPad で手書きしたものを PDF にして提出しました。

補足

動画レクチャー内で、サラッとそれまで説明された知識だけでは理解できないような内容が触れられることが稀にありました。おそらくこういったものにも応用されている、と紹介するため?と思われますが、ぱっと見ではその判別が難しい…例えばグラフの基礎的な用語を説明した後、BFS,DFS の説明もないまま、Hopcroft-Karp アルゴリズムの擬似コードがいきなり出てくるなど。

これをすべて理解しようとして何度か詰まってしまいました。結局それらは試験でも出ないみたいなので、全体をざっと通して余裕があれば戻ってくるでも良かった気がします。

あと以前は春学期は Computational Math, 秋学期は Discrete Math しか選択できませんでしたが、2022 年秋からは春秋どちらも好きな方を選択できるようになったみたいです。難易度的にできれば Computational Math を先に終えた方がスムーズに学習できるように思いました。

Algorithms and Data Structures 1

基本的なアルゴリズムとデータ構造を学びます。名前に”1”と付いていることから分かる通り、Level 5 には ADS2 という発展編のモジュールが存在します。具体的な内容は以下の通りです。

  • 擬似コードとフローチャート
  • 抽象データ型:ベクター、可変長配列、キュー、スタック
  • データ型:配列、連結リスト
  • RAM モデル、計算量
  • 探索:線形探索、二分探索
  • ソート:バブルソート、挿入ソート、マージソート、クイックソート
  • 複雑性クラスの概要

前半は主にデータ構造に焦点が当てられており、後半では二分探索やソートなどのアルゴリズムが主なトピックでした。

自分は UoL に入学するまでさっぱり CS の知識を持っていない状態だったため、多くが初めての概念で全体的に苦戦しました。

試験形式

中間は 4x4 の簡易数独、”Pseudoku”の擬似コードを作るというものです。インストラクションに十問ほど、あれこれそういった実装をしてください、という指示があって、それに対して愚直に実装を行います。擬似コードだけ一発で書くのは難しいので、何らか手元で実際のコードを動かしてテストすることになると思います。提出は PDF で行うため、こちらも LaTeX でまとめました。正月休みの 1 日半を使う程度のボリュームでした。

期末は選択式が十問ほど、記述式が十問程度。DM 同様にオープンブックで 4 時間以内に PDF で提出します。記述式は与えられたコードの最悪時間計算量や空間計算量となぜそうなるかの説明、のような雰囲気の問題が出るので、事前に各アルゴリズムについてまとめ資料を作っておくと良さそうです。

その他

中間や期末では擬似コードを提出するのと、この次の ADS2 は C++を使った説明が入るそうなので、慣れるために以前数回参加して放置してしまっていた atcoder を再開しました。

このモジュールの補助目的だけなら、atcoder より leetcode の easy 問題の方が純粋なアルゴリズムとデータ構造寄りのため効率が良いかもしれません。

でも atcoder はそれ単体でとても楽しいです!レートが明確に出るのと定期的にコンテストがあるので、モチベーションを継続させやすいですね。始める前と比べて実装力や考察力は上がっているように思います。今は年内に入緑を目標に少しずつ取り組んでいます。

Web development

Level4 モジュールの問題児と呼び声の高い(?)WD。Web の基礎を学ぶモジュールです。

  • Web デザイン
  • HTML,CSS の基礎
  • javascript での DOM 操作

内容自体はフロント制作の表面をさらさら撫でる程度で、ほかモジュールと比べると数段階簡単な印象でした。

試験形式

中間、期末ともに試験ではなく、WEB ページを制作してそれが採点される形です。この制作が、WD が時間食いモジュールと言われる所以です。

中間試験は Level4 唯一のグループプロジェクトで 3 ページの制作、期末は一人で 5 ページの制作があります。ページ数だけ見ると楽そうに見えますが、その前段階で参考にするサイトの調査やレポート作成もあるので、とかく時間が多く取られます。

特にグループプロジェクトは他の方のブログなどでも、自分一人しかアクティブじゃない、そもそもグループに割り当てられるのが締め切りギリギリだった、などトラブルの話ばかり見ていたので戦々恐々としていました。しかし自分の場合が良く、ほぼ全員が積極的に活動するグループに当たったため、とてもスムーズに進みました。自分のグループでは slack でのやり取りのみで完結しましたが、他のグループでは定期的に Zoom などでミーティングしている例もあるようでした。

期末のプロジェクトは一人で 5 つの異なるフォーマットのページを持つニュースサイトを作るといったものです。javascript での DOM 操作を入れることが必須になるため、記事内容を入れた json から記事ページを生成するなど多少強引に javascript での操作を詰め込んで完了させました。

期末のプロジェクトは、一人で 5 つの異なるフォーマットのページを持つニュースサイトを作るといったものです。javascript での DOM 操作を入れることが必須になるため、記事内容を入れた json から記事ページを生成するなど多少強引に javascript での操作を詰め込んで完了させました。

前回の試験結果と今後の監督付き試験

2022 年春セメスターの結果は Computational Math, Intro to Programming 1 ともに 90 点以上で First Class でした!とはいえ、Level4 のモジュールは最終成績に与える影響が各約 1.4%と極小なので、最終成績を重視するなら L4 の勉強はほどほどで進めるのが効率が良いかもしれません。

2022 年秋セメスターまで、前述の通り試験はオープンブックで行われていたのですが、2023 年春セメスターから、オンラインでの試験監督がつくようです。詳細はまだ不明ですが、おそらくオープンブックではなくなるかと思われます。この 1 年でもシステムトラブルが多い印象だったので、スムーズに監督付き試験を行ってくれるかやや不安です…

1 年経って、だんだんと UoL との付き合い方もわかってきたように思います。とはいえ慣れた分、グレード確保のため授業内容をさらっと抑えておしまい、のように進めてしまいがちだった点は反省です。おそらく日本の大学と比べると授業内容は実用寄りで理論は少ないため、基礎となる知識は補助の書籍などを用意して、積極的に勉強していかなければ勿体無いように感じました。

長くなってしまいましたが、最後までお読みいただきありがとうございました。