2年間で何が学べる?オーストラリアIT修士コースで専攻した16科目全公開【CS専攻】

australia-it-master-course

こんにちは、ジェニーです。

文系出身で大学院からITを専攻して留学するとき、2年間で就職可能なほど十分な学びができるか、2年間でどんな知識や経験が得られるのか、は気になることだと思います。

そこで今回は、私が卒業したクイーンズランド工科大学(QUT)大学院でITを専攻した場合の、

  • 2年間の大学院生活で学べる言語・IT技術領域
  • 2年間で受講した全16科目の概要

を公開したいと思います。

QUTのIT学部で専攻可能なメジャー、必須・選択科目から学べる技術の紹介に加え、在学中のインターンシップサイドプロジェクトの重要性についても紹介していきます!

目次

QUT大学院IT学部2年間で学べる理論・プログラミング言語

クイーンズランド工科大学IT学部では、以下8種類の専攻が選べました(私が入学した2018年時点)。

  • Data Science
  • Enterprise Systems
  • Security
  • Computer Science
  • Business Process Management
  • Networks
  • User Experience
  • Information Management

ソフトウェアエンジニア・プログラマーになりたい人は Computer Science 専攻、ICTビジネスアナリストになりたい人は Business Process Management 専攻、データサイエンティストになりたい人は Data Science 専攻、というように、学びたい分野と卒業後に取りたい進路に応じて各自専攻を決めます。

割合としては、40%がコンピュータサイエンス、20%がデータサイエンス、20%がBPM、残り20%がその他の専攻といった印象です。そして私も、ソフトウェアエンジニアになりたかったのでコンピュータサイエンスを専攻しました。

結果的にQUTでコンピュータサイエンス専攻にして正解だったなと思います。というのも、以下のことが学べたからです。

