これがベトナム大学院の実態だ!

Trường Đại Học Bách Khoa Thành Phố Hồ Chí Minhの大学院修士課程に社会人入学

Nguyên lý ngôn ngữ lập trình 13回目

2019年12月2日、Nguyên lý ngôn ngữ lập trìnhの13回目授業が実施された。
最近いつもグダグダなので、どうせこの日もだろうと思い18:10頃に入室したが、予想通りグダグダで18:20頃に小テストが始まった。
その時の人数が15名ほどであったため、参加学生数に応じて開始するのかもしれない。
そしていつも通りお為ごかしの答え合わせのあと、いつも通り全学生が強制的に最前列と前から2番目の机に移動をさせられ演習が始まった。
この日の内容はtypeだ。一応模範解答を貼っておく。
f:id:k4h8:20191204102446j:plain
おそらく次回も同じであろう。

Cấu trúc dữ liệu và giải thuật 12回目

2019年11月30日、Cấu trúc dữ liệu và giải thuậtの12回目授業が実施された。
(なお、先週は11回での授業があり、9章の内容であったが自主休講した。)
この日は10章の内容であったが、それよりも期末試験の過去問が配布された意味合いが大きい。
次回は時間帯と場所を変更しての開催だ。

Mạng máy tính 12回目

2019年11月29日、Mạng máy tínhの授業12回目が実施された。
この日は大宿題1のデモを行うことになっていたので早めに到着した。
なぜか前の授業の学生と思われる馬鹿が数名教卓の近くに陣取っていて準備作業の邪魔であったが、2019年度のクラスリーダー的な学生が入ってきたとたん消えていった。彼の能力は邪魔な馬鹿を消す。

さて、この日の為に用意したマシンは普段使っているノートPCと、予備のWindowsデスクトップと小型のlinuxデスクトップ(ラズベリーパイ)の3台だ。
ノートPCは予備にもう1台あるが、途上国ではノートPCが生涯賃金だ。他の学生にノートPCを2台「も」持っていることがばれると金持ち認定されて大変な目にある。
そうしているうちに先生も来た。
ちょうどいいのでデモを開始する。チームは3名だが、遅刻君と欠席君の2名はまだ来ていないようである。
デモ自体は何度も練習しているので問題なかったが、先生からの予期せぬ質問だ。
先生「チャットルームに所属したままで別のチャットルームを作ることはできるか?」
自分「その場合は一度チャットルームを退室しないといけないので、複数のチャットルームに同時所属は出来かねます。」
はたしてこのデモにより大宿題1の評価はどうなったのか。

そして授業そのものが始まった。
なぜか第1章の終わりの方を行った後、第8章に入った。
この日は第8章の途中で終わり。
次回は教室変更だ。
これでこの牢獄のような作りの校舎ともおさらばだ。

ベトナムの大学院は仕事と両立できるか

ベトナムで働きながら大学院に通って2年が過ぎた。
ここで、実際に平日の昼間働きながらの通学は可能ではあるが、実際やってみると大変であることが分かった。
もちろんブラック企業とかで連日日付が変わるまで残業とかの人に比べればまともではあるが、決して楽ではない。
授業自体は平日の夜および土日に行われ(以前は1科目だけ平日の昼間開講というのもあったが、廃止されたようだ)るので物理的には通学は可能だが、具体的に大変なところは何か?
1. 単純に時間が取られること
自由な時間が減る、残業がしにくくなる、急な残業をせざるを得ない場合は授業を欠席せざるを得ない。
また、2019年度(厳密には2018年度からすでに始まっていた?)から18:15開始が18:00開始に早まったので、平日夜の授業に出席がきつくなった。
2. 通学で息切れ
これは精神的な意味もあるが、物理的、肉体的な息切れ。つまり、排気ガスのひどい道路を頻繁に通ることによる疾患である。
土日の明るい時間なら渋滞も少ない(決してすいてはいないが夕方よりはまし)が、それでも同日に2往復は確実に体に来る。
なお、夕方は「渋滞の中を進む」ではなく、「渋滞の中で止まる」になると確実に体をやられる。
3. 宿題(課題、演習などとも訳される)がバッティングした場合
悪名高いあの科目など一部例外を除き、宿題の1つ1つは時間をかければできるレベルだが、複数の科目で提出時期が重なるとつらい。
これは1番の時間がとれらることに通ずるが。

なお、欧米の場合問題となる授業料だが、ベトナムに限って言えば歯医者の治療費よりも安い。
というより歯医者の治療費が高すぎるのか。
普通の人なら金額の心配はいらない。
自分の場合は働きながらだから、生活費は大学院に行こうと行くまいと同じ。
交通費はかかるが、これは日本で、実家から通う場合でも発生するのでやむを得ないだろう。
交通費の計算をしたことはないが、そんなに影響はないと思っている。

また、言葉の壁だが、実は授業の内容自体を理解する分にはあまり問題はない。
資料は大半が英語だし、仮にベトナム語であっても調べればわかる。
というより学問自体は世界共通だから、同じ内容の資料が日本語であったりする。
日本の大学のサイトがひっかかるのだ。
それよりも来週授業が休みだとか、振替授業がいつだとかの事務連絡がベトナム語でされるともうお手上げ。
そこは同じクラスの学生が親切に教えてくれることで事なきを得たが。
ベトナム語で学ぶとは言っても結局内容自体は日本の大学でもやってることだし、そもそも授業は受けても受けなくてもあまり変わらず、自分で資料を読んで理解しなければならないので、資料の言葉を日本語に訳し、それを検索して日本の何とか大学の講義資料が出てくれば問題は解決したようなものだ。

