ネットワークシステム領域実習 B

URL

  講義ページ
  https://lsnl.jp/l/training

  クリッカー
  https://lsnl.jp/cgi-bin/lecture/clicker-async?class=training

  レポート送信フォーム (パスワードが必要です)
  https://lsnl.jp/cgi-bin/lecture/training-report

  リフレクションシート (パスワードが必要です)
  https://lsnl.jp/cgi-bin/lecture/training-reflection

  講義ビデオ (パスワードが必要です)
  https://lsnl.jp/video/training/2021/

  連絡用メイリングリスト (教員 + TA に届きます)
  training-b[atmark]lsnl.jp
  本文には、必ず学生番号・氏名・メールアドレス (@kwansei.ac.jp のもの) を明記してください。

担当教員

  大崎 博之
  関西学院大学 理工学部 情報科学科
  E-mail: training-b[atmark]lsnl.jp

講義目的: 到達目標

情報ネットワーク分野の研究開発を実践できるようになることを目指し、 高度なオペレーティングシステム活用法およびプログラミング技術を「実際に体験する」ことで学ぶ。

一般の人よりも 3 倍高速・効率的にコンピュータを利用できるようになる。

授業方法

グループメンバとのディスカッションを中心とし、 ノートパソコンを用いた実習形式で実施する。

UNIX オペレーティングシステムの基礎的および発展的な活用法、 管理法、 プログラミング技法を学ぶ。 Debian GNU/Linux オペレーティングシステムのインストール・初期設定に始まり、 コマンドを駆使したシェルの活用法・作業の自動化手法、 テキストやデータの分析・集計・処理・可視化技術、 ネットワークシミュレーション技術などを幅広く実習形式で学ぶ。

成績評価

その他 (基礎平常点および達成点) 100%

基礎平常点 (毎回の実習の基本的な取り組み; 75 点満点) および達成点 (課題等の達成度; 25 点) により評価する。 ただし、 3 回を超える欠席 (またはこれに相当する遅刻・早退) があった場合には不合格とする。 やむを得ぬ事情で出席ができない場合には、 担当教員に申し出ること。

スケジュール

  2021/ 9/22 Debian GNU/Linux インストール
  2021/ 9/29 Debian GNU/Linux セットアップ
  2021/10/ 6 ウィンドウマネージャ導入
  2021/10/13 ウィンドウマネージャ習得
  2021/10/20 エディタ (Emacs チュートリアル)
  2021/10/27 簡単なツールの設計・開発
  2021/11/10 ペアプログラミング (1)
  2021/11/17 リモートログイン、リモートデスクトップ
  2021/11/24 ペアプログラミング (2)
  2021/12/ 1 X ウィンドウシステム、ペアプログラミング (3)
  2021/12/ 8 X ウィンドウシステム (2)、グラフ上のランダムウォーク
  2021/12/15 疑問・質問
  2021/12/22 グラフ上のランダムウォーク (2)
  2022/ 1/12

Debian GNU/Linux のインストール

Debian GNU/Linux のセットアップ

ウィンドウマネージャの導入・習得

実習の流れ

  1. 解説 (20 分)
  2. 実習 (65 分) (アイスブレーク: 苦手なお菓子)
  3. 確認テスト (10 分)
  4. 採点・リフレクションシート記入 (5 分)

チーム分けの方針

  - いろいろな人とチームになる
  - チームの人数は自由に決めてよい

態度目標

  - しゃべる
  - 質問する
  - 説明する
  - 動く (立ち歩く)
  - チームで協力する
  - チームに貢献する

内容目標

- ウィンドウマネージャ (xpywm) で普段の作業を快適にできるようになる

課題

課題1

xpywm、xpymon、xpylog が利用可能な状態の X ウィンドウシステムを起動せよ。

  (略解)
  事前に sudo コマンドのインストールと設定を済ませておく。
  > wget -O - lsnl.jp/xpywm | sh
  > tar xzvf home.tgz
  > startx

課題2

xpywm のキーボードおよびマウス操作法を暗記せよ。

  (略解)
  以下に操作法の一覧がある。
  https://github.com/h-ohsaki/xpywm

課題3

