授業科目: システムプログラム (2単位)
System Program
対象:3・4学年
第1学期 曜・時:月2・3 担当教官: 新城靖、加藤和彦

週別授業計画

教材:

 プリントを配布する。WWWで教材を提示する。

概要:

   UnixのシステムコールやJavaのAPIを主な題材としてシステムプログラ ミング、ネットワーク・プログラミング、および、オブジェクト指向プログラ ミングについて講義する。計算機を用いた実習を課す。

学習・教育目標:

  1. 文字列、ファイル、時刻などの基本的ななオブジェクトを扱うことを扱えるようになる。
  2. プロセス生成、スレッド生成、シグナル等を題材として並行プログラミングの基礎を学ぶ。
  3. TCP/IP を用いたネットワーク通信を行うプログラムを作成できるようになる。
  4. スクリプト言語を用いてプログラムを作成できるようになる。
  5. World Wide Web の CGI の仕組みを理解する。

授業計画:

講義内容/理解すべき項目
1〜2 プロセスの概念、ライブラリとシステムコール
標準入出力、文字列操作、ファイル記述子、メモリマップ、時刻の扱い
3〜4 ネットワーク・プログラミング
TCP/IPの概念、ソケットAPI、プロトコルスタック、クライアントとサーバ
5 WWWプログラミングとアクセス制御
ファイルの属性、アクセス権、CGIの仕組み、Basic認証、IPアドレスによる制御
6 並行プログラミング基礎
排他制御問題,セマフォ,条件付きクリティカルリージョン,モニタ
7 Java言語における並行プログラミング機能
スレッド,同期型メソッド/ブロック,wait/notify/notifyAll
8 並行プログラミングのデザインパターン1
単一スレッド実行,条件付き同期,生産者-消費者,リーダ-ライタ型ロック
9 並行プログラミングのデザインパターン2
メッセージ毎スレッド,ワーカースレッド,Future,アクティブオブジェクト
10 スクリプト・プログラミング
Python言語:基本データ型,リスト型,辞書型,関数,入出力,オブジェクト指向,並行プログラミング

参考書等:

  1. 山口和紀, 古瀬一隆, 中村敦司, 新城 靖, 西山博泰, 林 謙一, 金谷英信, 鈴 木孝幸, 端山貴也: "新The UNIX Super Text 上・下", 技術評論社 (2003年3月25日). ISBN: 4774116823, 4774116831
  2. 結城 浩: "改訂版 Java言語プログラミングレッスン 上・下", ソフトバンクパブリッシング, (2003年10月). ISBN: 4797325151, 479732516X
  3. 結城 浩: "Java言語で学ぶデザインパターン入門 マルチスレッド編", ソフトバンクパブリッシング (2002年6月). ISBN: 4797319127
  4. Abraham Silberschatz and Peter Baer Galvin: Operating System Concepts, Addison-Wesley (2002).
  5. William Stallings: Operating Systems--Internals and Design Principles, Prentice-Hall (2000).
  6. Mark Lutz: Learning Python,2nd Ed., Oreilly & Associates Inc (2003).

予備知識・前提条件:

 データ構造とアルゴリズムに関する知識があることを前提とする。また、ソフトウェア構成論や機械語序論を受講していることが望ましい。

オフィスアワー:

 新城:木4・5 3F829/3E302
 加藤:月4・5 総合研究B棟B905/B923

成績評価:

 レポートにより評価を行う。基準を満たさなかったレポートは、再提出を求めることがある。毎回出席をとり、最終的な評価の際に考慮に入れる。

講義のホームページ:

 http://www.coins.tsukuba.ac.jp/~yas/coins/syspro-2004/

教官メールアドレス:

 新城:yas@is.tsukuba.ac.jp
 加藤:kato@is.tsukuba.ac.jp