概要:
この科目では,Programming1から引き続きPythonのプログラミングを学習する.Pythonによるゲーム開発の初歩を学ぶと同時に,Linuxに触れながらLinuxの常識を身につける.後期からは,ネットワーク・プログラミングの基礎も学ぶ.
1.Pythonの基本的な文法の復習を,ゲームの教科書を活用して行う.
2.Pythonによるゲームの作成方法を学ぶ
3.Linuxの基礎を学ぶと同時に,攻撃プログラムを書けるようになるための,ネットワーク・プログラミングを学習する
ラムダ関数などPythonに関するより高度な内容も取り上げる.授業では,適宜,高専機構が準備した情報セキュリティー教材を活用し,情報セキュリティーの常識も増やしていく.
授業の進め方・方法:
学習においては,自宅での独習が重要である.単に教科書を読むだけではなく,自分でPC(Personal Computer)ソフトウェアの環境を整備し,教科書の内容を入力し理解を進める必要がある.授業では,「Pythonでつくるゲーム開発入門」と「入門Python3」(後期に購入予定)を使用して進めるが,あくまで自宅における学習が前提となる.可能な限り反転授業を行うので,黙って座っていれば,教えてもらえると思わないこと.授業とはわからないところを質問する場であると理解すること.「Pythonでつくるゲーム開発入門」を読んで理解し,モディファイすることが主な課題である.ソフトウェアをコンパイルできるPC環境を必要とするため,自分専用のノートブックPCを持つことが必要である.
注意点:
教科書:
(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点以上を合格とする.基本的に筆記試験は行わない.課題の提出が重要でる.
|
|
週 |
授業内容 |
週ごとの到達目標 |
前期 |
1stQ |
1週 |
オリエンテーション 次週の情報セキュリティーの学習は14週までのどこかの週で行う |
ゲームの教科書の全体を把握する.
|
2週 |
高専機構が準備した情報セキュリティー教材を活用し,情報セキュリティーの常識を増やしていく. |
情報セキュリティーの常識を知っている.
|
3週 |
ゲームの教科書Chap1-3を読み,Pythonの復習をする. |
Pythonの基本中の基本を使ってプログラミングができる.
|
4週 |
プログラミング環境の構築を行う.WSL2とUbuntu, Kali Linuxのインストールを行う. |
独力で,PC上でLinuxを動かせる環境を構築できる.
|
5週 |
ゲームの教科書Chap4を読み,Pythonの復習をする. |
モジュールのimportを正確に理解し,使いこなせる.
|
6週 |
Anaconda3をインストールする |
独力でAnaconda3をインストールできる.
|
7週 |
ゲームの教科書Chap5を読み,CUIのゲームを学ぶ.(学生によるグループ発表) |
ゲームのプログラムを理解しモディファイしたプログラムを作ることができる.
|
8週 |
Linux上にAnaconda3をインストールする Linuxの基礎を学ぶ. |
Linuxにパッケージをインストールできる.
|
2ndQ |
9週 |
ゲームの教科書Chap6を読み,GUIのゲームを学ぶ(1).(学生によるグループ発表) |
ゲームのプログラムを理解しモディファイしたプログラムを作ることができる.
|
10週 |
ゲームの教科書Chap7を読み,GUIのゲームを学ぶ(2).(学生によるグループ発表) |
ゲームのプログラムを理解しモディファイしたプログラムを作ることができる.
|
11週 |
Linuxの基本的なコマンドを学ぶ(1) |
基本的なLinuxコマンドを使える.
|
12週 |
ゲームの教科書Chap8を読み,本格的なゲーム開発の技術を学ぶ,(学生によるグループ発表) |
tkinterを使ったゲームのプログラムを理解しモディファイしたプログラムを作ることができる.
|
13週 |
Linuxの基本的なコマンドを学ぶ(1) |
基本的なLinuxコマンドを使える.
|
14週 |
ゲームの教科書Chap9を読み,落ち物パズルのゲーム開発を学ぶ,(学生によるグループ発表) |
tkinterを使ったゲームのプログラムを理解しモディファイしたプログラムを作ることができる.
|
15週 |
予備 |
|
16週 |
予備 |
|
後期 |
3rdQ |
1週 |
どの週かはわからないが,プログラミングに関わった(あるいは関わっている)先輩を招いて(Teams)講演を聞く予定である. |
先輩から学ぶ
|
2週 |
ゲームの教科書Chap10を読み,pygameの使い方を学ぶ,(学生によるグループ発表) |
pygameを使ったプログラムを理解しモディファイしたプログラムを作ることができる.
|
3週 |
Linuxにおけるテキストに関するコマンドを学ぶ less, grep, head, tail...など |
基本的なテキスト処理に関するLinuxコマンドを使える.
|
4週 |
ゲームの教科書Chap11を読み,本格的なRPG(Role Playing Game)を学ぶ(1)(学生によるグループ発表) |
本格的なRPGプログラムを理解しモディファイしたプログラムを作ることができる.
|
5週 |
Linuxのネットワークに関する基本的なコマンドを学ぶ.(ip a, ifconfigなど) |
Linuxの基本的なNetworkに関するコマンドを理解している.
|
6週 |
ゲームの教科書Chap12を読み,本格的なRPG(Role Playing Game)を学ぶ(1)(学生によるグループ発表) |
本格的なRPGプログラムを理解しモディファイしたプログラムを作ることができる.
|
7週 |
Linuxのソフトウェアの管理について学ぶ(apt, apt-get, apt update など) |
Linuxにソフトウェアをインストールできる
|
8週 |
ゲームの教科書Chap13を読み,オブジェクト指向プログラミングを学ぶ(1)(学生によるグループ発表) |
オブジェクト指向プログラミングを理解できる.
|
4thQ |
9週 |
Linuxのファイルのmodeやpermissionの変更などについて学ぶ. |
ファイルのmodeの変更やアクセスのpermissionなどが理解できる.
|
10週 |
Pythonの内包表記について学ぶ |
Pythonの内包表記を使ったプログラミングができる
|
11週 |
Pythonの関数,特に引数について学ぶ.(位置引数以外を学ぶ) |
Pythonの色々な引数を理解し,使い分けることができる.
|
12週 |
関数内関数,クロージャ,ラムダ関数を学ぶ |
関数内関数,クロージャ,ラムダ関数を理解している
|
13週 |
クライアント・サーバープログラムを学ぶ |
クライアント・サーバープログラムを理解できる
|
14週 |
クライアント・サーバープログラムを実際に使ってみる. |
クライアント・サーバープログラムを実ネットワーク上で運用できる.
|
15週 |
予備 |
|
16週 |
予備 |
|
分類 | 分野 | 学習内容 | 学習内容の到達目標 | 到達レベル | 授業週 |
基礎的能力 | 工学基礎 | 情報リテラシー | 情報リテラシー | 情報を適切に収集・処理・発信するための基礎的な知識を活用できる。 | 2 | |
論理演算と進数変換の仕組みを用いて基本的な演算ができる。 | 2 | |
コンピュータのハードウェアに関する基礎的な知識を活用できる。 | 2 | |
情報伝達システムやインターネットの基本的な仕組みを把握している。 | 1 | |
同一の問題に対し、それを解決できる複数のアルゴリズムが存在しうることを知っている。 | 3 | |
与えられた基本的な問題を解くための適切なアルゴリズムを構築することができる。 | 3 | |
任意のプログラミング言語を用いて、構築したアルゴリズムを実装できる。 | 3 | |
情報セキュリティの必要性および守るべき情報を認識している。 | 2 | |
個人情報とプライバシー保護の考え方についての基本的な配慮ができる。 | 2 | |
インターネット(SNSを含む)やコンピュータの利用における様々な脅威を認識している | 2 | |
インターネット(SNSを含む)やコンピュータの利用における様々な脅威に対して実践すべき対策を説明できる。 | 2 | |
専門的能力 | 分野別の専門工学 | 情報系分野 | プログラミング | 代入や演算子の概念を理解し、式を記述できる。 | 3 | |
プロシージャ(または、関数、サブルーチンなど)の概念を理解し、これらを含むプログラムを記述できる。 | 3 | |
変数の概念を説明できる。 | 3 | |
データ型の概念を説明できる。 | 3 | |
制御構造の概念を理解し、条件分岐を記述できる。 | 3 | |
制御構造の概念を理解し、反復処理を記述できる。 | 3 | |
与えられた問題に対して、それを解決するためのソースプログラムを記述できる。 | 3 | |
ソフトウェア生成に必要なツールを使い、ソースプログラムをロードモジュールに変換して実行できる。 | 3 | |
与えられたソースプログラムを解析し、プログラムの動作を予測することができる。 | 3 | |
ソフトウェア開発に利用する標準的なツールの種類と機能を説明できる。 | 3 | |
要求仕様に従って、標準的な手法により実行効率を考慮したプログラムを設計できる。 | 2 | |
要求仕様に従って、いずれかの手法により動作するプログラムを設計することができる。 | 2 | |
要求仕様に従って、いずれかの手法により動作するプログラムを実装することができる。 | 2 | |
計算機工学 | 整数・小数をコンピュータのメモリ上でディジタル表現する方法を説明できる。 | 2 | |
基数が異なる数の間で相互に変換できる。 | 2 | |
整数を2進数、10進数、16進数で表現できる。 | 2 | |
小数を2進数、10進数、16進数で表現できる。 | 2 | |