概要:
「計算の道具としてのPython」すなわち, 計算を必要とするさまざまな問題解決の場面でPythonを活用できるようになることが目標である.この科目では,数学,物理,電気回路などの問題を例に,NumPyとSciPyを基本ツールとして,場面に応じてそのほかの計算や可視化のパッケージも組み合わせて活用する技法を身につける.
授業の進め方・方法:
PCやPythonコーディング環境は自力で整備し管理できることを前提とする.数学,物理,電気回路などから既習・未習を問わず幅広く題材を採り,計算アルゴリズムとPythonコードで自力で接近し解明する技法を身につけよう.先人の知恵に学ばない「車輪の再発明」はしばしば大きな誤りにつながる.Pythonで計算するなら基本はNumPyとSciPyを正しく使うことだ.さらにSymPyやいくつかの可視化ツールも知るべきである.そのために質の良い書籍を熟読すること,ネット上では直接「公式ドキュメント」を読みに行くことを習慣づけよう.時間の限られた授業で学べることは多くなく,あえて基本的なガイドと簡単なヒントしか提示しない.あとは自力でPCにコードを打ち,エラーメッセージを読み解き,問題を生じれば根本的な解決策を考える.NumPyもSciPyも公式ドキュメント,中でも「ユーザーガイド」「APIリファレンス」を読まずには,ネットを拾い読み継ぎはぎしてばかりでは,いつまでも正しく使えるようにはならない.英語でも(ときに他の言語でも)読むしかないから,読む練習だけはしっかりやってもらう.なお,全回を通じて情報のモラルとサイバーセキュリティの基本を学ぶ.
注意点:
評価方法
(1) 課題(小試験,レポート,演習など)100%で評価する.
(2) 評価基準:60点以上を合格とする.
(3) 定期試験,再試験は実施しない.
前回までの授業内容について小試験を実施するので,復習しておくこと.課題等は必ず期限までに提出すること.
参考書
[1] Veit Steinkamp 著『Der Python-Kurs für Ingenieure und Naturwissenschaftler』,Rheinwerk Verlag.
[2] Svein Linge, Hans Petter Langtangen 著『Programming for Computations – Python』,Springer.(オープンアクセス https://doi.org/10.1007/978-3-030-16877-3 )
[3] Jake VanderPlas 著『Pythonデータサイエンスハンドブック』,オライリー・ジャパン.
[4] Bill Lubanovic Lubanovic 著『入門 Python3』,オライリー・ジャパン.
[5] 高専機構 情報セキュリティ教材『K-SEC情報モラル教材』(高専機構 「情報システムユーザーガイドライン」「低学年教材」).
|
|
週 |
授業内容 |
週ごとの到達目標 |
前期 |
1stQ |
1週 |
Pythonにおける数値の取扱い |
整数,実数,複素数と数学関数の取扱いを理解する.
|
2週 |
NumPy [1] 関数電卓としてのPython |
NumPyのなりたちを理解し,数学関数の使い方を理解する. ☞ “API reference” → ‘Mathematical functions’
|
3週 |
NumPy [2] NumPyの配列 |
Python標準「リスト」とNumPy「配列」の共通点と違いを理解し使い分ける. ☞ “User guide” → ‘NumPy fundamentals’
|
4週 |
NumPy [3] 複素数と電気数学 |
NumPyにおける複素数の取扱いを理解し,電気数学に応用する. ☞ “API reference” → ‘Mathematical functions’
|
5週 |
NumPy [4] 配列の生成と操作 |
NumPyの多次元配列を生成し操作するさまざまな方法を理解する. ☞ “User guide” → ‘NumPy fundamentals’, “API reference” → ‘Array creation routines’; ‘Array manipulation routines’
|
6週 |
NumPy [5] 配列の論理演算 |
NumPyの配列に対する強力な論理演算機能を理解し活用する. ☞ “User guide” → ‘NumPy: the absolute basics for beginners’, “API reference” → ‘Logic functions’
|
7週 |
NumPy [6] ベクトル,行列 |
NumPyの配列を数学のベクトルや行列として取り扱う方法を理解し活用する. ☞ “User guide” → ‘NumPy fundamentals’, “API reference” → ‘Arithmetic, matrix multiplication, and comparison operations’
|
8週 |
NumPy [7] 線形代数と回路方程式 |
NumPyでのより高度な行列計算の方法を理解し,回路方程式の解析などに活用する. ☞ “API reference” → ‘Linear algebra’
|
2ndQ |
9週 |
NumPy [8] 確率,統計,乱数 |
NumPyを確率や統計データの解析,乱数を用いるシミュレーションなどに活用する. ☞ “API reference” → ‘Statistics’; ‘Random sampling’
|
10週 |
SciPy [1] 科学計算 |
SciPyの多彩な機能を概観し,基本的な取扱いを理解し活用する. ☞ “SciPy User Guide” → ‘Introduction’
|
11週 |
SciPy [2] 行列演算 |
SciPyの代表的な機能を理解し活用する. ☞ “SciPy User Guide” → ‘Introduction’
|
12週 |
SymPy [1] 数式処理の基本 |
SymPyによる文字式の基本的な取扱いを理解する.
|
13週 |
SymPy [2] 微分・積分 |
SymPyを微分・積分やその他の高等数学の計算に活用する.
|
14週 |
可視化ツールとGUI (1) |
Pythonの代表的な可視化パッケージMatplotlibの概要を理解し活用する.
|
15週 |
可視化ツールとGUI (2) |
Pythonによる可視化とGUIの機能を理解し活用する.
|
16週 |
|
|
分類 | 分野 | 学習内容 | 学習内容の到達目標 | 到達レベル | 授業週 |
基礎的能力 | 工学基礎 | 情報リテラシー | 情報リテラシー | 情報を適切に収集・処理・発信するための基礎的な知識を活用できる。 | 3 | 前1 |
論理演算と進数変換の仕組みを用いて基本的な演算ができる。 | 3 | 前2,前3,前4 |
コンピュータのハードウェアに関する基礎的な知識を活用できる。 | 3 | 前2,前3,前4 |
同一の問題に対し、それを解決できる複数のアルゴリズムが存在しうることを知っている。 | 3 | 前2,前3,前4 |
与えられた基本的な問題を解くための適切なアルゴリズムを構築することができる。 | 3 | 前2,前3,前4 |
任意のプログラミング言語を用いて、構築したアルゴリズムを実装できる。 | 3 | 前2,前3,前4 |
情報セキュリティの必要性および守るべき情報を認識している。 | 3 | 前15 |
個人情報とプライバシー保護の考え方についての基本的な配慮ができる。 | 3 | 前15 |
インターネット(SNSを含む)やコンピュータの利用における様々な脅威を認識している | 3 | 前15 |
インターネット(SNSを含む)やコンピュータの利用における様々な脅威に対して実践すべき対策を説明できる。 | 3 | 前15 |
専門的能力 | 分野別の専門工学 | 情報系分野 | プログラミング | 変数の概念を説明できる。 | 3 | 前2,前3,前4,前5 |
データ型の概念を説明できる。 | 3 | 前2,前3,前4,前5 |
代入や演算子の概念を理解し、式を記述できる。 | 3 | 前2,前3,前4,前5 |
制御構造の概念を理解し、条件分岐を記述できる。 | 3 | 前2,前3,前4,前5 |
制御構造の概念を理解し、反復処理を記述できる。 | 3 | 前2,前3,前4,前5 |
プロシージャ(または、関数、サブルーチンなど)の概念を理解し、これらを含むプログラムを記述できる。 | 3 | 前2,前3,前4,前5 |
与えられた問題に対して、それを解決するためのソースプログラムを記述できる。 | 3 | 前2,前3,前4,前5 |
与えられたソースプログラムを解析し、プログラムの動作を予測することができる。 | 3 | 前2,前3,前4,前5 |
ソフトウェア生成に必要なツールを使い、ソースプログラムをロードモジュールに変換して実行できる。 | 3 | 前2,前3,前4,前5 |
ソフトウェア開発に利用する標準的なツールの種類と機能を説明できる。 | 3 | 前2,前3,前4,前5 |
要求仕様に従って、いずれかの手法により動作するプログラムを設計することができる。 | 3 | 前2,前3,前4,前5 |
要求仕様に従って、いずれかの手法により動作するプログラムを実装することができる。 | 3 | 前2,前3,前4,前5 |
計算機工学 | 整数を2進数、10進数、16進数で表現できる。 | 3 | 前2,前3,前4,前5 |
小数を2進数、10進数、16進数で表現できる。 | 3 | 前2,前3,前4,前5 |
整数・小数をコンピュータのメモリ上でディジタル表現する方法を説明できる。 | 3 | 前2,前3,前4,前5 |
基数が異なる数の間で相互に変換できる。 | 3 | 前2,前3,前4,前5 |