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

科目基礎情報

学校 長岡工業高等専門学校 開講年度 令和02年度 (2020年度)
授業科目 ネットワークプログラミング
科目番号 0171 科目区分 専門 / 選択
授業形態 講義 単位の種別と単位数 学修単位: 2
開設学科 電子制御工学科 対象学年 5
開設期 後期 週時間数 2
教科書/教材 適宜プリントを配布する / 参考書:小高知宏,TCP/IPで学ぶネットワークシステム,森北出版,2006
担当教員 竹部 啓輔

到達目標

(科目コード:31487,英語名:Network Programming)
この科目は長岡高専の教育目標の(D)と主体的に関わる。この科目の到達目標と、長岡高専の学習・教育到達目標の関連を、到達目標、評価の重み、学習・教育到達目標との関連の順で次に示す。
①基本的なUNIXコマンドの扱い方を理解する 20% (d2)、②ネットワークを利用したアプリケーションの作成方法を理解する 50% (d2),(d3)、③Java言語を用いたプログラムを作成できる 30% (d2),(d3)

ルーブリック

理想的な到達レベルの目安標準的な到達レベルの目安最低限の到達レベルの目安未到達レベルの目安
評価項目1UNIXコマンドの扱い方を理解し、実践的に使用できる基本的なUNIXコマンドの扱い方を理解している基本的なUNIXコマンドの扱い方を概ね理解している基本的なUNIXコマンドの扱い方を理解していない
評価項目2ネットワークを利用したアプリケーションの作成方法を理解し、サーバ・クライアント型のプログラムを自力で構築できるネットワークを利用したアプリケーションの作成方法を理解しているネットワークを利用したアプリケーションの作成方法を概ね理解しているネットワークを利用したアプリケーションの作成方法を理解していない
評価項目3Java言語を用いたネットワークアプリケーションを作成できるJava言語を用いたプログラムを作成できるJava言語を用いたプログラムを概ね作成できるJava言語を用いたプログラムを作成できない

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

教育方法等

概要:
本科目ではまず、UNIX系のOSに触れ、その基本的な扱い方を習得する。続いて、コンピュータネットワークを利用したアプリケーションの作成方法を学ぶ。
後半は、Java言語についても学び、Java言語を用いてネットワークアプリケーションプログラムを作成する。
○関連する科目: アルゴリズムとデータ構造(前年度履修)、プログラミング演習IV(夏季集中)、コンピュータネットワーク(前期履修)、情報通信工学(次々年度履修)
授業の進め方・方法:
端末室において実施する、座学と演習を織り交ぜた講義である。
この科目は学修単位科目のため、事前・事後学習として演習課題レポートを実施します。
後半のJava言語のプログラミングでは、ネットワークゲームを題材としたプログラミング課題を予定している。最後に各自が作成したプログラムを対戦させるゲーム大会を行う。
注意点:
前期開講科目のコンピュータネットワークを履修していることが望ましいが、C言語などのプログラミング言語を1つ以上学んでいれば履修可能である。
プログラミング課題を科すので、プログラミングが苦手でない学生の受講を希望する。

授業計画

