オーストラリアで学ぶコンピュータ・サイエンス

ITとは’Information Technology’ の略で、一般的に「情報技術」と訳されます。現代は学校(教育)、民間企業(経済)、公的機関や官公庁(政治)、病院(医療)などあらゆる機関にIT技術が導入されていて、コミュニケーションツールとしてはもちろん、業務の効率化や問題解決、コスト削減にも繋がっています。
さらに私たちの身近では、Eコマース(オンラインショッピングなど)、SNS(FacebookやTwitterやインスタなど)、スマホのアプリ・・・など、日々の生活を便利にしてくれているのもIT技術の発展のおかげですね。
アップル社、マイクロソフト社、Google社、Yahoo社、そして日本のNTT、富士通、NECなどもIT技術を開発・提供している世界的に有名なIT企業です。
しかし、「IT」という言葉はコンピューターやインターネット、データ通信、情報通信関連のインフラ技術、システムの構築など、情報技術に関連する非常に幅広い分野の総称とされていて、具体的にイメージするのが難しい方も多いのではないでしょうか。
そこで、将来IT関連のキャリアを目指すには具体的に大学でどんなことを学ぶのか。実際に
クイーンズランド工科大学(QUT)のITコースでコンピュータ・サイエンス(CS)を専攻し、優秀な成績で卒業した日本人留学生、丸山くんに話を聞いてみましょう。
オーストラリアで学ぶコンピュータ・サイエンス

僕が通ったクイーンズランド工科大学(QUT)のBachelor of ITコースは、3年間を通してITの基礎学習から発展的な内容を学習していくコースです(※写真左:QUT卒業生 丸山くん)。
専攻は
コンピュータ・サイエンス(CS)と
インフォメーション・システム(IS) の2つがあってそれぞれ学習内容は全く異なり、CSでは主にプログラミングやそれに伴うスキルを、ISではプロジェクトデザインなどプログラミングとは異なる技術を学習します。
なのでプログラミングに興味があり勉強してみたい方はCSを、開発以外の形でITに関わりたい方はISを選択されると良いと思います(就職の事を考慮するとCSの方が有利だと思います)。
僕は下に後述する
コンピュータ・サイエンス(CS)を学びました。
 コンピュータ・サイエンス(CS)コースの学習内容

コンピュータ・サイエンス(以下CS)コースは先述したように主に
プログラミングを学習するコースです。一概にプログラミングといっても目的がソフトウェアやembeded systems、ウェブアプリケーション等多岐に渡ります。
選択するマイナー(副専攻)やユニット(科目)によって多少異なってきますが、それらを網羅するようにカリキュラムが組まれています。ですので最終的に色々な基礎知識を満遍なく学習できます。
また、必修以外の授業でも分野を1つを選択してそれを深く勉強することができます(Machine LearningやNetwork Security等)。
 CSコースで履修する24科目

僕はCSコース3年間で24科目を履修しました。こちらがその一覧です。
| ITコース共通(必修)(6科目) | 
|---|
| IFB 130 DATABASE MANAGEMENTITD 101 IMPACT OF ITITD 102 COMPUTER TECHNOLOGY FUNDAMENTALSITD 103 DESIGNING FOR ITITD 104 BUILDING IT SYSTEMSITD 122 MODELLING INFORMATION SYSTEMS
 | 
| CS専攻(選択)(10科目) | 
|---|
| CAB 202 MICROPROCESSORS AND DIGITAL SYSTEMSCAB 203 DISCRETE STRUCTURESCAB 301 ALGORITHMS AND COMPLEXITYCAB 302 SOFTWARE DEVELEPMENTCAB 303 NETWORKSIFB 299 IT PROJECT DESIGN AND DEVELOPMENTIFB 398 CAPSTONE PROJECT (PHASE 1)IFB 399 CAPSTONE PROJECT (PHASE 2)ITD 121 PROGRAMMING PRINCIPLESCAB 403 SYSTEMS PROGRAMMING
 | 
| Network and Security副専攻(4科目) | 
|---|
| CAB 230 WEB COMPUTINGCAB 240 INFORMATION SECURITYCAB 440 NETWORK AND SYSTEMS ADMINISTRATIONCAB 441 NETWORK SECURITY
 | 