さて、本題となる、ベトナムの大学院は仕事と両立できるかどうかだが、逆に働きながら大学院に通う方が有利ですらある。
というのも、これはベトナムに限定せずどこの国であれ言えることだが、留学の場合大学(含む大学院)が生活のすべてだ。
そこでなじめない、人間関係のトラブルがあるともう終わり。その国自体を嫌いになっちゃう。
ところがどっこい、働きながら大学(含む大学院)に通うというのは、行ってみれば習い事の教室に通っているのと同じ。
まあどうしてもなじめなかったら辞めてもそれで死ぬわけじゃないし、今まで通りの生活に戻るだけ。失うものはない。
留学の場合、なじめなかったら精神的に病むだろう。さらに、辞めたら滞在資格、つまりビザが更新できず、すべてを失って日本に帰らざるを得ない。
また、家賃などの生活費の問題もある。
働きながらであれば、大学にいこうと行くまいと家賃や食費は発生している。だから生活費の心配をしなくていい。純粋に授業料と交通費の心配だけだが、それも先述の通り微々たるものだ。
留学の場合、家賃や食費を捻出する必要がある。授業料の100倍以上の金を持っていないといけない。
ベトナムの大学院は授業料は安いが、ベトナムの家賃は物価を考えると異常に高い。そして狭い。
アメ公が日本の家をウサギ小屋と馬鹿にするが、それではとてもベトナムに住めない。だって虫かごだもん。
日本にずっと住んでいた人がベトナムに住んだら大変なことになる。
かといってまともなところに住もうと思ったら莫大な金がかかる。
いきおい、働いており、ある程度まともなところに住んでいる人でないと、大学院に通うような生活を送るのは厳しい。

そしてこれは自分も疑問なのだが、他国も含めて、学生というのは立場が低いらしい。
本来、留学生はその国に莫大なお金を落としに来てくれる大事なお客様なのだが、扱いはひどい。
逆に社会人で来ているのはお金をもらう立場なのだが、滞在資格とかもきちんと発行されるし、年齢層が高いこともあってあまり邪険な扱いは(学生に比べて)少ないかもしれない。
例えばこの学校においても、普段学生としていくと学長連中が挨拶に来ることはあり得ないが、商工会の集まりとかでたまたまこの学校が指定されたりすると、学生には無視の学長連中が頭を下げたりする。金は全く払ってないけどね。

働きながら通うというスタイルが成り立つのはベトナムの大学院だからだと思う。
日本でもそうだが、多くの国では平日の昼間に授業があるのではないか。
それが授業の90%(2019年現在は100%)が平日の夜および土日というスタイルはむしろ社会人のみを対象をしているようにすら思える。
難点としては先述の18:15開始が18:00開始に早まった点。
定時が17:00の人ならいいが、17:30の人はきつい。18:00の人は絶対に間に合わず、例えば授業の日だけ早引きさせてもらうなどの職場の理解が不可欠だ。
それでも本日中に対応しなきゃいけない急な残業の場合はその日の授業はあきらめなくてはいけない。
まあ、下手に無遅刻無欠席の皆勤賞でも(もっとも、そんなものないから何ももらえないけど)単位が取れないとか本末転倒案件はゴロゴロ。
多少休むぐらいが気分転換というか精神的なバランスが回復できて、結果的に単位に結びつくこともある。

この2年半での授業料

Hệ cơ sở dữ liệu nâng cao 2,280,000 ¥10,755
Lập trình nâng cao 2,280,000 ¥10,755
Kiến trúc máy tính nâng cao 2,280,000 ¥10,755
Triết học 1,560,000 ¥7,358
Xử lý ngôn ngữ tự nhiên 2,280,000 ¥10,755
Nguyên lý ngôn ngữ lập trình 4,125,000 ¥19,458
Phương pháp nghiên cứu khoa học nâng cao 1,860,000 ¥8,774
Nhận dạng mẫu và học máy 2,280,000 ¥10,755
Xử lý ngôn ngữ tự nhiên 1,920,000 ¥9,057
Nguyên lý ngôn ngữ lập trình 4,200,000 ¥19,811
Phân tích thiết kế giải thuật 3,150,000 ¥14,858
Mạng máy tính 3,150,000 ¥14,858
Cấu trúc dữ liệu và giải thuật 3,150,000 ¥14,858
合計 34,515,000 ¥162,807

まあ受けなくてよかった科目、つまり大学院事務局の不手際で強制的に登録「させられた」科目もあるので、実際にはこれより安くすることは可能。
さらに、再履修がなければもっと安くなるが、実際どうなんだろうね。
こうしてみると同じ単位数、時間数でも今年度から学費が大幅に上がっていることが分かる。入学当時の1.4倍だ。
こういうこともあるので、できるだけ早めに卒業(日本式の言い方をすれば大学院なので修了)した方がいい。
さらに入学も早めに行った方がいいだろう。
60単位中30単位を取得できたとして日本円で16万円。
残り30単位の正式名称は修士論文と出版らしいが、これにかかる費用はいかほどか。
こっちも1.4倍だったら早めに登録をしておくべきだが、そもそもこの科目って登録できるものなのかが全く持って謎である。
ベトナムの大学院は言葉の壁というより、こういう制度や規則がよく分からず、質問しても回答が返ってくるのに年単位の時間がかかる(というかもう2年待っているがまだ返事がない)というまさにバカの壁だ。

奪われた力を取り戻した

前回の話のB面。
しかし、B面って言っても今時カセットテープなんてほとんど聞かないし、ましてレコードなんて生まれた時点で入手できなかったように記憶している。
そうなるとカセットテープが使われなくなってから生まれた人とかどうなるだろう?
それでもカセットテープというもので聴いたことがないというだけで、さすがにカセットテープを知らないという人はいない。
これは、普通に人が刀とか十手とか十二単とか本物に触れたことはないけどテレビとかで見て知っているというのと同じだろう。

