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

週別授業計画

教材:

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

概要:

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

学習・教育目標:

  1. API (システムコールとライブラリ)を使ったプログラム作成法を学ぶ。
  2. マニュアルの読み方を身につける。
  3. 文字列、ファイル、時刻などの基本的ななオブジェクトを扱うことを扱えるようになる。
  4. プロセス生成やシグナルを題材として並行プログラミングの基礎を学ぶ。
  5. TCP/IP を用いたネットワーク通信を行うプログラムを作成できるようになる。
  6. スクリプト言語を用いたプログラムを作成できるようになる。
  7. World Wide Web の CGI の仕組みを理解する。

授業計画:

講義内容/理解すべき項目
第1週 計算機システムのソフトウェア構成、Unixにおけるプログラムの実行環境
ライブラリとシステムコール、マニュアルの読み方
コンパイルとリンク、デバッガ、makeコマンド
第2週 数値と文字の表現、ファイルのシーケンシャル・アクセス
数値の表現、文字列操作のライブラリ関数
ライブラリとシステムコールによるファイルの扱い、ストリーム、標準入出力
第3週 プロセスの概念、パイプ、メモリマップ
プロセスの生成、プロセスとプログラムの関係、パイプの生成
ファイル記述子、変数の番地、スタック、ヒープ
第4週 構造体の入出力、ディレクトリ、時刻の扱い
ファイルのランダムアクセス、メモリマップ式の入出力
可変長構造体のファイル中の表現、ディレクトリ役割と構造
時刻の表現、時刻の取得、時刻を操作するライブラリ関数
第5週 シグナル、属性、アクセス制御
周辺装置、入出力、ポーリング、割込み、ソフトウェア割込み
ファイルの属性、プロセスの属性、アクセス権
第6〜8週 ネットワーク・プログラミング
TCP/IPの概念、ソケットAPI、プロトコルスタック
TCP/IPのクライアントとサーバ
UDP/IPのクライアントとサーバ
第9週 WWWプログラミングとWWWにおけるアクセス制御
CGIの仕組み、SSIの仕組み、JavaScript、クロスサイトスクリプティング攻撃
Basic認証、IPアドレスによる制御、Cookie
第10週 スクリプト言語
スクリプト言語によるプログラミングの手法
Ruby、Python、Perl、または sh等によるプログラミング

参考書等:

 「C言語によるUNIXシステムプログラミング入門」(河野 清尊、オーム社)
 「The Unix Super Text 第2版」(山口和紀・古瀬一隆・中村敦司・新城 靖・西山博泰・林 謙一・金谷英信・鈴木孝幸・端山貴也、技術評論社)

予備知識・前提条件:

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

オフィスアワー:

 木4・5 3F829/3E302(新城)、3F911(追川)

成績評価:

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

講義のホームページ:

 http://www.coins.tsukuba.ac.jp/~syspro/2005/

教官メールアドレス:

 新城:yas@is.tsukuba.ac.jp
 追川:shui@cs.tsukuba.ac.jp