プログラミング2

科目基礎情報

学校 久留米工業高等専門学校 開講年度 令和04年度 (2022年度)
授業科目 プログラミング2
科目番号 2E13 科目区分 専門 / 必修
授業形態 講義 単位の種別と単位数 履修単位: 2
開設学科 電気電子工学科 対象学年 2
開設期 通年 週時間数 2
教科書/教材 (1)高専機構 情報セキュリティ教材 「K-SEC情報モラル教材」(高専機構 「情報システムユーザーガイドライン」「低学年教材」)(2)最短距離でゼロからしっかり学ぶPython入門実践編,技術評論社(3)PythonによるTCP/IPソケットプログラミング,小高 知宏,オーム社(4)入門Python3 (Bill Lubanovic Lubanovic (著), 斎藤 康毅 (監修), 長尾 高弘 (翻訳))
担当教員 加藤 直孝

到達目標

1.初歩的なコンピューターアーキテクチャーを理解できる.
2.コンパイル等に必要なコンピューター環境を独力で構築できる.
3.Pythonでプログラミングができる.
4.PythonでGUIを用いてゲームを作成することができる.

ルーブリック

理想的な到達レベルの目安標準的な到達レベルの目安未到達レベルの目安
評価項目1Pythonのプログラムが自由に書ける独力でPythonのプログラムが書ける問題なく動くPythonのプログラムが書けない
評価項目2基本的なコンピューター・ネットワークを理解し,簡単なネットワークを構築できる.コンピューター・ネットワークが構築できる.コンピューター・ネットワークを理解していない.
評価項目3Pythonで簡単なネットワークプログラミングができる.実験環境も作れる.独力でPythonのネットワークプログラムが書け,実験環境も作れる.Pythonで簡単なネットワークプログラムが書けない

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

教育方法等