さて、話が横道にそれたが、Phân tích thiết kế giải thuậtで2週連続で板書をできたというのは大きな快挙だ。
ふと、先週の月曜日のビッグボディ撃退事件により覚醒し、能力が開花したのではないかと思う。
相手から理不尽なことをされ、これに対抗したことで力を発揮できたのだろう。
もともと2年目から念能力が使えるようになったが3年目にしてさらに向上したか。
というより、奪われた力を取り戻したというほうが合っているのではないか。
そういえば1年目の後期(=2期)に左隣にビッグボディが座ったが、この時、自分がまず話しかけ、それに対して奴が悪意のこもった対応というか返答をしたが、それが能力の発動条件で、自分の能力を奪われたしまったのではないか。
この時の自分の念能力はないにも等しいものだったかもしれないが、実はあったのだが自分でも気づいていなかった可能性がある。
キン肉マンでいうところの火事場のクソ力を邪悪大神殿に奪われた格好だ。
そして、その期の終わりまでは能力を発揮できずに1年目が終わり、2年目になり遅まきながら念能力が使えるようになった。

2年目と言えば後期における要領よしお君退学事件。
今だから言えるが、要領よしお君は性格が悪かった。性格ちょい悪。いや、結構なワルか。
だが彼の失脚により他のメンバーの能力が開花し、同じクラスの日本語ネイティブレベルの友達とともに板書のチャンスをほぼ寡占状態となり、我々2名が生成上位2位を占めるまでに至った。
ここで先日、ビッグボディの無礼に対抗したことで、幽霊超人となったジェロニモロビンマスクが邪悪大神殿から火事場のクソ力を取り戻してくれたことに通ずる。
どうやら自分の能力は、対抗により発動するのかもしれない。自分は人を傷つけるのは嫌いだ。だから逆に傷つけなきゃ発動しない・・・そんな能力にした・・・ 傷つけても心が痛まない・・・そんな奴だけを相手にできるように・・・。
つまり、要領よしお君=性格わるお君については2年間やばいなと思っていたが、その2年がたまりにたまってドーンとなったときに彼が退学、そこで今まで抑えられていた自分の能力分開花したということか。
さらに、早生よりも奥手の方が伸びは大きい。要領よしお君=性格わるお君がいつから念能力が使えるようになったかは知る由もないが、1年目から能力者だったとすると失速も早かった。
そして2年待った自分はその溜めもあってか一気に伸びた。
ここで、ビッグボディだが1年目に卑怯な手段で自分から能力を奪ったまでは良かったが、その時は自分の能力はほぼゼロというか非常に低かった。
それでも能力を奪われたことによりもともと低かった能力がさらに下がってしまいほとんど力を発揮できないまま1年目を終了せざるを得なかったわけだ。
そしてそこから2年間の熟成期間を重ねたというもの大きい。
この対抗というのは時間が長ければ長いほどそのパワーも増幅されるものらしい。
もちろん健康なエネルギー源ではないから、不必要に溜めすぎるといわゆるストレスとなる。
といっても本来発散したかったものが発散できずにたまっていただけであり、結果オーライということになるけどね。
が、ここにきて2年間の恨み、というと大げさかもしれないが、何か心のわだかまりのようなものを解消することで覚醒に至った、つまり能力をさらに向上させたのではないかと思う。
これが英語で言うretriveなのだろう。
マッスルリベンジャー!

制約と誓約について。
おそらくこの能力は、相手から理不尽な目にあわされたときにしか使えない。
その理不尽さが大きければ大きいほど、また、そこから能力発揮までの期間が長ければ長いほど(つまり大げさに言えば積年の恨み的な)効果が高い。
ただしそういう心のモヤモヤ的なものを長期間我慢するというのは精神的に負担が大きいので、普通ならあまりの理不尽はその場で発散することになり、能力化はしないだろう。
そういった意味であまりに大きな種は受け取れないということだ。
同時に、長期間ため込むということはその間は精神的に不健康であるため同様に現実的でない。
また、相手が理不尽なことを何もしていないのに能力を奪うことはできない。
仮に何らかの方法で無理やり奪おうとすれば自分に対して悪影響があると考えられるが、そもそも能力を奪うという行動は自分の意思で能動的に行えるものではなく、自動的というか、勝手にというか、無意識のうちに行われる。
これはこの学校の科目登録のやり方を見れば一目瞭然だろう。
逆に、自分に対して友好的な態度を取ってきた人に対してはその人の能力が高まることとなる。
といっても、その分自分の能力が減るわけではなく、あくまでも自分の能力は保ったままで相手の能力も上がるという、与えることで増える的なものである。
先の日本語ネイティブレベルの友達についても、最初は最終課題のやり方すら分からなかったが、結果として高得点を取り、最終点数は自分を上回るものであった。
前回エントリで板書をした若手爽やか君も友好的かつ自分と隣接する座席であり、能力の発動条件を満たしたのかもしれない。

そうなってくると、時間軸を超えて過去から未来へ、過去を使って未来を見る能力に加え、相手の力を利用して自分の能力に変換する、まさに柔よく剛を制すといった能力ということになる。名前何にしよう。

Phân tích thiết kế giải thuật 14回目

2019年11月26日、Phân tích thiết kế giải thuậtの14回目授業が実施された。
あとは翌週の授業をもって最終回である15回目、ビンゴゲームでいうところのリーチがかかった状態だ。

さて、この日は食事を済ませ18:10頃入室したが、すでに教室には10名近くの学生がおり、問題演習というか答えも書かれていた。
この日の問題演習はすべて6章から。
最初は問4だ。
f:id:k4h8:20191127111041j:plain

次の問題は問9。やり方が分からないので問4に準じたが、先生から、「スライドの最終頁」というヒントが出され、同じように書いてみる。
どうやら他の学生はうまく進められないようだ。このチャンスをお見逃しなく。
すかさず先生を呼び、必要のないところはcutだと教わる。
そして、もはや無言でチョークを渡される。もはや言葉など必要ない。意気揚々と躍り出て板書だ。
若干の数字転記ミスによる計算ミスがあったが即座に口頭で指摘してもらい何事もなかったかのように書き直す。
結果、ほっとしたのか最後の順番を書き洩らしていたが、樹形図のようなもの自体は正解であった。
先週に続き、今週も板書ができてよかった。

次は番外編で5 queensの図を書くというもの。どこにも載ってない。
若手の爽やか系の学生が真っ先に板書し、その後戦友が別解を板書。
5 queensは全部で5パターンはあると思うが、ひとまず2パターンで終了となった。