xpywm の文字およびフレームの色を自分好みのものにカスタマイズせよ。

  (略解)
  xpywm の色の変更:
  aquamarine1 や aquamarine3 を /usr/share/X11/rgb.txt 中の色名に書き換えればよい。
  
  FRAME_COLOR = 'aquamarine1'
  TITLE_COLOR = 'aquamarine3'

  プログラムの場所は which xpywm 等でわかる。

課題 4

Web ブラウザ (qutebrowser) を起動し、 検索エンジンで「debian sudo」を検索し、 1 番目の検索結果の Web ページを開くために必要なキー操作と、 そのストローク数を答えよ。

  (略解)
  <Alt+Ctrl+3>owindow manager<Enter>fgl
  20 ストローク
  ただし、最後の 2 文字 (gl) は検索エンジンや検索結果によって変化する。

課題5

Alt + Ctrl + 4 を押すと、以下の「Debian GNU/Linux Reference Card」を mupdf で開くように設定せよ。

  Debian GNU/Linux Reference Card
  https://www.debian.org/doc/manuals/refcard/refcard

  (略解)
  mupdf パッケージをインストール。
  > sudo apt install mupdf
  PDF ファイルを取得し、mupdf で開けることを確認。
  > wget https://www.debian.org/doc/manuals/refcard/refcard; mupdf refcard 

  ~/.xpywmrc に以下の行を追加する。
  KEYBOARD_HANDLER['4'] = {
      'modifier': X.Mod1Mask | X.ControlMask, 'command': 'mupdf ~/refcard &'
  }

レポート課題 2021/10/13

実習終了後に自習を行い、 到達目標まで到達せよ。 疑問に思った点、 わからない点は各自で信頼できる文献を用いて調査せよ。

その後、「今週の作業内容」、 「『到達目標』をどの程度達成できた/できなかったか」、 「質問・要望・コメント」、 「感想」を「ネットワークシステム領域実習 B」レポート送信フォームから送信せよ。

提出方法: 「レポート課題提出フォーム」から送信せよ。 レポートが再提出された場合は、 新しいほうを採点対象とする。

提出期限: 次回の講義開始の 48 時間前とする (例えば、 10/13(水) の課題であれば、 10/20(水) 1:30pm の 48 時間前である 10/18(月) 1:30pm)。 期限を過ぎたものは受理しない。

注意事項: 「質問・要望・コメント」は匿名にした上で公開する (講義ページに掲載する)。 公開されて困る内容は「質問・要望・コメント」等に含めないこと。 個人的な質問・相談等は「感想」の覧に記入せよ。

エディタ (Emacs チュートリアル)

実習の流れ・チーム分けの方針・態度目標

先週 (2021/10/13) と同じ

内容目標

- Emacs の基本的な操作方法を習得し、ファイルを作成・編集できるようになる

テキスト

  http://www.lsnl.jp/~ohsaki/lecture/netcompx/2021/for-students/03.pdf

課題

課題1

Emacs をインストールせよ。

  > sudo apt install emacs

課題2

Emacs のチュートリアルを起動し、 「もし Emacs が反応しなくなったら」までを実行せよ。

  > Alt + Ctrl + 2 (Alt と Ctrl を押しながら 2 を押す、「emacs &」で起動してもよい)
  > C-x RET l Japanese RET (言語環境を日本語に変更、M-x set-language-environment RET でもよい)
  > M-h t (M-x help-with-tutorial RET でもよい)
  ※ C-x は Ctrl キーを押しながら x キーを押す
  ※ M-x は Alt キーを押しながら x キーを押す
  ※ RET は Enter キー (もしくは C-m)

課題3

「Hello!」という文字列が書かれた ~/foo.txt というファイルを Emacs のみを用いて作成せよ。

  > C-x C-f foo.txt RET (M-x find-file foo.txt RET でもよい)
  > Hello!
  > C-x C-s (M-x save-buffer RET でもよい)
  ※ ~ はホームディレクトリを表す。

課題4

Emacs のキーバインド一覧を表示し、 どのようなコマンドがあるかを眺めてみよ。 また、 (1) M-d、 (2) C-SPC、 (3) C-w、 (4) C-y というキー操作によってどのような処理が実行できるかを調べよ。

  > M-h b (M-x describe-bindings RET でもよい)
  > M-d: kill-word (単語単位の削除 (キル → キルリングに入るタイプの削除))
  > C-SPC: set-mark-command (現在のポイント(カーソル位置)をマークする)
  > C-w: kill-region (リージョン (マークとポイントの間) をキルする)
  > C-y: yank (キルしたテキストをペーストする)

