シンガポール国立大学(NUS)で社会人学生をやってみた

本エントリは「社会人学生 Advent Calendar 2020」2日目の記事です。

去年の8月から今年の4月末くらいまででシンガポール国立大学(National University of Singapore、NUS)で「Graduate Certificate in Computing Foundations」という社会人向けコースに通っていたので、そのコースの様子と、色々思ったところをシェアしてみようと思い、初めてブログをきちんと書いてみることにしました。*1

自己紹介

シンガポール日系企業のソフトウェアエンジニアとして働いている者です。大学卒業後、日本で研修含めて2年半ほど働いたのちシンガポール赴任になり、こちらで5年勤務しています。シンガポールでは、日本で販売している製品の開発チームの一部をシンガポールに移したり、新製品の設計チームをリードしたり、コードを書いたりしてきました。

なぜNUSに通うことにしたのか

今は職業として日々コードを書いていますが、大学は文系、就職まで1行もコードを書いたことの無い人間でした。新卒で入社した会社が偶然研修でプログラミングをさせる会社で、何とか研修を終えた結果、製品を作ること自体に興味が湧いてきてエンジニアへのを配属を志望した、というのがキャリアの始まりでした。

日本で働いていた頃は私と似たようなバックグラウンドを持った人が周りにも多くいて、活躍もしているようだったので、コンピュータサイエンスのバックグラウンドを持ってないことについてあまり考えていませんでした。しかし、配属されてから2年後にシンガポール赴任することになり、シンガポール赴任後はコンピュータサイエンスのバックグラウンドを持っているメンバーに囲まれて仕事をするようになりました。

私の所属するオフィスでは、周りは若くて経験の少ないメンバーが多く、また当時私は日本で得た業務知識や、業務上利用しているフレームワーク等の知識を多く貯金できていたので、コンピュータサイエンスを専攻していないというバックグラウンドの違いがあっても何とかやっていけました。*2 しかし、今後もエンジニアとしてキャリアを積んでいくにあたっては、コンピュータサイエンスを学ぶ、ひいては学位を取ることが必要かな、と考え始めました。また、シンガポール現地採用されている外国人メンバーがどういうバックグラウンドを持っているのかということにも興味があったし、周りのメンバーでもパートタイムでNUSの修士課程(Master)に通っている同僚がいたので自分も行ってみたいと思いました。*3

そこで、修士課程の説明会に出向いたのですが、そこで出された授業一覧には「Advanced Operating Systems」「Advanced Networking...」みたいな感じでやたら「Advanced」な感じでした。(あとで冷静に考えれば、Masterなので当然なのですが)基礎すら怪しいのに応用って…と思いながら聞いてたら、担当者が「基礎を学びたい人にはこういうコースがあって…」という説明と一緒に今回受けたコースを紹介してくれました。これは受けなきゃ!とその場で思い、応募に必要は書類を集め、無事NUSに通えるようになりました。

授業内容