授業内容 週ごとの到達目標
後期
3rdQ
1週 ネットワークアプリケーションとは
C言語によるネットワークアプリケーションの作成(1)
インターネットの仕組みを理解する
LinuxでのC言語プログラムの作成・コンパイル・実行方法を修得する
2週 C言語によるネットワークアプリケーションの作成(2)
(Linuxソケットプログラミング)
ソケットを用いたサーバ・クライアント型システムのプログラムの構造、動作について理解する
3週 C言語によるネットワークアプリケーションの作成(3)
(Windowsソケットプログラミング)
WinSockを用いた場合のソケットを用いたプログラムについて、UNIX系のシステムとの違いを理解する
4週 C言語によるネットワークアプリケーションの作成(4)
(Windows/Linuxソース統合)
条件付きコンパイルの手法を利用して、同じソースプログラムでWindows、Linuxの双方で動作可能なプログラムを作成できる
5週 Java言語(1) 基本事項 Java言語の基本事項を理解する
6週 Java言語(2) 制御構造、クラスの概念 Java言語の基本事項、制御構造、クラスの概念を理解し、簡単なJavaプログラムが作成できる
7週 Javaによるネットワークアプリケーションの作成(1)
(Javaソケットプログラミング)
Java言語で書かれたソケットを用いた簡単なサーバ、クライアント型のプログラムの動作を理解する
8週 Javaによるネットワークアプリケーションの作成(2)
(簡易メール送信プログラムの実装)
SMTPのプロトコルに従ってメールを送信する、簡易メール送信プログラムについて動作を理解する
4thQ
9週 Javaによるネットワークアプリケーションの作成(3)
(Java RMI による分散処理)
Java RMIの仕組みを理解し、簡単な分散処理プログラムを動作させることができる。
10週 Javaによるネットワークアプリケーションの作成(4)
(ネットワークゲームの実装)
サンプルのネットワークゲームのプログラムの内容を理解する。
11週 Javaによるネットワークアプリケーションの作成(5)
(ネットワークゲームの改良(1))
ネットワークゲームのプログラムの改良方針を立てる。
12週 Javaによるネットワークアプリケーションの作成(6)
(ネットワークゲームの改良(2))
ネットワークゲームの改良作業を行う。
13週 Javaによるネットワークアプリケーションの作成(7)
(ネットワークゲームの改良(3))
ネットワークゲームの改良をほぼ完了させる。
14週 作成したプログラムの報告会
ネットワークゲームのロボットプログラム競技会
作成したプログラムについて、発表する。
作成したプログラムで競技会に参加する。
15週 ここまでのまとめ
16週 期末試験
17週:試験解説と発展授業
試験時間:80分

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