レポート課題 2021/10/20

「レポート課題 2021/10/13」と同じ。

より深く学びたい人へ

(Emacs に限りませんが) オンラインドキュメントではなく、 書籍で知識を吸収することをおすすめします。 Emacs に関する良書は多くありませんが、 読むなら以下の本をすすめます。 「GNU Emacs マニュアル」は原文が GPL で公開されているので、 翻訳版も GPL で公開されています。

  Richard Stallman, ``GNU Emacs マニュアル,'' 共立出版, 1988.
  http://www.lsnl.jp/~ohsaki/lecture/netcompx/2021/for-students/GNU_Emacs_Manual.pdf

  GNU Emacs マニュアル 27.1
  https://ayatakesi.github.io/emacs/27.1/html/index.html

ただし、 翻訳の質は共立出版のもののほうがはるかに良いです。

  Debra Cameron, James Elliott, Marc Loy, Eric Raymond, Bill
  Rosenblatt, ``入門 GNU Emacs 第 3 版, '' オライリー・ジャパン, 2007.

簡単なツールの設計・開発

実習の流れ

  1. 解説 (20 分)
  2. 実習 (65 分) (アイスブレーク: 誕生日順に整列)
  3. 各チームの成果発表 (10 分)
  4. リフレクションシート記入 (5 分)

チーム分けの方針・態度目標

これまで (2021/10/13) と同じ

内容目標

- コンピュータ (トモダチ) に何を手伝ってもらえば、毎日が楽しく快適になるかを考えられるようになる。

- 「一週間で作ってみたいソフトウェア」の仕様と実装の方針を他人に説明できるようになる。

- 「一週間で作ってみたいソフトウェア」の基本部分を (他の人の助けを借りて) 実装できるようになる。

課題

課題1

日々の生活を楽しく、 快適にするために、 どのようなソフトウェア (ツール) があれば良いかをチーム内で議論せよ。 まずは、 一週間で実装できるような簡単ものを考えよ。

各チームで 3 つ以上の案を出し、 以下をそれぞれのソフトウェア (ツール) について A4 1 ページでまとめよ。 できるだけ図を用いて表現することが望ましい。

  - ソフトウェア (ツール) の名称
  - 背景 (ソフトウェア (ツール) が必要とされる背景)
  - 動機 (ソフトウェア (ツール) 必要とされる理由)
  - 目的 (ソフトウェア (ツール) で何を実現したいか)

課題2

課題 1 で考えたソフトウェア (ツール) のそれぞれについて、 その仕様と実現方法 (実装の方針) を各チーム内で議論せよ。

  - 手法 (ソフトウェア (ツール) の実現方法)
  - 入出力 (何を入力すると、何が出力されるのか)

課題 1 で作成したシートに上記の内容を追記せよ。 できるだけ図を用いて表現することが望ましい。

課題3

課題 1 および課題 2 で考えたソフトウェア (ツール) から 1 つ選び、 領域実習用の Debian GNU/Linux 上で実装せよ。

最初は、 PoC (Proof of Concet) の実装から始めるとよい。

レポート課題 2021/10/27

「レポート課題 2021/10/13」と同じ。

ペアプログラミング (1)

実習の流れ

  1. 解説 (20 分)
  2. 実習 (65 分)
  3. 各チームの成果発表 (10 分)
  4. リフレクションシート記入 (5 分)

チーム分けの方針・態度目標

これまで (2021/10/13) と同じ

https://lsnl.jp/~ohsaki/lecture/training/2021/#8-2

内容目標

- ペアプログラミングとは何かを他人に説明できるようになる。

- ペアプログラミングの「コツ」を理解し、実践できるようになる。

- 簡単なプログラムを他のメンバとペアプログラミングで開発できるようになる。

課題

課題1

ペアプログラミングの実施手順を理解せよ。

  Pair Programming Tutorial
  http://www.compsci.hunter.cuny.edu/~sweiss/course_materials/csci135/csci136tutorials/pair_programming_tutorial.pdf

課題2

