KGC


Keio University Shonan Fujisawa Campus
Course Summary (Syllabus)


PROGRAMMING METHODOLOGIES (Toshiyuki Masui

    Semester : 2014 Spring
    Code : B6099 / 2 Credits


1. Objectives/Teaching method

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


2. Materials/Reading List

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


3. SCHEDULE

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

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

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

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

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

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

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

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

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

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

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

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

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

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


4. Assignments/Examination/Grad Eval.

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


5. Special Note

    -


6. Prerequisit / Related courses

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


7. Conditions to take this course

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


8. Relation with past courses

    -


9. Course URL


2014-01-15 10:21:26.372577


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