分類分野学習内容学習内容の到達目標到達レベル授業週
基礎的能力工学基礎技術者倫理(知的財産、法令順守、持続可能性を含む)および技術史技術者倫理(知的財産、法令順守、持続可能性を含む)および技術史情報技術の進展が社会に及ぼす影響、個人情報保護法、著作権などの法律について説明できる。3
高度情報通信ネットワーク社会の中核にある情報通信技術と倫理との関わりを説明できる。3
知的財産の社会的意義や重要性の観点から、知的財産に関する基本的な事項を説明できる。3
知的財産の獲得などで必要な新規アイデアを生み出す技法などについて説明できる。3
技術者の社会的責任、社会規範や法令を守ること、企業内の法令順守(コンプライアンス)の重要性について説明できる。3
技術者を目指す者として、諸外国の文化・慣習などを尊重し、それぞれの国や地域に適用される関係法令を守ることの重要性を把握している。3
全ての人々が将来にわたって安心して暮らせる持続可能な開発を実現するために、自らの専門分野から配慮すべきことが何かを説明できる。3
技術者を目指す者として、平和の構築、異文化理解の推進、自然資源の維持、災害の防止などの課題に力を合わせて取り組んでいくことの重要性を認識している。3
情報リテラシー情報リテラシー情報を適切に収集・処理・発信するための基礎的な知識を活用できる。3
論理演算と進数変換の仕組みを用いて基本的な演算ができる。3
コンピュータのハードウェアに関する基礎的な知識を活用できる。3
情報伝達システムやインターネットの基本的な仕組みを把握している。3後1
情報セキュリティの必要性および守るべき情報を認識している。3
専門的能力分野別の専門工学機械系分野情報処理プログラムを実行するための手順を理解し、操作できる。4後1,後2
定数と変数を説明できる。4後1,後2
整数型、実数型、文字型などのデータ型を説明できる。4後1,後2
演算子の種類と優先順位を理解し、適用できる。4後1,後2
算術演算および比較演算のプログラムを作成できる。4後1,後2
データを入力し、結果を出力するプログラムを作成できる。4後2
条件判断プログラムを作成できる。4後2
繰り返し処理プログラムを作成できる。4後2
一次元配列を使ったプログラムを作成できる。4後2
情報系分野プログラミング代入や演算子の概念を理解し、式を記述できる。4後2
プロシージャ(または、関数、サブルーチンなど)の概念を理解し、これらを含むプログラムを記述できる。4後2
変数の概念を説明できる。4
データ型の概念を説明できる。4
制御構造の概念を理解し、条件分岐を記述できる。4
制御構造の概念を理解し、反復処理を記述できる。4
与えられた問題に対して、それを解決するためのソースプログラムを記述できる。4後2
ソフトウェア生成に必要なツールを使い、ソースプログラムをロードモジュールに変換して実行できる。4後2
与えられたソースプログラムを解析し、プログラムの動作を予測することができる。4
ソフトウェア開発に利用する標準的なツールの種類と機能を説明できる。3後2
要求仕様に従って、標準的な手法により実行効率を考慮したプログラムを設計できる。3
要求仕様に従って、いずれかの手法により動作するプログラムを設計することができる。3
要求仕様に従って、いずれかの手法により動作するプログラムを実装することができる。3
要求仕様に従って、標準的な手法により実行効率を考慮したプログラムを実装できる。3
ソフトウェアアルゴリズムの概念を説明できる。3後4
与えられたアルゴリズムが問題を解決していく過程を説明できる。3後4
同一の問題に対し、それを解決できる複数のアルゴリズムが存在しうることを説明できる。3後4
コンピュータ内部でデータを表現する方法(データ構造)にはバリエーションがあることを説明できる。3後4
同一の問題に対し、選択したデータ構造によってアルゴリズムが変化しうることを説明できる。3後4
リスト構造、スタック、キュー、木構造などの基本的なデータ構造の概念と操作を説明できる。3
ソフトウェアを中心としたシステム開発のプロセスを説明できる。3
ソースプログラムを解析することにより、計算量等のさまざまな観点から評価できる。3
同じ問題を解決する複数のプログラムを計算量等の観点から比較できる。3
計算機工学整数・小数をコンピュータのメモリ上でディジタル表現する方法を説明できる。4
基数が異なる数の間で相互に変換できる。4
整数を2進数、10進数、16進数で表現できる。4
基本的な論理演算を行うことができる。4
基本的な論理演算を組合わせて、論理関数を論理式として表現できる。4
コンピュータシステムネットワークコンピューティングや組込みシステムなど、実用に供せられているコンピュータシステムの利用形態について説明できる。4
システムプログラムコンピュータシステムにおけるオペレーティングシステムの位置づけを説明できる。3
形式言語の概念について説明できる。3
コンパイラの役割と仕組みについて説明できる。3
情報通信ネットワークプロトコルの概念を説明できる。4後1
プロトコルの階層化の概念や利点を説明できる。4
ローカルエリアネットワークの概念を説明できる。4
インターネットの概念を説明できる。4
TCP/IPの4階層について、各層の役割を説明でき、各層に関係する具体的かつ標準的な規約や技術を説明できる。4
主要なサーバの構築方法を説明できる。4
情報通信ネットワークを利用したアプリケーションの作成方法を説明できる。4
その他の学習内容少なくとも一つの具体的なコンピュータシステムについて、起動・終了やファイル操作など、基本的操作が行える。4
少なくとも一つの具体的なオフィススイート等を使って、文書作成や図表作成ができ、報告書やプレゼンテーション資料を作成できる。4
少なくとも一つのメールツールとWebブラウザを使って、メールの送受信とWebブラウジングを行うことができる。4
コンピュータウィルスやフィッシングなど、コンピュータを扱っている際に遭遇しうる代表的な脅威について説明できる。4
コンピュータを扱っている際に遭遇しうる脅威に対する対策例について説明できる。4
マルウェアやフィッシングなど、コンピュータを扱っている際に遭遇しうる代表的な脅威について説明できる。4

評価割合

試験レポートそのほか合計
総合評価割合70300100
基礎的能力305035
専門的能力4020060
分野横断的能力0505