次は順番が前後するが問1。
f:id:k4h8:20191127111713j:plain
この学生の板書では、1個目の色がredの場合しか書いていない。
実際に試験で同じ問題が出た場合、1個目がblueとyellowの場合も必要ということで、先生が線を延ばした。

Nguyên lý ngôn ngữ lập trìnhで人の机を揺らす奴

前回のNguyên lý ngôn ngữ lập trìnhの授業から1週間ぐらいたつが、どうも引っかかるというか、数分おきぐらいに思い出すことがあるので吐き出すために。

同授業は教員が学生みんなから恨まれている、授業のやり方のまずさを指摘されていることもあり、前の方に座りたがる学生は少ない。
というよりむしろみんな後方に座る。これ見よがしに最後列に座る学生もいるほどだ。
自分もご多分に漏れず後ろの方に座るが、これはこの教員がというのもあるが、他の学生が今何をしているかを分かるようにするためだ。
実際、小テストを2回連続、しかも時には全く同じ問題という意味不明なことをやらかすためだ。

問題はここからであり、小テストの答え合わせ(これもお為ごかしだが)まで終わった19:00頃に全員を強制的に前の方に座らせる。
この時の着席位置は教員が指定する。一つの机に2名が座りその2名で1組のチームを組み、最前列と前から2番目の机だけが利用される。
そうでもしないと誰も前に座らないのだろう。自分で蒔いた種とはいえここまで学生に嫌われている教員も珍しい。最前列の取り合いになる科目すらあるというのに。

さて、前回の授業においては人数が奇数であり、たまたま自分は前から2列目で、1名で1つの机を使うことになった。
ここで、自分の前の机にはビッグボディがいた。こいつは一応性別上は女だが、2年前たまたま自分の左隣にビッグボディが座っており、その時よく分からない内容を聞こうとおもい話しかけたら、内容はよく分からなかったが笑顔も全くなく嫌そうな顔で何かを言ってきたため、それ以後は一切話しかけないようにしていた。
その後2年目となり、そいつには会うことはなかったが、3年目で同じ授業を取っていることが分かった。
それだけならただ話さなければいいだけなのだが、なんと、自分の机によっかかってくるたびに机が揺れて文字入力の大きな妨げとなる。
相手が普通の人間なら口頭で言えばいいのだが、なにしろ相手は話が通じない。
そこでとりあえず机を少しだけ後ろに引くことにした。
ビッグボディは一瞬振り返ったので理解したと思ったが、その後も何度も自分の机を揺らしてくる。
さすがにこれではPC操作ができず授業に差し支える。どうしたものか。
仕方がないのでまずは自分の後ろの机(当然誰もいない)を後ろにずらし、そして自分の机もせーので引いた。
またもやビッグボディが一瞬振り返ったのでさすがに自分が揺らしていることを分かっただろうか。仮に分からなくても、机との距離が空いたのでもう揺らすほどよっかかってくることはなかった。
この時、自分の左側にいた学生(こっちはまともであり、この日自分1人であったため相談などをしていた)もこちらを向いたので、その時に彼らに事の顛末を言っておけばよかったな。

と、一週間以上たつのにいまだにこのことが1時間に1回ぐらい、ひどいときには数分に1回ぐらい思い出されるので、自分の中でたまっているのかもしれない。
バイクやスノーボードの事故においては衝撃を自分の中にため込まず、できるだけ長時間、長距離を転がり、衝撃を地面に発散させることでダメージを少なくできるという。確かに一瞬ガーン!では骨折してしまう。
物理的なダメージ同様、精神的なものについても、自分一人の心の中にためるのではなく、どんどん発散することでダメージがなくなっていく。
さすがに数分に1回思い出すとか異常だし、発散のためにここで吐き出しておく。

きっと誰も来ない 一人きりのMạng máy tính

2019年11月22日、Mạng máy tínhの授業12回目が実施されるはずであり、40分ほど遅れて教室に向かった。
が、どの教室も真っ暗。清掃員が言うには授業はないという。念のため階段を上がるも、やはり階全体が真っ暗であった。
この日はいつもの先生がおらず、代わりの先生が担当するとは聞いていた。
が、それすらも来ず、休講(日本の大学における休講ではなく、実際には単なる後倒し)になったのだろうか?
仕方なく階段を降りると、代わりの先生と思しき姿が。彼によると18:30まで待ったが誰も来ないので帰ろうとしたとのことである。
それにしても、学生は自分以外誰もいない。
授業をやるかやらないかが危ぶまれる中、その代わりの先生はいつもの先生に連絡し、数分待った結果、本日は学生が自分1名しかいないので授業は行わないということになった。
こんなことであれば、最初から来ないほうがよかったな。いつもの先生が来ないという時点で出席に影響はなさそうだったし、この日は出だしが遅れたので休もうかなと思ったのだが、ちょうど昼頃にマスクを買って袋も切ったのでせっかくだから行こうということになったのだが、その必要はなかったというわけだ。

仕方ないから帰ることにしたが、漫画とかだとこういう時に事故にあったりする。いわゆるフラグが立ったというやつだ。
なので帰りは慎重に(いつも慎重にならざるをえないが、いつも以上に慎重に)移動を行った。
CMT8に出ると、普段の帰り道よりも混んでいる印象を受けた。
そして、あのグノレグノレではもはや恐怖感しかない。
いつもは帰りが20:30とか21:00とかだからわからなかったが、19:00前後のここは本当に怖い。
早く通り抜けたい気持ちとともに、何度もぶつかりそうになりながらも事故にあうことなく無傷でDBPへ。
さすがにCMT8のような革命どころか暴動レベルの無様はないが、途中混んでいることには変わりはない。
むしろここでほっとして気を抜くと事故にあうかもしれないので気は抜かないようにした。
なんとかDBPのPまで来た。もう信号はない。
ただ、この安心感が隙になり、事故にあうかもしれないのでまだ気を抜かないほうがいい。
そこから自宅まではいつも通りなんの問題もなかったが、最後の最後、自宅の敷地、と言ってもベトナムではご多分に漏れず狭い集合住宅であるが、そこにバイクがぎっしりになっており自分の分を置くのが面倒だったぐらいか。