ペアプログラミングにふさわしい席配置、 ノート PC の配置を考え、 そのようにレイアウトせよ。

課題3

pair programming に関連する PDF ファイルを 10 個ダウンロードするプログラムをペアプログラミングで作成せよ。 検索エンジンで pair programming に関する PDF ファイルを検索するには、 例えば以下のようにすればよい。

  pair programming filetype:pdf
  https://duckduckgo.com/?q=pair+programming+filetype%3Apdf&ia=web

  fetch-pdfs.sh
  http://www.lsnl.jp/~ohsaki/lecture/training/2021/fetch-pdfs.sh

課題4

前回の「一週間で作ってみたいソフトウェア」で考案したソフトウェアをペアプログラミングで作成せよ。

レポート課題 2021/11/10

「レポート課題 2021/10/13」と同じ。

https://lsnl.jp/~ohsaki/lecture/training/2021/#8-6

リモートログイン、リモートデスクトップ

実習の流れ

  1. 解説 (20 分)
  2. 実習 (65 分)
  3. 各チームの成果発表 (10 分)
  4. リフレクションシート記入 (5 分)

チーム分けの方針・態度目標

これまで (2021/10/13) と同じ

https://lsnl.jp/~ohsaki/lecture/training/2021/#8-2

内容目標

- SSH クライアントを利用して、他のコンピュータにリモートログインできるようになる。

- VNC サーバおよびビューアを利用して、他のコンピュータのデスクトップを遠隔から操作できるようになる。

- 作りたいソフトウェア (一週間くらいでできそうなもの) を考案し、そのソフトウェアのコア部分を切り出せるようになる。

- SSH や VNC を活用したペアプログラミングが実践できるようになる。

課題

課題 1

SSH (Secure Shell) を利用して、 他のメンバの PC にリモートログインできるようになる。

  (リモートログインされる側)
  remote$ ip a
  1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
      link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
      inet 127.0.0.1/8 scope host lo
         valid_lft forever preferred_lft forever
  38: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
      link/ether 2c:8d:**:**:** brd ff:ff:ff:ff:ff:ff
      altname wlp0s20f3
      inet 192.168.0.33/24 brd 192.168.0.255 scope global dynamic wlan0
         valid_lft 171214sec preferred_lft 171214sec
  IP アドレス (上の例では 192.168.0.33) を覚えておく。

  (リモートログインする側)
  local$ ssh ohsaki@192.168.0.33

課題 2

VNC (Virtual Network Computing) を利用して、 他のメンバの PC のデスクトップをリモート操作できるようにせよ。

  $ sudo apt install xtightvncviewer x11vnc

  (操作される側)
  remote$ x11vnc -storepasswd
  Enter VNC password: *******
  Verify password: ********
  Write password to /home/ohsaki/.vnc/passwd?  [y]/n  
  Password written to: /home/ohsaki/.vnc/passwd

  remote$ x11vnc -rfbauth ~/.vnc/passwd
        :
        :
  The VNC desktop is:      lesser:0
        :
        :
  上記のディスプレイ番号 (上の例では 0) を覚えておく。

  (操作する側)
  IP アドレスとディスプレイ番号を指定して、VNC ビューアを起動
  local$ vncviewer -fullscreen -x11cursor 192.168.0.33:0
  F8 → Quit viewer で終了できる。

課題 3

作りたいソフトウェア (一週間くらいでできそうなもの) を一つ選び、 そのソフトウェアのコアとなる部分を切り出せ。 コアとなるソフトウェアの入力・出力を自然言語や図を用いて表現せよ。

例えば、 作りたいソフトウェアが「お絵描きツール」であれば、 コアとなる部分の例は「ウィンドウを作成して、 (あらかじめ) 指定した座標に点を打つこと」が挙げられる。

作りたいソフトウェアが「LUNA への自動ログイン」であれば、 コアとなる部分の例は「パスワード入力を選択し、 そこに指定した文字列を入力すること」が挙げられる。

課題 4

課題 3 で挙げた「コアとなる部分のソフトウェア」をペアプログラミングで実装せよ。 ただし、 ペアプログラミングでは、 1 台のコンピュータを交互に操作するのではなく、 (コンピュータの所有者以外が操作する場合は) SSH や VNC を活用してリモート操作せよ。

レポート課題 2021/11/17