| 自由選択(4科目) | 
|---|
| CAB 402 PROGRAMMING PARADIGMSCAB 432 CLOUD COMPUTINGQCD 110 PROFESSIONAL COMMUNICATION 1(留学生は必修)QCD 210 PROFESSIONAL COMMUNICATION 2(留学生は必修)
 | 
以上24科目の中で、特に面白かったのは次の4科目です。
1. CAB 402 PROGRAMMING PARADIGMS
このユニットではF#とC#の違いを検証しソフトウェアを開発したり、プログラミング言語そのものがどの様に作動するのか等学習しました。
自分でオプションから選択したトピックについて研究しレポートを書く課題があったのですが、ハイレベルな内容を自由度の高い中で勉強するのがとても楽しかったです。
僕はQuantum Computingについてレポートを書いたのですが、その中で量子力学がITにもたらす恩恵やQuantum Computerの発展と共に技術がどの様に変化しうるのかについて興味を持ち、今でもたまにそれらを調べたりします。
難しかった事は最初の課題で、それまでこなしてきた課題とはレベルが違いプログラム全体の構造とそれぞれのファンクションをどうすれば最も効率的にソフトウェアが動くのか把握したり、又それらのファンクションが行う動作も複雑だったため完成までにとても苦労してのを覚えています。
2. CAB 432 CLOUD COMPUTING
このユニットはCAB230 WEB COMPUTINGの内容をより発展させたものになっています。
最初の課題ではAPIsを用いてウェブサイトを制作し、2つ目の課題ではサーバーに負荷がかかった時を考慮しいくつかサーバーをセットする等より実践的な内容になっています。
さらにCAB230では基本的にHTML, CSS, Javascript, PHPのみの使用だったのに対し、このユニットではNodeJSが推奨されているものの言語は自由なので好きな言語のスキルを高めることができます。
どちらの課題も比較的時間がかかるのですが、Web developmentに興味のある方は大いに楽しめると思います。
3. CAB 440 NETWORK AND SYSTEMS ADMINISTRATION
CAB303 NETWORKS の発展形のユニットでCAB303でカバーしていなかったIPv6や、基本的なシステム管理のためのLinuxコマンドを学習します。
IPv4の知識の習得が前提となっている授業なのでマイナーとしてNetwork and Securityを選択していなければ選択しにくいユニットですが、難易度もそれほど高いわけでもなくとても楽しいです。
最も楽しかった事は実際にrouterとswitchを触ってネットワークを形成する課題が新鮮でした。おそらく個人的にその設備を揃えるのはコスト的に負担か大きいと思うので、ネットワークに興味がある方にとてもおすすめです。
4. CAB 441 NETWORK SECURITY
マイナーのNetwork and Securityの集大成とも呼べるユニットです。
セキュリティーを考慮したネットワーク構造の勉強を通じて実際にvirtual machines (Ubuntu) でネットワークを形成、発展させていきます。
Squid Web Proxyでのアクセス管理、ファイアーウォールの設定、VPNの構築、LDAP設定等々それまでのCAB303ともCAB440とも異なる難易度と内容でより深くまでネットワークの学習ができます。さらにセメスターの後半からはKali Linuxを使ってPen Testingの様なハッキングスキルも学習できます。
将来ハッカーを目指している方にとってうってつけのユニットですが、マイナーとしてNetwork and Securityを選択しなければ履修できないと思うので気をつけてください。
 CSコースを学ぶ中での驚きや発見

大学でより高難度の授業を選択していると履修した内容が別のユニットで出現したりそれを全く異なる方法で利用したりすることが多くなり(例えばハッキングの課題においてDocker filesをpriviledge escalationのために使うなど)、それぞれのユニットに発散していた知識が収束していくがとても印象的でした。
大学の授業ではペアワークやグループワークが多く、全体のおそらく半分以上のクラスの課題で誰かとコラボレーションすることになります。その中でITスキルだけでなくコミュニケーション能力が上昇し実社会での仕事の練習ができたことが、難しかった面もありますが、楽しかったです。
 CSコースを乗り切る秘訣