QUTコンピュータサイエンス専攻で学べたこと
  • プログラミング言語(C#・Python・R)の基本と応用
  • アジャイル開発手法・デザイン思考
  • 基本的なアルゴリズムとデータ構造
  • WEBアプリケーションの制作方法
Jenny

複数のプログラミング言語に触れる機会はもちろん、オーストラリアIT企業でよく採用される開発手法の理解もできました。

QUT大学院2年間で専攻した16科目とその概要(CS専攻の場合)

オーストラリアの大学では1学期間に4科目を履修するのが基本のため、2年間の履修科目数は16個です。その中には全員必修の科目、専攻ごとに必修の科目、選択科目の3種類があります。私がQUTでCSを専攻した2年間で履修した科目は以下の通りです。※最近卒業した友人によるとITコース・科目の構成が2年前より結構変わったようですので、あくまで参考としてお考え下さい。

1年目セメスター1

科目名必修/選択
IFN500 Design Thinking for IT必修
IFN501 Programming Fundamentals必修
IFN504 Corporate Information Systems選択
IFN700 Project Management必修

Design Thinking for IT

デザイン思考の理論を学び、グループワークでそれを実践しながらモバイルアプリのプロトタイプを作ってみようというプログラムでした。Empathize → Define → Ideate → Prototype → Test というサイクルを何度も回して、ユーザーに寄り添ったITプロダクトを作る手法を学びます。グループワークがメインで忙しい科目でしたが、デザイン思考を理解するだけでなく実践することでのメリットも感じられ、非常におもしろい科目でした。課題の詳細はこちらの記事(文系卒でも大丈夫?オーストラリアIT大学院の課題ってどんな?)で読むことができます。

出典:5 Stages in the Design Thinking Process (Interaction Design Foundation)

Programming Fundamentals

C#を使ってプログラミングの基本を学びます。専攻関係なく(ネットワークやビジネスアナリスト志望でも)全員が必修です。ITバックグラウンドがない人でもついていけるよう設計されています。変数・メソッド・クラス・継承などのオブジェクト指向言語、基本構文から始まり、コンソールアプリケーションや Windows フォームアプリケーションなどを作ります。すべて個人課題で、レポートとプログラムの提出に加えて、チュートリアル時間を使ってのプログラミングテストもありました。C#は2年目の応用科目でも使用することに加えて、QUTのあるクイーンズランド州ではC#の求人が多い(チューター情報)とのことだったので、身に着けておく価値はあると思います。

Corporate Information Systems

ICT技術が企業においてどのように使われているか、最新技術がどのように使われうるか、をケーススタディ中心に学びます。ビジネスアナリスト志望者向けの科目だったと思います。ガートナーのハイプ・サイクルで各技術の位置づけを確信しながら、ブロックチェーンやデジタルツインなどを記事・論文・活用事例を通して学びました。課題はグループワーク中心で、興味のある比較的新しい技術領域を選び、どういった業界のどういった企業で活用されうるか、というビジネスプランをコストつきで作ります。1学期目ということもありプレゼン・レポートの良い練習にはなりましたが、ソフトウェアエンジニアを目指す上では他の技術よりの科目を履修した方がよかったなと今は思います(笑)

Project Management

ITプロジェクトの開発手法(ウォーターフォール・アジャイル)を学びます。授業では理論を中心に、各手法のメリットとデメリット、具体例を勉強します。チュートリアルでは、毎週グループでアジャイルコンセプトを学ぶためのアクティビティを行いました。例えば、カンバン方式のタスク管理方法、MoSCoWを使った優先順位のつけ方、工数管理の方法、アジャイルのセレモニーなどを課題・クイズ・プレゼンを通して経験していきます。オーストラリアの多くのIT企業ではアジャイルが取り入れられているため、個人的には理解する機会があってよかったと思っています。

出典:Scrum Framework (Scrum org)

1年目セメスター2

科目名必修/選択
IFN503 Fundamental of Computer Science必修
IFN505 Analysis of ProgramsCS必修
IFN600 Understanding Research必修
IFN680 Advanced Topics in Artificial IntelligenceCS必修

Fundamental of Computer Science

コンピュータが内部でどう動いているかを学びます。OS、CPU、メモリ、入出力の仕組み、アセンブリ言語、UML図の描き方などです。コンピュータ内部での処理の仕組みを、リトルマンコンピュータというコンセプトを通して理解していきます。成績は、複数回の短文クイズ、レポート、テストという構成でした。

Analysis of Programs

データ構造と基本的なアルゴリズムを学びます。線形データ構造から始まり、サーチ、ソート、文字列検索、動的計画法、計算コストの考え方などがカバーされていました。レクチャーは疑似コードを用いて説明がされるため、特定の言語を理解していなければならないということはないです。課題は、レポートとアルゴリズムを実装したプログラムの提出が2~3回あり、言語の指定はありませんでした。Pythonを使う生徒が多かった印象ですが、RやC#など自分が知っている言語で課題に取り組むことも可能です。CS専攻なら必修科目であり、プログラマーになるなら確かに知っておいた方がよい内容ばかりでした。

計算量を比較する課題レポートがありました

Understanding Research

正直一番微妙な科目でした。修士課程は、全員が2年目にプロジェクトに取り組まなければなりません。プロジェクトというのは、実験やアプリの制作に取り組むのに加えて1万ワード近くのレポートを書く必要があります。Understanding Research はその事前準備的位置づけの科目で、本格的な実験・リサーチ論文の書き方を、実際にレポートを書きながら学びます。たくさんの研究論文を読み、未踏の領域・ギャップを見つけ、自身の研究目的・意義を見つけ出します。必要性は理解していたんですが、同じ学費を払うならより技術的なことを学ぶ時間にあてたかったと正直思いました(笑)

リサーチの計画を立てたときの一コマ

Advanced Topics in Artificial Intelligence

人工知能・機械学習を学びます。応用科目の1つだったので、1年目の私には難しかったです(笑)様々なAIモデルを授業で学び、チュートリアルでPythonを使って実装する練習をするという構成です。こちらの記事でも書いた通りグループワークが大変でしたが、この科目を通してPythonにかなり慣れることができました。以来、言語指定のない科目の課題や、就活で技術試験を受けるときは毎回Pythonで挑むことができるようになったので感謝している科目です!授業と課題だけでなく、自習も必要な科目でした。自習に使った教材は以下の記事で紹介しています。

2年目セメスター1

科目名必修/選択
IFN509 Data Manipulation選択
IFN680 Programming TheoryCS必修
IFN701 Project 1必修

Data Manipulation

データベースとSQLの基本、Rを使ったデータ解析方法を学びます。リレーショナルデータベース・クエリの基本から始まり、統計理論も学び、Rで実験・実装していきます。個人課題とグループ課題のミックスで、クイズ・レポート・プログラムの提出に加えて期末テストがありました。

Rを使ってデータ解析したときの課題

Programming Theory

C#を使ってコンパイラーの仕組みを学びました。スキャナー、パーサー、シマンテックアナライザー、コードジェネレーターという一連のコンパイリング処理を理論で理解しつつ、C#で実装していきます。毎週グループで進める課題が出され、進捗が遅れるとついていけなくなるので大変でした。学期末には、メンバー同士を採点するしくみもあり、グループへの貢献度もかなり問われる科目でした。

Project 1

2年目になると「プロジェクト」なるものに取り組み始めます。2科目分の単位に相当します。学期が始まる前にプロジェクトリストが公開されるので、自分の興味のあるプロジェクトに申し込みます。論文リサーチ・実験・開発・企業コラボなどのプロジェクトタイプから選べます。学期をかけて、提案レポート・提案プレゼン→実際の開発やリサーチ→最終プレゼン・レポート提出という流れで進みます。開発型のプロジェクトを選択したとしても1万ワード目安と言われる最終レポートは全員が書く必要があるため、なかなか重い科目でした。私はできれば外部とのコラボプロジェクトをしてみたかったので、オーストラリアの複数大学研究室が携わる機械学習モデルの解析結果を見せるためのアプリ開発プロジェクトに取り組んでみました。担当教授の希望によりRでWEBアプリ(Shiny というフレームワーク)を作りました。人気プロジェクトの場合担当教授による選考があり、レジュメ、1年目のグレード、面接によって決まります。

2年目セメスター2

科目名必修/選択
IFN643 Computer System Security選択
IFN647 Advanced Information Storage and Retrieval選択
IFN702 Project 2必修

Computer System Security

暗号化技術、認証、マルウェア・ウイルス対策、ハッキングなどセキュリティ全体について学びます。私は1年目にネットワーク系の基礎科目を取らなかったので、ちょっと課題に時間がかかりました。様々なフォレンジックツール(WIreShark、NetworkMinor、FTK imager など)を用いて、ネットワークパケットを解析したり、ペンテスト(システムの脆弱性をついて侵入を試みるテスト)風の課題を通して、何がセキュリティホールとなり得るのか見つけ、改善策を提案する、という形で課題が課されます。期末テストはなく、2つの個人課題と1つのグループ課題で構成されていました。

Wiresharkで課題のパケットをチェックしてる様子

Advanced Information Storage and Retrieval

C♯を使って情報検索システムを構築していく科目です。CS専攻の場合選択科目ですが、データサイエンス専攻の場合必須だったように記憶しています。自然言語処理のプロセスとロジックを学び、C#のライブラリであるLucene.NETを使って実装していきます。テキスト処理の基本を学べたことと、グループでGithubを使いながら(UIつきの)アプリを作るという経験ができたのでよかったです。

Project 2

前学期にあったProject 1 と同じ位置づけです。規模の大きいプロジェクトの場合、2学期間を通して1つのプロジェクトに取り組むこともできます。私は同じ教授の下で、違うプロジェクトに取り組みました。またRを使ったプロジェクトで(笑)、WEBアプリを制作するものでした。無駄にはなりませんでしたが、実際ソフトウェアエンジニアとして卒業後Rを使う機会は超稀なので、他言語・フレームワークを使ってアプリを制作するプロジェクトの方が有意義だったと思います。

インターンシップ・サイドプロジェクトでの学びも大事

ということで、2年間でも結構たくさんの技術・言語を学ぶことができます。でも、”学校の勉強だけ”で卒業後仕事を見つけるのは、(無理ではないですが)ちょっと大変です。2年目のプロジェクトでソフトウェア開発プロジェクトを選択しない限り、1つのソフトウェア・アプリをすべて自分で作ってみるという経験はできませんし、ソースコード管理もチーム開発をしない限り経験しないかもしれません。

そこで大切になってくるのが、在学中にインターンシップとサイドプロジェクトの経験をしておくことです。

インターンシップのメリット
  • チーム開発(アジャイル・ソースコード管理)の経験ができる
  • 実際のソフトウェアアーキテクチャを学べる
  • コーディングスキル向上ができる
  • オーストラリア企業の文化・労働価値観に触れる・慣れることができる
サイドプロジェクトのメリット
  • 興味のある言語・フレームワークを実装する練習ができる
  • 就活の際ポートフォリオとして使える

実際、在学中にインターンシップを経験していた友人は卒業後すぐに仕事が見つかる傾向がありました。また、インターンシップ等の実務経験がなかった友人からは、ポートフォリオ作成後から面接に呼ばれるようになったという話も聞きました。

学校での学びで足りない分野を埋めたり、学校で学んだことを実践する場として、IT専攻学生にとってインターンシップとサイドプロジェクトはとても大事な経験となることを実感しました。

終わりに

今回の記事では、オーストラリアのIT大学院、特にクイーンズランド工科大学の2年間で何が学べるかについて、全16科目を解説しながら紹介してみました。

今回のポイントをまとめると次の通りです。

まとめ
  • 複数のプログラミング言語が学べる
  • 開発手法論が学べる
  • 基本的なアルゴリズム・データ構造・アプリ作成方法が学べる
  • 大学での勉強の他にインターンシップ・サイドプロジェクトを活用するのが大事

大学のシラバスは毎年改変がされますので、最新のプログラムを確認の上、自分の学びたいことが網羅されているか、をチェックしてみてください。

以上、本記事が参考になれば幸いです!

よかったらシェアしてね!
目次
閉じる