プログラミング2

科目基礎情報

学校 久留米工業高等専門学校 開講年度 令和03年度 (2021年度)
授業科目 プログラミング2
科目番号 2E13 科目区分 専門 / 必修
授業形態 講義 単位の種別と単位数 履修単位: 2
開設学科 電気電子工学科 対象学年 2
開設期 通年 週時間数 2
教科書/教材 (1)高専機構 情報セキュリティ教材 「K-SEC情報モラル教材」(高専機構 「情報システムユーザーガイドライン」「低学年教材」)(2)Pythonでつくるゲーム開発入門講座(廣瀬豪,ソーテック社)(3)ThinkPython 2nd ed. (アレン・B・ダウニー,相川利樹(訳)https://cauldron.sakura.ne.jp/thinkpython/thinkpython/ThinkPython2.pdf)(4)入門Python3 (Bill Lubanovic Lubanovic (著), 斎藤 康毅 (監修), 長尾 高弘 (翻訳))
担当教員 加藤 直孝

到達目標

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

ルーブリック

理想的な到達レベルの目安標準的な到達レベルの目安未到達レベルの目安
評価項目1PythonのCUIプログラムが自由に書ける独力でPythonのCUIプログラムが書ける問題なく動くPythonのCUIプログラムが書けない
評価項目2PythonのGUIプログラムが自由に書ける独力でPythonのGUIプログラムが書ける問題なく動くPythonのGUIプログラムが書けない
評価項目3Pythonでゲームが自由に作れる独力でPythonのゲームが作れるPythonのゲームをプログラミングしても思ったように動かない

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

教育方法等

概要:
この科目では,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点以上を合格とする.基本的に筆記試験は行わない.課題の提出が重要でる.

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

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

授業計画

授業内容 週ごとの到達目標
前期
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

評価割合

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