こうして、無傷で帰宅できたが、自室の床にあった風船を蹴ろうとしたときに膝に激痛が走り、歩くのがきついほどに。
さらに、この文章は翌日の朝に書いているのだが、まだ痛みがある。
おそらく、本来なら行く必要のなかった悪夢の危険地帯を無傷で通り抜けることで運を使ったというか、本来なら暴動地帯で怪我をしていたかもしれないところを助かったことの表れなのかもしれない。
さて、本日も別科目があるが、昨日の今日だし大事をとっていかないほうがいいかもしれない。

Mạng máy tính宿題に見るグループ作業

Mạng máy tínhには宿題(課題)が2つ課され、それぞれが15%、合計30%の配点を占めている。
それぞれの宿題は3名のグループで行うこととなっている。
メンバーは先生が決めるのではなく、学生間で決めるのだが、なんとなく席の近い者同士が3名で組んでグループとなり、残ったのは自分の他、いつも遅刻の1名であった。
3名には満たないもののこの2名でグループを組むことになるが、「グループではなく、自分一人で宿題をやりたい」と先生に申し出た。
グループではなく一人でやりたかった理由はこの2点である。
1. メンバー同士の意思疎通に手間と時間がかかることがデメリットになる。さらに、言葉の壁の問題もある。
2. 自分以外のメンバーの能力が低い場合、メリットがない。

しかし、先生からの「できれば3名のグループでやった方がいい」との言葉に従いグループとなった。
ひとまずその場にいた遅刻君と話すと、同科目をずっと欠席している学生がいるらしく、まだ見ぬ欠席君を含め3名となった。
さて、話を聞いてみると、遅刻君はJavaの経験がないという。それは自分も同じだが、どうやら遅刻君は新しいものにチャレンジするという意思が感じられなかった。
翌日別科目で欠席君とも顔合わせをするも、彼も能力とやる気がない。
もともと自分一人でやるつもりではあったが、こうなると名義の為だけにこの2名がいるようなものだ。
一応メリットとしてはこの2名を通じて先生との連絡はしやすい。
ひとまずはJavaコードの大部分を自分で作り、ちょっとした機能追加を遅刻君が、レポートを欠席君がやることになった。
しかし、提出日の前日になっても両名からは何の連絡もなく、提出当日になり遅刻君から、「Javaのコードはどうやって動かすのか」という質問が来た。
また、欠席君が本当にレポートを作成したか心配になり何度か催促したが、翌日になってやっと送られてきたものは不十分であった。
ひとまずこちらで手を加え、提出をしてもらうことになった。

一応こちらの宿題については来週の授業中にデモをすることになっている。
遅刻君のノートPCは持ち運びには不向きな重さであることと、欠席君はそもそもJavaコンパイルや実行方法自体を知らなさそうなため、自分がノートPCを持参することとなった。
ただ、異なる2台以上のPCで動かせるようにソースコードを変更したため、両名にはノートPCを持参するように連絡した。
しかしながら、彼らのあだ名から分かるように、この両名が授業にまともに来る保証はどこにも ないけど (そりゃそうじゃ!) 。
したがって自分のノートPCを2台持参するか、小型のデスクトップPCを持参することを念頭に置き、プログラムを準備している。

さて、この学校(の大学院修士課程)におけるグループ作業が強制される割合はどのぐらいか?科目別に見てみよう。
1. 必修科目
A類
Triết học 5名前後でグループプレゼンテーションが1回、同じくグループで話し合ってその場でのレポート提出が数回あった。
グループは自主的に作らなければならない。自分の時は学級委員長と隣の席だったので混ぜてもらった。
しかし、このグループプレゼンテーションとグループレポート、さらに出席を総合してたったの10%という低割合である。
プレゼンテーションだけなら3%ぐらいか。グループレポートも1回あたり2%といったところであろう。

Phương pháp nghiên cứu khoa học nâng cao
グループ作業一切なし。すべて個人プレー

B類
Nguyên lý ngôn ngữ lập trình
教員が割り当てた2名で1組となり毎回の授業中に作業。この作業と小テストを合わせてたったの10%という低割合である。
とはいえ、お互いに顔を見合わせて、「全然わからない」と言っているうちに授業が終わる。
なお、2年前は席が隣もしくは近い同士で自主的に2名一組となる必要があった。

Phân tích thiết kế giải thuật
グループ作業一切なし。すべて個人プレー

Cấu trúc dữ liệu và giải thuật
グループ作業一切なし。すべて個人プレー

Mạng máy tính
本項にて記述したとおり。配点は全部で30%

選択科目
Hệ cơ sở dữ liệu nâng cao
Kiến trúc máy tính nâng cao
Lập trình nâng cao
この3科目は選択なのだが、大学院事務局の不手際により強制的に登録させられてしまった。
授業料はともかく、貴重な時間が無駄になった。
これは通学と授業の時間というのもあるが、同時期に開講されたB類が1個も受講できなかったことは2年後も尾を引いている。
なお、この3科目はすべてグループ作業があり、かつメンバーは自主的に見つけなければならないうえ、プレゼンテーションが近づくにつれて人数が減り、結局自分一人になったこともあった。
Mạng máy tínhにおいて自分一人でやった方がいいと思ったのはこの経験からである。

Xử lý ngôn ngữ tự nhiên
Nhận dạng mẫu và học máy
この2科目は純粋に自分の意思で選択した、本当の意味の選択科目である。
なお、いづれもグループ作業一切なし。すべて個人プレーの科目である。

Phân tích thiết kế giải thuật 13回目

