プログラミング2

科目基礎情報

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

到達目標

1.初歩的なコンピューターアーキテクチャーを理解できる.
2.コンピューターのOSと対話ができる.
3.コンパイル等に必要なコンピューター環境を独力で構築できる.
4.Pythonでプログラミングができる.

ルーブリック

理想的な到達レベルの目安標準的な到達レベルの目安未到達レベルの目安
評価項目1CPU, メモリー, ディスク間のやり取りが理解できる.CPU, メモリー, ディスクを意識してコンピューターを操作できる.CPU, メモリー, ディスクの区別がつかない
評価項目2対話している対象をはっきり理解している.対話先のモジュールが異なることを理解している.コンピューター全体としてのみ理解できる.
評価項目3各環境設定の意味合いを理解できる.指示書に従った環境設定ができる.環境設定ができない.

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

教育方法等

概要:
この科目は,Programming1から引き続きThinkPython (2nd ed.)の練習問題を解いていく.オブジェクト指向のプログラミンングの学習を終えた後は,Rubyの復習をする.時間に余裕があれば,Pythonを使った発展的な授業を行う.授業では,適宜,高専機構が準備した情報セキュリティー教材を活用し,情報セキュリティーの常識も増やしていく.
授業の進め方・方法:
学習においては,自宅での独習が重要である.単に教科書を読むだけではなく,自分でPC(Personal Computer)ソフトウェアの環境を整備し,教科書の内容を入力し理解を進める必要がある.授業では,ThinkPython と入門Python3, たのしいRubyの教科書を使用して進めるが,あくまで自宅における学習が前提となる.可能な限り反転授業を行うので,黙って座っていれば,教えてもらえると思わないこと.授業とはわからないところを質問する場であると理解すること.ThinkPythonの練習問題をプログラミングすることが主な課題である.ソフトウェアをコンパイルできるPC環境を必要とするため,自分専用のノートブックPCを持つことが必要である.メモリー4GB以上の64bitノートブックパソコンが必要である.
注意点:
教科書:
(1)高専機構 情報セキュリティ教材 「K-SEC情報モラル教材」(高専機構 「情報システムユーザーガイドライン」「低学年教材」)
(2)入門Python3 (Bill Lubanovic Lubanovic (著), 斎藤 康毅 (監修), 長尾 高弘 (翻訳),オライリー・ジャパン)
(3)ThinkPython:コンピュータサイエンティストのように考えてみよう 第2版 (アレン・B・ダウニー(著), 相川利樹 (翻訳),https://cauldron.sakura.ne.jp/thinkpython/thinkpython/ThinkPython2.pdf)
(4)たのしいRuby 第6版(高橋 征義 (著), 後藤 裕蔵 (著), SBクリエイティブ)
評価方法詳細:
定期試験 50%,授業への参加,授業での質問,課題等その他で 50% を目安として評価する.60点以上を合格とする.再試は行わない.

授業計画

授業内容 週ごとの到達目標
前期
1stQ
1週 ThinkPython 8章(1):for ループによる処理,文字列のスライス等に関する説明をした後,練習問題の解答例を説明する. 文字列のforループ処理やスライスが自由にできるようになる.
2週 ThinkPython 8章(2):文字列の探索や文字列のメソッド,in演算子,文字列の比較を説明した後,練習問題の解答例を説明する. 文字列に関する幅広いプログラミングができる.
3週 ThinkPython 9章(1):Moby lexicon projectのGrady Wardによる単語リストを用いて,単語に関する色々な探索を行う.練習問題の解答例を説明する. 単語リストをもとにして,単語に関する色々な探索を行うことができる.
4週 ThinkPython 9章(2):第3週に引き続き,National Public Radio(NPR)Car Talkで出題されたパズルが出典の練習問題を解く. 単語リストをもとにして,単語に関するパズルをプログラムで解ける.
5週 ThinkPython 9章(3):4週の続きを行う.National Public Radio(NPR)Car Talkで出題されたパズルが出典の練習問題を解く. 単語リストをもとにして,単語に関するパズルをプログラムで解ける.
6週 ThinkPython 10章(1):リストに関する色々な説明を行い,練習問題の解答例を説明する. リストに関する操作を行うプログラミングができる.
7週 ThinkPython10章(2):リストに関する色々な説明を行い,練習問題の解答例を説明する. リストに関する操作を行うプログラミングができる.
8週 ThinkPython 10章(3):リストに関する色々な説明を行い,練習問題の解答例を説明する. リストに関する操作を行うプログラミングができる.
2ndQ
9週 ThinkPython 11章(1):辞書(Dictionary)に関する色々な説明を行い,練習問題の解答例を説明する. 辞書を活用したプログラミングができる.
10週 ThinkPython 11章(2):辞書(Dictionary)に関する色々な説明を行い,練習問題の解答例を説明する. 辞書を活用したプログラミングができる.
11週 ThinkPython 11章(3):辞書(Dictionary)に関する色々な説明を行い,練習問題の解答例を説明する. 辞書を活用したプログラミングができる.
12週 ThinkPython 12章(1):タプルに関する色々な説明を行い,練習問題の解答例を説明する. タプルを活用したプログラミングができる.
13週 ThinkPython 12章(2):タプルに関する色々な説明を行い,練習問題の解答例を説明する タプルを活用したプログラミングができる.
14週 ThinkPython 12章(3):タプルに関する色々な説明を行い,練習問題の解答例を説明する タプルを活用したプログラミングができる.
15週 予備
16週 予備
後期
3rdQ
1週 高専機構が準備した情報セキュリティー教材を活用し,情報セキュリティーの常識を増やしていく. セキュリティーの常識を知っている.
2週 ThinkPython 13章(1):データ構造の選択やそれらの使い方の説明をし,練習問題の解答例を説明する.単語頻度分布解析,乱数など. 適切なデータ構造を選択したプログラミングができる.
3週 ThinkPython 13章(2):データ構造の選択やそれらの使い方の説明をし,練習問題の解答例を説明する.単語ヒストグラム,頻度の高い単語の抽出など. 適切なデータ構造を選択したプログラミングができる.
4週 ThinkPython 13章(3):データ構造の選択やそれらの使い方の説明をし,練習問題の解答例を説明する.乱雑な単語抽出,マルコフ解析など. 適切なデータ構造を選択したプログラミングができる.
5週 学習してきたことをPythonではなく,Rubyで書くとどうなるかを学ぶ.以後の授業では,PythonからRubyへの移植を適宜実施し,使える言語を増やすコツを学ぶ. PythonのプログラムをRubyのプログラムに移植できる.
6週 ThinkPython 14章(1):外部記憶装置にデータを保存するプログラミングを説明し.練習問題の解答例を説明する.読み書き,フォーマット・オペレーター,パス・ファイルなど. ファイルへの読み書きができるプログラミングができる.
7週 ThinkPython 14章(2):外部記憶装置にデータを保存するプログラミングを説明し.練習問題の解答例を説明する.読み書き,フォーマット・オペレーター,filenames, pathなど. ファイルや標準出力に対して文字列フォーマットができる.
8週 ThinkPython 14章(3):外部記憶装置にデータを保存するプログラミングを説明し.練習問題の解答例を説明する.例外処理,dbmなど. 例外処理やdbmを使ったプログラミングができる.
4thQ
9週 ThinkPython 15章(1):以後オブジェクト指向プログラミングに関する説明を行う.クラスの定義について説明し,練習問題を解説する. クラス定義を理解できる.
10週 ThinkPython 15章(2):クラスに関する練習問題の解答例を説明する. クラス定義ができそれを使える.
11週 ThinkPython 16章(1):クラスを引数や戻り値として使う関数を説明する. クラスを引数や戻り値にする関数を書ける.
12週 ThinkPython 16章(2):Functional programming sytleを説明する. Functional programming sytleの関数が書ける.
13週 ThinkPython 17章(1):クラスとメソッドの関係を深く理解するための説明を行う. クラスにおけるメソッドと関数の関係を理解できる.
14週 ThinkPython 18章(1):継承の使い方を説明する. 継承を使ったクラスの作成ができる.
15週 予備
16週 予備

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

分類分野学習内容学習内容の到達目標到達レベル授業週
基礎的能力工学基礎情報リテラシー情報リテラシー情報を適切に収集・処理・発信するための基礎的な知識を活用できる。2
論理演算と進数変換の仕組みを用いて基本的な演算ができる。2
コンピュータのハードウェアに関する基礎的な知識を活用できる。2
同一の問題に対し、それを解決できる複数のアルゴリズムが存在しうることを知っている。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

評価割合

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