ネットワークプログラミング

科目基礎情報

学校 北九州工業高等専門学校 開講年度 令和03年度 (2021年度)
授業科目 ネットワークプログラミング
科目番号 0082 科目区分 専門 / 必修
授業形態 授業 単位の種別と単位数 履修単位: 2
開設学科 生産デザイン工学科(情報システムコース) 対象学年 4
開設期 通年 週時間数 2
教科書/教材 小高知宏「PythonによるTCP/IPソケットプログラミング」(オーム社)、Michael J. Donahoo/Kenneth L. Calvert「TCP/IPソケットプログラミングC言語編」(オーム社)、「K-SEC高学年分野別教材」
担当教員 福田 龍樹

到達目標

近年の実用的なアプリケーションプログラムは、クラウド技術の発達も手伝って、サーバや他端末との通信を行うことが当たり前のようになっており、その基礎技術を身に着けておくことはさまざまなアプリケーション開発において役に立つと考えられる。本授業ではソケット通信に着目をし、ソケットプログラミングの概要理解、マルチプロセスの制御、代表的な通信方式であるTCPとUDPの違いを理解することを目標とする。また、ソケットプログラミングを用いた通信プログラムの作成を行えるようにする。

ルーブリック

「優」相当の到達レベルの目安「良」相当の到達レベルの目安「可」相当の到達レベルの目安
TCP/UDPの違いについての理解TCPやUDPそれぞれのメリットやデメリットをあげ,場合によって使い分けることができる.TCPやUDPそれぞれのメリットやデメリットをあげることができる.TCPやUDPの違いを簡単に説明できる.
ソケットプログラミングソケットを用いたTCPおよびUDP通信を用いたサーバクライアントアプリケーションの実装を行うことができる.ソケットを用いたTCPおよびUDP通信を用いた通信を行うことができる.ソケットを用いたTCPおよびUDP通信を用いたサーバクライアントアプリケーションの動作について説明することができる.
マルチプロセスマルチプロセスについて概要を理解し、子プロセスの生成と回収ができるマルチプロセスについて概要を理解し、子プロセスの生成ができるマルチプロセスの仕組みがわかる

学科の到達目標項目との関係

準学士課程の教育目標 (B)① 専門分野における工学の基礎を理解できる。
専攻科教育目標、JABEE学習教育到達目標 SB① 共通基礎知識を用いて、専攻分野における設計・製作・評価・改良など生産に関わる専門工学の基礎を理解できる。
専攻科教育目標、JABEE学習教育到達目標 SC① 専門工学の実践に必要な知識を深め、実験や実習を通じて、問題解決の経験を積む。

教育方法等

概要:
前半は,標準的なLinux上でpythonを用いたソケットプログラムを行う。pythonという新しい言語に触れるとともに、簡易なソケット通信プログラムを行うことで、ソケットの役割等を身につける。後半はC言語を用いて、ソケット通信を行い、さらに細かなオプションや技術的事項を理解する。また、マルチプロセスが重要な技術であることを確認し、子プロセスの生成と回収について学ぶ。
授業の進め方・方法:
ソケットプログラムはOSによって多少異なる部分もあるが、本講義ではLinuxを演習用PCのOSとして用いる。また、授業の前半では, 近年よく用いられているPythonを、授業の後半ではC言語を用いる。学生は実際に自らコーディングを行うことを原則とすし、また授業はオンライン会議ツールを用いて同時配信を行い、資料も同様にオンラインでの公開を行う。
注意点:
本授業ではネットワーク上のパケットも扱うため,使い方によっては他人に多大な迷惑をかける可能性もある.学生はそれらの可能性に対してしっかりと認識し,正しい倫理観をもってこれらの技術を扱うこと.

授業の属性・履修上の区分

アクティブラーニング
ICT 利用
遠隔授業対応
実務経験のある教員による授業

授業計画