2019年11月19日、Phân tích thiết kế giải thuậtの12回目授業が実施された。
入室は18:05頃だが、すでに問題演習の時間が始まっているようだった。
が、教室を見ると学生は1人しかいない。つまり自分が2人目の学生ということだ。
このように、学生の人数に関わらず時間になったら授業を始めるという安定性は素晴らしい。
前日の某悪名高いNguyên lý ngôn ngữ lập trìnhのようにだまし討ちで早く始めたり、十何人も待っているのに一向に始めないという嘘くさい方法では学生の信頼は得られない。
その点、Phân tích thiết kế giải thuậtは時間通りに出席すれば報われる。

さて、肝心の問題の内容だが、あいにく、何週間も前に事前に解いておいたC言語2次次元配列を使った何とか法の問題ではなく、ハフマンコードの問題であった。
これは授業を聞いていても分からなかったので当然問題が分かるわけもなく、あきらめかけていた。
同時に、5分遅れの入室とはいえ、せっかく2番目の入室なのにその利点を活かせないのはもったいないとも思った。
ふと、教科書を見て、なんとなくやってみたら解けるのではないかと思い立ちやってみた。
先生を呼び書いた内容を見てもらうと、一度に作図するのではなくstep by stepだという。
さらに、これは小さい順にソートするんだという個別指導も得られた。
そうしているうちに続々と学生が入室し続け、12名になった。
幸い、自分より早く来た1名が自分よりもできる学生ではなかった点と、遅く来た学生も自分同様、「step by stepだ」と先生から言われており、相当時間がたっているが誰も正解にたどり着かないようだった。
このチャンスを逃すことなく手早く作図をし、何度か先生を呼んで、「correct!」の言葉をもらった。
先生は黒板を指さす。すかさず先生の手からチョークを受け取り板書した。
あいにくと最後の計算式は間違っていたが、板書の9割以上を占める作図部分はすべて正解であった。
もっとも、先生を呼んで自分の作図を見てもらって板書OKの指示が出た時点でほぼ正解なのだ。
逆に、まったくの正解だと先生が出る幕がなく、9割以上正解だけど最後の最後で間違えたとかの方が先生の存在意義もあるというものだ。

なお、同日は前回やったはずの8 queen problemからの開始であった。
この8 queenとはSMクラブに行ったら女王様8名との同時プレイの9Pということではなく、チェスにおけるクイーン(飛車角の合成)を、8×8のマス目に8個置くが、その際にお互いかお互いに干渉しないように配置するという頭の体操のようなものである。
日本の将棋においては駒の性別は明らかになっていないが、チェスでは明確に女性であるクイーンという名称が用いられ、このクイーンは他のどのコマよりも可動範囲が広く、いわば最強ともいえる駒である。
おそらく、一番弱い駒を女性にすると男女差別と騒ぐ人がいるのだろう。
また、同日はサッカーのベトナム対タイ戦が授業中に行われ、教室の外から「ぎゃー!」という叫び声が何度か聞こえ、その叫びがあまりにも滑稽であり、学生はみんな笑っていた。そのうちに先生もつられて笑っていたが、定刻すぎぐらいまで授業は続けられた。
そうして第6章が全部終わったところで本日は終了。
次回は第7章からということになる。

Nguyên lý ngôn ngữ lập trình 12回目

2019年11月18日、Nguyên lý ngôn ngữ lập trìnhの12回目授業が実施された。
この日は教員自体は18:00頃には入室を確認できたが、なぜか18:20頃まで何もせずグダグダしており、18:20頃をもって小テストが始まった。
前回の授業で18:05頃入室したところ、やはりだまし討ち的に小テストが行われたので早めの入室をしたのだがこのグダグダは嫌がらせ以外の何物でもない。
登録者30名に対し、出席者が15名になったところで小テストを開始したので、人数が半数に達するのを待っていたのかもしれない。
小テストそのものは前回同様nameについてだ。これはプログラミング言語とかではないのでいくら時間をかけても知らないものは知らない。単なる知識問題だ。
f:id:k4h8:20191119105104j:plain
お為ごかしの答え合わせの後は、19:00頃から実習。今回は特に新しいファイルはなく、先週公開したものの続きだ。
模範解答と思わしきものを上映しているので、AKB48のコンサートに参加した人のつもりになって写真を撮りまくろう。
f:id:k4h8:20191119105223j:plainf:id:k4h8:20191119105234j:plainf:id:k4h8:20191119105244j:plainf:id:k4h8:20191119105253j:plainf:id:k4h8:20191119105303j:plainf:id:k4h8:20191119105314j:plainf:id:k4h8:20191119105325j:plainf:id:k4h8:20191119105338j:plainf:id:k4h8:20191119105349j:plainf:id:k4h8:20191119105359j:plainf:id:k4h8:20191119105409j:plainf:id:k4h8:20191119105420j:plainf:id:k4h8:20191119105433j:plainf:id:k4h8:20191119105443j:plainf:id:k4h8:20191119105454j:plainf:id:k4h8:20191119105503j:plainf:id:k4h8:20191119105513j:plainf:id:k4h8:20191119105526j:plainf:id:k4h8:20191119105536j:plainf:id:k4h8:20191119105547j:plainf:id:k4h8:20191119105554j:plain

Cấu trúc dữ liệu và giải thuật 10回目

2019年11月16日、Cấu trúc dữ liệu và giải thuậtの10回目授業が実施された。
前回を休んでいたのでどこまで進んだか分からないが、同日が第8章のheapからだったので、前回は第7章のAVLが完了したものと思われる。
実はこの日、いつもの先生ではなく、代わりの先生による授業であった。
そのためかは分からないが、出席も取らなかった。
また、heapはすでに別な科目で嫌と言うほどやらせれていたので(こういう言い方は受け身なので自主的に十二分に研究したと言い直すべきか?)、特に新しい発見もなく、同日欠席した学生はラッキーだ。
臨時講師自体は18:00には教室にいたが、結局授業開始は18:15ぐらいであり、終了も20:15頃と2時間コースで学生の負担は少なかった。
授業中のグダグダも多く、多くの学生が積極的にトイレ休憩を取れていた。
2時間ぶっ通しはきついので、この場合はグダグダも大歓迎だ。
2つ右の席の学生が授業中にアダルトサイトを閲覧していたぐらいで、彼にとっては退屈だったのかもしれない。
この分で行くと、次回は第9章のhashからということになる。

