近年の実用的なアプリケーションプログラムは、クラウド技術の発達も手伝って、サーバや他端末との通信を行うことが当たり前のようになっており、その基礎技術を身に着けておくことはさまざまなアプリケーション開発において役に立つと考えられる。本授業ではソケット通信に着目をする。授業の前半では, 近年よく用いられているPythonを習得しつつ、ソケットプログラミングの基礎を学び、ソケットの概要や、通信プログラムの挙動の理解を目標とする。後半ではC言語を用いてより細かな挙動を確認し、適切な知識を習得することを目標とする。
|
|
週 |
授業内容 |
週ごとの到達目標 |
前期 |
1stQ |
1週 |
Pythonの作法 |
Pythonの実行およびインタラクティブモードで簡単な四則演算等を行うことができる
|
2週 |
Pythonでプログラミング1 |
Pythonのソースコードをファイルに保存して実行することができる
|
3週 |
Pythonでプログラミング2 |
Pythonの関数や変数の利用ができる
|
4週 |
OSI参照モデルとTCP/IP |
OSI参照モデルとTCP/IPモデルについて説明ができる
|
5週 |
IPアドレスの構成とホスト名からの変換 |
IPアドレスのクラスの概念およびCIDR形式について理解する。Pythonを使って名前解決の簡易アプリケーションを作成できる。
|
6週 |
TCPサーバプログラムの作成と動作確認 |
Pythonを使ってTCP通信を行うサーバプログラムを作成することができる。
|
7週 |
TCPクライアントプログラムの作成と動作確認 |
Pythonを使ってTCP通信を行うクライアントプログラムを作成することができる
|
8週 |
TCPサーバプログラムのマルチスレッド化 |
Pythonを使ったTCP通信を行うサーバプログラムをマルチスレッドで作成することができる。
|
2ndQ |
9週 |
TCPサーバプログラムのマルチプロセス化 |
Pythonを使ったTCP通信を行うサーバプログラムをマルチプロセスで作成することができる。
|
10週 |
マルチスレッドとマルチプロセスの違い(Pythonの場合) |
マルチスレッドとマルチプロセスの違いを知る。またPythonを用いた場合はどちらが良いかを説明することができる。
|
11週 |
[演習]簡易ゲームクライアントプログラムの作成1 |
これまでに学んだ知識を応用して、既存のゲームサーバプログラムと通信可能なプログラムを作成できる。
|
12週 |
HTTPリクエストとHTTPレスポンス |
これまでに学んだ知識を応用して、既存のゲームサーバプログラムと通信可能なプログラムを作成できる。
|
13週 |
Webサーバプログラムの作成 |
HTTPリクエストとHTTPレスポンスの構成や意味がわかる
|
14週 |
Webサーバプログラムの作成と動作確認 |
作成したWebサーバプログラムを実行してブラウザからアクセスし、その動作を確認することができる
|
15週 |
Webクライアントプログラムの作成と動作確認 |
簡易的なテキストブラウザを作成し、HTTPプロトコルで通信可能なクライアントプログラムを作成することができる。
|
16週 |
期末試験 |
|
後期 |
3rdQ |
1週 |
UDPサーバ・クライアントの作成と動作確認 |
TCP通信とUDP通信の違いをプログラムを用いた実験で確認できる
|
2週 |
C言語を用いたTCPサーバプログラムの作成 |
C言語を使ってTCP通信を行うサーバプログラムを作成することができる
|
3週 |
C言語を用いたTCPクライアントプログラムの作成 |
C言語を使ってTCP通信を行うクライアントプログラムを作成することができる
|
4週 |
TCPサーバプログラムのマルチプロセス化1 |
マルチプロセスのTCPサーバプログラムをC言語で作成することができる
|
5週 |
TCPサーバプログラムのマルチプロセス化2 |
マルチプロセスのTCPサーバプログラムをC言語で作成することができる
|
6週 |
中間試験 |
|
7週 |
ゾンビプロセス |
マルチプロセスプログラムがゾンビプロセスを残さないようにする方法を理解することができる
|
8週 |
TCPサーバプログラムのマルチスレッド化 |
マルチスレッドのTCPサーバプログラムをC言語で作成することができる
|
4thQ |
9週 |
データのエンコード |
TCP通信でやり取りをするデータのエンコードができる
|
10週 |
バイトオーダ |
バイトオーダについてビッグエンディアンとリトルエンディアンの違いを説明することができる
|
11週 |
パディング |
パディングによて変数のサイズが変わる理由を説明することができる
|
12週 |
TCP通信を用いた複数人のチャットシステムの作成1 |
TCP通信を用いて複数人でチャットができるシステムを作ることができる
|
13週 |
TCP通信を用いた複数人のチャットシステムの作成2 |
TCP通信を用いて複数人でチャットができるシステムを作ることができる
|
14週 |
TCP通信を用いた複数人のチャットシステムの作成3 |
TCP通信を用いて複数人でチャットができるシステムを作ることができる
|
15週 |
TCP通信を用いた複数人のチャットシステムの作成4 |
TCP通信を用いて複数人でチャットができるシステムを作ることができる
|
16週 |
期末試験 |
|
分類 | 分野 | 学習内容 | 学習内容の到達目標 | 到達レベル | 授業週 |
専門的能力 | 分野別の専門工学 | 情報系分野 | プログラミング | 要求仕様に従って、いずれかの手法により動作するプログラムを設計することができる。 | 3 | 前10,前11,前13,前14,前15,後1,後2,後3,後12,後13,後14,後15 |
要求仕様に従って、いずれかの手法により動作するプログラムを実装することができる。 | 3 | 前10,前11,前13,前14,前15,後1,後2,後3,後12,後13,後14,後15 |
情報通信ネットワーク | プロトコルの概念を説明できる。 | 4 | 前2,前3,前4,前5,前6,前12,前13,前14,前15 |
プロトコルの階層化の概念や利点を説明できる。 | 4 | 前2,前3,前4,前5,前6,前12,前13,前14,前15 |
ローカルエリアネットワークの概念を説明できる。 | 4 | 前4,前5 |
インターネットの概念を説明できる。 | 4 | 前4,前5 |
TCP/IPの4階層について、各層の役割を説明でき、各層に関係する具体的かつ標準的な規約や技術を説明できる。 | 4 | 前2,前3,前4,前5,前6,前7,後2 |
情報通信ネットワークを利用したアプリケーションの作成方法を説明できる。 | 4 | 前11,後13,後14 |
基本的なルーティング技術について説明できる。 | 4 | 前4,後9,後13,後14 |
基本的なフィルタリング技術について説明できる。 | 4 | 前4,後9,後13,後14 |
分野別の工学実験・実習能力 | 情報系分野【実験・実習能力】 | 情報系【実験・実習】 | 与えられた問題に対してそれを解決するためのソースプログラムを、標準的な開発ツールや開発環境を利用して記述できる。 | 3 | 前2,前3,前8,前9,前11,前13,前14,前15,後2,後3,後12,後13,後14,後15 |
ソフトウェア生成に利用される標準的なツールや環境を使い、ソースプログラムをロードモジュールに変換して実行できる。 | 3 | 前1,前2,前3,前8,前9,前11,前13,前14,前15,後2,後3,後12,後13,後14,後15 |
ソフトウェア開発の現場において標準的とされるツールを使い、生成したロードモジュールの動作を確認できる。 | 3 | 前8,前9,前11,前13,前14,前15,後2,後3,後12,後13,後14,後15 |
フローチャートなどを用いて、作成するプログラムの設計図を作成することができる。 | 3 | 前8,前9,前11,前13,前14,前15,後2,後3,後12,後13,後14,後15 |
問題を解決するために、与えられたアルゴリズムを用いてソースプログラムを記述し、得られた実行結果を確認できる。 | 3 | 前8,前9,前11,前13,前14,前15,後2,後3,後12,後13,後14,後15 |
標準的な開発ツールを用いてプログラミングするための開発環境構築ができる。 | 3 | 前1,前2,前3,前8,前9,前10,前11,前13,前14,前15,後2,後3,後4,後5,後7,後8,後12,後13,後14,後15 |
要求仕様にあったソフトウェア(アプリケーション)を構築するために必要なツールや開発環境を構築することができる。 | 3 | 前8,前9,前10,前11,前13,前14,前15,後2,後3,後4,後5,後7,後8,後12,後13,後14,後15 |
要求仕様に従って標準的な手法によりプログラムを設計し、適切な実行結果を得ることができる。 | 3 | 前10,前11,前13,後2,後3,後7,後11,後12,後13,後14,後15 |