見出し画像

ペンシルバニア大学MCIT修士課程の秋学期を終えて〜オンライン留学体験記〜

こんにちは、くぼみです。

元デザイナーで、現在はペンシルバニア大学でコンピューターサイエンスを学んでいます。今月2022年12月に、2学期目を終えました。この記事では、今学期の勉強を振り返りたいと思います。

最近、ペンシルバニア大学のMCITプログラムに出願を考えている、という方から、質問をいただくことが時々あります。同士が増えたような気持ちで、嬉しく感じています。この記事が、オンライン留学や、このプログラムに興味がある人の参考になれば幸いです。

ちなみにペンシルバニア大学のMCITプログラム とは、コンピュータサイエンスを学ぶ修士課程で、完全オンラインなので、私は日本に住みながら留学しています。プログラムの概要や、私の出願〜入学の経緯については、こちらの記事をご覧ください。

オンラインの学習体験がどのようなものかについては、前回の振り返り記事で紹介しています。

履修した授業の振り返り

今学期は、企業インターンと時期が重なったこともあり、授業は1つだけ履修することにしました。履修したのは、「Data Structures & Software Design」という授業です。

私の個人的な評価
難しさ:★★★☆☆
時間:10時間 / 週
人にすすめたい:★★★★★

授業内容

  • データ構造ソフトウェア設計を学ぶコースです。言語はJava。

  • 前半(1〜8週)は、データ構造。配列、リスト、スタック、キュー、ツリー、ハッシュマップ、グラフといった重要なデータ構造を学びます。

  • 後半(9〜14週)はソフトウェア設計。ソフトウェアアーキテクチャ、UML図、デザインパターン、コンカレンシーなど、ソフトウェア設計のトピックを学びます。

  • 以下、この授業の説明文です。

This course focuses on data structures, software design, and advanced Java. The course starts off with an introduction to data structures and basics of the analysis of algorithms. Important data structures covered include arrays, lists, stacks, queues, trees, hash maps, and graphs. The course also focuses on software design and advanced Java topics such as software architectures, design patterns, and concurrency.

upenn.edu

課題

  • 通常課題
    Javaでプログラムを開発する課題が毎週〜隔週の頻度であります。計7回。

  • 最終課題
    個人課題とグループ課題があります。グループ課題は、2人1グループで、クラスメイトと協力してプログラムを開発します。

  • 内容
    講義で学んだデータ構造を自作・編集する課題や、講義で学んだソフトウェア設計やデザインパターンを実装する課題があります。

  • 採点
    Codioと呼ばれる外部ツールを用いてコードを提出し、課題によって、自動採点と手動採点を組み合わせて採点されます。

試験

  • 期末試験が1回あります。2時間、Open book形式、選択問題です。

データ構造、とにかく面白かった!

  • データ構造は人によって好みが分かれるようですが、私はデータ構造の面白さにとてもハマり、終始ワクワクして学んでいました。いままで受けた授業の中で一番好きなトピックでした!

  • 以前は、数あるデータ構造を理解もせずに使っていましたが、それぞれのデータ構造がどんな仕組みになっているのか、そしてそれぞれどんな長所と短所があるのかを理解していくプロセスは、感動の連続でした。Javaで用意されているようなデータ構造も実は自分で作れる!という体験を通して、プログラミングがかなり好きになりました。

  • データ構造の特徴を理解していると、問題に対して適切なデータ構造を選ぶことができるので、効率の良いプログラムを開発することができる、というのも良い学びになりました。

グループ課題はパートナーとのコミュニケーションが肝

  • グループ課題は、4週間ほどの期間、2人1グループで取り組みます。何日もかかるタフな課題なので計画性と密なコミュニケーションが重要でした。より良いソフトウェアアーキテクチャを相談したり、お互いにコードレビューをしたりと、共同開発を体験できてとても実践的な学びがあります。

  • コミュニケーションは、週に2回ほどオンライン会議をし、それ以外もほぼ毎日Slackでやりとりをして進めました。

  • プロセスとしては、MiroでUML図を共有しながらソフトウェアアーキテクチャを決定し、その後は役割を分担し、GitHubでコードを共有して開発、Unit Testで様々なテストをして検証しました。

