米オンライン大学でコンピュータサイエンスの学位を取得しました~社会人学生卒業~
初めまして。Ryotaroと申します。
簡単に経歴を紹介します。
2018年に関西学院大学法学部を卒業し約3年間専門商社で海外営業として働いておりました。コロナをきっかけにプログラミング学習をはじめ、2021年8月から現在(執筆時)までバックエンドとして働いております。
2022年9月に米オンライン大学であるUniversity of the Peopleに入学し2024年11月にコンピュータサイエンスの学位を取得しました。
ありがたいことに度々DMや勉強会にて質問を頂くので振り返りついでに纏めました。目次をつけておりますので気になる箇所だけでも目を通していただければと思います。
なぜコンピュータサイエンスの学位を取得したのか
特に深い理由はないです。入学時はほぼ勢いで、人生に一度ぐらいは英語で何かを学んでみたいぐらいの気持ちでした。
周りの先輩エンジニアがフリーランス、ジェネラリスト、PMなどの成長戦略を取られており後追いで同じ場所に向かうより別のことをしようと思いコンピュータサイエンスの学位取得を志しました(完全な後付けです)。
University of the Peopleとは
国家認定大学
アメリカの国家認定大学(Nationally Accredited University)です。
アメリカにはいくつかの認定機関があるのですが、平たく言うと私が在籍していたUniversity of the Peopleはアメリカという国が教育の水準を認定した機関です。
先輩学生であるSayahさんのこちらの記事で認定機関及びアメリカの大学の制度について詳しく纏められております。興味のある方はどうぞ。
特徴
第一の特徴としては、キャンパス費、教科書と授業料は完全無料となっております。必要な費用に関しては費やした費用の項目を参照ください。
第二の特徴としては、複数の協力機関、パートナー企業がついていることです。例えば、企業であれば日本でも馴染みのあるMeta、Google、Hp、Microsoftなどです。
ただしインターンの機会などは地域差などがありそうです。日本内でどれぐらいインターンに参加できるのかは分かりません。
第三の特徴としては、完全にオンライン完結であることです。入学関連、日々の授業、卒業まで全てオンラインで完結することができました。働きながらでも学位を取得できた理由です。
第四の特徴としてはネガティブな情報ですが、4年生の卒業率が19.2%となっており少し低いです。
卒業までのスケジュール
入学から本学部生になるまで
入学手続き終了後に、オリエンテーション授業、英語の授業、Pythonの授業を受講する必要がありそれらの科目で最終評価60/100を取得する必要があります。
卒業まで
University of the Peoppleは5学期制を採用しており、各学期は9週間になります。1週間ごとに課題をこなしていくイメージです。
1科目こなすごとに3単位を取得することができ、120単位を取得することで卒業となります。
1週間のスケジュール
日本時間で毎週木曜の14時ごろに課題が科されます。それを翌週の14時までにこなす必要があります。提出遅れに関しては、ほぼほぼ許容されておりません。
大体1科目あたり15時間想定で課題が作られております。実際それぐらいか科目によってはそれ以上を要しました。
私の場合は2科目ずつ受講していたので平日3~4時間学習、土日は5時間ずつ学習に充てておりました。
授業や課題
授業
日本の高校や大学のように各学期のはじめにクラス分けがあり自動で振り分けられます。
週ごとのモジュールに沿って、ディスカッションに投稿したり、課題を提出します。これらは専用のオンラインプラットフォームで管理され、講師やクラスメイトと意見を共有することが求められます。
決まった時間に講義動画を視聴するなどはなく、週ごとの課題やディスカッションを自分のペースで進めることができます。例えば、仕事の後や週末など、自分のライフスタイルに合わせて勉強を計画できます。
課題
前述の通り毎週課題が出ます。
内訳は大体以下の通りです。受講科目によって左右します。
リーディング(数ページから多い時で100ページ前後)
ビデオ教材(オプションですが基本みた方がいいです)
短いレポートと紐づくクラスディスカッション
長いレポート
プログラミング課題もしくは長いレポートと紐づく相互評価
3週目と6週目と9週目にそれぞれテストがあります。
授業について詳細はこちらの記事を確認お願いいたします。
成績
クラスによって配点が違いますが上記の課題をこなして積み上がった点数が60点以上であれば単位取得可能となります。
各評価を取るための点数内訳です。
卒業要件
120単位を取ることが第一の卒業要件です。日本の大学のように内訳も決まっております。
コンピュータサイエンス関連の専門科目、数学科目、一般教養科目で構成されております。
詳細は公式をご確認ください。
入学に必要なもの
英語力
英検準1級相当の英語力が求められます。入学時の提出物として証明書が求められます。TOEICは使えません。
証明書を提出することが出来れば、本学部生になるまでに受講が必要な英語のクラスをスキップすることができます。
ない場合でも入学可能ですが、英語のクラスを受ける必要があります。
数学
特に何かを提出する必要はありません。University of the Peopleでは代数学から始まり高校数学+アルファの範囲となっております。
数学に苦手意識を持っている人は事前に高校数学の復習をしておいた方がいいです。数学3の範囲も出ます。
数学に特化した記事を以前に書きました。
学歴
高校の卒業証明書が必要となります。既に専門学校や大学を卒業している必要はありません。
余談ですが通っていた高校に依頼して英語の卒業証明書を発行して頂きました。
最短で卒業するには
前述の通りUniversity of the Peopleは5学期制を採用しており、各学期は9週間となっております。1科目3単位なので、2科目ずつ受講しても1年で30単位です。卒業要件の120単位を取得するには4年掛かります。
私のように2年半で卒業するには、以下の3つのことが必要です。
英語力の証明
他の専門学校や大学を卒業していること
最低でも2科目ずつ受講すること
英検やTOEFLなどの証明書を提出することで1クラス分(9週間)短縮することができます。
日本の一般的な大学のように単位移管を行うことが出来ます。また卒業済み教育機関の単位を移管することで一般教養科目のほとんど(40単位前後)をスキップすることが出来ます。
費やした費用
授業料は無料ですが以下の場合に費用が発生します。
入学費
単位移管
試験受験料
私の場合は入学費が60ドル、単位移管費用が425ドル、試験授業料が17科目×120ドルで2400ドルでした。
合計2885ドルで12月25日現在の為替157.17円/ドルで計算しても45万円ほどなので日本の大学に比べて破格の価格となっております。
費用は受験前に必要なので一度に数十万を支払う必要はないです。私は小遣い制ですがやりくりできました。
入学前の個人的な準備
いきなり英語で学ぶ環境(それも専門的な分野)に飛び込む勇気はなかったのでお試しとしてCS50を事前に受講しておりました。日本語版も存在しますがUniversity of the Peopleは英語なので英語で受講しました。
本学生になる前の科目がPythonで学ぶプログラミングだったのでPythonチュートリアル 第4版(オライリー)を読んでおきました。
またこちらの数学について書いた記事にも記載しましたが、小学校算数から数3まで予習しました。
コンピュータサイエンスで何を学ぶ?
受講した科目のいくつかを紹介します。
コンピュータ構造
数字の0と1から論理回路、CPU、コンパイラ、プログラミング言語動作環境を作り上げるまで学びました。
ネットワーク
3way handshakeの仕組みやUDPとTCPを比較しながら特徴を学びました。
プログラミング
Javaを使った簡単なソケットの実装を行いました。またクライアントサーバモデルやMVCモデルについても調査しました。
アルゴリズム
Union/Findやheap、sort各種など一般的なアルゴリズム、データ構造について調査したり実装したりしました。また時間や空間計算量についても学びました。
離散数学
プログラミングやアルゴリズム設計、データベース構造、ネットワークなどで必要となる数学を学びました。数学的な公式を現実の問題に結びつけた課題をこなしました。
他にはデータベース、オペレーションシステム、プログラミング言語の比較(LambdaとかHackshellなど)、ニューラルネットワークの科目なども受講しました。
全科目の受講歴(学部生向け)
この順番で受講しました。参考になればと思います。
CS1101 : Programming Fundamentals
MATH1201 : College Algebra
CS1102 : Programming 1
CS1103 : Programming 2
CS2203 : Databases 1
CS1104 : Computer Systems
MATH1280 : Introduction to Statistics
CS2204 : Communications and Networking
MATH1211 : Calculus
CS2401 : Software Engineering 1
MATH1302 : Discrete Mathematics
CS3306 : Databases 2
CS3303 : Data Structures
CS2301 : Operating Systems 1
CS3305 : Web Programming 2
CS3307 : Operating Systems 2
HIST1421 : Greek and Roman Civilization
CS4402 : Comparative Programming Languages
CS4407 : Data Mining and Machine Learning
挫折ポイント
主観になりますが実際自分が折れていったポイントなども纏めます。
本学部生になってからのレベルの差が大変
本学部生になってから大体Javaで学ぶプログラミングのクラスを受講することになるのですがオブジェクト指向周りやリーダブルコードに書かれているようなお作法に及んで学ぶので全くの未経験の方には辛いと思います。
実際自分はこの授業を受けるまでJavaはほんのりコードを読んだことがあるだけかつ、普段もPHPを書いていたのでクラスやインターフェイスなどチンプンカンプンで大変でした。
数学が大変
もともとバリバリ理系の方にとってはそんなに苦ではないと思いますが、高校数学+アルファの範囲であるので課題をこなすにはそれなりの理解が必要です。また数学科目は受講した全科目の中でも課題が多く週に100p前後読んだ時もありました。
一部時代遅れな技術を用いた課題を課すクラスがある
特にWeb科目については流行り廃りが早いので、現状に即していない場合もありました。
モチベーションを保つのが非常に難しい
オンラインであるメリットは前述の通りなのですが完全オンラインであることがモチベーションに影響を与えています。
完全オンラインでは、教室やキャンパスでの対面交流がないため、孤独を感じることがあります(私はすごく感じてました)。モチベーションを保つための仲間や先生との直接的なやり取りが少ない点が難点です。
学習の進行が完全に自分次第であるため、計画を立てて進める習慣が求められます。計画が崩れると、課題の締め切りに追われやすいです。残業などが重なった時夜中の2時や3時まで課題に追われることがあり折れそうでした。
評価が理不尽な場合がある
課題は基本先生か相互評価を採用しているため匿名でクラスの誰かが評価をします。真面目に課題をこなしていても理不尽な評価をつけられる場合があり、その場合には先生や管理部に自ら訴えや交渉を行う必要があります。限られた時間の中で、いわゆる雑務をする必要があるので嫌になります。
最後に
ここまで読んで頂きありがとうございます。「なぜコンピュータサイエンスの学位を取得したのか」の項でも書いた通り半分勢いで入学しなんとか学位の取得にたどり着くことが出来ました。
いずれ学位を生かした何かを発信できるようこれからも頑張ります。この記事が誰かの助けになりますように。