CF

理情2020年度3Sを振り返る

理学部情報科学科の3Sの授業が終了し、大体成績も出ました。 理情がどんな授業をしていたのかなということを振り返っていきます。

概観

既に学科同期のシベリアンハスキーチワワが3Sの所感を書いてくれているのでそちらになんとなく譲るとして、実際課題の量はたぶん多かったように思います。プログラム未経験者の人は2Aのうちに授業でやるC言語(とScheme)に慣れましょう。そうでないと多分やばいと思います。とはいえ、土日も頑張ればなんとかなるので頑張りましょう……。ただ、学科側としては土日に課題をすることは想定していないということでそれはかなりビビりました。

私はオールドタイプなので板書は全部ノートに書きましたが、オンライン授業だったので結構大変でした。 itclmsに上がっていた動画もあまり見ませんでしたね……私のオンライン授業への適性の低さが伺えます。

3Sの講義

必修しか履修しませんでした。研究倫理については合不合しか付きませんし、事前に心構えするものでもないので省略です。

月2:オペレーティングシステム

2Aの必修であった計算機システムで習った内容のうち、OS的な部分を中心に扱いました。非同期処理やスケジューリング、メモリ管理などのうち既に固まっている部分を紹介しています。 後述のシスプロで触る部分については触ることでさらに理解できると思います。触らない部分については、自分でしっかり復習したほうがいいかと思います。あまり手を動かす機会はないです。

f:id:cfkazu:20200831151703p:plain

システムプログラミング実験

前半ではシステムコールの使い方、またOSの授業で触ったものを実際に実装しながら学びつつ、後半ではOSの機能をqemu上、および学科PC実機上で実装していきます。 理解すればなんてことないことを躓きながら実装する、やらなければならないことなので頑張りましょう。そういえば軽くですがアセンブラも書きます。

f:id:cfkazu:20200830151259p:plain

離散数学

グラフマイナー理論や最大流最小カットなどを中心にグラフ理論を触りつつ、線形計画法へと進んでいきます。 授業を漫然と聞いているだけではなかなか理解できませんが、問題演習で手を動かす機会が多いので動かしてどうにかしましょう。某の関係で今年はレポート評価となりました。試験であった場合には計算ミスがかなり響くものとなりそうです。

f:id:cfkazu:20200830152536p:plain

関数・論理型プログラミング実験

前半7割はOCaml,後半はPrologを用いました。OCamlの入門を一通りしたのち、lexerやyaccの力を借りながらOCamlインタプリタを作成しました。Prologについては解釈を含め基本的なところを触りました。 最終課題はリバーシを打つプログラムを作成しました。時間制限とうまく付き合うのが面倒だったのでさぼったら多分何回かタイムアウトしました。強化学習しか勝たんという気がするので、だれか頑張ってください。

f:id:cfkazu:20200830155823p:plain

情報論理

形式的論理や集合論、計算可能性を拾いながらゲーデル不完全性定理へと進んでいきました。形式的な話が私は好きなのでとても楽しめました。 教科書は英語ですが、難しい単語があふれているわけではないので大丈夫です。これから多分英語を読む機会が残念なことに増えるので慣れましょう……

f:id:cfkazu:20200831144548p:plain

言語処理系論

コンパイラを作ろうという感じの授業です。関数・論理型プログラミング実験でこれを軽く実践する形になりますが、そこでやらなかったコンパイラ特有の部分、またはlexerやyaccでさぼった字句解析・構文解析もまともにやります。何なら具体的にコードを書いたりもします。

f:id:cfkazu:20200831145026p:plain

ハードウェア実験

今年は某の影響で開始が大分遅れましたが、怒涛の補講を行うことによって夏休みを守りつつ13回やり切りました。 ブレッドボードを用いて論理回路の基礎を学びつつ、最終的にはFPGAで回路を組み、タイミング制約などについて学びました。 必要物資を全員分家に届けるなど、かなり苦労がかかっています。質問にもすぐ答えてくださるし、担当の先生は本当に神。 f:id:cfkazu:20200831145424p:plain

計算機構成論

CPUの中身を学ぼう!今年から先生が変わりました。CPUを早く正確に動かすためにどんな工夫が行われているかを事例を取りあげながら学びます。具体的にはまずは1クロックで1命令動作する単純な回路構成から始まり、パイプラインや分岐予測、アウトオブオーダー実行をするにはどうしたらいいかを触っていきます。

f:id:cfkazu:20200831150346p:plain

情報科学演習1

情報論理演習と離散数学演習を交互に行いました。事前に問題を解いて発表していく形式です。情報論理演習は問題が多く解けそうなのを選んでいく感じ、離散数学は問題があまり多くなくとりあえず解きまくっていくという感じの戦略を取った気がします。 天才が天才な問題を解いてくるのが楽しみな授業なので、発表しないときも毎回出席すると楽しいと思います。

f:id:cfkazu:20200831150936p:plain

おわりに

オンラインであったこともあり、異例の3Sとなりました。特に実験の課題類は締め切りが延びたこともあって例年とは負担のスケジュールが大分ずれていたと思います。とはいえなんだかんだ4月初頭から授業も始まり夏休みにほとんどはみ出ることがなかったなど、理情のオンライン化への適性が明らかになったと思います。これはひとえに先生方、事務の方々などの踏ん張りによるものだと思います。改めてありがとうございます、これからもよろしくお願いします。

……ところで流石に土日やるのが想定されてないというのは多少信じ難いですが、それでも友人などと相談しつつ頑張ればなんとかなるぐらいの重さですので、いいカリキュラムだと思います。