KGC


慶應義塾大学湘南藤沢キャンパス
授業概要(シラバス)


プログラミング方法論 (増井 俊之

    2014年度春学期 月曜日2時限
    科目コード: B6099 / 2単位
    カテゴリ: 8.基盤科目-共通科目(学部)


1. 主題と目標/授業の手法など

    汎用言語でプログラミングができる学生を対象とし、講義を行なう。
    プログラミングという行為について広い視野から概観しつつ、より進んだプログラミング方法論を実践的に学ぶ。計算機の発明から現在に至るまで、計算機のプログラミングはテキストベースのプログラム言語と処理系を用いる方法が主流であったが、誰もがどこでもネットワークや計算機を利用できるユビキタスコンピューティングの世界が実現しつつある現在、プログラミングの概念は拡大し、様々な形態のプログラミングが万人のものになりつつある。計算機科学として扱われてきた従来のプログラミングパラダイムだけでなく、実世界の様々な状況におけるプログラミングについて考える


2. 教材・参考文献

    推薦図書: 「ディジタル作法 −カーニハン先生の「情報」教室」
    Brian W. Kernighan 著, 久野靖 訳
    ISBN: 4274069095


3. 授業計画

    第1回 ガイダンス
    本講義で扱う「プログラミング」の範囲を定義し、講義の概要を解説する。テキストベースのプログラミング言語を利用する一般的なプログラミングから、実世界でのプログラミング/ビジュアルプログラミングまで幅広いプログラミング活動を対象とする。

    第2回 文芸的プログラミング
    充分な知的作業の結果としてプログラムを作成する場合、最終的なソースコードのみでその意図を表現することはできないため、プログラムの意味するところを何らかの文書としてプログラムとは記録しておく必要がある。プログラムの開発と文章の作成を並行して行なうことにより、両者が常に整合がとれるようにする「文芸的」プログラミング手法を解説する。

    第3回 予測/例示プログラミング
    どのように計算を行なうのかを指示するかわりに、どのような結果が得られるべきかをユーザが指示し、その方法をシステムに推論させることによってプログラミングを行なう「例示プログラミング」の概念を紹介し、データ圧縮とも関係が深い予測システムとの関連を解説する。

    第4回 文字列プログラミング
    文字列の検索アルゴリズムやパタンマッチアルゴリズムの利用法と実装法及び、パタンマッチを利用者してパズルやゲームを解く手法について解説する。文字列の変換操作にもとづくマクロプログラミングについても解説する。また、ゲームなどに必要な探索手法についても解説する。

    第5回 状態遷移プログラミング
    複雑な動作をするシステムや機器は状態遷移機械として表現できることが多い。様々なイベントに対応する状態遷移を簡潔に記述し、プログラムとして表現する技法について述べる。

    第6回 並列プログラミング
    多くのプログラミングシステムは並列実行機能をサポートしておらず、逐次的な計算しか行なうことができないが、複数の事象が同時に起こる場合があったり、システムが本質的に複数の対象を扱わなければならないような場合に必要となる並列プログラミングの技法について解説する。

    第7回 ビジュアルプログラミング
    図形を操作する場合や並列動作を扱う場合など、プログラムで扱う対象や操作を図形的に表現することにより、テキストベースのプログラミングより作成や理解が簡単になることがある。このような「ビジュアルプログラミング」の技法について述べる。

    第8回 インターネットプログラミング
    インターネットやWeb上の情報は、単に閲覧するものではなく積極的に加工し活用する時代になっている。ネット上の情報を効果的に活用するためのプログラミング手法について述べる。

    第9回 実世界プログラミング
    ユビキタスコンピューティングで利用される計算機やセンサがインターネットによって結合された現在、これらを有機的に関連づける全世界的なプログラミングが可能になってきた。このような「実世界プログラミング」の手法と効果について述べる。

    第10回 進化的プログラミング
    最適なパラメタを計算によって求めることができないような場合、遺伝的アルゴリズムのような進化的アルゴリズムを用いることがあるが、進化的なアルゴリズムを用いてプログラムを自動生成しようとする方法について述べる。

    第11回 ユーザインタフェースのプログラミング
    ユーザとの対話が必要なシステムでは、様々なユーザの要求や操作ミスに対応必要があるためプログラミングが非常に複雑になりやすい。ユーザをシステム の一部と考え、柔軟な対話性を実現するためのプログラミング手法について述べる。

    第12回 エクストリームプログラミング
    品質の良いソフトウェアを作成するためには、実装と並行して充分なテストを行ないながら開発するテストファーストプログラミング、 ふたり一組で作業を行なうペアプログラミングといった手法が有効であると考えられている。このような手法を統合した、エクストリームプログラミングと呼ばれる開発手法について解説する。

    第13回 エンドユーザプログラミング
    計算機の専門家でない人間でも、実世界の機器の制御を自動化したくなる場合がある。このような目的のため、明示的にプログラミングを行なわずに目標を達成する例示プログラミングの技法を利用することができるが、計算機に詳しくないユーザでも簡単なプログラミングができるようにするという方法も考えられる。このような「エンドユーザプログラミング」を可能にするための技術について解説する。

    第14回 プログラムレビュー
    よく書けたと思うプログラムを履修者の前で発表し、レビューや感想を交換する


4. 提出課題・試験・成績評価の方法など

    授業の途中もしくは終了後に何度かプログラムを作成して提出してもらい、その内容で成績を判定する。期末試験は行なわないが、出席して概念を理解したかどうかを評価する。


5. 履修上の注意・その他

    なし


6. 前提科目

    計算機プログラミングに対する基礎知識があり、少なくともひとつのプログラミング言語を使って「1000までの素数をすべて計算する」程度のプログラムをすぐに作れること


7. 履修条件

    C, Java, JavaScript, Perl, Rubyのようなテキストベース汎用言語のプログラミングがある程度できること


8. 旧科目との関係

    なし


9. 授業URL


2014-01-15 10:21:26.372577


Powered by SOI Copyright(c) 2002-2019, Keio University Shonan Fujisawa Campus. All rights reserved.
このサイトの著作権について