概要:
この科目では,Programming1から引き続きPythonのプログラミングを学習する.Pythonによる実践的なプログラムを書くと同時に,Linuxに触れながらLinuxの常識も身につける.
同時にGNS3(ネットワーク・シミュレーター)を用いて,ネットワーク構築のハンズオンを行う.また,Pythonによるネットワーク・プログラミングの学習も行う.
授業では,適宜,高専機構が準備した情報セキュリティー教材を活用し,情報セキュリティーの常識も増やしていく.
授業の進め方・方法:
学習においては,自宅での独習が重要である.単に教科書を読むだけではなく,自分でPC(Personal Computer)ソフトウェアの環境を整備し,教科書の内容を入力し理解を進める必要がある.可能な限り反転授業を行うので,黙って座っていれば教えてもらえると思わないこと.授業とはわからないところを質問する場であると理解すること.
上記教科書の実践編を8グループに分かれて研究し発表を行う.8グループが少なくとも1回は発表を行う.各グループは,必ずプログラムの内容を利用した(あるいは,改変した)プログラムを作成すること.授業では,適宜,ネットワークプログラミングと同時にネットワーク・アーキテクチャーの説明も行う.
注意点:
教科書:
(1)高専機構 情報セキュリティ教材 「K-SEC情報モラル教材」(高専機構 「情報システムユーザーガイドライン」「低学年教材」)
(2)最短距離でゼロからしっかり学ぶPython入門実践編,技術評論社
(3)入門Python3 (Bill Lubanovic Lubanovic (著), 斎藤 康毅 (監修), 長尾 高弘 (翻訳),オライリー・ジャパン)
(4)ThinkPython:コンピュータサイエンティストのように考えてみよう 第2版 (アレン・B・ダウニー(著), 相川利樹 (翻訳),https://cauldron.sakura.ne.jp/thinkpython/thinkpython/ThinkPython2.pdf)
評価方法詳細:
発表 50%,授業への参加,授業での質問,課題等その他で 50% を目安として評価する.60点以上を合格とする.基本的に筆記試験は行わない.課題の提出が重要でる.

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

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

授業計画

授業内容 週ごとの到達目標
前期
1stQ
1週 オリエンテーション
次週の情報セキュリティーの学習は14週までのどこかの週で行う
ゲームの教科書の全体を把握する.
2週 高専機構が準備した情報セキュリティー教材を活用し,情報セキュリティーの常識を増やしていく. 情報セキュリティーの常識を知っている.
3週 コンピューター・ネットワークとGNS3シミュレーターに関する説明を行う. コンピューター・ネットワークの基本の基本を理解する.
4週 1.「弾を発射する宇宙船」プログラムの発表を行う. クラスに関する基本を理解する.
5週 GNS3 VPCS の使い方を学ぶ. pingコマンドを理解する.
6週 2.「エイリアン」のプログラムの発表を行う. 簡単なゲームの作り方を学ぶ.
7週 GNS3 Switch 接続の使い方を学ぶ. GNS3 の Switch を経由したpingができる,
8週 3.「得点を表示する」プログラムの発表を行う. Buttonクラスに慣れる.
2ndQ
9週 前期の個人発表プログラムに関する準備日. 前期の個人発表プログラムの準備
10週 Cisco Router の port 設定を学ぶ. Cisco の Routerの port を設定できる.
11週 4.「データを生成する」プログラムの発表を行う. Random WalkクラスやMatplotlibを使うことができる.
12週 RouterとSwitchの違いを理解する. RouterとSwitchの違いを述べることができる.
13週 5.「データをダウンロードする」プログラムの発表を行う. CSVファイルやJSONファイルをプログラムで扱うことができる.
14週 RouterとSwitchの違いをGNS3上で体験する. ネットワークにおける Layer 2 と Layer 3 の違いを明確に説明できる.
15週 個人プログラム発表 個人プログラム発表
16週 予備 予備
後期
3rdQ
1週 どの週かはわからないが,プログラミングに関わった(あるいは関わっている)先輩を招いて(Teams)講演を聞く予定である. 先輩から学ぶ
2週 6.「APIを取り扱う」プログラムの発表を行う. 検索で取得したデータを可視化できる.
3週 GNS3上にRouterを2つ使うネットワークをstatic routingで構築する. Routerを2つ使うネットワークを構築できる.
4週 7.「Djangoをはじめる」プログラムの発表を行う. Djangoを使いWebアプリを作れる.
5週 GNS3上に家庭用ルーターの構成を構築できる(1). 家庭用ルーターの有線部分が理解できる.
6週 8.「ユーザーアカウント」プログラムの発表を行う. 入力フォームの作成や攻撃に対処する実装がきる.
7週 GNS3上に家庭用ルーターの構成を構築できる(2) 家庭用ルーターと同じ昨日をGNS3上に構築できる.
8週 9.「アプリケーションのスタイル設定とデプロイ」プログラムの発表を行う(1) Bootstrapライブラリーが利用できる.
4thQ
9週 9.「アプリケーションのスタイル設定とデプロイ」プログラムの発表を行う(2). Gitが利用できる.
10週 極めて単純なクライアント,サーバープログラムを書く. 簡単なクライアント・サーバープログラムが書ける.
11週 GNS3上で,クライアント,サーバープログラムを試す. GNS3上で,クライアント,サーバープログラムが書ける.
12週 TCPを利用したデータロガーシステムを書く. TCPを利用したデータロガーシステムを作れる.
13週 UDPを利用したチャットプログラムをつくる. UDPを利用したチャットプログラムを作れる.
14週 個人プログラムを発表する. 個人プログラムを発表する.
15週 個人プログラムを発表する. 個人プログラムを発表する.
16週 予備 予備

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

分類分野学習内容学習内容の到達目標到達レベル授業週
基礎的能力工学基礎情報リテラシー情報リテラシー情報を適切に収集・処理・発信するための基礎的な知識を活用できる。2前1,前2
論理演算と進数変換の仕組みを用いて基本的な演算ができる。2前4,前6,前8
コンピュータのハードウェアに関する基礎的な知識を活用できる。2前4,前6,前8
情報伝達システムやインターネットの基本的な仕組みを把握している。1前4,前6,前8
同一の問題に対し、それを解決できる複数のアルゴリズムが存在しうることを知っている。3前4,前6,前8
与えられた基本的な問題を解くための適切なアルゴリズムを構築することができる。3前4,前6,前8
任意のプログラミング言語を用いて、構築したアルゴリズムを実装できる。3前4,前6,前8
情報セキュリティの必要性および守るべき情報を認識している。2前1,前2
個人情報とプライバシー保護の考え方についての基本的な配慮ができる。2前1,前2
インターネット(SNSを含む)やコンピュータの利用における様々な脅威を認識している2前1,前2
インターネット(SNSを含む)やコンピュータの利用における様々な脅威に対して実践すべき対策を説明できる。2前1,前2
専門的能力分野別の専門工学情報系分野プログラミング代入や演算子の概念を理解し、式を記述できる。3前4,前6,前8
プロシージャ(または、関数、サブルーチンなど)の概念を理解し、これらを含むプログラムを記述できる。3前4,前6,前8
変数の概念を説明できる。3前4,前6,前8
データ型の概念を説明できる。3前4,前6,前8
制御構造の概念を理解し、条件分岐を記述できる。3前4,前6,前8
制御構造の概念を理解し、反復処理を記述できる。3前4,前6,前8
与えられた問題に対して、それを解決するためのソースプログラムを記述できる。3前4,前6,前8
ソフトウェア生成に必要なツールを使い、ソースプログラムをロードモジュールに変換して実行できる。3前4,前6,前8
与えられたソースプログラムを解析し、プログラムの動作を予測することができる。3前4,前6,前8
ソフトウェア開発に利用する標準的なツールの種類と機能を説明できる。3前4,前6
要求仕様に従って、標準的な手法により実行効率を考慮したプログラムを設計できる。2前4,前6,前8
要求仕様に従って、いずれかの手法により動作するプログラムを設計することができる。2前4,前6,前8
要求仕様に従って、いずれかの手法により動作するプログラムを実装することができる。2前4,前6,前8
計算機工学整数・小数をコンピュータのメモリ上でディジタル表現する方法を説明できる。2前4,前6,前8
基数が異なる数の間で相互に変換できる。2前4,前6,前8
整数を2進数、10進数、16進数で表現できる。2前4,前6,前8
小数を2進数、10進数、16進数で表現できる。2前4,前6,前8

評価割合

試験発表相互評価態度ポートフォリオその他合計
総合評価割合05000050100
基礎的能力000001010
専門的能力0500002070
分野横断的能力000002020