「レポート課題 2021/10/13」と同じ。

https://lsnl.jp/~ohsaki/lecture/training/2021/#8-6

ペアプログラミング (2)

実習の流れ

  1. 解説 (20 分)
  2. 実習 (65 分)
  3. 各チームの成果発表 (10 分)
  4. リフレクションシート記入 (5 分)

チーム分けの方針・態度目標

これまで (2021/10/13) と同じ

https://lsnl.jp/~ohsaki/lecture/training/2021/#8-2

内容目標

- SSH や VNC を活用したペアプログラミングが実践できるようになる。

- 作りたいソフトウェア (一週間くらいでできそうなもの) を考案し、そのソフトウェアのコア部分を切り出せるようになる。

- 作りたいソフトウェアのコア部分をペアプログラミングで開発できるようになる。

課題

課題 1

~/lib/emacs/py-mode.el に以下のパッチを当てよ。

  バッファの 1 行目で Enter を押すと固まる不具合
  https://lsnl.jp/~ohsaki/lecture/netcompx/2021/#19-6

課題 2

2 x 2 の正方行列 A および B の積を計算する Python プログラムをペアプログラミングで作成せよ。 行列計算のためのモジュールやパッケージは使用しないこと。

  プログラムのテンプレート prod-skel.py
  http://www.lsnl.jp/~ohsaki/lecture/training/2021/pp-2/prod-skel.py

課題 3

作りたいソフトウェア (一週間くらいでできそうなもの) を一つ選び、 そのソフトウェアのコアとなる部分を切り出せ。 コアとなるソフトウェアの入力・出力を自然言語や図を用いて表現せよ。

例えば、 作りたいソフトウェアが「お絵描きツール」であれば、 コアとなる部分の例は「ウィンドウを作成して、 (あらかじめ) 指定した座標に点を打つこと」が挙げられる。

作りたいソフトウェアが「LUNA への自動ログイン」であれば、 コアとなる部分の例は「パスワード入力を選択し、 そこに指定した文字列を入力すること」が挙げられる。

課題 4

課題 3 で挙げた「コアとなる部分のソフトウェア」をペアプログラミングで実装せよ。 ただし、 ペアプログラミングでは、 1 台のコンピュータを交互に操作するのではなく、 (コンピュータの所有者以外が操作する場合は) SSH や VNC を活用してリモート操作せよ。

レポート課題 2021/11/24

「レポート課題 2021/10/13」と同じ。

https://lsnl.jp/~ohsaki/lecture/training/2021/#8-6

X ウィンドウシステム、ペアプログラミング (3)

実習の流れ

  1. 解説 (20 分)
  2. 実習 (65 分)
  3. 各チームの成果発表 (10 分)
  4. リフレクションシート記入 (5 分)

チーム分けの方針・態度目標

これまで (2021/10/13) と同じ

https://lsnl.jp/~ohsaki/lecture/training/2021/#8-2

内容目標

- X ウィンドウシステムのクライアントをリモートの計算機に転送できるようになる

- X ウィンドウシステムのクライアントリモート転送を活用したペアプログラミングが実践できるようになる。

- 作りたいソフトウェアのコア部分をペアプログラミングで開発できるようになる。

課題

課題 1

ローカルの計算機で X ウィンドウシステムのクライアント (例: urxvt) を起動し、 リモートの計算機の X サーバ上に転送せよ。

  (リモート計算機)
  remote$ xhost +       ← すべての X クライアントの接続を許可 (危険!)
  remote$ ip a          ← IP アドレスを確認
  1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
      link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
      inet 127.0.0.1/8 scope host lo
         valid_lft forever preferred_lft forever
  38: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
      link/ether 2c:8d:**:**:** brd ff:ff:ff:ff:ff:ff
      altname wlp0s20f3
      inet 192.168.0.33/24 brd 192.168.0.255 scope global dynamic wlan0
         valid_lft 171214sec preferred_lft 171214sec
  IP アドレス (上の例では 192.168.0.33) を覚えておく。

  (ローカル計算機)
  local$ urxvt -display 192.168.0.33:0 &

課題 2

