平成28年4月11日(月) 東京工科大学 コンピュータサイエンス学部 担当教員:亀田弘之 第2版 コンピュータサイエンス概論 2016 平成28年4月11日(月) 東京工科大学 コンピュータサイエンス学部 担当教員:亀田弘之
授業概要 コンピュータサイエンスの初学者を対象に、当該分 野からいくつか話題を取り上げ、コンピュータサイエン スの現状、社会的役割、面白さなどを知ってもらうとと もに、コンピュータサイエンスを若い学生諸君らが学ぶ ことの意義と喜びを学び取ってもらうことを目的とした 授業である。 この授業を学ぶことにより、コンピュータサイエンスと いう学問の概要を知るとともに、自らの今後の学びの 地図・目標を明確化して欲しい。
授業方法 講義とともに議論や演習を行う形式で授業を進める。 毎回少しずつプログラミングの話をするので、 PCは毎回持参すること。
履修上の注意 レポートとともに予習・復習がとても重要である。
準備学習 予習課題は授業の中で毎回指示する。 また、授業で学んだことを毎回まとめる作業を復習と して課する。 まとめる際の書式等は授業にて説明する。
成績評価方法・基準 クイズ(小テスト)の成績70% レポート評価30% 定期試験期間には試験をしません。
授業計画 第1回:プログラミングの楽しさ (21世紀の忍法使いアイテム=プログラミング言語を知る) 第2回:コンピュータサイエンスと法・倫理(知的財産権,さまざまな事例紹介) 第3回:コンピュータサイエンスと知能研究・ゲーム研究 (人工知能・機械学習・脳科学・認知科学などの魅力を知る) 第4回:コンピュータと情報ネットワークの仕組み (コンピュータとネットワークの仕組み・原理の基礎を知る) 第5回:クラウドコンピューティング (ビッグデータ(オープンデータ)やデータベースの基礎など) 第6回:ソフトウェア工学(ソフトウェアはどのようにして作られるのか, 開発の現場を覗いてみる。開発プロセス,プロジェクトマネジメントなど) 第7回:コンピュータサイエンスにおける計算の理論 (チューリングマシン,コンピュータサイエンス小史など) 第8回:コンピュータサイエンスの全容と将来を議論 (e-healthCare, e-learning, e-government等, 君は何を学ぶのか? なぜ学ぶのか? どうやって学ぶのか?)
到達目標 コンピュータサイエンスに関して以下のことが到達目標 である。 コンピュータサイエンスの社会的役割・意義を 理解し説明できる。 コンピュータサイエンスの社会的役割・意義を 理解し説明できる。 コンピュータサイエンスを学ぶ上での 重要な能力・資質を理解する。 コンピュータサイエンスの概要を説明できる。 将来のコース選択(案)を自力で作成し、 人にわかりやすく説明できる。
この授業の行動指針 明るく楽しく前向きの姿勢で、自ら進んで学ぶ。 (Learn positively, curiously and constantly! ) 他利的に行動する。 ( Behave altruisticly! ) 皆と積極的に討論する。 ( Discuss together aggressively! ) 後回しにしない。 (Don’t procrastinate! Do right now what you should be doing now. )
データサイエンスの可能性
コンピュータサイエンスが地球と生命を救う!
コンピュータサイエンスの現状
Youtubeを参照のこと。 http://www.youtube.com/watch?v=WNccLBzR_I4 (Research Matters - Carolyn McGregor) by IBM http://www.youtube.com/watch?v=APdZHNIJDnU (Rio de Janeiro City Operation Center ) by IBM https://www.youtube.com/watch?v=hKIGKlmKBag (【KOMATSU】スマートコンストラクション コンセプト映像) Computer science が社会で役立った実例。 皆さんはcomputer science の知識・技術を何に役立てますか?
ー21世紀の魔法(忍術)使いの道具 プログラミング言語を知るー 第1回:プログラミングの楽しさ ー21世紀の魔法(忍術)使いの道具 プログラミング言語を知るー
質問 プログラミングはなぜ重要?
質問 プログラミングはなぜ重要? コンピュータはあくまでも機械。(Computer is a machie.) 指示がないと動作できない。 質問 プログラミングはなぜ重要? コンピュータはあくまでも機械。(Computer is a machie.) 指示がないと動作できない。 指示は、言葉(言語)で記述する。 そこで、 機械(computer)への動作指示書(プログラム)を 記述(プログラミング)しなければならない。 (注)日本語や英語(自然言語)を使って指示書が書ければ良いの だが、コンピュータは自然言語を理解しないなどの理由により、コン ピュータが理解できる言語(プログラミング言語)で人間が指示書 (プログラム)を書くことになっている。 どうにかできないのか?
いろいろなプログラミング言語 機械語(machine language) アセンブリ言語(assembly language) Erlang 機械語(machine language) アセンブリ言語(assembly language) Fortran言語(科学技術計算向き) Cobol言語(事務処理向き) Pascal言語(教育向き) C言語,C++言語 Java言語 Ruby,Python Processing など Haskell HTML OCaml Scala XML HTML Lisp JavaScript F# Prolog Swift ADA Objective-C
プログラミングのデモンストレーション Java言語系(Greenfoot, Alice) Python言語 など
参考サイト Greenfoot.org Code.org など
授業資料のページ http://kameken.clique.jp/
自宅課題(home work) 授業のWebページを開いてみる。 今日の学習内容を箇条書きにしてまとめる。 (注)いずれも、提出等の必要はない。やってきてくれればOK。