理工学部Faculty of Science and Engineering
COT200XE(計算基盤 / Computing technologies 200)ネットワークプログラミングNetwork programming
下村 道夫Michio SHIMOMURA
授業コードなどClass code etc
学部・研究科Faculty/Graduate school | 理工学部Faculty of Science and Engineering |
添付ファイル名Attached documents | |
年度Year | 2022 |
授業コードClass code | H6034 |
旧授業コードPrevious Class code | |
旧科目名Previous Class title | |
開講時期Term | 秋学期授業/Fall |
曜日・時限Day/Period | 水5/Wed.5 |
科目種別Class Type | |
キャンパスCampus | 小金井 |
教室名称Classroom name | 各学部・研究科等の時間割等で確認 |
配当年次Grade | |
単位数Credit(s) | |
備考(履修条件等)Notes | |
他学部公開科目Open Program | |
他学部公開(履修条件等)Open Program (Notes) | |
グローバル・オープン科目Global Open Program | |
成績優秀者の他学部科目履修制度対象Interdepartmental class taking system for Academic Achievers | |
成績優秀者の他学部科目履修(履修条件等)Interdepartmental class taking system for Academic Achievers (Notes) | |
実務経験のある教員による授業科目Class taught by instructors with practical experience | ○ |
SDGsCPSDGs CP | |
アーバンデザインCPUrban Design CP | |
ダイバーシティCPDiversity CP | |
未来教室CPLearning for the Future CP | |
カーボンニュートラルCPCarbon Neutral CP | |
千代田コンソ単位互換提供(他大学向け)Chiyoda Campus Consortium | |
カテゴリー<理工学部>Category |
応用情報工学科 学科専門科目 |
すべて開くShow all
すべて閉じるHide All
Outline (in English)
The aim of this course is to help students acquire the basic knowledge of communication functions on the Internet and how to implement programming related to it through lectures and practical training. The programming language used in this lecture is C.
The goal of this lecture is to understand the mechanism of computer communication, basic Internet protocols like TCP and UDP and their programming using programing language C.
Before/after each class meeting, students will be expected to spend four hours to understand the course content.|
Your overall grade in the class will be decided based on the following three times repots.
1st report: 20%、2nd report: 30% and 3rd report : 50%
授業で使用する言語Default language used in class
日本語 / Japanese
授業の概要と目的(何を学ぶか)Outline and objectives
あらゆるアプリケーションはインターネットによる通信機能が漏れなく実装されていると言えよう.サービスやアプリケーションに関する研究、SE、開発といった職種で活躍することを目指す学生にとって、通信の仕組みと実装の基礎を理解しておくことは極めて重要である.
本講義では、インターネットでの通信機能の基礎知識とそれに関するプログラミング実装方法を講義と実習を通じて学ぶ。利用する言語はC言語である。
到達目標Goal
本講義では,コンピュータ通信の仕組みを理解して基礎的なネットワークプロトコルの理解とそのプログラミングができるようになることを到達目標とする.
この授業を履修することで学部等のディプロマポリシーに示されたどの能力を習得することができるか(該当授業科目と学位授与方針に明示された学習成果との関連)Which item of the diploma policy will be obtained by taking this class?
ディプロマポリシーのうち、「DP1」と「DP2」と「DP4」に関連
授業で使用する言語Default language used in class
日本語 / Japanese
授業の進め方と方法Method(s)(学期の途中で変更になる場合には、別途提示します。 /If the Method(s) is changed, we will announce the details of any changes. )
講義による知識の習得と,プログラミング実習による知識の定着を並行して進める授業形態とする。
TCP/IPを始めとした代表的な通信の仕組みを講義と基礎的な通信プログラミング(ソケットプログラミングと呼ばれる)にて体験し、知識として習ったことを実際にプログラミングして確認する。その上で,アプリケーション層の通信の仕組み(プロトコル)の代表例として,ホームページの閲覧(HTTPというプロトコルを利用)、チャット等が実装できるようになることを目指す。使用するプログラミング言語は「C言語」である。
講義中にプログラムを組んでもらうため、貸与PCの利用が前提となる。WindowsOS上にUNIX相当の環境を構築できる「cygwin」の利用を前提とする。
前半の何回かは、実習に必要な部分を中心にC言語の復習も行う予定であり、現時点でC言語に自信のない学生でも履修に挑戦することができる。また、UNIXについても実習に必要な事項は講義の中で説明するため、UNIXを利用したことがない学生でも大丈夫である。
どうしても自力で課題を解けない人のために、課題のサンプルプログラムを印刷したものを配布するため、それをもとにしてレポート課題を作成することが可能である。
C言語のプログラミングやデバッグのノウハウも教えていく。
課題等の提出・フィードバックは「学習支援システム」を通じて行う。
アクティブラーニング(グループディスカッション、ディベート等)の実施Active learning in class (Group discussion, Debate.etc.)
なし / No
フィールドワーク(学外での実習等)の実施Fieldwork in class
なし / No
授業計画Schedule
授業形態/methods of teaching:対面/face to face
※各回の授業形態は予定です。教員の指示に従ってください。
第1回[対面/face to face]:イントロダクション
本講義の概要、実習環境整備
第2回[対面/face to face]:実習準備1
UNIXコマンド、C言語復習(文字列操作)
第3回[対面/face to face]:実習準備2
C言語復習(ビット操作,コマンド引数 等)
第4回[対面/face to face]:実習準備3
C言語復習(ポインタ),インターネット基礎とIPアドレス
第5回[対面/face to face]:IPアドレスの10進2進変換
IPアドレスの10進2進変換プログラム作成.サブネットマスクの理解
第6回[対面/face to face]:インターネット基礎,実習準備4
TCPとUDPの基礎,プロトコルモニタWiresharkの使い方,C言語の構造体
第7回[対面/face to face]:ソケット通信の基礎
ソケット通信(クライアント側).
ソケットのクライアント側の基礎を学び、実装する。通信相手となるサーバ側ソフト(先生が作成したものを配布)を用いて動作確認する。
第8回[対面/face to face]:ソケット通信の基礎
ソケット通信(クライアント側,サーバ側).
ソケットのサーバ側の基礎を学び、実装する。前週に自分で作ったクライアント側ソフトと通信して動作確認する。
第9回[対面/face to face]:HTTPクライアント
HTTPの基礎概要を学び、HTTPクライアントとして簡易版Webブラウザを実装する。インターネット上の一般のWebサイトにアクセスすることで動作確認する。
第10回[対面/face to face]:UDP通信の実装
UDPの実装方法を学び、UDPを使ってメッセージのやりとりをするプログラムを実装する。
第11回[対面/face to face]:チャット(クライアント側)
データ受信とキーボード入力受信の双方に対応する方法を学び、簡易版チャットプログラムを実装する。学生が作成したクライアントソフトと先生が用意するサーバソフトを接続し動作確認する.
第12回[対面/face to face]:チャット(サーバ側)
チャットのサーバ側ソフトを実装し,学生同士で実際にチャットをすることで動作確認する。
第13回[対面/face to face]:マルチプロセス
マルチプロセス(fork())の講義と実習.
複数ユーザと同時に通信できるようにするための方法を学び、前回学んだサーバ側ソフトを改良することで実装する。
第14回[対面/face to face]:レポート課題実装
これまでの実習で獲得した知識をもとにレポート課題の実装を行う.
授業時間外の学習(準備学習・復習・宿題等)Work to be done outside of class (preparation, etc.)
【本授業の準備・学習時間は、各4時間を標準とする。】
・UNIX、C言語の習得
・講義時間内の実習で終了しなかった課題
テキスト(教科書)Textbooks
指定するテキストは特にない. 毎回,授業プリントを配布する.
参考書References
指定する参考書は特にない.
C言語やUNIXやソケットプログラミングに関する参考情報は、インターネットを検索することで十分に得られる。
成績評価の方法と基準Grading criteria
レポート(3件)により評価する(試験は行わない)。
評価の配分は下記の通りである.
1件目レポート:20%
2件目レポート:30%
3件目レポート:50%
学生の意見等からの気づきChanges following student comments
ステップバイステップで説明するため、確実に理解・実装して頂くことで比較的簡単にネットワークプログラミングを書けるようになる。しかし、逆に(欠席したり,不明点を放っておいたり,自主宿題をやってこなかったりすることなどにより)一歩一歩確実に理解・実装を進めていかないと、次のステップのハードルが高く感じてしまう。講義資料のアップロード、掲示版やメールでの質疑応答等、可能な限りフォローするが、講義中も含めて質問は随時受け付けるので遠慮なく聞いてほしい。
学生が準備すべき機器他Equipment student needs to prepare
本講義は実習を含むことから貸与ノートPCおよび,貸与ノートPC上のプログラミング環境が必須となる.また,ネットワークプログラミングの動作を確認する必要上,ネットワーク接続も必要である.具体的には以下の通りである.
<必要機器>:貸与ノートPC
<プログラミング環境>:C言語開発環境(Windowsのcygwin上のgccを想定開発環境とする)
<ネットワーク接続>:無線にてネットワーク接続ができること
その他の重要事項Others
・授業時間中に,3名のTA(大学院生)がプログラミング実習のサポートを行う予定であり、先生には聞きづらい事項などはTAに質問/支援依頼することが可能である。受講生を3班に分け,それぞれに対してTAがメンターとしてつくことで,綿密なサポートを行う.
・通信の基礎知識と実装を学びたい学生の果敢なチャレンジを期待する。コツコツと苦労して獲得した多数の知識を駆使して、自分で組み上げたプログラムが実際に通信を行って動いた時の喜びは格別であり,達成感を味わうことができる。
・担当教員は通信サービス系企業に約20年間勤務し,数々のネットワークサービスに関して,研究から実用化開発,保守運用業務の実務経験を有している.本授業では実用化開発経験に基づいた実装ノウハウなども紹介していく.
・C言語はコンピュータの仕組み(メモリの概念やポインタなど)をある程度把握する必要があるので、コンピュータの基礎を知る上でもマスターしておくことが望ましいプログラミング言語だと言える。
「1度は、C 言語プログラマーを経験しておくべき」
http://www.orenoh.com/knowledge/c-programmer.html
オンラインでの開講となった場合、オンライン授業の方法や授業計画の変更、成績評価方法の変更などについては、学習支援システムでその都度提示する。担当教員から学習支援システムを通じた連絡がないか、日ごろからよく確認するようにしてください。