科目コード | HI511 | ||||
科目名 | システムプログラミング(System Programming) | 単位数 | 2単位 | ||
対象学科 | 人間情報システム工学科 | 対象学年 | 5年 | 開講期間 | 通年 |
科目区分 | 専門応用科目 | 必修・選択 | 選択 | 履修/学修 | 学修 |
授業形式 | 講義 | 規定授業時数 | 60 | 実時間数 | 50 |
教員名(所属) | 藤井慶(人間情報システム工学科) | 教員室 | 3号棟2階 | ||
使用教科書 | 渡辺知恵美 「システムプログラミング入門―UNIXシステムコール、演習による理解」、サイエンス社 | ||||
参考書 | Robert Love 「Linuxシステムプログラミング」、オライリージャパン | ||||
科目の位置付けと関連科目 | 4年「オペレーティングシステム」との関連が深い。 | ||||
科目の概要 | オペレーティングシステムが提供する各種システムコールを用いたソフトウェア開発およびその開発手法について学ぶ。主開発環境はLinuxとC言語である。 | ||||
授業方針 | 講義と演習とを適宜切り替えながら授業を進める。 |
授業項目 | 時間 | 達成目標(習得すべき内容) |
システムプログラミングの基礎 | LinuxとC言語を用いてシステムプログラミングを行う際にmakeコマンドを用いたコンパイルおよびその開発環境を整備できる。 | |
高水準ファイル入出力 | テキストファイルの読み書きを行える。バイナリファイルの読み書きを行える。 | |
低水準ファイル入出力 | 低水準ファイル入出力を用いたファイルの読み書きを行える。バッファリングについて理解できる。 | |
ディレクトリ制御 | ディレクトリおよびファイルの情報を取得・変更できる。 | |
仮想アドレス空間 | 仮想アドレス空間において関数や変数がどのように配置されるか説明できる。 | |
メモリ管理 | 動的なメモリ確保およびそれを利用したプログラムを作成できる。スタックオーバーフロー、メモリリークについて説明できる。 | |
割り込み制御 | 割り込みの仕組みを理解し、各割り込みに反応するプログラムを実装できる。 | |
時間管理 | 秒単位、マイクロ秒単位、ナノ秒単位での時刻取得、スリープ、タイマーを利用できる。 | |
プロセス管理 | fork()を用いプロセスの生成、終了、親子プロセス間の同期を制御できる。 | |
共有メモリとセマフォ | 共有メモリを用いたプロセス間通信を行える。セマフォによる排他制御について理解できる。 | |
プロセス間通信 | パイプを用い親子プロセス間で通信できる。 | |
ソケット通信 | ソケットを用いコンピュータ間通信するプログラムを実装できる。 | |
スレッド | マルチスレッド、排他制御を用いたプログラムを実装できる。 |
評価方法及び総合評価 | レポートにより評価する。小テストを実施した場合は小テスト一回分を一通のレポートとみなして評価する。最終評価は各レポート評点の平均で求め、60%以上の得点率で合格とみなす。各レポートの提出期限には2種類あり、提出日が最初の期日を超えた場合提出遅れとして減点の上受理するが、後の期日を超えた場合はそのレポートを受理しない。 |
学習方法 | 各課題の実装が授業時間内に終わらなかった場合、自学学習の時間で終わらせること。 |
学生へのメッセージ | システムプログラミングは一般のアプリケーション開発に比べると一見地味で細かい話が多くなる。緻密に動作するプログラムを検討・開発するような場合に有効な事柄であるため、興味を持って取り組んで欲しい。 |
学修単位への対応 | 本科目は50分の授業に対して放課後・家庭で40分程度の自学学習が課せられます。 |
本校教育目標との対応 | JABEE学習教育目標との対応 |