ロンドン大学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つの異なるフォーマットのページを持つニュースサイトを作るといったものです。以下のようなWEBページを作成しました。javascriptでのDOM操作を入れることが必須になるため、記事内容を入れたjsonから記事ページを生成するなど多少強引にjavascriptでの操作を詰め込んで完了させました。
前回の試験結果と今後の監督付き試験
2022年春セメスターの結果はComputational Math, Intro to Programming 1ともに90点以上でFirst Classでした!とはいえ、Level4のモジュールは最終成績に与える影響が各約1.4%と極小なので、最終成績を重視するならL4の勉強はほどほどで進めるのが効率が良いかもしれません。
2022年秋セメスターまで、前述の通り試験はオープンブックで行われていたのですが、2023年春セメスターから、オンラインでの試験監督がつくようです。詳細はまだ不明ですが、おそらくオープンブックではなくなるかと思われます。この1年でもシステムトラブルが多い印象だったので、スムーズに監督付き試験を行ってくれるかやや不安です…
1年経って、だんだんとUoLとの付き合い方もわかってきたように思います。とはいえ慣れた分、グレード確保のため授業内容をさらっと抑えておしまい、のように進めてしまいがちだった点は反省です。おそらく日本の大学と比べると授業内容は実用寄りで理論は少ないため、基礎となる知識は補助の書籍などを用意して、積極的に勉強していかなければ勿体無いように感じました。
長くなってしまいましたが、最後までお読みいただきありがとうございました。