ローカル計算機のデスクトップの画面ダンプを取得せよ。 同様に、 リモート計算機のデスクトップの画面ダンプを取得せよ。

  local$ xwd -root >tmp         ← 画面ダンプを取得
  local$ xwud <tmp              ← 取得した画面ダンプを表示

  local$ xwd -root -display 192.168.0.33:0 >tmp ← リモート計算機の画面ダンプを取得
  local$ xwud <tmp                              ← 取得した画面ダンプを表示

課題 3

作りたいソフトウェア (一週間くらいでできそうなもの) を一つ選び、 そのソフトウェアのコアとなる部分を切り出せ。 コアとなるソフトウェアの入力・出力を自然言語や図を用いて表現せよ。

例えば、 作りたいソフトウェアが「お絵描きツール」であれば、 コアとなる部分の例は「ウィンドウを作成して、 (あらかじめ) 指定した座標に点を打つこと」が挙げられる。

作りたいソフトウェアが「LUNA への自動ログイン」であれば、 コアとなる部分の例は「パスワード入力を選択し、 そこに指定した文字列を入力すること」が挙げられる。

課題 4

課題 3 で挙げた「コアとなる部分のソフトウェア」をペアプログラミングで実装せよ。 ただし、 ペアプログラミングでは、 1 台のコンピュータを交互に操作するのではなく、 (コンピュータの所有者以外が操作する場合は) Emacs や urxvt 等の X クライアントをリモートに転送して操作せよ。

レポート課題 2021/12/01

「レポート課題 2021/10/13」と同じ。

https://lsnl.jp/~ohsaki/lecture/training/2021/#8-6

X ウィンドウシステム (2)、ランダムウォーク

実習の流れ

  1. 解説 (20 分)
  2. 実習 (65 分)
  3. 各チームの成果発表 (10 分)
  4. リフレクションシート記入 (5 分)

チーム分けの方針・態度目標

これまで (2021/10/13) と同じ

https://lsnl.jp/~ohsaki/lecture/training/2021/#8-2

内容目標

- X ウィンドウシステムのクライアントをリモートの計算機に転送できるようになる

- X ウィンドウシステムのクライアントリモート転送を活用したペアプログラミングが実践できるようになる

- 指定された条件のグラフを図示できるようになる。

- Python でグラフ上のランダムウォークのプログラムを作成できるようになる。

課題

課題 1

ローカルの計算機で X ウィンドウシステムのクライアント (例: urxvt) を起動し、 リモートの計算機の X サーバ上に転送せよ。

  (リモート計算機)
  remote$ xhost +       ← すべての X クライアントの接続を許可 (危険!)
  remote$ ip a          ← IP アドレスを確認
  1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
      link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
      inet 127.0.0.1/8 scope host lo
         valid_lft forever preferred_lft forever
  38: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
      link/ether 2c:8d:**:**:** brd ff:ff:ff:ff:ff:ff
      altname wlp0s20f3
      inet 192.168.0.33/24 brd 192.168.0.255 scope global dynamic wlan0
         valid_lft 171214sec preferred_lft 171214sec
  IP アドレス (上の例では 192.168.0.33) を覚えておく。

  (ローカル計算機)
  local$ urxvt -display 192.168.0.33:0 &

課題 2

ローカル計算機のデスクトップの画面ダンプを取得せよ。 同様に、 リモート計算機のデスクトップの画面ダンプを取得せよ。

  local$ xwd -root >tmp         ← 画面ダンプを取得
  local$ xwud <tmp              ← 取得した画面ダンプを表示

  local$ xwd -root -display 192.168.0.33:0 >tmp ← リモート計算機の画面ダンプを取得
  local$ xwud <tmp                              ← 取得した画面ダンプを表示

課題 3

10 ノード、 20 リンクの連結グラフを一つノートに図示せよ。 ノードには 0〜9 の識別子を付けること。

課題 4

課題 3 のグラフにおいて、 ノード 0 から離散ランダムウォークをシミュレートするプログラムをペアプログラミングで作成せよ。 スロットとそのスロットに訪問したノードを標準出力に書き出せ。

  http://www.lsnl.jp/~ohsaki/lecture/training/2021/rw-skel.py

レポート課題 2021/12/08

「レポート課題 2021/10/13」と同じ。

https://lsnl.jp/~ohsaki/lecture/training/2021/#8-6

疑問・質問