Mạng máy tính 11回目

2019年11月15日、Mạng máy tínhの授業11回目が実施された。
先週欠席していたが、進捗は第7章の途中あたりだったはずがなぜか第7章の初めから行われた。
第7章の資料も大学公式サイトにアップされた。
合わせ、宿題1の提出窓口も開設された。
さらに、宿題2の仕様も公開された。
内容は以下のとおりである。

                                                                      • -

1.背景(想定)
Bách Khoa大学は、近代的でフレンドリーで省エネの大学を構築するために、コンピュータサイエンスおよびエンジニアリング学部に、監視システムのインストールを調査および導入するよう割り当てています。 エネルギーコストを削減するための、建物での生徒の活動、教室での温度、湿度、照明器具。 システムは、施設2のH6ビルで試験運用されています。システムの運用をより良くするために、部門はこのビルでネットワークシステムを設計および展開する必要があります。 コンピューターネットワークを勉強している学生のグループは、現在の建物の要件を参照してソリューションを提供することができます。

2.詳細な説明
注:
•以下の説明の情報の一部は推定値です。 いくつかだけ
これは仮想的なものであり、実際には存在しませんが、大規模な運動の目標に適合するために必要です。 展開されたチームは、設計のアイデアを完成させるために必要な仮定を立てることもできます。
•グループにH6ビルから実際のデータを取得するように勧めます。

施設2では、H6ビルが監視カメラのシステムを複数のポイントに展開し、それらのデータは部屋H6のサーバールームに集中的に保存されます。 6.7階にはエンジンルームもあります。
監督の目的で、学校はH6の各教室に投資し、6つの温度センサー、大規模な理論教室用の6つの光センサーを含むIoTデバイスを構築します( 60 m2より大きい面積)、ランプ制御機器; 3つの温度センサー、3つのセンサーはすべて部屋の残りの部分(60 m2を超える小さな面積)のすべての照明、照明制御機器。各廊下には4つの監視カメラがあります。教室ではデスクトップが装備されます。コンピューターラボには、エアコンコントローラーがあります。これらの測定デバイスは、リアルタイムで1分ごとにデータを収集し、5分ごとに処理するためにサーバーに送り返します。
データの説明:各センサーは異なるインデックスを測定しますが、データ形式のサイズは32 Kbです。センサーは1分に1回データを収集し、5分後にWiFiネットワーク上でこのデータを中央サーバーに送信します。監視カメラシステムは24時間年中無休で動作し、1 MB /秒のデータ転送速度で中央サーバーに直接データを保存します。教室のコンピューターは、1日あたり約200MBをダウンロードします(ピーク時間は午前7時から午後5時30分です)。 WiFiに接続されている各デバイスは、7:30から17:30の間に最大速度256 Kbpsでインターネットを使用できます。
さらに、H6には10台のコンピューターを備えた管理オフィスもあります。これらのコンピューターは、1日あたり約200MBをダウンロードし(ピーク時間は午前8時から午後11時、午後13:00から午後4時30分)、1日あたり10通のメールを送信します。
さらに、各レイヤーは、H6ネットワークに接続できるVLANとシステムで構成されます。

3.必須
コンサルタントは特定の設計を提供します。これにより、建設チームはH6ビルの展開にそれを利用できます。学校がソリューションを選択して投資するように説得するには、コンサルタントもデータを分析してソリューションの有効性を証明する必要があります。具体的には:
•H6ビルのシステムのネットワークアーキテクチャとこれらのネットワークのIP設定。
•上記の建物アーキテクチャに基づいて、各デバイスオブジェクトまたは部門のサブネットを計算します。
•効率的なシステム運用を確保するために必要なスペースの量
•スイッチ、ルーター、および予算編成のシステム
•インターネット接続速度
才能のあるチームの要件:ラボの実際の機器で設計されたコンピューターネットワークのシミュレーション部分を構成して実行します。

4.製品
提出する製品:
•セクション2および3で説明されているコンピューターネットワークの設計の説明。説明には以下が含まれます。
oシステム要件の分析
oストレージ容量、ネットワーク接続の計算
o物理設計
o論理図
o使用した機器のリスト
o推定総費用
o長所と短所の分析
•パケットトレーサーのシミュレーションプログラム

5.論文の提出期限
•クラスの報告プロセス中に講師に直接提出します。
•ソフトコピー:学習システムを通じて、2017年12月6日の24:00までに提出。

6.マークする時間
•実践インストラクター(採点教師)からの通知

Nguyên lý ngôn ngữ lập trình Assignment 3

あの悪名高い、に加えて2018年度入学生が最後の犠牲者の枕詞がすっかりおなじみの不評判科目についに3番目の宿題が課された。
番号が2から始まっているのは、1がファイルの説明のためである。

2 Static Checker
静的チェッカーは、最新のコンパイラーで重要な役割を果たします。
プログラムが言語仕様に従ってセマンティック制約に準拠しているかどうかをコンパイル時にチェックします。
この割り当てでは、MC言語の静的チェッカーを実装する必要があります。
チェッカーの入力は、MCプログラムのASTにあります。つまり、割り当て2の出力です。
チェックされた入力が正しい場合、チェッカーの出力は何もありません。そうでない場合、エラーメッセージがリリースされ、静的チェッカーがすぐに停止します。セマンティクスエラーごとに、学生はフォルダーsrc/main/mc/checker/を使用して、期待どおりに印刷されることを確認します。
すべてのテストケースには、多くても1種類のエラーがあります。
この割り当てをチェックインするために必要なセマンティクスの制約は次のとおりです。
A static checker plays an important role in modern compilers.
It checks in the compiling time if a program conforms to the semantic constraints according to the language specification.
In this assignment, you are required to implement a static checker for MC language.
The input of the checker is in the AST of a MC program, i.e. the output of the assignment 2.
The output of the checker is nothing if the checked input is correct, otherwise, an error message is released and the static checker will stop immediately For each semantics error, students should throw corresponding exception given in StaticError.py inside folder src/main/mc/checker/ to make sure that it will be printed out the same as expected.
Every test-case has at most one kind of error.
The semantics constraints required to check in this assignment are as follows.