授業内容 週ごとの到達目標
前期
1stQ
1週 プロトコル プロトコルについて説明できる
2週 IPアドレス IPアドレスの構成を説明できる。
3週 Pythonによるインタラクティブなプログラミング Pythonの関数や変数の利用ができる
4週 TCPサーバプログラムの作成 Pythonを使ってTCP通信を行うサーバプログラムを作成することができる。
5週 TCPクライアントプログラムの作成と動作確認 Pythonを使ってTCP通信を行うクライアントプログラムを作成することができる
6週 TCPサーバプログラムのマルチスレッド化 Pythonを使ったTCP通信を行うサーバプログラムをマルチスレッドで作成することができる。
7週 TCPサーバプログラムのマルチプロセス化 Pythonを使ったTCP通信を行うサーバプログラムをマルチプロセスで作成することができる。
8週 pythonの子プロセスの処理の流れ pythonでforkしたあとの流れを説明することができる。
2ndQ
9週 [演習]簡易ゲームクライアントプログラムの作成1 これまでに学んだ知識を応用して、既存のゲームサーバプログラムと通信可能なプログラムを作成できる。
10週 [演習]簡易ゲームクライアントプログラムの作成2 これまでに学んだ知識を応用して、既存のゲームサーバプログラムと通信可能なプログラムを作成できる。
11週 HTTPリクエスト HTTPリクエストの構成や意味を説明することができる。
12週 HTTPレスポンス HTTPレスポンスの構成や意味を説明することができる。
13週 Webサーバプログラムの作成 HTTPリクエストを解析し、HTTPレスポンスを返すWebサーバプログラムを作ることができる。
14週 Webサーバプログラムの作成 HTTPリクエストを解析し、HTTPレスポンスを返すWebサーバプログラムを作ることができる。
15週 Webサーバプログラムの作成と動作確認 HTTPリクエストを解析し、HTTPレスポンスを返すWebサーバプログラムを作ることができる。
16週 期末試験
後期
3rdQ
1週 C言語を用いたTCPサーバプログラムとクライアントプログラムの概要把握 C言語を使ってTCP通信を行うサーバ/クライアントプログラムの流れを把握する
2週 C言語を用いたTCPクライアントプログラムの作成 C言語を使ってTCP通信を行うクライアントプログラムを作成することができる
3週 C言語を用いたTCPサーバプログラムの作成 C言語を使ってTCP通信を行うサーバプログラムを作成することができる
4週 TCP通信による簡易ATMシステムの作成 ATMを模したシステムをTCP通信により作成することができる
5週 TCP通信による簡易ATMシステムの作成 ATMを模したシステムをTCP通信により作成することができる
6週 バイナリ通信 文字列の送受信とバイナリ通信の違いを理解することができる。
7週 構造体に必要なメモリ領域(パディング) 構造体に必要なメモリ領域を計算することができる。
8週 中間試験
4thQ
9週 バイトオーダ バイトオーダについてビッグエンディアンとリトルエンディアンの違いを説明することができる
10週 C言語によるマルチプロセス化 C言語を用いたマルチプロセスプログラミングを理解し、プロセスの生成・回収をすることができる。
11週 TCP通信を用いたソフトウェアの開発(電子掲示板/チャットシステム) TCP通信を用いて簡易的な電子掲示板システムやチャットシステムを作ることができる
12週 TCP通信を用いたソフトウェアの開発(電子掲示板/チャットシステム) TCP通信を用いて簡易的な電子掲示板システムやチャットシステムを作ることができる
13週 TCP通信を用いたソフトウェアの開発(電子掲示板/チャットシステム) TCP通信を用いて簡易的な電子掲示板システムやチャットシステムを作ることができる
14週 TCP通信を用いたソフトウェアの開発(電子掲示板/チャットシステム) TCP通信を用いて簡易的な電子掲示板システムやチャットシステムを作ることができる
15週 TCP通信を用いたソフトウェアの開発(電子掲示板/チャットシステム) TCP通信を用いて簡易的な電子掲示板システムやチャットシステムを作ることができる
16週

モデルコアカリキュラムの学習内容と到達目標

分類分野学習内容学習内容の到達目標到達レベル授業週
専門的能力分野別の専門工学情報系分野プログラミング要求仕様に従って、いずれかの手法により動作するプログラムを設計することができる。3前9,前10,前13,後4,後5,後11,後12,後13,後14,後15
要求仕様に従って、いずれかの手法により動作するプログラムを実装することができる。3前9,前10,前13,前14,前15,後4,後5,後11,後12,後13,後14,後15
情報通信ネットワークプロトコルの概念を説明できる。4前1
プロトコルの階層化の概念や利点を説明できる。4前1
ローカルエリアネットワークの概念を説明できる。4前2
インターネットの概念を説明できる。4前2,前11,前12
TCP/IPの4階層について、各層の役割を説明でき、各層に関係する具体的かつ標準的な規約や技術を説明できる。4前2
情報通信ネットワークを利用したアプリケーションの作成方法を説明できる。4前4,前5
基本的なルーティング技術について説明できる。4前2
基本的なフィルタリング技術について説明できる。4
分野別の工学実験・実習能力情報系分野【実験・実習能力】情報系【実験・実習】与えられた問題に対してそれを解決するためのソースプログラムを、標準的な開発ツールや開発環境を利用して記述できる。3前4,前5,前6,前7,前11,前12,後1,後2,後3,後6,後7,後9,後10
ソフトウェア生成に利用される標準的なツールや環境を使い、ソースプログラムをロードモジュールに変換して実行できる。3前13,前14,後2,後3
ソフトウェア開発の現場において標準的とされるツールを使い、生成したロードモジュールの動作を確認できる。3前13,前14,後2,後3
フローチャートなどを用いて、作成するプログラムの設計図を作成することができる。3前4,前5,前13,後2,後3
問題を解決するために、与えられたアルゴリズムを用いてソースプログラムを記述し、得られた実行結果を確認できる。3前6,前7,前8,前11,前12,前15,後6,後7,後9,後10
標準的な開発ツールを用いてプログラミングするための開発環境構築ができる。3前3,前4,前5,後1
要求仕様にあったソフトウェア(アプリケーション)を構築するために必要なツールや開発環境を構築することができる。3
要求仕様に従って標準的な手法によりプログラムを設計し、適切な実行結果を得ることができる。3前9,前10,前13,前14,前15,後4,後5,後11,後12,後13,後14,後15

評価割合

課題試験合計
総合評価割合5050100
基礎的能力000
専門的能力5050100
分野横断的能力000