授業4つされているうち3つを取ればCertificateが取れる仕組みで、私はプログラミング基礎コース以外の3つを取得しました。(プログラミング基礎の授業は本来必須なのですが、私がすでに業務上でコーディング経験があったので履修免除されました。)

  • IT5002 Computer Systems and Applications(主にCPUの仕組みについて)
  • IT5003 Data Structures and Algorithms(データ構造とアルゴリズム
  • IT5004 Enterprise Systems Architecture Fundamentals(エンタープライズアプリケーションの設計・UMLなど)

以下、感想をつらつらと書いていきます。

行ってよかったこと

狙い通り、「コンピュータサイエンス専攻の人が大学で何を学んできているのか」というのは(完全に理解したわけではないものの)だいぶクリアになりました。NUSに入るとほかの学生と同様の学生として扱われるので、システム上でも同じものを利用できます。それを元にNUSのシラバス等を確認したりして、大学卒業までにこういうことが前提知識としてありそう、というところもある程度掴むことができて楽しかったです。

また、思いがけず良かったのは、大学のセメスターとか、どういう風に単位を取得していっているのかを英語と共に学べ、それを同僚との雑談に活かせるようになったことでした。留学経験すらも無いので海外の大学がどういうものなのかよく知らなかったのですが、バックグラウンドが分かっていると、やはりこちらから色々聞ける内容も増えるし、理解も容易になりました。

辛かったこと①英語

大学に行く時点で、会社ではほぼ全ての業務を英語でこなしていて、チーム全員が外国人の環境でも長く問題なく適応していました。なのであまり心配していなかったのですが、行ってみるとなかなかつらかったです。恐らく日本語でも難しいことをひたすら英語で聞き続けるので、果たして英語が分からないのかそもそも内容が理解できないのかもよく分からず状態でした。テストでさえ、「これってこういうことを聞いているのか…?」と考えて試験時間が経過してしまう始末。1つのセメスターを終える頃にはさすがに慣れましたが、英語がもう少しできていればもっと成績取れたかな…と思います。

辛かったこと②時間・体力

当然といえば当然ですが、やってみると、社会人をやりながら学生をやるというのは本当に大変だな…と改めて実感しました。*4 このコースの場合、授業は修士課程の学生に比べると少ないですが、特に去年の10月~12月は週3日大学にいく形式になっており、テスト前は特に体力的にしんどかったです。上記で書いたIT5002の試験を終えたあと、気が抜けたのか体調を崩してしまい、その次の別のクラスの最終試験前なのに体調が悪くて勉強どころでないという事態になりました。無事単位取れて良かった…!ですが、私はあまり体力がないので、今後修士課程に進む場合にはフルタイムの学生に戻る選択肢も考えた方が良いなと思いました。

内容は難しかったり易しかったり

内容は非ソフトウェアエンジニア向けの授業なので、中には易しいものもありました。特に「IT5004 Enterprise Systems Architecture Fundamentals」は、自分自身がエンタープライズ向けのアプリケーションを設計・開発する立場だったので難しくはありませんでした。(Aを取るために宿題にはかなり時間を費やしました。)一方、普段の業務ではほぼ使うことの無かったCPUの内部のアーキテクチャアルゴリズムについては難易度が高く、辛くもありつつもとても楽しかったです。「IT5002 Computer Systems and Applications」はいわゆる「パタヘネ本」をベースにした授業なのですが、こちらが一番難しく、低レイヤって本当にすごいな…と毎回関心していました。

次どうするか

ここは悩み中です。元々はNUSの修士課程へ進学するのを考えてコースを受講したのですが、色々思うところがあり、NUSでなくても良いかな?と思い始めています。*5 日本だと、JAISTが自分のバックグラウンドに合いそうな気がしています。

諸事情ですぐに大学に行ける状態ではないので、もうしばらく働きながら、引き続き検討していこうと思います。

最後に:同じコースを受ける人向け

私の受講したコースはシンガポールに住んでいないと受講できないため、この記事を読んでから実際に受講できる人は殆どいないと思いますが、受ける人向けに情報をいくつか書いておきます。

  • 事前にTOEFL等の英語試験を受ける必要はありません。ただし、当然ですがある程度できないとついていけません。
  • 値段は、外国人にとっては、ここに書きたくないくらいには高いです。(知りたい方はご自身でどうぞ…。)*6 私は、コンピュータサイエンスのバックグラウンドをどうしても身に付けたかったのと、たとえ自分にとって簡単だったとしても英語の勉強にはなるし、学生の頃はできなかった留学っぽいものを経験できる良い機会だな、と色々と理由を付けて自己投資することにしました。
  • 本コースを修了した後にNUSの修士を受ける際、GMAT/GREの受験は不要になるとメールで聞きました。これもこのコースを受講する動機の一つになりました。但し、私があくまでも個人的に確認した内容で正式な文書等は見つけられてないので、気になる方はご自身でもきちんと確認しましょう。大学にメールすると、数日以内に返信をもらえます。

*1:本当は去年のカレンダーで書こうと思ってたのですが、去年のこの時期はきちんと単位を取れたのか分からず冷や冷やしており、書ける状態ではありませんでした。。

*2:そういえば、赴任当初はまだSeasar2とかFlexとか使ってました。懐かしい。

*3:一時期はチームの半分がNUSに通っている状態でした。

*4:ご家庭を持ちながら社会人学生をやってたら、この比ではないんだろうな、と思います。

*5:NUSを受けて受かるかどうかは別問題。

*6:シンガポール人かPR(永住権)だとそれほど高くないです。