Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

20100615 フレッシュマンセミナー

2010年6月15日に実施した、岡山県立大学情報工学部情報通信工学科1年次生向けの講義「フレッシュマンセミナー」の講演スライド

Related Books

Free with a 30 day trial from Scribd

See all
  • Be the first to comment

  • Be the first to like this

20100615 フレッシュマンセミナー

  1. 1. フレッシュマン セミナー 国島丈生(t.kunishi@gmail.com) 2010-06-16
  2. 2. 自己紹介 ✦ 名前 Takeo Kunishima/国島丈生 ✦ 現在地 Akashi, Hyogo, Japan ✦ Web http://kunishi.blogspot.com/ ✦ 自己紹介 情報科学分野の大学教員。専門はデータ工学、文 書工学、マークアップ言語、Webなど。総社まで遠距離通勤 中。BSD/Mac/Ruby/ML/REST/lifelog/iPod/iPhone/合唱/弦楽 四重奏/ルネッサンス音楽/フェルメール/女性ジャズボーカル/ UKロック/北欧デザイン/写真/組版/タイポグラフィ/中世文学 Twitter (@kunishi) のプロフィールより
  3. 3. 経歴 1985-1994 1994-1997 1997-2010
  4. 4. 担当講義 ✦ 情報通信工学実験IB(2年) ✦ プログラミング言語Ⅱ(2年) ✦ コンパイラ(3年) ✦ プログラミング言語Ⅲ(3年) ✦ 形式言語理論(修士1年)
  5. 5. ソフトに興味あり ✦ データベース ✦ テキスト処理、文書(XML)処理 ✦ プログラミング言語 ✦ Web技術 ✦ オートマトン理論
  6. 6. kunishi on Books
  7. 7. kunishi on the web
  8. 8. 今日の内容 ✦ 高校・大学時代の体験談 ✦ 高校数学から情報科学へ ✦ そしてプログラミングへ
  9. 9. 高校・大学時代の 体験談
  10. 10. 高校時代は ✦ コンピュータとは無縁 ✦ 数学が好き ✦ 物理・化学は… (>_<) ✦ 英語や国語の方が得意だったかも
  11. 11. パソコンは高嶺の花 ✦ CPU 8MHz ✦ HDDなし(FDのみ) ✦ Windows なし ✦ 353,000円(今だと50万円 以上?) NEC PC-9801VX01 (1987年)
  12. 12. 関数電卓? ✦ ポケットコンピュータ(ポ ケコン) ✦ メモリ2~16KB ✦ ディスクなし ✦ BASICのプログラムが動い た
  13. 13. Internet 黎明期 ✦ 1984 東大、東工大、慶応大 ✦ 1988 大学・企業の研究所間 ✦ 1992以降 個人へ普及 ✦ 1990年代 携帯電話登場
  14. 14. 数学を生かしたかった ✦ 当時の京大では選択肢は3つ ✦ 理学部数学科 ✦ 工学部数理工学科 ✦ 工学部情報工学科
  15. 15. どう選んだ? ✦ 理学部数学科→就職に困るらしい ✦ 数理工学科 vs. 情報工学科 ✦ 違いがさっぱり分からない ✦ 偏差値の高いほう(情報工学科)を選択
  16. 16. 1985年 京都大学工学部情報工学科入学
  17. 17. 誤 算
  18. 18. 誤算その1 ✦ 物理が結構必要だった…
  19. 19. 誤算その2 ✦ 大学の数学は難しかった…
  20. 20. 誤算その3 ✦ 専門では微積分はあ まり使わなかった ✦ 「独特」の理論 ✦ ブール代数etc. ✦ パズルに近い
  21. 21. 結果オーライ? ✦ もともとパズルは好き ✦ 数学よりプログラムの方が合っていたらしい
  22. 22. 研究室配属をどうしよう ✦ 全部で6研究室…だったのだが ✦ 4年生になる前にソフト系2研究室の教授が退官→ 研究室配属なし ✦ 残り4研究室は:ハードウェア、論理回路、OS、 人工知能 ✦ 一番ソフト寄りなのは人工知能だが、教授と の相性がイマイチ
  23. 23. どう選んだ? ✦ 教授との相性が一番良かった論理回路講座を選択 ✦ 研究室選びの際、教員との相性は割と大事で す ✦ しかし、やはりソフトへの拘りはありまして… ✦ 講座の中でもソフト寄りのテーマ(グラフィッ クス)を選択
  24. 24. 卒業研究でやったこと C, C++で1,500行程度のプログラミング
  25. 25. 念のため ✦ プログラミングの達人では決してない ✦ 同期にももっと凄いのがいた ✦ 皆さんの中の凄腕プログラマのほうが実力 は私より上のはず
  26. 26. ところで、就職は? ✦ 結局、一度も就職活動はしなかった ✦ どういう企業がいいのか、学生時代はイメージが 湧かなかった ✦ Webはまだなかった→Web関連の企業もなかった ✦ 大学教員になって後悔してる? ✦ 少なくとも、学生さんの教育は割と合っていると 思っているので、後悔はしてません
  27. 27. 高校数学から 情報工学へ
  28. 28. 情報工学の二面性 ハードウェアを作る ソフトウェアを作る 物理 連続系の数学 離散系の 数学
  29. 29. 連続系 vs 離散系 連続した数 (実数) 連続しない数 (整数, 0/1 etc.) 微分・積分 集合 剰余系 場合の数 数列 数学的帰納法 物理現象 情報数学
  30. 30. 情報科学への橋渡し
  31. 31. ケーニヒスベルクの橋 ✦ 図の7つの橋を各1度ずつ 通って元の場所に戻って くることができるか。た だし、同じ橋を2度以上 通ってはならない。 ✦ 関連:グラフ理論 参考:増田直紀「『複雑ネットワーク』とは何か」(講談社ブルーバックス)
  32. 32. ハノイの塔 ✦ 台の上に3本の棒A, B, Cがあり、Aに n 枚の 円盤がはまっている。円盤は下ほど半径が大 きい。次のルールを満たしながら、円盤をす べてBに移すのに必要な手数を n で表せ。 ✦ 一度に一枚の円盤しか移動できない ✦ 途中で円盤の大小を逆にしてはいけない ✦ 関連:再帰
  33. 33. 例:定積分 ✦ 人間は不定積分から計算 ⇤ 1 0 x2 dx = � 1 3 x3 ⇥1 0 = 1 3
  34. 34. 例:定積分 ✦ コンピュータは不定積分のよう な式変形は苦手 ✦ 区分求積法 n = 1000 で 0.3338335 ⌃ 1 0 x2 dx ⇥ n⇧ k=1 ⇤� k n ⇥2 · 1 n ⌅ = 1 n3 n⇧ k=1 k2
  35. 35. プログラムの例 S = 0;
 for (k = 1; k <= n; k ++) {
 S = S + k * k;
 }
 S = S / (n * n * n); ⌃ 1 0 x2 dx ⇥ n⇧ k=1 ⇤� k n ⇥2 · 1 n ⌅ = 1 n3 n⇧ k=1 k2
  36. 36. フィボナッチ数列 F0 = 1, F1 = 1, Fn+2 = Fn+1 + Fn 1, 1, 2, 3, 5, 8, 13, 21, 34, …
 だが一般項は複雑 Fn = 1 ⇥ 5 ⇤� 1 + ⇥ 5 2 ⇥n + � 1 − ⇥ 5 2 ⇥n⌅
  37. 37. プログラム=漸化式 int F(int n) { if (n == 0) return 1; else if (n == 1) return 1; else { return F(n-1)+F(n-2); } } F0 = 1, F1 = 1, Fn+2 = Fn+1 + Fn
  38. 38. 法則を見つける ✦ 今日は日曜日です。100日後は何曜日? ✦ 1日後は月、2日後は火、…100日後は火
  39. 39. 法則を見つけよ ✦ 今日は日曜日。1億日後は何曜日? ✦ とても数えられません ✦ 7の倍数日後はいつも日曜日。
 1億÷7 = 14285714 あまり 2。∴火曜日
  40. 40. 法則を見つけよ ✦ 今日は日曜日。10100日後は何曜日? ✦ 10100なんて計算できない ✦ 10100を7で割った余りも計算できない ✦ 10nを7で割った余りを、n=1, 2, …で計算 してみよう
  41. 41. すると ✦ 100 % 7 = 1, 101 % 7 = 3, 102 % 7 = 2, 
 103 % 7 = 6, 104 % 7 = 4, 105 % 7 = 5, 
 106 % 7 = 1, 107 % 7 = 3, … ✦ %:剰余を表す演算子 ✦ 周期6で同じ数が出る(1, 3, 2, 6, 4, 5) ✦ 100 % 6 = 4 ∴木曜日
  42. 42. プログラムにすると void nannyoubi(int n) { if (n%6 == 0) { printf(“月曜日¥n”); } else if (n%6 == 1) { printf(“水曜日¥n”); } else if (n%6 ==2) { /* 以下省略 */ }
  43. 43. そして プログラミングへ
  44. 44. 前提として ✦ 人それぞれ向き不向きはあります ✦ 入試をくぐり抜けてこの場にいる皆さんな ら ✦ プログラムが書けるようになる素地が一定 程度あるはずです
  45. 45. 真似を侮るなかれ ✦ インプットなくしてアウトプットなし ✦ まずは他人のコードの真似から ✦ 単なるコピペにとどまるなかれ ✦ 人のプログラムを読んで引出しを増やせ ✦ 読む≠字面を追う、読む=とことん理解する ✦ 少し難しいものを、興味の持てるものを
  46. 46. 本を読もう ✦ プログラム=プログラミング言語で書かれた文章 ✦ 論理の正しさ+分かりやすさ・読みやすさ ✦ 経験に基づく仮説 ✦ 国語力のある人はプログラミング能力も高い ✦ 文章に触れる機会を増やしてください(ジャンル は問いません)
  47. 47. Cと相性が悪くても ✦ 世の中には無数にプログラミング言語があ る ✦ 当然、好き嫌いも相性もあります ✦ プログラミングの根は共通 ✦ 言語を一つマスターすれば、他の言語に も勘が働くようになります
  48. 48. ここだけの話ですが ✦ 正直、Cはそんなに達人ではありません ✦ どっちかというと、めんどくさくて、なるべくな ら使いたくない言語です ^^; ✦ でもまあ、ポインタは知っておかねばならないね ✦ 本当にプログラミングが好きになったのは、スクリ プト言語や関数型言語を知ってからです ✦ 私の講義で一部扱います(Standard ML, Ruby)
  49. 49. プログラミング学習 ≒ 語学学習
  50. 50. 1章が重要
  51. 51. 諸君の健闘を祈る
  52. 52. One More Thing... ※ Googleで “One more thing”で検索してみましょう
  53. 53. 何が役立つかは 神のみぞ知る
  54. 54. 興味は発散 有限オートマトン理論 スクリプト言語による プログラミング 趣味のWebページ作成 データ工学 関数型 プログラミング言語 デザイン
  55. 55. すべてはWebに収斂した 有限オートマトン理論 スクリプト言語による プログラミング 趣味のWebページ作成 データ工学 関数型 プログラミング言語 デザイン
  56. 56. 何が役立つかは 神のみぞ知る
  57. 57. 諸君の健闘を祈る
  58. 58. レポート課題 ✦ 以下についてA4用紙1~2枚程度にまとめ、6/ 22(火)17:00までに提出せよ。(提出場所: 2610室) ✦ ケーニヒスベルクの橋、ハノイの塔(最低 限どちらか一方、解に至る経過も含めて) ✦ 今日の講義の感想

×