2.1 Redeclared Variable/Function/Parameter:
識別子は、使用する前に宣言する必要があります。
ただし、宣言はスコープ内で一意である必要があります。
それ以外の場合、例外Redeclareds()がリリースされます。は2番目の宣言のの種類です。
識別子(変数、関数、パラメーター)のスコープは、MC仕様のセクション10のように非公式に説明されています。
An identifier must be declared before used.
However, the declaration must be unique in its scope.
Otherwise, the exception Redeclareds(,) is released, where is the kind of the in the second declaration.
The scope of an identifier (variable, function, parameter) is informally described as in Section 10 of MC specification.

2.2 Undeclared Identifier/Function:
例外「Undeclared()は、が使用されているが、その宣言が見つからない場合に解放されます。
識別子は、変数、パラメータ、または関数にすることができます。
The exception “Undeclared(,) is released when there is an is used but its declaration cannot be found.
The identifier can be a variable or parameter or function.

2.3 Type Mismatch In Statement:
ステートメントは、ステートメントの対応するタイプルールに準拠する必要があります。そうでない場合、例外TypeMismatchInStatement()がリリースされます。
ステートメントのタイプルールは次のとおりです。

それ以外の場合、戻り式の型は、関数の戻り値の型に等しいか、強制される必要があります。
例外は、配列ポインターまたは配列を配列ポインターに返すことができることです。つまり、戻り式の型は配列ポインターまたは配列型にすることができますが、囲まれた関数の戻り型は同じ要素型を持つ配列ポインター型になります。
A statement must conform the corresponding type rules for statements, otherwise the exception TypeMismatchInStatement() is released.
The type rules for statements are as follows:

  • The type of a conditional expression in an if statement must be boolean.
  • The type of expression 1 and expression 3 in a for statement must be integer while the type of expression 2 is boolean.
  • The type of condition expression in do while statement must be boolean.
  • For a return statement, if the return type of the enclosed function is void, the expression in the return statement must be empty.

Otherwise, the type of the return expression must be equal to or be coerced to the return type of the function.
An exception is an array pointer or array can be returned to an array pointer, i.e., the type of return expression can be in array pointer or array type while the return type of the enclosed function is in array pointer type with the same element type.

2.4 Type Mismatch In Expression:
式は式の型規則に準拠する必要があります。そうでない場合、例外TypeMismatchInExpression()がリリースされます。
式の型規則は次のとおりです。

  • E1 [E2]をサブスクライブする配列の場合、E1は配列型または配列ポインター型でなければならず、E2は整数でなければなりません。
  • バイナリおよび単項式の場合、型規則はMC仕様に記述されています。
  • 代入式の場合、左側(LHS)はvoid、配列ポインター型、配列型を除く任意の型にすることができます。

右側(RHS)は、LHSと同じタイプか、LHSタイプに強制できるタイプのいずれかです。
MCでは、整数だけがフロートを強制できます。

  • 関数呼び出し<関数名>(<引数>)の場合、実際のパラメーターの数は、対応する関数の仮パラメーターの数と同じでなければなりません。

割り当てのルールは、仮パラメーターがLHSと見なされ、対応する実際のパラメーターがRHSであるパラメーターの受け渡しに適用されます。
例外は、配列ポインターまたは配列を配列ポインターに渡すことができることです。つまり、実際のパラメーターは配列ポインターまたは配列型であり、対応する仮パラメーターは同じ要素型の配列ポインター型です。
An expression must conform the type rules for expressions, otherwise the exception TypeMismatchInExpression() is released.
The type rules for expression are as follows:

  • For an array subcripting E1[E2], E1 must be in array type or array pointer type and E2 must be integer.
  • For a binary and unary expression, the type rules are described in the MC specification.
  • For an assignment expression, the left-hand side (LHS) can be in any type except void, array pointer type and array type.

The right- hand side (RHS) is either in the same type as that of the LHS or in the type that can coerce to the LHS type.
In MC, just the integer can coerce to the float.

  • For a function call (), the number of the actual parameters must be the same as that of the formal parameters of the corresponding function.

The rule for an assignment is applied to parameter passing where a formal parameter is considered as the LHS and the corresponding actual parameter is the RHS.
An exception is an array pointer or array can be passed to an array pointer, i.e., the actual parameter can be in array pointer or array type while the corresponding formal parameter is in array pointer type with the same element type.

2.5 Function not return:
voidを返さない関数は、すべての実行パスで何かを返さなければなりません。
何も返されないパスが1つ存在する場合、例外FunctionNotReturn()が解放されます。
A function that does not return void must return something in every its execution paths.
If there exists one path where there is nothing returned, the exception FunctionNotReturn() will be released.

2.6 Break/Continue not in loop:
break/continueステートメントは、直接または間接的にループ内にある必要があります。そうでない場合、例外BreakNotInLoop()/ ContinueNotInLoop()が解放されます。
A break/continue statement must be inside directly or indirectly a loop otherwise the exception BreakNotInLoop()/ContinueNotInLoop() will be released.

2.7 No Entry Point:
MCプログラムのどこかに関数void main()が必要です。
そうでない場合、例外NoEntryPoint()が解放されます。
There must be a function void main () somewhere in a MC program.
Otherwise, the exception NoEntryPoint() is released.

2.8 Unreachable function:
メイン関数を除く関数は、別の関数によって呼び出される必要があります。そうでない場合、例外UnreachableFunction(<関数名>)が解放されます。
A function, except main function, must be invoked by another function, otherwise, the exception UnreachableFunction() is released.

2.9 Not Left Value:
例外NotLeftValue()は、代入演算子のLHSがアクセス可能なストレージ、つまり変数またはインデックス式でない場合に発生します。
The exception NotLeftValue() will be raised when the LHS of assignment operator is not accessible storage, i.e. a variable or an index expression.