第一に諦めないで
継続的に課題をこなしていくことです。課題によっては難易度はそこまで高くないのに兎に角時間がかかるものもあるので、ちょっとずつでも毎日コツコツやっていくのが確実です。
次に、やはり
友人の存在は大きいと思います。課題でどうしても分からない所があった時にヒントをくれたり自分とは違う方向からのアプローチを教えてくれたり等、スキルを伸ばすにはとても重要です。教授やチューターは課題の手助けまでは行わないので、友人との意見交換は大学生活で三本の指に入るくらい大切です。
 CS知識とスキルの習得

入学当初は全くのIT素人で何も知らない分からない状態だったのですが、今ではかなり多くの言語を学習したので色々な事ができる、頑張ればできる、くらいにはなっていると思います。
プログラミング以外にも色々な知識や理論を学習したので、例えばソフトウェア制作、ウェブ作成、ネットワーク構築とそのセキュリティー等々、以前とは比較にならないくらい様々なことが出来るようになりました。
 CSコースで目指す将来のキャリア

自分と周りも含めて総じて言えるのはやはり皆ITに関わる仕事に就く、又は目指していることです。
内容も多岐にわたり、先述したウェブ関係、アプリ制作やMachine Learningの研究者、System Admins等々です。
大学卒業ともなれば良くも悪くも専門的な知識が以前と比べ膨大になっているので自ずと将来の仕事の分野が絞られます。
なので将来ITの仕事をしたいと強く考えている方にはお勧めですが、そうでない場合選択肢の減少に繋がるので慎重にに決めることが重要です。
コンピューターサイエンスコースへの進路と学費
日本の高校を卒業してオーストラリアの大学へ進学する場合、ITコースですと下3つの進路から選択することが出来ます。学費とコース期間は選ぶ大学によって異なりますので目安としてご参考ください。
進路1. ファウンデーションコースから大学へ入学する
高校卒業後、まずは大学付属のカレッジでファウンデーションコースを受講してから大学進学を目指します。
| 1. ファウンデーションコース | 
|---|
| 【学費】170〜230万円ほど 【期間】8ヶ月〜1年
 【条件】高校で規定の成績を修めていること
 【条件】英語力 IELTS5.5
 | 
| 2. 大学 ITコース | 
|---|
| 【学費】年間250〜340万円ほど 【期間】3年
 【条件】ファウンデーションコースで規定の成績を修めていること
 | 
進路2. ディプロマコースから大学へ編入する
高校卒業後、まずは大学の付属カレッジでディプロマコース(ITコース)を受講してから大学進学を目指します。ディプロマコースは大学1年次に相当するコースなので、ここで規定の成績を修めると大学2年次へ編入することが出来ます。大学を1年目から始めるよりも学費が安く、且つ、入学基準のハードルが緩やかになるので、留学生にとって進学し易い方法です!
| 1. ディプロマコース | 
|---|
| 【学費】170〜270万円ほど 【期間】8ヶ月〜1年
 【条件】高校で規定の成績を修めていること
 【条件】英語力 IELTS5.5〜6.0
 | 
| 2. 大学 ITコース | 
|---|
| 【学費】年間250〜340万円ほど 【期間】2年
 【条件】ディプロマコースで規定の成績を修めていること
 | 
進路3. 大学へ直接入学する
IB Diploma取得者やUS High School Diploma+SAT取得者で、規定のスコアを修めている方は大学へ直接入学することが出来ます。
| 大学 ITコース | 
|---|
| 【学費】年間250〜340万円ほど 【期間】3年
 【条件】大学の定めるIBまたはSATスコアを取得していること
 | 
コンピューターサイエンスのコースを目指す方へのアドバイス

個人的に思うのは、急に難しいことをやり始めても何をしていいのか分からず時間だけが無駄になるので、初心者であるなら
Pythonから始めてみると良いと思います。
Pythonは初心者にも易しい言語と言われていますが、かなり多くの事をこなせる強力な言語なので是非。
Geeks for Geeksというウェブサイトに基礎から発展した事まで載っているので興味がある方は調べてみてください(この時に海外留学を考えている学生は
英語で調べてください)。
エディターはVisual Codeやら色々あるのでお好みのものを調べて使ってください。
その他コンピューターサイエンスを開講している大学
全豪でITコースの評価が高くお薦めの大学です。ITコースでオーストラリアの大学進学を検討されている方は大学の絞り込みにお役立てください。