実習の流れ

  1. 疑問・質問への回答 (95 分)
  2. リフレクションシート記入 (5 分)

内容目標

- コンピュータ、プログラミング、ハードウェア、情報科学、大学・大学院、研究、キャリアなど、大学生活に関するあらゆる疑問に対して、少なくとも一つの「回答」を得る (もしくは回答がないことを知る)。

https://kwanseio365-my.sharepoint.com/:x:/g/personal/cta67712_nuc_kwansei_ac_jp/ET4F1suMo89IkuiBeVllliYBurDc_AXfkMdRkjjc_bGRFw?e=PkG7Cq

レポート課題 2021/12/15

なし

グラフ上のランダムウォーク (2)

実習の流れ

  1. 解説 (20 分)
  2. 実習 (65 分)
  3. 各チームの成果発表 (10 分)
  4. リフレクションシート記入 (5 分)

チーム分けの方針・態度目標

これまで (2021/10/13) と同じ

https://lsnl.jp/~ohsaki/lecture/training/2021/#8-2

内容目標

- グラフ上のランダムウォークを手作業でシミュレートできるようになる。

- ランダムウォークの平均被覆時間の定義を理解し、自分で計算できるようになる。

- ランダムウォークに向く/向かないグラフはどのようなものかについての仮説を立てられるようになる。

- 自身が立てた仮説の確からしかを計算機シミュレーションによって調査できるようになる。

課題

課題 1

以下のグラフ (7 ノード、 7 リンク) で、 ノード 1 から開始する単純ランダムウォークを手でシミュレートせよ。 すべてのノードを 1 回以上訪問するまでに要する時間 (被覆時間、 単位はステップ) を求めよ。

      1       5
     / \     /
    2 - 3 - 4 - 6
             \  
              7

課題 2

メンバそれぞれが求めた被覆時間を集計し、 平均被覆時間を求めよ。

課題 3

7 ノード、 7 リンクのグラフで、 ノード 1 から開始する単純ランダムウォークの平均被覆時間が最小および最大となるグラフの構造を予想せよ。

課題 4

課題 3 の予想の確からしかを、 計算機シミュレーションによって調査せよ。 例えば、 (1) 予想したグラフを含む複数のグラフを用意する、 (2) それぞれのグラフにおける平均被覆時間を複数回 (例えば 100 回) のシミュレーション実験により計測する、 (3) それぞれのグラフにおける平均被覆時間の大小関係を分析する、 といった方法が考えられる。

レポート課題 2021/12/22

「レポート課題 2021/10/13」と同じ。

https://lsnl.jp/~ohsaki/lecture/training/2021/#8-6

グラフ上のランダムウォーク (3)

実習の流れ・チーム分けの方針・態度目標

これまで (2021/10/27) と同じ

https://lsnl.jp/~ohsaki/lecture/training/2021/#10

内容目標

課題

課題 1

グラフ上のランダムウォークの被覆時間の n 次モーメントを解析的に求める一般的な手法 (general method) を理解し、 チームのメンバに説明せよ。

以下の論文の、 1 章および 3.0.1 節を読めば理解できる (はず)。

  Cover Times of Random Walks on Finite Graphs
  https://d31kydh6n6r5j5.cloudfront.net/uploads/sites/66/2019/04/cover_times.pdf

課題 2

以下の 2 種類のグラフ G_1 および G_2 (どちらも 4 ノード、 4 リンク) において、 ノード 1 から開始する単純ランダムウォークの平均被覆時間をそれぞれ C_1(G_1) および C_1(G_2) と表記する。 C_1(G_1) および C_1(G_2) がどの程度の値になるかを (特にこれらの大小関係に着目し) 予想せよ。

  グラフ G_1
   3 - 4
    \ /
     2
     |
     1

  グラフ G_2
      3
     / \
    2   4
     \ /
      1

課題 3

グラフ G_1 におけるノード 1 からの平均被覆時間 C_1(G_1) を general method で求めよ。

課題 4

グラフ G_2 におけるノード 1 からの平均被覆時間 C_1(G_2) を general method で求めよ。

レポート課題 2022/01/12

「レポート課題 2021/10/13」と同じ。

https://lsnl.jp/~ohsaki/lecture/training/2021/#8-6


Hiroyuki Ohsaki (ohsaki[atmark]lsnl.jp)