- 森畑 明昌, 2021: 考え方から学ぶ プログラミング講義 — Python ではじめる。東京大学出版会, 164 pp. ISBN 978-4-13-062460-2.
2021年にでた A5判 横書きのペーパーバック。わたしは2024年8月に買った。
おなじ著者による2019年の『Python によるプログラミング入門』[読書メモ] と同様に、東京大学の教養課程の情報の初級科目の教材にちがいない。内容にはかさなりがあるが、重点のちがいはある。
本書は、第1章でコンピュータとはどんなものか、第2章でプログラミングとはどんなことかをじっくり説明する。第3章で実際に Python 言語でプログラムをくんでみるが、そこでは、変数、関数、リスト、条件分岐、くりかえし などの、プログラム言語の基本的な文法要素がそれぞれどんなかんがえかたにもとづいているかに重点をおいている。
【わたしは1993年に情報の初級科目を担当したときそのような内容をあつかったことを思い出す。つかったプログラム言語は Pascal、OS は MS-DOS だった。】
3.5節では、プログラム言語の設計思想 (本書の用語では「プログラミングモデル」) として、オブジェクト指向、論理型、関数型があることにもふれている。【わたしは、その名まえだけは知っているが、説明できるほどわかっていない。】
Python の実行環境は Anaconda の Jupyter Notebook を想定しているが、それに関する説明は 付録 A で簡単にすませている。学生にはインストールずみの環境があるか経験者に相談できる状況が想定されているのだろう。
第5章からが応用例だ。
第5章は「株価の分析」となっているが、そのままデータを気温にかえても (ローソク線グラフをつかう習慣はないが) 通用するので、ここは気象学の学生にもすすめられる。
第6章は「シーザー暗号」 (アルファベットをずらす方法による文字列おきかえ) の解読、第7章は「婚活パーティ」、第8章は「指の数ゲーム」 (将棋や碁のたぐいの対戦型ゲームを非常に単純化したものか?) となっている。専門がさだまっていない学生むけに計算機科学を専門とする著者がかんがえた題材なのだとおもうが、わたしには興味がわかない。
2019年の本とくらべると、プログラミング入門としては本書のほうをすすめたいのだが、応用例は2019年の本のほうをすすめたい。
折りかえしのあとに目次をつける。
===== 目次 =====
まえがき
目次
第1章 プログラミングへのいざない
– 1.1 なぜプログラミングを学ぶのか
– 1.2 本書のアプローチ
– 1.3 プログラミングの学び方
– 1.4 本書の構成
第2章 コンピュータとは何か
– 2.1 コンピュータの今昔
– 2.2 コンピュータとその性能
– 2.3 コンピュータは電気回路
– 2.4 電卓とコンピュータを分けるもの
– 2.5 CPU ・ 記憶装置 ・ 入出力装置
– 2.6 データの表現と機械語
– 2.7 本章のまとめ
第3章 プログラミングの世界
– 3.1 コンピュータの利用に必要なもの
– 3.2 プログラミング言語とは
– 3.3 コンパイラとインタプリタ
– 3.4 自然言語とプログラミング言語
– 3.5 いろいろなプログラミングモデル
– 3.6 Python 言語の特徴
– 3.7 本章のまとめ
第4章 プログラミングの構成要素
– 4.1 問題設定: スーパーマーケットのレジ
– 4.2 基本的な数値計算
– 4.3 変数: 計算結果を覚える
– 4.4 関数: 計算手順に名前をつける
– 4.5 Python での関数
– 4.6 モジュール化とライブラリ
– 4.7 コメント
– 4.8 テスト ・ バグ ・ デバッグ
– 4.9 条件分岐: 状況次第で処理を変える
– 4.10 リスト: 大量のデータを表す
– 4.11 繰り返し: 同じことを何度も行う
– 4.12 本章のまとめ
第5章 株価の分析
– 5.1 株価データのモデル化
– 5.2 平均と移動平均
– 5.3 可視化
– 5.4 平均をとる日数の調整
– 5.5 もう少し知りたい人へ
– 5.6 本章で作成したプログラム
第6章 暗号の解読
– 6.1 シーザー暗号とは
– 6.2 シーザー暗号のプログラム
– 6.3 総当たり攻撃による解読
– 6.4 総当たり攻撃の計算量
– 6.5 頻度分析による解読
– 6.6 頻度分析のプログラム
– 6.7 頻度分析の計算量
– 6.8 もう少し知りたい人へ
– 6.9 本章で作成したプログラム
第7章 婚活パーティでのカップリング
– 7.1 婚活パーティ問題のモデル化
– 7.2 Gale-Shapley の受入保留アルゴリズム
– 7.3 受入保留アルゴリズムのプログラム
– 7.4 婚活パーティ問題の分析
– 7.5 実社会の問題にプログラムを用いる際の注意
– 7.6 もう少し知りたい人へ
– 7.7 本章で作成したプログラム
第8章 指の数ゲーム
– 8.1 ゲームのモデル化
– 8.2 1手読む AI
– 8.3 2手読む AI
– 8.4 3手読む AI
– 8.5 深い読みにかかる時間
– 8.6 同一局面の結果を覚える
– 8.7 もう少し知りたい人へ
– 8.8 本章で作成したプログラム
付録 A. Python プログラミングのためのシステム
– A.1 Anaconda のインストール
– A.2 Jupyter Notebook の使い方
付録 B. Python 言語入門
– B.1 Python プログラムの構造
– B.2 基本的な値
– B.3 シーケンス
– – B.3.1 リスト
– – B.3.2 範囲
– – B.3.3 文字列
– B.4 エラーと例外
– B.5 変数
– B.6 関数の定義と呼出し
– B.7 for 文
– B.8 if 文
– B.9 while 文
– B.10 ライブラリ
索引
==========