MiroでUML図を共有してソフトウェアの構造を相談しました
  • グループ課題がうまくいくかどうかは、パートナーによってかなり変わってくると思いますが、私は幸い、素晴らしいパートナーと組むことができ、楽しく順調に進められました。パートナーは、ベトナム在住のデータアナリストで1児の母。課題以外のいろんな話もして、とても仲良くなれたのは思わぬ幸運でした。

英語に慣れてきた、読解力がついた

  • 前回の春学期は英語で付いていくことに苦労しましたが、そこでの成長もあったおかげで、今学期はあまり英語ではつまづかなかった気がします。特に教授の話し方がわかりやすかったこともあり、講義の動画は問題なく聴いて理解することができました。

  • この授業では特に英語を読む機会が多くあり、リーディングが鍛えられたと感じます。自分でググって公式ドキュメントや英語のリソースを読んだり、課題のたびに長文の指示書を読まなければならなかったり、教科書のリーディングをしたり。はじめは長文を読むのは根気がいりましたが、多読をとおして、英文を読むことがつらくなくなってきたのは嬉しい変化です。

CourseraからCanvasへ、ツールの移行

今学期から、オンラインプログラム全体で使用するツールが移行しました。今年の春学期まではCourseraというプラットフォームで講義の動画や資料が提供されていましたが、今学期からはCanvasという別のサービスに乗り換えたようです。Courseraが好きだったので一瞬残念に感じましたが、使い勝手はほとんど変わらなくて安心しました。

これは一例ですが、他にも、授業の質問ができるツールが別のサービスに移行したりと、大学のシステムは日々アップデートされています。使い勝手があれこれ変わるのは不便と感じる人もいるかもしれませんが、個人的には、大学側が絶えず改善を回している様子が感じられて、いいなと思います。

海外一人旅の旅先で同級生と交流できた!

オンラインのMCITプログラムには、世界中の学生が在籍しているため、世界各国に学生がいます。

私は今年の夏季休暇を利用して、何年ぶりかの海外一人旅に出ました。行き先はヨーロッパ。滞在した数カ国で、現地の学生に連絡をとり、何人かの在学生・卒業生と実際に会って交流することができました!

MCITプログラムのSlackには、国や地域ごとにチャンネルがあり、たいていの学生は自分の住む国や地域のチャンネルに参加しています。(もちろん日本チャンネルもあります!)なので、旅行や出張の際に、行き先の国のチャンネルで「いつからいつまで滞在するけど、だれかお茶しませんか?」などと声をかけると、予定の合う人が乗ってくれたりします。

初めて行く知らない国や地域でも、大学のコミュニティがあって、気軽に同級生と交流できるというのは、かなりの新体験でした。同級生とはいえ初対面の人たちと会うのは緊張もしましたが、多様なバックグラウンドの在学生・卒業生の、学業やキャリアの話が聞けて、とても刺激になりました。

日本の旅行者入国も徐々に緩和されてきたので、今後は、日本に来る同級生と交流できる日も近そうです。

2023年は…

2022年の1月にスタートした学生生活ですが、あっという間に1年が経ちました。今の所、時間や場所にとらわれずに教育が受けられるオンライン留学は、自分に合っていて、とても楽しく快適に勉強できています。

2023年の1月からの春学期は、コンピューターシステムの授業かアルゴリズムの授業のどちらかを履修しようと考えています。また、Twitterやnoteで近況を報告できたらと思います。

というわけで

このnoteでは、私のオンライン留学体験記を連載しています。オンライン留学を検討している人の参考に少しでもなれば幸いです。質問があればコメントやTwitterでお気軽に聞いてください。

↓オンライン留学体験記をマガジンにまとめています。ぜひ他の記事も読んでいただけたら嬉しいです。

この記事が参加している募集

振り返りnote

よければTwitterもフォローお願いします! https://twitter.com/kubomi____ 頂いた「サポート」は勉強に充てさせていただき、学びはnoteに還元したいです。よろしくお願いします!